From 03de9e18bb84252b0acc731594cfc1ed535108ba Mon Sep 17 00:00:00 2001 From: Jacques De SAGAN Date: Sun, 7 Apr 2024 11:52:06 +0800 Subject: [PATCH] first import --- .gitignore | 3 + LICENSE | 201 + README.md | 66 + lib/eb/appendix/cencro-1.0.tar.gz | Bin 0 -> 1666 bytes lib/eb/appendix/chujiten-2.3.tar.gz | Bin 0 -> 2133 bytes lib/eb/appendix/chujiten2-2.0.tar.gz | Bin 0 -> 2629 bytes lib/eb/appendix/chujiten6-2.3.tar.gz | Bin 0 -> 2868 bytes lib/eb/appendix/colloc-2.0.tar.gz | Bin 0 -> 1313 bytes lib/eb/appendix/crownfj-2.0.tar.gz | Bin 0 -> 4463 bytes lib/eb/appendix/crownfj2-1.0.tar.gz | Bin 0 -> 2164 bytes lib/eb/appendix/crowngj-1.0.tar.gz | Bin 0 -> 2155 bytes lib/eb/appendix/daihyakka-1.0.tar.gz | Bin 0 -> 3748 bytes lib/eb/appendix/daijirin-2.0.tar.gz | Bin 0 -> 2095 bytes lib/eb/appendix/dd75-2.0.tar.gz | Bin 0 -> 4062 bytes lib/eb/appendix/gendai2000-1.0.tar.gz | Bin 0 -> 1063 bytes lib/eb/appendix/genius-1.0.tar.gz | Bin 0 -> 2241 bytes lib/eb/appendix/genius2-1.1.tar.gz | Bin 0 -> 887 bytes lib/eb/appendix/global-2.0.tar.gz | Bin 0 -> 4034 bytes lib/eb/appendix/heritage-2.2.tar.gz | Bin 0 -> 3968 bytes lib/eb/appendix/hyogen-1.0.tar.gz | Bin 0 -> 1309 bytes lib/eb/appendix/izumi-2.0.tar.gz | Bin 0 -> 984 bytes lib/eb/appendix/jitenban-2.4.tar.gz | Bin 0 -> 7459 bytes lib/eb/appendix/jitenban97-2.1.tar.gz | Bin 0 -> 6866 bytes lib/eb/appendix/kanjigen-2.0.tar.gz | Bin 0 -> 2046 bytes lib/eb/appendix/kanjigen2-2.0.tar.gz | Bin 0 -> 897 bytes lib/eb/appendix/kojien-2.3.tar.gz | Bin 0 -> 2008 bytes lib/eb/appendix/kojien2-2.0.tar.gz | Bin 0 -> 4526 bytes lib/eb/appendix/kojien4-2.2.tar.gz | Bin 0 -> 2272 bytes lib/eb/appendix/oxford-2.0.tar.gz | Bin 0 -> 3849 bytes lib/eb/appendix/plus-2.0.tar.gz | Bin 0 -> 3632 bytes lib/eb/appendix/readers-2.2.tar.gz | Bin 0 -> 2194 bytes lib/eb/appendix/readers2-2.0.tar.gz | Bin 0 -> 2698 bytes lib/eb/appendix/ruigigo-1.0.tar.gz | Bin 0 -> 1326 bytes lib/eb/appendix/superdic98-1.0.tar.gz | Bin 0 -> 5252 bytes lib/ebu/AUTHORS | 1 + lib/ebu/COPYING | 23 + lib/ebu/ChangeLog | 708 + lib/ebu/ChangeLog.0 | 1464 ++ lib/ebu/ChangeLog.1 | 2222 +++ lib/ebu/ChangeLog.2 | 1409 ++ lib/ebu/INSTALL | 203 + lib/ebu/Makefile | 782 + lib/ebu/Makefile.am | 41 + lib/ebu/Makefile.in | 782 + lib/ebu/NEWS | 535 + lib/ebu/README | 11 + lib/ebu/README.org | 71 + lib/ebu/aclocal.m4 | 914 + lib/ebu/config.guess | 1501 ++ lib/ebu/config.h | 231 + lib/ebu/config.h.in | 230 + lib/ebu/config.log | 2501 +++ lib/ebu/config.status | 2037 ++ lib/ebu/config.sub | 1705 ++ lib/ebu/configure | 16474 ++++++++++++++++ lib/ebu/configure.ac | 488 + lib/ebu/depcomp | 632 + lib/ebu/doc/Makefile | 572 + lib/ebu/doc/Makefile.am | 160 + lib/ebu/doc/Makefile.in | 572 + lib/ebu/doc/c2html | 51 + lib/ebu/doc/eb-01.html | 132 + lib/ebu/doc/eb-02.html | 277 + lib/ebu/doc/eb-03.html | 322 + lib/ebu/doc/eb-04.html | 190 + lib/ebu/doc/eb-05.html | 561 + lib/ebu/doc/eb-06.html | 787 + lib/ebu/doc/eb-07.html | 550 + lib/ebu/doc/eb-08.html | 1218 ++ lib/ebu/doc/eb-09.html | 3001 +++ lib/ebu/doc/eb-10.html | 1328 ++ lib/ebu/doc/eb-11.html | 788 + lib/ebu/doc/eb-12.html | 1031 + lib/ebu/doc/eb-13.html | 474 + lib/ebu/doc/eb-14.html | 419 + lib/ebu/doc/eb-cat.html | 10941 ++++++++++ lib/ebu/doc/eb-index-const.html | 181 + lib/ebu/doc/eb-index-func.html | 166 + lib/ebu/doc/eb-index-type.html | 25 + lib/ebu/doc/eb-sample-appendix.html | 144 + lib/ebu/doc/eb-sample-booklist.html | 115 + lib/ebu/doc/eb-sample-disctype.html | 104 + lib/ebu/doc/eb-sample-font.html | 164 + lib/ebu/doc/eb-sample-initexit.html | 64 + lib/ebu/doc/eb-sample-subbook.html | 110 + lib/ebu/doc/eb-sample-text.html | 163 + lib/ebu/doc/eb-sample-word.html | 159 + lib/ebu/doc/eb-toc.html | 127 + lib/ebu/doc/eb.css | 51 + lib/ebu/doc/eb.html | 165 + lib/ebu/doc/eb.html.in | 9431 +++++++++ lib/ebu/doc/ebappendix-01.html | 72 + lib/ebu/doc/ebappendix-02.html | 39 + lib/ebu/doc/ebappendix-03.html | 406 + lib/ebu/doc/ebappendix-04.html | 262 + lib/ebu/doc/ebappendix-cat.html | 747 + lib/ebu/doc/ebappendix-toc.html | 19 + lib/ebu/doc/ebappendix.html | 56 + lib/ebu/doc/ebappendix.html.in | 729 + lib/ebu/doc/ebfont-01.html | 30 + lib/ebu/doc/ebfont-02.html | 67 + lib/ebu/doc/ebfont-03.html | 249 + lib/ebu/doc/ebfont-04.html | 91 + lib/ebu/doc/ebfont-cat.html | 397 + lib/ebu/doc/ebfont-toc.html | 11 + lib/ebu/doc/ebfont.html | 48 + lib/ebu/doc/ebfont.html.in | 387 + lib/ebu/doc/ebinfo-01.html | 29 + lib/ebu/doc/ebinfo-02.html | 111 + lib/ebu/doc/ebinfo-03.html | 115 + lib/ebu/doc/ebinfo-04.html | 81 + lib/ebu/doc/ebinfo-05.html | 53 + lib/ebu/doc/ebinfo-cat.html | 325 + lib/ebu/doc/ebinfo-toc.html | 7 + lib/ebu/doc/ebinfo.html | 44 + lib/ebu/doc/ebinfo.html.in | 319 + lib/ebu/doc/ebrefile-01.html | 72 + lib/ebu/doc/ebrefile-02.html | 254 + lib/ebu/doc/ebrefile-03.html | 59 + lib/ebu/doc/ebrefile-cat.html | 363 + lib/ebu/doc/ebrefile-toc.html | 9 + lib/ebu/doc/ebrefile.html | 46 + lib/ebu/doc/ebrefile.html.in | 355 + lib/ebu/doc/ebstopcode-01.html | 47 + lib/ebu/doc/ebstopcode-02.html | 143 + lib/ebu/doc/ebstopcode-03.html | 74 + lib/ebu/doc/ebstopcode-cat.html | 238 + lib/ebu/doc/ebstopcode-toc.html | 5 + lib/ebu/doc/ebstopcode.html | 42 + lib/ebu/doc/ebstopcode.html.in | 234 + lib/ebu/doc/ebutils.css | 37 + lib/ebu/doc/ebzip-01.html | 42 + lib/ebu/doc/ebzip-02.html | 90 + lib/ebu/doc/ebzip-03.html | 57 + lib/ebu/doc/ebzip-04.html | 414 + lib/ebu/doc/ebzip-05.html | 185 + lib/ebu/doc/ebzip-06.html | 80 + lib/ebu/doc/ebzip-07.html | 39 + lib/ebu/doc/ebzip-08.html | 152 + lib/ebu/doc/ebzip-09.html | 90 + lib/ebu/doc/ebzip-10.html | 335 + lib/ebu/doc/ebzip-cat.html | 1349 ++ lib/ebu/doc/ebzip-toc.html | 36 + lib/ebu/doc/ebzip.html | 73 + lib/ebu/doc/ebzip.html.in | 1314 ++ lib/ebu/doc/html-include | 211 + lib/ebu/doc/html-index | 157 + lib/ebu/doc/html-split | 238 + lib/ebu/doc/html-toc | 151 + lib/ebu/doc/version.html | 1 + lib/ebu/ebappendix/Makefile | 421 + lib/ebu/ebappendix/Makefile.am | 16 + lib/ebu/ebappendix/Makefile.in | 421 + lib/ebu/ebappendix/ebappendix.in | 757 + lib/ebu/ebappendix/ebuappendix | 1119 ++ lib/ebu/ebfont/.deps/ebfont.Po | 303 + lib/ebu/ebfont/.libs/ebufont | Bin 0 -> 106488 bytes lib/ebu/ebfont/Makefile | 522 + lib/ebu/ebfont/Makefile.am | 14 + lib/ebu/ebfont/Makefile.in | 522 + lib/ebu/ebfont/ebfont.c | 1063 + lib/ebu/ebfont/ebufont | 210 + lib/ebu/ebinfo/.deps/ebinfo.Po | 245 + lib/ebu/ebinfo/.libs/ebuinfo | Bin 0 -> 101744 bytes lib/ebu/ebinfo/Makefile | 522 + lib/ebu/ebinfo/Makefile.am | 14 + lib/ebu/ebinfo/Makefile.in | 522 + lib/ebu/ebinfo/ebinfo.c | 631 + lib/ebu/ebinfo/ebuinfo | 210 + lib/ebu/ebrefile/.deps/ebrefile.Po | 372 + lib/ebu/ebrefile/.libs/eburefile | Bin 0 -> 97616 bytes lib/ebu/ebrefile/Makefile | 522 + lib/ebu/ebrefile/Makefile.am | 14 + lib/ebu/ebrefile/Makefile.in | 522 + lib/ebu/ebrefile/ebrefile.c | 814 + lib/ebu/ebrefile/eburefile | 210 + lib/ebu/ebstopcode/.deps/ebstopcode.Po | 235 + lib/ebu/ebstopcode/.libs/ebustopcode | Bin 0 -> 97736 bytes lib/ebu/ebstopcode/Makefile | 522 + lib/ebu/ebstopcode/Makefile.am | 14 + lib/ebu/ebstopcode/Makefile.in | 522 + lib/ebu/ebstopcode/ebstopcode.c | 634 + lib/ebu/ebstopcode/ebustopcode | 210 + lib/ebu/ebu.conf | 53 + lib/ebu/ebu.conf.in | 53 + lib/ebu/ebu/.deps/appendix.Plo | 310 + lib/ebu/ebu/.deps/appsub.Plo | 308 + lib/ebu/ebu/.deps/bcd.Plo | 306 + lib/ebu/ebu/.deps/binary.Plo | 308 + lib/ebu/ebu/.deps/bitmap.Plo | 312 + lib/ebu/ebu/.deps/book.Plo | 310 + lib/ebu/ebu/.deps/booklist.Plo | 308 + lib/ebu/ebu/.deps/color.Plo | 306 + lib/ebu/ebu/.deps/copyright.Plo | 306 + lib/ebu/ebu/.deps/cross.Plo | 306 + lib/ebu/ebu/.deps/dummyin6.Plo | 175 + lib/ebu/ebu/.deps/eb.Plo | 308 + lib/ebu/ebu/.deps/ebnet.Plo | 382 + lib/ebu/ebu/.deps/endword.Plo | 306 + lib/ebu/ebu/.deps/error.Plo | 306 + lib/ebu/ebu/.deps/exactword.Plo | 306 + lib/ebu/ebu/.deps/filename.Plo | 308 + lib/ebu/ebu/.deps/font.Plo | 308 + lib/ebu/ebu/.deps/getaddrinfo.Plo | 354 + lib/ebu/ebu/.deps/hook.Plo | 310 + lib/ebu/ebu/.deps/jacode.Plo | 281 + lib/ebu/ebu/.deps/keyword.Plo | 306 + lib/ebu/ebu/.deps/linebuf.Plo | 282 + lib/ebu/ebu/.deps/lock.Plo | 302 + lib/ebu/ebu/.deps/log.Plo | 304 + lib/ebu/ebu/.deps/match.Plo | 304 + lib/ebu/ebu/.deps/menu.Plo | 306 + lib/ebu/ebu/.deps/multi.Plo | 306 + lib/ebu/ebu/.deps/multiplex.Plo | 379 + lib/ebu/ebu/.deps/narwalt.Plo | 308 + lib/ebu/ebu/.deps/narwfont.Plo | 308 + lib/ebu/ebu/.deps/readtext.Plo | 308 + lib/ebu/ebu/.deps/search.Plo | 308 + lib/ebu/ebu/.deps/setword.Plo | 306 + lib/ebu/ebu/.deps/stopcode.Plo | 310 + lib/ebu/ebu/.deps/strcasecmp.Plo | 105 + lib/ebu/ebu/.deps/subbook.Plo | 310 + lib/ebu/ebu/.deps/text.Plo | 306 + lib/ebu/ebu/.deps/urlparts.Plo | 187 + lib/ebu/ebu/.deps/utf8.Plo | 310 + lib/ebu/ebu/.deps/widealt.Plo | 308 + lib/ebu/ebu/.deps/widefont.Plo | 308 + lib/ebu/ebu/.deps/word.Plo | 306 + lib/ebu/ebu/.deps/zio.Plo | 285 + lib/ebu/ebu/.libs/libebu.a | Bin 0 -> 2073984 bytes lib/ebu/ebu/.libs/libebu.la | 41 + lib/ebu/ebu/.libs/libebu.lai | 41 + lib/ebu/ebu/.libs/libebu.so | Bin 0 -> 1085280 bytes lib/ebu/ebu/.libs/libebu.so.17 | Bin 0 -> 1085280 bytes lib/ebu/ebu/.libs/libebu.so.17.0.0 | Bin 0 -> 1085280 bytes lib/ebu/ebu/Makefile | 704 + lib/ebu/ebu/Makefile.am | 78 + lib/ebu/ebu/Makefile.in | 704 + lib/ebu/ebu/appendix.c | 447 + lib/ebu/ebu/appendix.h | 100 + lib/ebu/ebu/appendix.lo | 12 + lib/ebu/ebu/appsub.c | 750 + lib/ebu/ebu/appsub.lo | 12 + lib/ebu/ebu/bcd.c | 99 + lib/ebu/ebu/bcd.lo | 12 + lib/ebu/ebu/binary.c | 1404 ++ lib/ebu/ebu/binary.h | 73 + lib/ebu/ebu/binary.lo | 12 + lib/ebu/ebu/bitmap.c | 1400 ++ lib/ebu/ebu/bitmap.lo | 12 + lib/ebu/ebu/book.c | 1006 + lib/ebu/ebu/book.lo | 12 + lib/ebu/ebu/booklist.c | 326 + lib/ebu/ebu/booklist.h | 60 + lib/ebu/ebu/booklist.lo | 12 + lib/ebu/ebu/build-post.h | 367 + lib/ebu/ebu/build-post.h.in | 367 + lib/ebu/ebu/build-pre.h | 151 + lib/ebu/ebu/color.c | 292 + lib/ebu/ebu/color.lo | 12 + lib/ebu/ebu/copyright.c | 121 + lib/ebu/ebu/copyright.lo | 12 + lib/ebu/ebu/cross.c | 191 + lib/ebu/ebu/cross.lo | 12 + lib/ebu/ebu/defs.h | 1068 + lib/ebu/ebu/dummyin6.c | 58 + lib/ebu/ebu/dummyin6.h | 171 + lib/ebu/ebu/dummyin6.lo | 12 + lib/ebu/ebu/eb.c | 89 + lib/ebu/ebu/eb.h | 169 + lib/ebu/ebu/eb.lo | 12 + lib/ebu/ebu/ebnet.c | 1170 ++ lib/ebu/ebu/ebnet.h | 108 + lib/ebu/ebu/ebnet.lo | 12 + lib/ebu/ebu/endword.c | 192 + lib/ebu/ebu/endword.lo | 12 + lib/ebu/ebu/error.c | 286 + lib/ebu/ebu/error.h | 152 + lib/ebu/ebu/error.lo | 12 + lib/ebu/ebu/exactword.c | 189 + lib/ebu/ebu/exactword.lo | 12 + lib/ebu/ebu/filename.c | 783 + lib/ebu/ebu/filename.lo | 12 + lib/ebu/ebu/font.c | 551 + lib/ebu/ebu/font.h | 200 + lib/ebu/ebu/font.lo | 12 + lib/ebu/ebu/getaddrinfo.c | 556 + lib/ebu/ebu/getaddrinfo.h | 226 + lib/ebu/ebu/getaddrinfo.lo | 12 + lib/ebu/ebu/hook.c | 321 + lib/ebu/ebu/hook.lo | 12 + lib/ebu/ebu/jacode.c | 158 + lib/ebu/ebu/jacode.lo | 12 + lib/ebu/ebu/keyword.c | 192 + lib/ebu/ebu/keyword.lo | 12 + lib/ebu/ebu/libebu.la | 41 + lib/ebu/ebu/linebuf.c | 422 + lib/ebu/ebu/linebuf.h | 70 + lib/ebu/ebu/linebuf.lo | 12 + lib/ebu/ebu/lock.c | 103 + lib/ebu/ebu/lock.lo | 12 + lib/ebu/ebu/log.c | 200 + lib/ebu/ebu/log.lo | 12 + lib/ebu/ebu/match.c | 585 + lib/ebu/ebu/match.lo | 12 + lib/ebu/ebu/menu.c | 206 + lib/ebu/ebu/menu.lo | 12 + lib/ebu/ebu/multi.c | 844 + lib/ebu/ebu/multi.lo | 12 + lib/ebu/ebu/multiplex.c | 970 + lib/ebu/ebu/multiplex.lo | 12 + lib/ebu/ebu/narwalt.c | 628 + lib/ebu/ebu/narwalt.lo | 12 + lib/ebu/ebu/narwfont.c | 1099 ++ lib/ebu/ebu/narwfont.lo | 12 + lib/ebu/ebu/readtext.c | 2288 +++ lib/ebu/ebu/readtext.lo | 12 + lib/ebu/ebu/search.c | 1656 ++ lib/ebu/ebu/search.lo | 12 + lib/ebu/ebu/setword.c | 1495 ++ lib/ebu/ebu/setword.lo | 12 + lib/ebu/ebu/stamp-build-post-h | 1 + lib/ebu/ebu/stamp-sysdefs-h | 1 + lib/ebu/ebu/stamp-widealt-h | 1 + lib/ebu/ebu/stamp-widefont-h | 1 + lib/ebu/ebu/stopcode.c | 113 + lib/ebu/ebu/stopcode.lo | 12 + lib/ebu/ebu/strcasecmp.c | 117 + lib/ebu/ebu/strcasecmp.lo | 12 + lib/ebu/ebu/subbook.c | 1235 ++ lib/ebu/ebu/subbook.lo | 12 + lib/ebu/ebu/sysdefs.h | 5 + lib/ebu/ebu/text.c | 121 + lib/ebu/ebu/text.h | 170 + lib/ebu/ebu/text.lo | 12 + lib/ebu/ebu/urlparts.c | 716 + lib/ebu/ebu/urlparts.h | 71 + lib/ebu/ebu/urlparts.lo | 12 + lib/ebu/ebu/utf8.c | 205 + lib/ebu/ebu/utf8.lo | 12 + lib/ebu/ebu/widealt.c | 629 + lib/ebu/ebu/widealt.lo | 12 + lib/ebu/ebu/widefont.c | 1100 ++ lib/ebu/ebu/widefont.lo | 12 + lib/ebu/ebu/word.c | 186 + lib/ebu/ebu/word.lo | 12 + lib/ebu/ebu/zio.c | 2156 ++ lib/ebu/ebu/zio.h | 237 + lib/ebu/ebu/zio.lo | 12 + lib/ebu/ebzip/.deps/copyfile.Po | 391 + lib/ebu/ebzip/.deps/ebzip.Po | 391 + lib/ebu/ebzip/.deps/ebzip1.Po | 388 + lib/ebu/ebzip/.deps/sebxa.Po | 388 + lib/ebu/ebzip/.deps/speedup.Po | 388 + lib/ebu/ebzip/.deps/unlinkfile.Po | 388 + lib/ebu/ebzip/.deps/unzipbook.Po | 391 + lib/ebu/ebzip/.deps/unzipfile.Po | 388 + lib/ebu/ebzip/.deps/zipbook.Po | 391 + lib/ebu/ebzip/.deps/zipfile.Po | 388 + lib/ebu/ebzip/.deps/zipinfobook.Po | 391 + lib/ebu/ebzip/.deps/zipinfofile.Po | 388 + lib/ebu/ebzip/.libs/ebuzip | Bin 0 -> 308016 bytes lib/ebu/ebzip/Makefile | 564 + lib/ebu/ebzip/Makefile.am | 33 + lib/ebu/ebzip/Makefile.in | 564 + lib/ebu/ebzip/copyfile.c | 399 + lib/ebu/ebzip/ebuzip | 210 + lib/ebu/ebzip/ebzip.c | 615 + lib/ebu/ebzip/ebzip.h | 277 + lib/ebu/ebzip/ebzip1.c | 93 + lib/ebu/ebzip/sebxa.c | 279 + lib/ebu/ebzip/speedup.c | 196 + lib/ebu/ebzip/unlinkfile.c | 61 + lib/ebu/ebzip/unzipbook.c | 470 + lib/ebu/ebzip/unzipfile.c | 439 + lib/ebu/ebzip/zipbook.c | 478 + lib/ebu/ebzip/zipfile.c | 699 + lib/ebu/ebzip/zipinfobook.c | 340 + lib/ebu/ebzip/zipinfofile.c | 185 + lib/ebu/install-sh | 520 + lib/ebu/libebutils/.deps/ebutils.Po | 214 + lib/ebu/libebutils/.deps/getopt.Po | 195 + lib/ebu/libebutils/.deps/getumask.Po | 134 + lib/ebu/libebutils/.deps/makedir.Po | 150 + lib/ebu/libebutils/.deps/puts_eucjp.Po | 212 + lib/ebu/libebutils/.deps/samefile.Po | 150 + lib/ebu/libebutils/.deps/strcasecmp.Po | 1 + lib/ebu/libebutils/.deps/strlist.Po | 188 + lib/ebu/libebutils/.deps/yesno.Po | 161 + lib/ebu/libebutils/Makefile | 525 + lib/ebu/libebutils/Makefile.am | 24 + lib/ebu/libebutils/Makefile.in | 525 + lib/ebu/libebutils/ebutils.c | 353 + lib/ebu/libebutils/ebutils.h | 69 + lib/ebu/libebutils/ebutils.h.in | 68 + lib/ebu/libebutils/getopt.c | 480 + lib/ebu/libebutils/getopt.h | 85 + lib/ebu/libebutils/getopt_long.pl | 362 + lib/ebu/libebutils/getumask.c | 54 + lib/ebu/libebutils/getumask.h | 43 + lib/ebu/libebutils/libebutils.a | Bin 0 -> 142478 bytes lib/ebu/libebutils/makedir.c | 76 + lib/ebu/libebutils/makedir.h | 43 + lib/ebu/libebutils/puts_eucjp.c | 155 + lib/ebu/libebutils/samefile.c | 67 + lib/ebu/libebutils/samefile.h | 41 + lib/ebu/libebutils/stamp-ebutils-h | 1 + lib/ebu/libebutils/strcasecmp.c | 105 + lib/ebu/libebutils/strlist.c | 194 + lib/ebu/libebutils/strlist.h | 80 + lib/ebu/libebutils/yesno.c | 86 + lib/ebu/libebutils/yesno.h | 41 + lib/ebu/libtool | 11648 +++++++++++ lib/ebu/ltmain.sh | 11150 +++++++++++ lib/ebu/m4/Makefile | 414 + lib/ebu/m4/Makefile.am | 5 + lib/ebu/m4/Makefile.in | 414 + lib/ebu/m4/ebu.m4 | 138 + lib/ebu/m4/gettext.m4 | 295 + lib/ebu/m4/in6addr.m4 | 111 + lib/ebu/m4/largefile.m4 | 63 + lib/ebu/m4/lcmessage.m4 | 27 + lib/ebu/m4/libtool.m4 | 8369 ++++++++ lib/ebu/m4/ltoptions.m4 | 437 + lib/ebu/m4/ltsugar.m4 | 124 + lib/ebu/m4/ltversion.m4 | 23 + lib/ebu/m4/lt~obsolete.m4 | 99 + lib/ebu/m4/sockaddrin6.m4 | 68 + lib/ebu/m4/sockinttypes.m4 | 198 + lib/ebu/misc/ebdump | 79 + lib/ebu/misc/ebfixlog | 47 + lib/ebu/missing | 378 + lib/ebu/move-if-change | 49 + .../eblook-1.6.1+media-20200414/AUTHORS | 10 + .../eblook-1.6.1+media-20200414/COPYING | 340 + .../eblook-1.6.1+media-20200414/ChangeLog | 1050 + .../eblook-1.6.1+media-20200414/INSTALL | 368 + .../eblook-1.6.1+media-20200414/Makefile.am | 13 + .../eblook-1.6.1+media-20200414/Makefile.in | 1165 ++ .../others/eblook-1.6.1+media-20200414/NEWS | 128 + .../others/eblook-1.6.1+media-20200414/README | 10 + .../eblook-1.6.1+media-20200414/README.org | 56 + .../eblook-1.6.1+media-20200414/aclocal.m4 | 1160 ++ .../eblook-1.6.1+media-20200414/bmp2ppm.c | 372 + .../eblook-1.6.1+media-20200414/bmp_in.c | 636 + .../eblook-1.6.1+media-20200414/codeconv.c | 804 + .../eblook-1.6.1+media-20200414/codeconv.h | 55 + .../eblook-1.6.1+media-20200414/compile | 348 + .../eblook-1.6.1+media-20200414/config.guess | 1658 ++ .../eblook-1.6.1+media-20200414/config.h.in | 167 + .../eblook-1.6.1+media-20200414/config.sub | 1798 ++ .../eblook-1.6.1+media-20200414/configure | 15305 ++++++++++++++ .../eblook-1.6.1+media-20200414/configure.ac | 103 + .../eblook-1.6.1+media-20200414/depcomp | 791 + .../eblook-1.6.1+media-20200414/eblook.c | 4473 +++++ .../eblook-1.6.1+media-20200414/eblook.info | 755 + .../eblook-1.6.1+media-20200414/eblook.texi | 798 + .../eblook-1.6.1+media-20200414/getopt.c | 1031 + .../eblook-1.6.1+media-20200414/getopt.h | 119 + .../eblook-1.6.1+media-20200414/getopt1.c | 179 + .../eblook-1.6.1+media-20200414/install-sh | 501 + .../eblook-1.6.1+media-20200414/ltmain.sh | 11150 +++++++++++ .../eblook-1.6.1+media-20200414/m4/eb4.m4 | 116 + .../eblook-1.6.1+media-20200414/m4/ebu.m4 | 138 + .../m4/largefile.m4 | 63 + .../eblook-1.6.1+media-20200414/m4/libtool.m4 | 8369 ++++++++ .../m4/ltoptions.m4 | 437 + .../eblook-1.6.1+media-20200414/m4/ltsugar.m4 | 123 + .../m4/ltversion.m4 | 23 + .../m4/lt~obsolete.m4 | 99 + .../eblook-1.6.1+media-20200414/missing | 215 + .../eblook-1.6.1+media-20200414/mkinstalldirs | 162 + .../eblook-1.6.1+media-20200414/strcasecmp.c | 154 + .../eblook-1.6.1+media-20200414/strdup.c | 59 + .../eblook-1.6.1+media-20200414/texinfo.tex | 11685 +++++++++++ .../eblook-1.6.1+media-20200414/win32.c | 149 + lib/ebu/po-eb/Makefile | 154 + lib/ebu/po-eb/Makefile.in | 154 + lib/ebu/po-eb/ebu.pot | 316 + lib/ebu/po-eb/ja.mo | Bin 0 -> 5736 bytes lib/ebu/po-eb/ja.po | 313 + lib/ebu/po-ebutils/Makefile | 171 + lib/ebu/po-ebutils/Makefile.in | 171 + lib/ebu/po-ebutils/ebuutils.pot | 1029 + lib/ebu/po-ebutils/ja.mo | Bin 0 -> 16011 bytes lib/ebu/po-ebutils/ja.po | 954 + lib/ebu/samples/.deps/appendix.Po | 1 + lib/ebu/samples/.deps/booklist.Po | 1 + lib/ebu/samples/.deps/disctype.Po | 1 + lib/ebu/samples/.deps/font.Po | 1 + lib/ebu/samples/.deps/initexit.Po | 1 + lib/ebu/samples/.deps/subbook.Po | 1 + lib/ebu/samples/.deps/text.Po | 1 + lib/ebu/samples/.deps/word.Po | 1 + lib/ebu/samples/Makefile | 562 + lib/ebu/samples/Makefile.am | 41 + lib/ebu/samples/Makefile.in | 562 + lib/ebu/samples/README | 17 + lib/ebu/samples/appendix.c | 140 + lib/ebu/samples/booklist.c | 111 + lib/ebu/samples/disctype.c | 100 + lib/ebu/samples/font.c | 160 + lib/ebu/samples/initexit.c | 60 + lib/ebu/samples/subbook.c | 106 + lib/ebu/samples/text.c | 159 + lib/ebu/samples/word.c | 155 + lib/ebu/stamp-h1 | 1 + lib/libmxml/.gitignore | 29 + lib/libmxml/ANNOUNCEMENT | 17 + lib/libmxml/CHANGES.md | 227 + lib/libmxml/COPYING | 507 + lib/libmxml/Makefile.in | 419 + lib/libmxml/README.md | 188 + lib/libmxml/config.guess | 1568 ++ lib/libmxml/config.h.in | 109 + lib/libmxml/config.sub | 1793 ++ lib/libmxml/configure | 5982 ++++++ lib/libmxml/configure.ac | 360 + lib/libmxml/doc/advanced.html | 633 + lib/libmxml/doc/basics.html | 590 + lib/libmxml/doc/body.man | 173 + lib/libmxml/doc/body.md | 1153 ++ lib/libmxml/doc/docset.css | 113 + lib/libmxml/doc/docset.header | 18 + lib/libmxml/doc/docset.intro | 141 + lib/libmxml/doc/footer.man | 4 + lib/libmxml/doc/hires/mxml.png | Bin 0 -> 32107 bytes lib/libmxml/doc/install.html | 118 + lib/libmxml/doc/intro.html | 190 + lib/libmxml/doc/license.html | 593 + lib/libmxml/doc/makedocs.sh | 22 + lib/libmxml/doc/mxml-cover.jpg | Bin 0 -> 1218760 bytes lib/libmxml/doc/mxml-cover.opacity | Bin 0 -> 6941525 bytes lib/libmxml/doc/mxml-cover.png | Bin 0 -> 658237 bytes lib/libmxml/doc/mxml.book | 10 + lib/libmxml/doc/mxml.html | 3920 ++++ lib/libmxml/doc/mxml.man | 1329 ++ lib/libmxml/doc/mxml.opacity | Bin 0 -> 12414 bytes lib/libmxml/doc/mxml.pdf | Bin 0 -> 544825 bytes lib/libmxml/doc/mxml.png | Bin 0 -> 4321 bytes lib/libmxml/doc/mxmldoc.html | 218 + lib/libmxml/doc/mxmldoc.man | 250 + lib/libmxml/doc/mxmldoc.xsd | 187 + lib/libmxml/doc/reference.header | 1 + lib/libmxml/doc/reference.html | 1650 ++ lib/libmxml/doc/schema.html | 200 + lib/libmxml/doc/title.html | 33 + lib/libmxml/install-sh | 251 + lib/libmxml/libmxml.so.1.6 | Bin 0 -> 176912 bytes lib/libmxml/makesrcdist | 51 + lib/libmxml/mmd.c | 978 + lib/libmxml/mmd.h | 109 + lib/libmxml/mvalidate.c | 33 + lib/libmxml/mxml-attr.c | 349 + lib/libmxml/mxml-entity.c | 441 + lib/libmxml/mxml-file.c | 3070 +++ lib/libmxml/mxml-get.c | 445 + lib/libmxml/mxml-index.c | 655 + lib/libmxml/mxml-node.c | 876 + lib/libmxml/mxml-private.c | 316 + lib/libmxml/mxml-private.h | 43 + lib/libmxml/mxml-search.c | 272 + lib/libmxml/mxml-set.c | 374 + lib/libmxml/mxml-string.c | 565 + lib/libmxml/mxml.h | 335 + lib/libmxml/mxml.pc.in | 10 + lib/libmxml/mxml.spec | 82 + lib/libmxml/mxmldoc.c | 6928 +++++++ lib/libmxml/test.xml | 29 + lib/libmxml/test/class.cxx | 84 + lib/libmxml/test/dotest.sh | 47 + lib/libmxml/test/enum.cxx | 17 + lib/libmxml/test/function.cxx | 107 + lib/libmxml/test/functype.cxx | 1 + lib/libmxml/test/struct.cxx | 55 + lib/libmxml/test/type.cxx | 3 + lib/libmxml/testmxml.c | 888 + lib/libmxml/vcnet/mxml.sln | 47 + lib/libmxml/vcnet/mxml1.def | 80 + lib/libmxml/vcnet/mxml1.vcproj | 424 + lib/libmxml/vcnet/mxmldoc.vcproj | 364 + lib/libmxml/vcnet/testmxml.vcproj | 364 + lib/libmxml/xcode/archive.h | 741 + lib/libmxml/xcode/archive_entry.h | 524 + .../xcode/mxml.xcodeproj/project.pbxproj | 633 + lib/libmxml/zipc.c | 940 + lib/libmxml/zipc.h | 82 + src/Makefile | 21 + src/book.c | 916 + src/book.h | 42 + src/conv.c | 44 + src/conv.h | 16 + src/functions.c | 56 + src/functions.h | 7 + src/main.c | 184 + src/parson.c | 2007 ++ src/parson.h | 234 + 597 files changed, 310995 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 lib/eb/appendix/cencro-1.0.tar.gz create mode 100644 lib/eb/appendix/chujiten-2.3.tar.gz create mode 100644 lib/eb/appendix/chujiten2-2.0.tar.gz create mode 100644 lib/eb/appendix/chujiten6-2.3.tar.gz create mode 100644 lib/eb/appendix/colloc-2.0.tar.gz create mode 100644 lib/eb/appendix/crownfj-2.0.tar.gz create mode 100644 lib/eb/appendix/crownfj2-1.0.tar.gz create mode 100644 lib/eb/appendix/crowngj-1.0.tar.gz create mode 100644 lib/eb/appendix/daihyakka-1.0.tar.gz create mode 100644 lib/eb/appendix/daijirin-2.0.tar.gz create mode 100644 lib/eb/appendix/dd75-2.0.tar.gz create mode 100644 lib/eb/appendix/gendai2000-1.0.tar.gz create mode 100644 lib/eb/appendix/genius-1.0.tar.gz create mode 100644 lib/eb/appendix/genius2-1.1.tar.gz create mode 100644 lib/eb/appendix/global-2.0.tar.gz create mode 100644 lib/eb/appendix/heritage-2.2.tar.gz create mode 100644 lib/eb/appendix/hyogen-1.0.tar.gz create mode 100644 lib/eb/appendix/izumi-2.0.tar.gz create mode 100644 lib/eb/appendix/jitenban-2.4.tar.gz create mode 100644 lib/eb/appendix/jitenban97-2.1.tar.gz create mode 100644 lib/eb/appendix/kanjigen-2.0.tar.gz create mode 100644 lib/eb/appendix/kanjigen2-2.0.tar.gz create mode 100644 lib/eb/appendix/kojien-2.3.tar.gz create mode 100644 lib/eb/appendix/kojien2-2.0.tar.gz create mode 100644 lib/eb/appendix/kojien4-2.2.tar.gz create mode 100644 lib/eb/appendix/oxford-2.0.tar.gz create mode 100644 lib/eb/appendix/plus-2.0.tar.gz create mode 100644 lib/eb/appendix/readers-2.2.tar.gz create mode 100644 lib/eb/appendix/readers2-2.0.tar.gz create mode 100644 lib/eb/appendix/ruigigo-1.0.tar.gz create mode 100644 lib/eb/appendix/superdic98-1.0.tar.gz create mode 100644 lib/ebu/AUTHORS create mode 100644 lib/ebu/COPYING create mode 100644 lib/ebu/ChangeLog create mode 100644 lib/ebu/ChangeLog.0 create mode 100644 lib/ebu/ChangeLog.1 create mode 100644 lib/ebu/ChangeLog.2 create mode 100644 lib/ebu/INSTALL create mode 100644 lib/ebu/Makefile create mode 100644 lib/ebu/Makefile.am create mode 100644 lib/ebu/Makefile.in create mode 100644 lib/ebu/NEWS create mode 100644 lib/ebu/README create mode 100644 lib/ebu/README.org create mode 100644 lib/ebu/aclocal.m4 create mode 100644 lib/ebu/config.guess create mode 100644 lib/ebu/config.h create mode 100644 lib/ebu/config.h.in create mode 100644 lib/ebu/config.log create mode 100644 lib/ebu/config.status create mode 100644 lib/ebu/config.sub create mode 100644 lib/ebu/configure create mode 100644 lib/ebu/configure.ac create mode 100644 lib/ebu/depcomp create mode 100644 lib/ebu/doc/Makefile create mode 100644 lib/ebu/doc/Makefile.am create mode 100644 lib/ebu/doc/Makefile.in create mode 100644 lib/ebu/doc/c2html create mode 100644 lib/ebu/doc/eb-01.html create mode 100644 lib/ebu/doc/eb-02.html create mode 100644 lib/ebu/doc/eb-03.html create mode 100644 lib/ebu/doc/eb-04.html create mode 100644 lib/ebu/doc/eb-05.html create mode 100644 lib/ebu/doc/eb-06.html create mode 100644 lib/ebu/doc/eb-07.html create mode 100644 lib/ebu/doc/eb-08.html create mode 100644 lib/ebu/doc/eb-09.html create mode 100644 lib/ebu/doc/eb-10.html create mode 100644 lib/ebu/doc/eb-11.html create mode 100644 lib/ebu/doc/eb-12.html create mode 100644 lib/ebu/doc/eb-13.html create mode 100644 lib/ebu/doc/eb-14.html create mode 100644 lib/ebu/doc/eb-cat.html create mode 100644 lib/ebu/doc/eb-index-const.html create mode 100644 lib/ebu/doc/eb-index-func.html create mode 100644 lib/ebu/doc/eb-index-type.html create mode 100644 lib/ebu/doc/eb-sample-appendix.html create mode 100644 lib/ebu/doc/eb-sample-booklist.html create mode 100644 lib/ebu/doc/eb-sample-disctype.html create mode 100644 lib/ebu/doc/eb-sample-font.html create mode 100644 lib/ebu/doc/eb-sample-initexit.html create mode 100644 lib/ebu/doc/eb-sample-subbook.html create mode 100644 lib/ebu/doc/eb-sample-text.html create mode 100644 lib/ebu/doc/eb-sample-word.html create mode 100644 lib/ebu/doc/eb-toc.html create mode 100644 lib/ebu/doc/eb.css create mode 100644 lib/ebu/doc/eb.html create mode 100644 lib/ebu/doc/eb.html.in create mode 100644 lib/ebu/doc/ebappendix-01.html create mode 100644 lib/ebu/doc/ebappendix-02.html create mode 100644 lib/ebu/doc/ebappendix-03.html create mode 100644 lib/ebu/doc/ebappendix-04.html create mode 100644 lib/ebu/doc/ebappendix-cat.html create mode 100644 lib/ebu/doc/ebappendix-toc.html create mode 100644 lib/ebu/doc/ebappendix.html create mode 100644 lib/ebu/doc/ebappendix.html.in create mode 100644 lib/ebu/doc/ebfont-01.html create mode 100644 lib/ebu/doc/ebfont-02.html create mode 100644 lib/ebu/doc/ebfont-03.html create mode 100644 lib/ebu/doc/ebfont-04.html create mode 100644 lib/ebu/doc/ebfont-cat.html create mode 100644 lib/ebu/doc/ebfont-toc.html create mode 100644 lib/ebu/doc/ebfont.html create mode 100644 lib/ebu/doc/ebfont.html.in create mode 100644 lib/ebu/doc/ebinfo-01.html create mode 100644 lib/ebu/doc/ebinfo-02.html create mode 100644 lib/ebu/doc/ebinfo-03.html create mode 100644 lib/ebu/doc/ebinfo-04.html create mode 100644 lib/ebu/doc/ebinfo-05.html create mode 100644 lib/ebu/doc/ebinfo-cat.html create mode 100644 lib/ebu/doc/ebinfo-toc.html create mode 100644 lib/ebu/doc/ebinfo.html create mode 100644 lib/ebu/doc/ebinfo.html.in create mode 100644 lib/ebu/doc/ebrefile-01.html create mode 100644 lib/ebu/doc/ebrefile-02.html create mode 100644 lib/ebu/doc/ebrefile-03.html create mode 100644 lib/ebu/doc/ebrefile-cat.html create mode 100644 lib/ebu/doc/ebrefile-toc.html create mode 100644 lib/ebu/doc/ebrefile.html create mode 100644 lib/ebu/doc/ebrefile.html.in create mode 100644 lib/ebu/doc/ebstopcode-01.html create mode 100644 lib/ebu/doc/ebstopcode-02.html create mode 100644 lib/ebu/doc/ebstopcode-03.html create mode 100644 lib/ebu/doc/ebstopcode-cat.html create mode 100644 lib/ebu/doc/ebstopcode-toc.html create mode 100644 lib/ebu/doc/ebstopcode.html create mode 100644 lib/ebu/doc/ebstopcode.html.in create mode 100644 lib/ebu/doc/ebutils.css create mode 100644 lib/ebu/doc/ebzip-01.html create mode 100644 lib/ebu/doc/ebzip-02.html create mode 100644 lib/ebu/doc/ebzip-03.html create mode 100644 lib/ebu/doc/ebzip-04.html create mode 100644 lib/ebu/doc/ebzip-05.html create mode 100644 lib/ebu/doc/ebzip-06.html create mode 100644 lib/ebu/doc/ebzip-07.html create mode 100644 lib/ebu/doc/ebzip-08.html create mode 100644 lib/ebu/doc/ebzip-09.html create mode 100644 lib/ebu/doc/ebzip-10.html create mode 100644 lib/ebu/doc/ebzip-cat.html create mode 100644 lib/ebu/doc/ebzip-toc.html create mode 100644 lib/ebu/doc/ebzip.html create mode 100644 lib/ebu/doc/ebzip.html.in create mode 100644 lib/ebu/doc/html-include create mode 100644 lib/ebu/doc/html-index create mode 100644 lib/ebu/doc/html-split create mode 100644 lib/ebu/doc/html-toc create mode 100644 lib/ebu/doc/version.html create mode 100644 lib/ebu/ebappendix/Makefile create mode 100644 lib/ebu/ebappendix/Makefile.am create mode 100644 lib/ebu/ebappendix/Makefile.in create mode 100644 lib/ebu/ebappendix/ebappendix.in create mode 100644 lib/ebu/ebappendix/ebuappendix create mode 100644 lib/ebu/ebfont/.deps/ebfont.Po create mode 100644 lib/ebu/ebfont/.libs/ebufont create mode 100644 lib/ebu/ebfont/Makefile create mode 100644 lib/ebu/ebfont/Makefile.am create mode 100644 lib/ebu/ebfont/Makefile.in create mode 100644 lib/ebu/ebfont/ebfont.c create mode 100644 lib/ebu/ebfont/ebufont create mode 100644 lib/ebu/ebinfo/.deps/ebinfo.Po create mode 100644 lib/ebu/ebinfo/.libs/ebuinfo create mode 100644 lib/ebu/ebinfo/Makefile create mode 100644 lib/ebu/ebinfo/Makefile.am create mode 100644 lib/ebu/ebinfo/Makefile.in create mode 100644 lib/ebu/ebinfo/ebinfo.c create mode 100644 lib/ebu/ebinfo/ebuinfo create mode 100644 lib/ebu/ebrefile/.deps/ebrefile.Po create mode 100644 lib/ebu/ebrefile/.libs/eburefile create mode 100644 lib/ebu/ebrefile/Makefile create mode 100644 lib/ebu/ebrefile/Makefile.am create mode 100644 lib/ebu/ebrefile/Makefile.in create mode 100644 lib/ebu/ebrefile/ebrefile.c create mode 100644 lib/ebu/ebrefile/eburefile create mode 100644 lib/ebu/ebstopcode/.deps/ebstopcode.Po create mode 100644 lib/ebu/ebstopcode/.libs/ebustopcode create mode 100644 lib/ebu/ebstopcode/Makefile create mode 100644 lib/ebu/ebstopcode/Makefile.am create mode 100644 lib/ebu/ebstopcode/Makefile.in create mode 100644 lib/ebu/ebstopcode/ebstopcode.c create mode 100644 lib/ebu/ebstopcode/ebustopcode create mode 100644 lib/ebu/ebu.conf create mode 100644 lib/ebu/ebu.conf.in create mode 100644 lib/ebu/ebu/.deps/appendix.Plo create mode 100644 lib/ebu/ebu/.deps/appsub.Plo create mode 100644 lib/ebu/ebu/.deps/bcd.Plo create mode 100644 lib/ebu/ebu/.deps/binary.Plo create mode 100644 lib/ebu/ebu/.deps/bitmap.Plo create mode 100644 lib/ebu/ebu/.deps/book.Plo create mode 100644 lib/ebu/ebu/.deps/booklist.Plo create mode 100644 lib/ebu/ebu/.deps/color.Plo create mode 100644 lib/ebu/ebu/.deps/copyright.Plo create mode 100644 lib/ebu/ebu/.deps/cross.Plo create mode 100644 lib/ebu/ebu/.deps/dummyin6.Plo create mode 100644 lib/ebu/ebu/.deps/eb.Plo create mode 100644 lib/ebu/ebu/.deps/ebnet.Plo create mode 100644 lib/ebu/ebu/.deps/endword.Plo create mode 100644 lib/ebu/ebu/.deps/error.Plo create mode 100644 lib/ebu/ebu/.deps/exactword.Plo create mode 100644 lib/ebu/ebu/.deps/filename.Plo create mode 100644 lib/ebu/ebu/.deps/font.Plo create mode 100644 lib/ebu/ebu/.deps/getaddrinfo.Plo create mode 100644 lib/ebu/ebu/.deps/hook.Plo create mode 100644 lib/ebu/ebu/.deps/jacode.Plo create mode 100644 lib/ebu/ebu/.deps/keyword.Plo create mode 100644 lib/ebu/ebu/.deps/linebuf.Plo create mode 100644 lib/ebu/ebu/.deps/lock.Plo create mode 100644 lib/ebu/ebu/.deps/log.Plo create mode 100644 lib/ebu/ebu/.deps/match.Plo create mode 100644 lib/ebu/ebu/.deps/menu.Plo create mode 100644 lib/ebu/ebu/.deps/multi.Plo create mode 100644 lib/ebu/ebu/.deps/multiplex.Plo create mode 100644 lib/ebu/ebu/.deps/narwalt.Plo create mode 100644 lib/ebu/ebu/.deps/narwfont.Plo create mode 100644 lib/ebu/ebu/.deps/readtext.Plo create mode 100644 lib/ebu/ebu/.deps/search.Plo create mode 100644 lib/ebu/ebu/.deps/setword.Plo create mode 100644 lib/ebu/ebu/.deps/stopcode.Plo create mode 100644 lib/ebu/ebu/.deps/strcasecmp.Plo create mode 100644 lib/ebu/ebu/.deps/subbook.Plo create mode 100644 lib/ebu/ebu/.deps/text.Plo create mode 100644 lib/ebu/ebu/.deps/urlparts.Plo create mode 100644 lib/ebu/ebu/.deps/utf8.Plo create mode 100644 lib/ebu/ebu/.deps/widealt.Plo create mode 100644 lib/ebu/ebu/.deps/widefont.Plo create mode 100644 lib/ebu/ebu/.deps/word.Plo create mode 100644 lib/ebu/ebu/.deps/zio.Plo create mode 100644 lib/ebu/ebu/.libs/libebu.a create mode 100644 lib/ebu/ebu/.libs/libebu.la create mode 100644 lib/ebu/ebu/.libs/libebu.lai create mode 100644 lib/ebu/ebu/.libs/libebu.so create mode 100644 lib/ebu/ebu/.libs/libebu.so.17 create mode 100644 lib/ebu/ebu/.libs/libebu.so.17.0.0 create mode 100644 lib/ebu/ebu/Makefile create mode 100644 lib/ebu/ebu/Makefile.am create mode 100644 lib/ebu/ebu/Makefile.in create mode 100644 lib/ebu/ebu/appendix.c create mode 100644 lib/ebu/ebu/appendix.h create mode 100644 lib/ebu/ebu/appendix.lo create mode 100644 lib/ebu/ebu/appsub.c create mode 100644 lib/ebu/ebu/appsub.lo create mode 100644 lib/ebu/ebu/bcd.c create mode 100644 lib/ebu/ebu/bcd.lo create mode 100644 lib/ebu/ebu/binary.c create mode 100644 lib/ebu/ebu/binary.h create mode 100644 lib/ebu/ebu/binary.lo create mode 100644 lib/ebu/ebu/bitmap.c create mode 100644 lib/ebu/ebu/bitmap.lo create mode 100644 lib/ebu/ebu/book.c create mode 100644 lib/ebu/ebu/book.lo create mode 100644 lib/ebu/ebu/booklist.c create mode 100644 lib/ebu/ebu/booklist.h create mode 100644 lib/ebu/ebu/booklist.lo create mode 100644 lib/ebu/ebu/build-post.h create mode 100644 lib/ebu/ebu/build-post.h.in create mode 100644 lib/ebu/ebu/build-pre.h create mode 100644 lib/ebu/ebu/color.c create mode 100644 lib/ebu/ebu/color.lo create mode 100644 lib/ebu/ebu/copyright.c create mode 100644 lib/ebu/ebu/copyright.lo create mode 100644 lib/ebu/ebu/cross.c create mode 100644 lib/ebu/ebu/cross.lo create mode 100644 lib/ebu/ebu/defs.h create mode 100644 lib/ebu/ebu/dummyin6.c create mode 100644 lib/ebu/ebu/dummyin6.h create mode 100644 lib/ebu/ebu/dummyin6.lo create mode 100644 lib/ebu/ebu/eb.c create mode 100644 lib/ebu/ebu/eb.h create mode 100644 lib/ebu/ebu/eb.lo create mode 100644 lib/ebu/ebu/ebnet.c create mode 100644 lib/ebu/ebu/ebnet.h create mode 100644 lib/ebu/ebu/ebnet.lo create mode 100644 lib/ebu/ebu/endword.c create mode 100644 lib/ebu/ebu/endword.lo create mode 100644 lib/ebu/ebu/error.c create mode 100644 lib/ebu/ebu/error.h create mode 100644 lib/ebu/ebu/error.lo create mode 100644 lib/ebu/ebu/exactword.c create mode 100644 lib/ebu/ebu/exactword.lo create mode 100644 lib/ebu/ebu/filename.c create mode 100644 lib/ebu/ebu/filename.lo create mode 100644 lib/ebu/ebu/font.c create mode 100644 lib/ebu/ebu/font.h create mode 100644 lib/ebu/ebu/font.lo create mode 100644 lib/ebu/ebu/getaddrinfo.c create mode 100644 lib/ebu/ebu/getaddrinfo.h create mode 100644 lib/ebu/ebu/getaddrinfo.lo create mode 100644 lib/ebu/ebu/hook.c create mode 100644 lib/ebu/ebu/hook.lo create mode 100644 lib/ebu/ebu/jacode.c create mode 100644 lib/ebu/ebu/jacode.lo create mode 100644 lib/ebu/ebu/keyword.c create mode 100644 lib/ebu/ebu/keyword.lo create mode 100644 lib/ebu/ebu/libebu.la create mode 100644 lib/ebu/ebu/linebuf.c create mode 100644 lib/ebu/ebu/linebuf.h create mode 100644 lib/ebu/ebu/linebuf.lo create mode 100644 lib/ebu/ebu/lock.c create mode 100644 lib/ebu/ebu/lock.lo create mode 100644 lib/ebu/ebu/log.c create mode 100644 lib/ebu/ebu/log.lo create mode 100644 lib/ebu/ebu/match.c create mode 100644 lib/ebu/ebu/match.lo create mode 100644 lib/ebu/ebu/menu.c create mode 100644 lib/ebu/ebu/menu.lo create mode 100644 lib/ebu/ebu/multi.c create mode 100644 lib/ebu/ebu/multi.lo create mode 100644 lib/ebu/ebu/multiplex.c create mode 100644 lib/ebu/ebu/multiplex.lo create mode 100644 lib/ebu/ebu/narwalt.c create mode 100644 lib/ebu/ebu/narwalt.lo create mode 100644 lib/ebu/ebu/narwfont.c create mode 100644 lib/ebu/ebu/narwfont.lo create mode 100644 lib/ebu/ebu/readtext.c create mode 100644 lib/ebu/ebu/readtext.lo create mode 100644 lib/ebu/ebu/search.c create mode 100644 lib/ebu/ebu/search.lo create mode 100644 lib/ebu/ebu/setword.c create mode 100644 lib/ebu/ebu/setword.lo create mode 100644 lib/ebu/ebu/stamp-build-post-h create mode 100644 lib/ebu/ebu/stamp-sysdefs-h create mode 100644 lib/ebu/ebu/stamp-widealt-h create mode 100644 lib/ebu/ebu/stamp-widefont-h create mode 100644 lib/ebu/ebu/stopcode.c create mode 100644 lib/ebu/ebu/stopcode.lo create mode 100644 lib/ebu/ebu/strcasecmp.c create mode 100644 lib/ebu/ebu/strcasecmp.lo create mode 100644 lib/ebu/ebu/subbook.c create mode 100644 lib/ebu/ebu/subbook.lo create mode 100644 lib/ebu/ebu/sysdefs.h create mode 100644 lib/ebu/ebu/text.c create mode 100644 lib/ebu/ebu/text.h create mode 100644 lib/ebu/ebu/text.lo create mode 100644 lib/ebu/ebu/urlparts.c create mode 100644 lib/ebu/ebu/urlparts.h create mode 100644 lib/ebu/ebu/urlparts.lo create mode 100644 lib/ebu/ebu/utf8.c create mode 100644 lib/ebu/ebu/utf8.lo create mode 100644 lib/ebu/ebu/widealt.c create mode 100644 lib/ebu/ebu/widealt.lo create mode 100644 lib/ebu/ebu/widefont.c create mode 100644 lib/ebu/ebu/widefont.lo create mode 100644 lib/ebu/ebu/word.c create mode 100644 lib/ebu/ebu/word.lo create mode 100644 lib/ebu/ebu/zio.c create mode 100644 lib/ebu/ebu/zio.h create mode 100644 lib/ebu/ebu/zio.lo create mode 100644 lib/ebu/ebzip/.deps/copyfile.Po create mode 100644 lib/ebu/ebzip/.deps/ebzip.Po create mode 100644 lib/ebu/ebzip/.deps/ebzip1.Po create mode 100644 lib/ebu/ebzip/.deps/sebxa.Po create mode 100644 lib/ebu/ebzip/.deps/speedup.Po create mode 100644 lib/ebu/ebzip/.deps/unlinkfile.Po create mode 100644 lib/ebu/ebzip/.deps/unzipbook.Po create mode 100644 lib/ebu/ebzip/.deps/unzipfile.Po create mode 100644 lib/ebu/ebzip/.deps/zipbook.Po create mode 100644 lib/ebu/ebzip/.deps/zipfile.Po create mode 100644 lib/ebu/ebzip/.deps/zipinfobook.Po create mode 100644 lib/ebu/ebzip/.deps/zipinfofile.Po create mode 100644 lib/ebu/ebzip/.libs/ebuzip create mode 100644 lib/ebu/ebzip/Makefile create mode 100644 lib/ebu/ebzip/Makefile.am create mode 100644 lib/ebu/ebzip/Makefile.in create mode 100644 lib/ebu/ebzip/copyfile.c create mode 100644 lib/ebu/ebzip/ebuzip create mode 100644 lib/ebu/ebzip/ebzip.c create mode 100644 lib/ebu/ebzip/ebzip.h create mode 100644 lib/ebu/ebzip/ebzip1.c create mode 100644 lib/ebu/ebzip/sebxa.c create mode 100644 lib/ebu/ebzip/speedup.c create mode 100644 lib/ebu/ebzip/unlinkfile.c create mode 100644 lib/ebu/ebzip/unzipbook.c create mode 100644 lib/ebu/ebzip/unzipfile.c create mode 100644 lib/ebu/ebzip/zipbook.c create mode 100644 lib/ebu/ebzip/zipfile.c create mode 100644 lib/ebu/ebzip/zipinfobook.c create mode 100644 lib/ebu/ebzip/zipinfofile.c create mode 100644 lib/ebu/install-sh create mode 100644 lib/ebu/libebutils/.deps/ebutils.Po create mode 100644 lib/ebu/libebutils/.deps/getopt.Po create mode 100644 lib/ebu/libebutils/.deps/getumask.Po create mode 100644 lib/ebu/libebutils/.deps/makedir.Po create mode 100644 lib/ebu/libebutils/.deps/puts_eucjp.Po create mode 100644 lib/ebu/libebutils/.deps/samefile.Po create mode 100644 lib/ebu/libebutils/.deps/strcasecmp.Po create mode 100644 lib/ebu/libebutils/.deps/strlist.Po create mode 100644 lib/ebu/libebutils/.deps/yesno.Po create mode 100644 lib/ebu/libebutils/Makefile create mode 100644 lib/ebu/libebutils/Makefile.am create mode 100644 lib/ebu/libebutils/Makefile.in create mode 100644 lib/ebu/libebutils/ebutils.c create mode 100644 lib/ebu/libebutils/ebutils.h create mode 100644 lib/ebu/libebutils/ebutils.h.in create mode 100644 lib/ebu/libebutils/getopt.c create mode 100644 lib/ebu/libebutils/getopt.h create mode 100644 lib/ebu/libebutils/getopt_long.pl create mode 100644 lib/ebu/libebutils/getumask.c create mode 100644 lib/ebu/libebutils/getumask.h create mode 100644 lib/ebu/libebutils/libebutils.a create mode 100644 lib/ebu/libebutils/makedir.c create mode 100644 lib/ebu/libebutils/makedir.h create mode 100644 lib/ebu/libebutils/puts_eucjp.c create mode 100644 lib/ebu/libebutils/samefile.c create mode 100644 lib/ebu/libebutils/samefile.h create mode 100644 lib/ebu/libebutils/stamp-ebutils-h create mode 100644 lib/ebu/libebutils/strcasecmp.c create mode 100644 lib/ebu/libebutils/strlist.c create mode 100644 lib/ebu/libebutils/strlist.h create mode 100644 lib/ebu/libebutils/yesno.c create mode 100644 lib/ebu/libebutils/yesno.h create mode 100644 lib/ebu/libtool create mode 100644 lib/ebu/ltmain.sh create mode 100644 lib/ebu/m4/Makefile create mode 100644 lib/ebu/m4/Makefile.am create mode 100644 lib/ebu/m4/Makefile.in create mode 100644 lib/ebu/m4/ebu.m4 create mode 100644 lib/ebu/m4/gettext.m4 create mode 100644 lib/ebu/m4/in6addr.m4 create mode 100644 lib/ebu/m4/largefile.m4 create mode 100644 lib/ebu/m4/lcmessage.m4 create mode 100644 lib/ebu/m4/libtool.m4 create mode 100644 lib/ebu/m4/ltoptions.m4 create mode 100644 lib/ebu/m4/ltsugar.m4 create mode 100644 lib/ebu/m4/ltversion.m4 create mode 100644 lib/ebu/m4/lt~obsolete.m4 create mode 100644 lib/ebu/m4/sockaddrin6.m4 create mode 100644 lib/ebu/m4/sockinttypes.m4 create mode 100644 lib/ebu/misc/ebdump create mode 100644 lib/ebu/misc/ebfixlog create mode 100644 lib/ebu/missing create mode 100644 lib/ebu/move-if-change create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/AUTHORS create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/COPYING create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/ChangeLog create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/INSTALL create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/Makefile.am create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/Makefile.in create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/NEWS create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/README create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/README.org create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/aclocal.m4 create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/bmp2ppm.c create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/bmp_in.c create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/codeconv.c create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/codeconv.h create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/compile create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/config.guess create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/config.h.in create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/config.sub create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/configure create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/configure.ac create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/depcomp create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/eblook.c create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/eblook.info create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/eblook.texi create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/getopt.c create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/getopt.h create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/getopt1.c create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/install-sh create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/ltmain.sh create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/m4/eb4.m4 create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/m4/ebu.m4 create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/m4/largefile.m4 create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/m4/libtool.m4 create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltoptions.m4 create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltsugar.m4 create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltversion.m4 create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/m4/lt~obsolete.m4 create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/missing create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/mkinstalldirs create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/strcasecmp.c create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/strdup.c create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/texinfo.tex create mode 100644 lib/ebu/others/eblook-1.6.1+media-20200414/win32.c create mode 100644 lib/ebu/po-eb/Makefile create mode 100644 lib/ebu/po-eb/Makefile.in create mode 100644 lib/ebu/po-eb/ebu.pot create mode 100644 lib/ebu/po-eb/ja.mo create mode 100644 lib/ebu/po-eb/ja.po create mode 100644 lib/ebu/po-ebutils/Makefile create mode 100644 lib/ebu/po-ebutils/Makefile.in create mode 100644 lib/ebu/po-ebutils/ebuutils.pot create mode 100644 lib/ebu/po-ebutils/ja.mo create mode 100644 lib/ebu/po-ebutils/ja.po create mode 100644 lib/ebu/samples/.deps/appendix.Po create mode 100644 lib/ebu/samples/.deps/booklist.Po create mode 100644 lib/ebu/samples/.deps/disctype.Po create mode 100644 lib/ebu/samples/.deps/font.Po create mode 100644 lib/ebu/samples/.deps/initexit.Po create mode 100644 lib/ebu/samples/.deps/subbook.Po create mode 100644 lib/ebu/samples/.deps/text.Po create mode 100644 lib/ebu/samples/.deps/word.Po create mode 100644 lib/ebu/samples/Makefile create mode 100644 lib/ebu/samples/Makefile.am create mode 100644 lib/ebu/samples/Makefile.in create mode 100644 lib/ebu/samples/README create mode 100644 lib/ebu/samples/appendix.c create mode 100644 lib/ebu/samples/booklist.c create mode 100644 lib/ebu/samples/disctype.c create mode 100644 lib/ebu/samples/font.c create mode 100644 lib/ebu/samples/initexit.c create mode 100644 lib/ebu/samples/subbook.c create mode 100644 lib/ebu/samples/text.c create mode 100644 lib/ebu/samples/word.c create mode 100644 lib/ebu/stamp-h1 create mode 100644 lib/libmxml/.gitignore create mode 100644 lib/libmxml/ANNOUNCEMENT create mode 100644 lib/libmxml/CHANGES.md create mode 100644 lib/libmxml/COPYING create mode 100644 lib/libmxml/Makefile.in create mode 100644 lib/libmxml/README.md create mode 100644 lib/libmxml/config.guess create mode 100644 lib/libmxml/config.h.in create mode 100644 lib/libmxml/config.sub create mode 100644 lib/libmxml/configure create mode 100644 lib/libmxml/configure.ac create mode 100644 lib/libmxml/doc/advanced.html create mode 100644 lib/libmxml/doc/basics.html create mode 100644 lib/libmxml/doc/body.man create mode 100644 lib/libmxml/doc/body.md create mode 100644 lib/libmxml/doc/docset.css create mode 100644 lib/libmxml/doc/docset.header create mode 100644 lib/libmxml/doc/docset.intro create mode 100644 lib/libmxml/doc/footer.man create mode 100644 lib/libmxml/doc/hires/mxml.png create mode 100644 lib/libmxml/doc/install.html create mode 100644 lib/libmxml/doc/intro.html create mode 100644 lib/libmxml/doc/license.html create mode 100644 lib/libmxml/doc/makedocs.sh create mode 100644 lib/libmxml/doc/mxml-cover.jpg create mode 100644 lib/libmxml/doc/mxml-cover.opacity create mode 100644 lib/libmxml/doc/mxml-cover.png create mode 100644 lib/libmxml/doc/mxml.book create mode 100644 lib/libmxml/doc/mxml.html create mode 100644 lib/libmxml/doc/mxml.man create mode 100644 lib/libmxml/doc/mxml.opacity create mode 100644 lib/libmxml/doc/mxml.pdf create mode 100644 lib/libmxml/doc/mxml.png create mode 100644 lib/libmxml/doc/mxmldoc.html create mode 100644 lib/libmxml/doc/mxmldoc.man create mode 100644 lib/libmxml/doc/mxmldoc.xsd create mode 100644 lib/libmxml/doc/reference.header create mode 100644 lib/libmxml/doc/reference.html create mode 100644 lib/libmxml/doc/schema.html create mode 100644 lib/libmxml/doc/title.html create mode 100644 lib/libmxml/install-sh create mode 100644 lib/libmxml/libmxml.so.1.6 create mode 100644 lib/libmxml/makesrcdist create mode 100644 lib/libmxml/mmd.c create mode 100644 lib/libmxml/mmd.h create mode 100644 lib/libmxml/mvalidate.c create mode 100644 lib/libmxml/mxml-attr.c create mode 100644 lib/libmxml/mxml-entity.c create mode 100644 lib/libmxml/mxml-file.c create mode 100644 lib/libmxml/mxml-get.c create mode 100644 lib/libmxml/mxml-index.c create mode 100644 lib/libmxml/mxml-node.c create mode 100644 lib/libmxml/mxml-private.c create mode 100644 lib/libmxml/mxml-private.h create mode 100644 lib/libmxml/mxml-search.c create mode 100644 lib/libmxml/mxml-set.c create mode 100644 lib/libmxml/mxml-string.c create mode 100644 lib/libmxml/mxml.h create mode 100644 lib/libmxml/mxml.pc.in create mode 100644 lib/libmxml/mxml.spec create mode 100644 lib/libmxml/mxmldoc.c create mode 100644 lib/libmxml/test.xml create mode 100644 lib/libmxml/test/class.cxx create mode 100644 lib/libmxml/test/dotest.sh create mode 100644 lib/libmxml/test/enum.cxx create mode 100644 lib/libmxml/test/function.cxx create mode 100644 lib/libmxml/test/functype.cxx create mode 100644 lib/libmxml/test/struct.cxx create mode 100644 lib/libmxml/test/type.cxx create mode 100644 lib/libmxml/testmxml.c create mode 100644 lib/libmxml/vcnet/mxml.sln create mode 100644 lib/libmxml/vcnet/mxml1.def create mode 100644 lib/libmxml/vcnet/mxml1.vcproj create mode 100644 lib/libmxml/vcnet/mxmldoc.vcproj create mode 100644 lib/libmxml/vcnet/testmxml.vcproj create mode 100644 lib/libmxml/xcode/archive.h create mode 100644 lib/libmxml/xcode/archive_entry.h create mode 100644 lib/libmxml/xcode/mxml.xcodeproj/project.pbxproj create mode 100644 lib/libmxml/zipc.c create mode 100644 lib/libmxml/zipc.h create mode 100644 src/Makefile create mode 100644 src/book.c create mode 100644 src/book.h create mode 100644 src/conv.c create mode 100644 src/conv.h create mode 100644 src/functions.c create mode 100644 src/functions.h create mode 100644 src/main.c create mode 100644 src/parson.c create mode 100644 src/parson.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f0ebc53 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.o +ebutest +ebclient diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..cb72b83 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +ebclient is a simple CLI program for accessing [EPWING](https://ja.wikipedia.org/wiki/EPWING) & [é›»å­ãƒ–ック]() dictionaries. +It accepts queries from stdin and outputs results to stdout. It's used as the backend of +[EBWeb](https://github.com/sagan/EBWeb). + +## Dependencies + +- [libebu](http://green.ribbon.to/~ikazuhiro/dic/ebu.html). It's a fork of + [libeb (EB ライブラリ)](https://www.mistys-internet.website/eb/) which adds UTF-8 support to the latter. +- [libmxml](https://github.com/michaelrsweet/mxml). Used for accessing xml format gaiji + ([外字](https://ja.wikipedia.org/wiki/%E5%A4%96%E5%AD%97)) - + unicode mapping files that some epwing dictioneries provide. +- libz (`apt-get install lib32z1-dev`) + +## Build + +Install build tools (`apt-get install build-essential libtool-bin`) and run `make` in src/ dir. +The dependencies must be compiled priorly and put to corresponding locations which are referenced in Makefile. + +## Usage + +`./ebclient ` + +`` is the dir where epwing dictionaries files are put at, e.g.: + +``` +dicts_path/ +|---dict_A/ +|------CATALOGS +|------subbook_1/ +|------subbook_2/ +|---dict_B/ +|------CATALOGS +|------subbook_1/ +|------subbook_2/ +``` + +libeb project provides [appendix](https://www.mistys-internet.website/eb/appendix.html) (補助データ) files for +some known dictionaries. For epwing dictionary, put the appendix file in the "subbook" folder +(the dir where "honmon" file exists) and rename it to "furoku". For é›»å­ãƒ–ック dictionary, +put it to the subbook folder (the dir where "start" file exists) and keep the original "appendix" name unchanged. + +## Communication protocol + +When started, ebclient output the flatten list of all subbooks of all dictionaries in dicts_path in json format (with a trailing `\n`), e.g.: + +``` +["広辞苑第六版","付属資料","NHK 日本語発音アクセント辞典"] + +``` + +Afterwards, it read queries from stdin line by line, and output results to stdout in the same order. + +Basic (input) query format: + +``` + +``` + +- `` : the subbook index (0-based) in the flatten list to query +- ``: 0: prefix match; 1: suffix match; 2: exact match + +Basic (output) result format (json): + +[heading1, text1, heading2, text2...] + +There are other query formats, distinguished by the first char of query line. For example, query line starts with `d` read an audio (wav) content from dictionary. For more, read the codes. diff --git a/lib/eb/appendix/cencro-1.0.tar.gz b/lib/eb/appendix/cencro-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..456a18985d3fcbe6e7198a4a2cffb2a8a9d1aba3 GIT binary patch literal 1666 zcmV-|27UP-iwFQz_476W1MOPfavC=jrtS1Xyh1N}JeV$SjlF+>vE8I#F7H;0>R=A z8+JT5Ypm((iR%K`dLfsC1elg>8u%B$ui!iiUbVU6-G@t|bc#V!mSG$Ix>-lNDKU{xPH_Z$6w+g0_0R3uh zd>H@p`lpg9*l|Y_&pGY~kl9%QqgX5gG^X1DP5Okk>4f@yCm9ZH_8lKao_p-k6F}PY z7z5w!1!vS_TQG6Q(4j-{Sl96b&uNbX22KEU*j;x$IB~m9Z-Qa4Ydq{S4}v~}fO#iA zxV>rPPVETpup#s401n6PfzyF|4jxjU0mYTW9>34J&9-y zoWTIv4Dh7%#)DOifMeldwYh(A)Pz#)5j-r_>!n)r(H4#k`Yx*Ml+7YJC!>LbfiVk@ z4uc8q2L`xbsqgILj8eIJuiAVRCa_m+)+&t#>>bph1c#-1v$}J1uT+P_qx#`Nqq2sz zW1%UA^J8|iH?0S5S(gRW8TgoVa#ms|7_d!JV`s3#hQZjIK*c$uaMuaYYZl65-x)IB zKfyW+0Vnd^opTDW!yY*S7yh*T?{x;2)w$oc_KV3?*^iNCM#)E_McD9nk5oj|U(nxQl@289D zAJhJO;s=t&!M6+P^|X`zBJCfPjR#_AxbWfro$dO3;Vu2v-90lB3#Dy+DqT)+o*#~? z9+ma#-PxoI`GrCD&x-fMAdw~PTmEwS>t$zoeXF@&TdsvkP3M?aZmRC@8Os~X?Wq!O z(oUteQ$I-F^gEKmBJuwHKc!cH{mbru%e1YF_kS**SNH!SpzeQl|3~+Kr%yfF!JWu< z+%6+OIsUnB>Knr0<(!h%JVG1k zJVb|RE~j0h&3hSXaMmL&zJ#R{E!E-NK+YpuCK;}BYDG3Jn^>IX2=`;<$uVaI5{24` zj9KV+-b---?#4pD+@pnd^PF}``Mp2&g-)Sfzo^l z8xKT8Et2`_s}WZ^Pj6=U2Bz{QJLY<5!6b^|$kudj7u{e3JP1LJx00TT0yGBc}LuDe=ve ze7YE83JMAe3JMC>g%pd|sYKT#12h^xza@+B#Os^!a-tRUk#4G|PUCf%e_8%+{CrK4 zeRH`udZk zm(a8EdP|aDM^gWkq`z8l(r;9M`t)Ykm+8;`km&Cu@n8J6 z_3vN(9;?57{X={J1qB5K1qB5Kh5r{m`kYAr=}SRDK|w)5K|w)5K|w)5K|w)5;a`bA M0obwsX#h|F0D)Iy5C8xG literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/chujiten-2.3.tar.gz b/lib/eb/appendix/chujiten-2.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..45f991623da75e7bfb615e5fc924a930a755afdf GIT binary patch literal 2133 zcmaKpdpy$%AIC{9Yo$h+OA=v7?n9_WE|F_gDkhgDoSIu`+2>d*X#Rwe?PC!=kwo3BUetMOafvdA+=KeGnRQl ziS|tN?hw%gI!<~1z*-lw-KO4Z{!|kLR~eVucz5ZwN#7S`kLI3zrUifKu~4yp{`rB^ zN^B)e$yr9Zgx?RHaf?l}5?>@B#EVY~ROe%N#aJQA+v3=>LUR(XIiB&>$ytu}#*h#F z!Zki7M~gqecyoZH?bxsP>}6gvx}R>F=h6ZN6`eNj+;B!BFhTEgJBx9bm9L+w0Lp;^ zXfkeXxyb4$D@;QtFkz0DwjwMwr1|jBYIQZXbu~jzpHx7$J<1X_Dz}706vGjI6zMF! zhEU2_l=5LRV>33-=5-Hpqk>Wh&eYtFMuVj90+$fwjPRlaqjMWt`c%DTDio<*i64wM zv_T%%8sodf%vKhJ>I?l7?FBK)*}Uc@fl-x;HC(>kOd%#H$KRQK0&0(B4r&@;i+E3jys56N%qascW4v*& z-HQjDsQksadY`c-a=k{UA9SrP?cLQVOX`RyvmTFgn`uU#!T3braW%b^wAPIa_&UEj z?NKk4zgWMWz1i1pwjrd*8QIuYh9Hjh-Dw)jifY_~{#!36)N8vsCp+YP3i!Z!YK&?o zk=g(~S0Pnidb_PD6^3J!&iG9D-U*bi(rYApT_DmdW=u7>#Y?}IxZ1f9%@QzGw`mBUe%j(#oIS6pYrg@Qi> z8VIZmp?Q_U3%AX$U7fpnAAR5AV0(#rs?v5){?|oX$#TrgD|8m$H#x53F<^YN8f~)` z-X}ztG|r09%sP~V*h+nTR!H7w4aA9qW`TmTdHMZLEsFPFZnPpWHEP?pENyeTr-bF= zy3r9*y4ab)zhs$gK)-3YCt4jD25(N&&0TzuQ}sf2aC5eNfBRxy@Zy+Zro|mI`#ZOp zAUEF;WL2BRilp0(k#E|OE+cP!+N0ZX7~dmFc-b3eb2|T=`J(3qZ_0jC6LG3I(8Juv z%>!)dEwH#lwr14H=ZC5&=CRdBZ>A_z%dj;!A|CQ{E4^_7JGW+*Gw55Ko)z?p`&ytg z=q*8ya$i#CyE9hzJJLnJH1J>ee>wgJ34?iz?faBGB&Ii?J-WfKWsbg8Fc z!8>pM2S)nD-ZT0K#c{4lYn2xVaKKSaD+RD<0E-Edk!uK#T_^UEjIgvNRdyG7Qev=w zuOyIByMNPI8`TAP9)WL8P~J!Hs&rLhLbRv)8X4(uK+NFE-|He5C@jNtx;{RLO`_RO z{&WC+TX`Q(InA0jQcm!B$nhw?nGAjzn@`VYe0Q61F` zQr#K9mo3`&7>3sGH=`1Mc%Po#i?VXPkvX8LSp3mRvcw*V(gf@3^FDC~CLWngNqQ*g z#!Kchl4+6ZANsCD>k3Rrop!Q;w@Uj#EcW1X?Z90_w^v6myPGw;U3%(O-{J#miZs(=}!Qh~b% z0;@A__3UZj_A5#cfuy2hFex7$*1hbGCrxjCRup)#VADOKXBq_BcsgJ?MfBK=QWP`O z$#!rtT+1^BT#9fjB;mOckeLy!UV>AeSHV2OWxevmHr+?0$TQawdPr$`t_SHdjTITc zcxVNR-vB%A*k0E1oXx5bq-mNH&d-wg3J@5pa5TZ&k*9*g`*N_kc;AU41)?DDVvkk! zrV?aA^BZh*$267iOh#mnpB#ZrvmMJ5JIs4#iZt(XKI8Ge3@k$cgP$EObPP+=QF`Y) zE%m9`zbkE?tua0GRhC3I`Ai!m0&az55pA4I?Cs|tezh<$*&zzYh_txUBVi7Pht56% z@g*xK@45gRNjs$VO;@<+KzwWuS}$|!_SUqQ>idP<-35Z5dgYu10QQgoxXu%il{i44 z^i_7H06-4HY=91+^jGIBA`w7iQdz+BV{8$5VND#QHME2Eof459%LPCkEonFXB|hz7 uM|REK!bE%`VBDS3xm#rc$)&q5b1QE*+TU&R|Bg4jhPEyXIxO)*LgK#~bY_qM literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/chujiten2-2.0.tar.gz b/lib/eb/appendix/chujiten2-2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e413e6f6d6a494e05cabf46c30915ff16df080a8 GIT binary patch literal 2629 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 literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/chujiten6-2.3.tar.gz b/lib/eb/appendix/chujiten6-2.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..da1c1df6ed4c4892fe434efa20c8dbd316f56f95 GIT binary patch literal 2868 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 literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/colloc-2.0.tar.gz b/lib/eb/appendix/colloc-2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1321422eeb28f59bf098e9488154727e71626eab GIT binary patch literal 1313 zcmV++1>X7}iwFQe85%VL1MQnlbK681$6esEKJW!P3{T2S95+t&t|V;%$8{3Z)NyTR zI+?VcuBEjt>S&E5H}Qdd7dpd*fdj(l6;iD0ED%y&2qi|k;q1dJg1pv!1jQA)}T`5dYuQfs_A|C(jY^KaWC|GIA31yC^m z=g*bQ;u%oe-Pzf#6_B^(`d^{r@kL($s-c~_{`L6!H&jc->;EG7sQ3}o_;?z4gJA@v z+7hU1YpVe5>BMt}9#jL`pZKg8x9bkQ5XJ!?1oRMu><5fN$otU|4cJYX@(DQ9hk&_W z7zJK$5;5>1puT&92XM$;uRj&Th^mS2vH+qXgNOx(A@F`u*lO;<7V}v^N6?z|MxFyZ zp2Pf*0TnaHHQ|uC(2IwOJ8Z@gbYuju$;G%d^09d@ejqA;*5^G(Fl4BCL!xjM$2LZ(H0&w zy4$;ZU8pwq;X$?Ct~R^-H$~fM$c4+EvDrx8;dtbUfyG$_)Q_fOJ;VU_>h0RL=uzEh z>@>Rj@d<1;y3Km01Dm^Ts6wmS?lx+BJJmL{_S&u8PJIQS!{VSs!m?JgpX5U7^*+xY-ZM9;=)}5r`ol3o?rn6rCc;oihU$l2VyIR^=R+^W<~;mC%q?X6qwwBhQfWaSh`{9@$;WzDERz;Ir$fNPEuG5|1?GL!uy}8tN8wR zF}z!N=Y<+s{&u18fozfR(?a3>M7)P@O$dS@2=aDQy1ta@-_GfO;w)$S4_S8q#giQ0 z&-T~z;$!2`%kpV<{~WvEpS;=m<%`*VJ;$dxKFjgFyz!spjGyOU%b7pN=Q%!ooHKup z&-45W-h&VXxf~7->W>~}_|L!3?!S;X{;z-i_D9A92fzIJ^Y4#dKmKyLe5roP$$ozN z?#Jx-pZ}2UcNpuk;|M>f2!bHU*>dGWat@om5ClOG1bKsbY5&KW@BYo*|Ep>7|9qtT zKMX70|6>_C?*F(5aQ`pv|CRfHogodVBbK7#aF>y-4b@%!AvS`U*9}c zX%Q)GQZARJ7B`Q1VeOPbPa8c_a+aia;$S|h%!6^0=$7XdjL6?XXN!Pe+X#Xn2!bF8 Xf*=TjAP9mW2$IR)PnvT708jt`<@BxY literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/crownfj-2.0.tar.gz b/lib/eb/appendix/crownfj-2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0f2305ee6332a86575db5748fcc5cd84629c2764 GIT binary patch literal 4463 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 literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/crownfj2-1.0.tar.gz b/lib/eb/appendix/crownfj2-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..861c0404e78933a269562198ac88afe27120fe58 GIT binary patch literal 2164 zcmV-)2#fb0iwFSiE226A1MOVRa^uDkrjt~vTCdAbX(H?gpKT)^f5&U-->@^V8Ga z(-;s0!!)@b4=&Ahqp5Gyei#w9?m3RA3E|qdoqwX}^hpKbnT~Foj_a917$(A+aB2@A zvuPHjLe#F-zYeCsF#UJ!u7^^NY9E}0|LXrR$bwOF(F`V&_c@25>+aI;@ASW6xL)pm z%W@6JwJfZ`K=5ipul)amOJk)Wy2)go#uvj(tajIg(QczVUL;vEpM4#R-{n>b(qJWT zc`}TrVv;5oX>cVF4pJ$_G#O;qK`J-JJei3w7>iU!@ia^0{w$Ls&O|VdHj-3aB~d(> z<1kn?8%Ht~*-(m1rdLyu3>JmY_D{uUaxBweBo1f&Q5=fraVW=ADFU21ubB>IB>MR< zd57IxgJaS_>?SyFkj2S(Q^*+kRJ@Yu6wAVVDo};hAj`E(MKZ}-t>GxacrHdkcGt9t zmG4;V-I5{^j~9~NfI+&oISc$tUR^?H=vaD*4~d|L=PaCjVpZzq|hD2L)kRwq;fM|3T!V(&AfE z?cNW0|K~aS{oe)rhv)z0`OnVJf0kie)%pKN@;{#b@T1`Tv&g({etM%=wY&-wVq58-{1- zT7%KA5i-10&U0UeT#n26@nt!`k(Bet%>0b{wPy@}eoz101mzC6VH|M7IAF%;&xBv? z)0okp@!w6t@#X8+m@i8-#=aU8-x}xN4#V%7~Zql5_b}W9*|b_R$#o_)Prz z%=|txzP`>}-(E5Mk6Ry?pBM*e4UP{P-eUOj1!|0a_L%rMW%w@{{;YPt_~pKh-DG%X z`L$2D{lQ!SHRgbzF&B7^IUqE+{lhe1ukTEMzst|Z9pHRga@XRdE`W&_r@8J@ZRYRvfG*6tU7oc=zOe|={D+rL-$u$BDx^4%X9{?Fz7 z>XS8wFK=-BCnmnX=kAZn4^X#%VfvqyA5dn@`K;M&mhWF~ z7Q?q0-q5$od4u6ihPN2rW_X9;U557-F@A~;;%OCzx z?a@jqsicxhDyifR`RG@`{^+}sN-C+Ol1eK1pyciMKi>D--|YK;j%k|e{U2L5jQsr{ z&#d16eh_)*``@kV{qLXT``=;i=nze@9ww25%Xs=)H}%%aG)pGSD*d%F(Az?Pt?Rn6 zveK6qXo@i^om{T~YJMTt^Zk@z!@w{NRVT+$USnF=hbZViC1^q-30e@US{r%+K?iOW zbU`5x8md_pG%SJvToCHR<(Oay<4b}OY$OCF91|LVMH*T^2{4IF~DLofnOO)WuF4F;f* z!nO|Q9fGJab+gSvdE0_>>So(;PMX;coD*`Pu9|vKS4~?`C(Z0O)K#wl>V*1Gr}fw& z^ppk>^ppk?dItmt(37ODqeGASIR^A-3de*VP2pJ3BZRRqBIqcuIv5J1qT_+0TgsD8 z8#Fb10Gb-U51JZ21fN#xMBuBo5`5KQ0Qx#9>*~;WMG$REqq%0`64ydV>bN#&DmGmQ zF-3;!BBsc2J;Z9n7HI1P+ptF{fKx(!_>xcvXM`fPVpqZjp#f}?x}FX+pl84*giu)( zVjgO%;@CrNi-7fSTE;Ljl5BvhRim3H4fQ#w?{4T*h_-YKa@;3z0%5#Ef<hqB&^?o0tvi2Lv%*PYGhYZWF|K?GVHmPz^%( zmQYkI(8P35j4%K{Aw@AE_=Jr7pD!LI`M+LZW>abKI*#O9Nzi^P3EG~w91*E}ocfb| zoMnZ%sMx=&uweDc8etpqA5&1lS*Y;*uBE%EcyU*O5hi28tpzFXNZcJ~6r(oUW~LhU zq1kK_M%NizgwZ^v!st9pVYH9EMa#(z3bYjn6zDG;f9E|+r39jd>xOrXRLlVIxJLS7 zHtp^ZG$0^%Vm1wC1TDNs&I#j&Dw^PiD%#`;s%YfFWI(V5*_2=#vRu=+&DETMbVRDQBPyhgMzEt1< literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/crowngj-1.0.tar.gz b/lib/eb/appendix/crowngj-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c27e29541e9077ce4bc1214f8879694a1d1d5344 GIT binary patch literal 2155 zcmV-x2$c69iwFSpE226A1MOPfa@*DsX4+0?RA|Gx)7e}=(g#2hAo6)c#c~UPUSt= ze3k}@5S7b~Z-QAcO8#BHtC5uB%13A6kK!K&X)un@>%nyTR@X3e-Cf1~C*zONUdG?D zT*ER<#D;A+PDSWt{NK6N)@q_1PZvpaK1#)U`++c;O;3pDaT+h?-$df~nOA}&Sj&1I zkD{5FCh>U^TndE4L`pG>hv`+2$Stvm=OPRyB9Vh=mL^euo=Op=BA5&|<3wD>gJ`(G zX|QQN8OTJWBPmjuT+T#1TwXlcKM_ylL?*#l9M1dWC=}14P)=r21h{h6G8@T(=x5Vp z19me7N2EaP#yD?~M)71z$O!pFyp+iduZ8(YpoH}x%~U2Lo@Tus;4HypA;v*^+qI63 zKe5-_Ee%98SuQ?`r>K8~bK;J!qVZVtrI^p;a6W#7GhkowV(<9r!O5{`?VpMlt!}rq ze|)-yebZ5ltb8d~GewuvafB1&E|Or9F3=x1!ShbH{S-&EcJ`j_9iL_!*xftc?;IV8 z-Gi=ZiNjX+c&~l(tko5VC*8w?qfT9jBbkYkIKIG}!(}|sWdoT8(RhZNUR#AYO2_gs zeEOT6`jy|Vs)u=?L9 z>;KQP{)bthLv+PP7!M>|M6*}AsW;YUX*^vu>935T-W2*PUDu7ZwZ1$@S4>cJe6W zvj_%oPN)wT6M`X3E(i`_GbSkEh|mx$QfTS$n2-Tyw5nz1QY;H0DX?s~RuU{!t29_H z%n5lw8?zelMMSU(*Cfme;F{D}eS~V_5VQ`#0cdJz37YCK1dRmSI-Io#qGB3mo4I(~ zf-@Rs+i*t8YzNK=xlmPIJ*cX#4XBbby9re_Du61XK2&Kxb_hMCU;sU(Ktk_;;1GI} z4=>yQz^nK9O^db1P zTW0{i>MOxl9fqK9kXToT+Dn4yTbj)^^N_d}LXzX!psCz+9mJFwu8Wv5!}SoW85^K& z5NyI8p#V+@_2DZ*A)FE#s2#f!HVF-3i{yGb(1e}=pA$l{D#bihtMb@GwRysNPIf_h zJr`=KlLvl|8+q1xn80~+0DhZbAAB_jdih&|=;Z}L^zwM6)x=8R)AINn0NR8gN?Z^` zg>)cHtOeRBL3AgbU=yoB^?)Ge>j^>3*ByeGuPuU@1FAy^-w_(*8#J*TS)S`}oOnp;Hz;f!FN&*&C-&7K?q!O?da1?MA z@Dyk$&{QB$puY_KZS=5|5*RE)H@an{VupZ^Yor&eX}d$vfPlh@)ijtBwD2amAdCkp z?}7&^?~@g%ypsphA;AWuGlES>Go?|k2dnGABG`W|pB=Retgr->daSN1fTcBi*PP{t zseC8yBOi{_|ntA55osAC6wVuljH4Xs^|O+cVv={=XOdW#t#Iwb1p=y-K_U zzgk`Y;a=s%68yTXnx&OiT4|+~_Wy0|N5yX)6Eo6ABnCHHR zTuh4j$we{085i?M%=(P{%43E>OGXc0}0x)OvGwE0PB4YG2@w<*WzIgvy zr+B=^_*Y}{TjS!}V))M8^5cxrcg6(pjL~0Z)~_<_SDE-#8GThwACq4_#{WIW|Gfi- zXZGLY^fCVFG5+Z>{^^bHR$rO&QsG|7x%#Ow{?Qo!XpDb+CVzcqeV>_M-(c=Pa-U{xm*5m`hBMU`po(_|0v&KOZ)Hb`#&-KUyAwlhYuLOxWmn#nf(5N zdp|0EfV%lBGyb&r0cFlSpVjO2;`3{47xN~=TMTbAyu`uW4%#^3zyZsXV6#r3z%d|wEd z`W7(npS5toydOpkKj+>L3m2FUi}j^5hX4NWh5W#}+x_!H+aLc~p3%}uE3LHBN-OO( h`{XlV|LME5(n>3>w9-l|t+bEE{sn|lDwP0G004GTRMr3h literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/daihyakka-1.0.tar.gz b/lib/eb/appendix/daihyakka-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..09d11cfbc7488aac5ef059763c622b012b48699b GIT binary patch literal 3748 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 F@^2Aic+CI+ literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/daijirin-2.0.tar.gz b/lib/eb/appendix/daijirin-2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..cffe3412cc609094420c8ec8013d0a091b35fabb GIT binary patch literal 2095 zcmaKoeKgaHAIFtjLZNVXyQby-JS3uH6aAERCl7gOMbnm{2NJ@ySSTZLukzI8XEd2K z^Ei>md#U_9|Fq2W2y2F>Y?#>W`TKKz=lnYN{QmfT&Uu~B`@GNl{rTeq$=IW^6vBb+ zR9zvla5H`S{a*;!WaN{l*chkQ(y~IEJqJ>a^CBywOd86JsL_U5uoSl^XFd1BRIWfk zZOa*z#c$699$wjO7#hxa`?Evh12UE29%;%64fiA21MDnds&PtD;y$V5$ zJ;TVNxr*oST9(?5QZ7-kR=gzjBH)v%MtqBpIm$iT+qvQv2>Nbtb_c~+c!O$VmR3NR z-Yp>3y0)2=NPfwY++zDZ zmkz{^`oOiwl^eIpt|-s+{_Nm6YJchw^?`=ZC++DR3cC30O8uSl-517g4QpM`7wyd7 zy?*Y+3x@b=L^!f`*TcgiSy)KSthQem^!BcY#upq1X@0o@!@m6qKO}Zl6CZSwRgy7I@;NZ6;5(lS6ixHt7!EPsakiyz45B5?dpvC z8UQl}PXCx^^Y?wS#8`0U#RD-e3Rl=pA!^7DKiRs4M$4x8* zb%se}a8uba{ToKYMqfNR>UQnOy33vDjBL%c6i2kFr1yR=ekH}nk~vZFI2+rFKGGJ+ zdM{kJ28Gu-M%{K)#Dzt7zM%9*HrG#-{Y`6?R);b$755ONz12>xVWEExPZ7%R(dt++ zqGi;*Ss~EU^jc)lUN|VP6z53UtK<*8cd_zM(m;IiyqCiIq8iE)1qKO$kINmuNdXEC zIQC}b*p>@g!*ZMufnG}6`5)T@c!t0SmVDvN7KrxVXn`;706xvFn zerfkmZg?>lJ3^-ik{qvjDRsxrD|0Zpiquw?i3~MX%&#bKZ|UeK@t0g^%?eFs5YV-0 zCJQ|1CDM+s@oy-BlKAjNdNo2+5yv|k)Irak9plmKewBK0+tP4TR`uoJ@6p~``*ZwC z!S0skX-)yX8r0*qy(I5K@=Y&u{#s+Xo|YEcM?+Q)ryh@(7HZX(?Ij0z3>|V%lo1xj zDX^(Z*HG{)OaG9~7XJ7V93lpMq-YZJYV|qi74L-(e9o=Sn!}YQr0}a|{QkQ`)&~2gAsE5!p zwh7aRONAo&Qxt#CD z3j$A_ohBE&c{8@TOCsPR#dm0$xq+r282qABw?jJ;I}{H1VT)0@N%8=v)+^`7zKQZru~^ecx}Y#BIC0lqL?|#BcO> zNl^;}>%Yb%!OZ%LMkQSk)dL*)4UQzwP3Thy*XItcs7G@QT$R^xazr6uVMI7G-v3M| z>B#B8ROz_BXh|C=1hcI?v#s|mxFQH99Jv!mNg|QJC1f&~%`O4M?R6LhTo9v9Lju>I zznnw{gIcWb82dwjXW#-yV-L2ttOI=VX=^*-9Re%e?Z1DXtW%;pzk$HU-4EG4sxa%J z0vb~Hbj_T)_fK`;pm{_*<32IIod@p{X7IL-y<|^r-B&PEw~DF-@>+Gft6u22*PAIj zwjcYSNq#@EmL|4C$dPEL|9ao{ADT+BHSJsWoBtOfD7_;r7+7a3^uxdVi~WCO@)mu9 gohoL(a?y2CGHypaFB2ZEJHy%tmR{#J2 literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/dd75-2.0.tar.gz b/lib/eb/appendix/dd75-2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..4448822a9804a6024e41a7b59c0563eafa1e9f84 GIT binary patch literal 4062 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 literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/gendai2000-1.0.tar.gz b/lib/eb/appendix/gendai2000-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..cc318ddd16d94b4e984adb84178b49f8cdad9010 GIT binary patch literal 1063 zcmV+?1lao@iwFR>aWg#v1MQmKQ`<%mzzu!E|3V(RGvt9xV(TR9g97PPb_}?Hp^{0; zThI2{x+3coeE|ONyRz{Rn9#rs$P?I~AMCr^TkYLySJGNz5e>OC7-KcP&a}#N048%R z3n~D%X`011!mhus8{k;FX*TGnGtBi+}S@{F`=z;=dGl9OD@vue6&JfpWm>j{kO)B~qm2 zUH=;&VX6FyP0deZp+#=)he1>D0tmrW;i{ifw)~oB# zQt>pA;~;~L*1ICI&;>^-Q`7uh!a=bsJmJ+svKPn{;zW%TJ^}nWN`!z^jj~Igh;5jv z90ojsL=0t$7mXx7;4p2D7pM8ZQj z$@`%kz@Z$7C>6l*$VE>Yh#~X~HN}M8!UF%=0@zikmuFH%+aM&4CvYK>6x(2Y05oBP zXN8pssJM`Nhgx_vg^*`AqIK;2&RTDlGz1yV4j!l&?GI2VuIN&RA@l|0sTk$q2h@PF z@TJq+KR)e&+dYFXuIIVk-q|+FW`V*{aUtfKyZ~n^A1jCy9LQ7+a7O}(=fvzTaeb~5-I1hQYk$gV4hQNypU5Z; zc%f(-qn`EV*IoM zEvo;P!|Ltk$`8aBkHo7FlQSs7e#+HnqI|7@!N hl>*iO2!bF8;`KrGKY}0#f*^=j#eaKtV}Afp001e8E8qYC literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/genius-1.0.tar.gz b/lib/eb/appendix/genius-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..6c7ba63fd3f40bcbfefb2b80cca753d709ef6fb8 GIT binary patch literal 2241 zcmV;y2tM~8iwFQ+_476W1MOVRavR4HhLcpP8n56(Mxhm~T!gfLvkOoZD<93{I{21eU}nc9+S`?YKPhMX zKz=h{PtP|!GYx=P>DV6z<5AhTuRkbUmoZy+IcEiCTDEE6Z^jJUp8po6Gv+w1?YgF} zo5&j6;swU9P0`P6Jc_-DvBJoU!)To4=SQQP5OlM4toFa>#olRneD!k}y6(*P``7m0 zeRKaU!?X)bzj`T`?f-oL3vXpMFWGiucc-qh^30oh7vR{PEG&FRWE9sn3Gp zeDag<9QB`IOkB~+;PjMreTFAxFg{(y2rZe*ZFA?@&cX9!0grbMb{nl0d%V|VHMU=C z9_-ZH&uUG!-)`>jwHo(v@BBoRkK;44IhgMUrmXMBUT`|XMHd%a9K@&o8f?!C18cnZ z;JpUh3VKPlyeP@~zSx9lv<3%WFq(`%_J-xrB#ixGGJbN7!=bVH_Zqf#TARDrN`Bd8 z+o_h_s?MFV%j#C8VkQn-NI!2jTV-2!q=vWO*?jcLUz^W1-qtqP09$t}ch>Jdz5D08 zRpb4=%{zbD+ce%^FE=>y!hQeA_IgvgZyrB-$3A@YNu!!NxV3eCPXCw6ii=mi;%#5p zE4H82{{_7I@=w)&&TZ$-`tR6z{l5{*>wjMV)B4{#@glE>nJD+dz7PKhMz3^JuM~@; zI6PnU>934|US;|#UDu6bvFjgWD)5CN3SSlhl^^@%h)0lQF2aSy}cPtoctCm%`@4xl5TrNfFP zAZkuAicYZw(-fobKtR+jp#!B*Ko>d^R$wY&RY8<3#94`KiBWcn`#7P*sCq0Qsus}J z(`DI)TDzU7mKbv_VUlc#lWa?zq+4PaLJ1Sy5?A3^APtHlc)^DAa^ zF}ZC4@!m-XFTJB~7mmdCx;>bRl)IQ*In0Mer-}7oIu_8B0Zgn1LV}3};Yj*&IFb&I z@^xW46tDtEa#$7K708oU%*1kVCJ@RJs1I_qpY{#le1WhEh(0U=8v>bWALj3=fOgu+ z;Xx70o~)5CgT8;MLfV%qr0v>8!NA2g0-7-UNx<}6*`}=^SI~jkmjb#l`(D5b%)S$_ zs(d}b7kq)cptU9Lf!30^589T*z8ad|1sij7SpP_10}k5~n{e2Y*n-0?iEUJP@h{Qf zF#B9URQ`p4E~E|>D9Ht3mF%S0gHLAyc479FfIStiuM{fXmeP$iQtOG8VUbL`O$Al5 zZIx`SkgIYMtdME9t6)Vz%=Xs;da4(b-IP=JRJW3BE6KK!%yk8oVy+Z(rI;(lTpbUt z1Y?<;{U9I;etq#;G}HmXLOJ_Zz^>|5in&tEmExpO{N^F8=No;{; zOKgM2CFY9T=m+el}|d>iT1c)E>rZam&bI=PRHboK!@ z~P2$0HlOy1F^CKmS|!N#f1@$2*>X{=XUfec^X+^oaKCPGPa$KP=k+yi+)s zgFoJovfOgZEw|iq%k7%1sh=?N;puDI}TT~dA*#?J4AfyQM#CLh=}pw4#5+D?;*-Zp-(uh5#yJAeOR_W z-gbRj_I_V{wjAFh&Uc;Qmz|&DH?rx%I>B!c0oI8CrCK)MA^1`~n{Q;(h0-1|Kfxan zd}%_&C-~9_1izWhPpSJ!)UOVaz)qXsiTKp}&m*D$PpSGr=p%*~rbK<9^i%miA_N>Q z`Tl)6B;phL-p!`T_jhO1c!DS7ljEsp?WploeWb>ho-Q~3`u^2WZZ}~U-(>T%pNR3- z{Q5uplHk85`0tjRU#s8C=Gz3{BKWOre%bsT)<4ST+XUYt_^oU{dDJ75|2%VeVfIBf zpB)|R8*zX-1pnzQJO1n|f+yB@-SQvia-;CXcOU^VtbZ9&XFzO(K6LaR776Ew|iqyB&M$PeA^s54q)*TW-1KmRoMQ P{buanq}QWU08jt`+E;+n literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/genius2-1.1.tar.gz b/lib/eb/appendix/genius2-1.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1f1396f0524efe48bc81564edff3bd00cd3fbecd GIT binary patch literal 887 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 ZOJj-u-B|t~L=OS5h#e+V89Esl{tJ%o52FA8 literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/heritage-2.2.tar.gz b/lib/eb/appendix/heritage-2.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9a5218b2f8550967c7cc876257cd2279b8d031bb GIT binary patch literal 3968 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 MxF8EL?O(+H7s;1R)&Kwi literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/hyogen-1.0.tar.gz b/lib/eb/appendix/hyogen-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7b63ebaa2af73782e2c8ed01178aaa3841f56d85 GIT binary patch literal 1309 zcmV+&1>*W2iwFR8Qe;E|1MQjXQ`$-tz-jL%{1^J+9(3(k1x-RAmPcDaUV?#(SnEu$ zy#W>zjR{RcD>J=+d+*sqp$~35ovC)(p5KflyL(=H&Sr_MIdjjrlajZko!D(5AzCIQ zu31%8!!~kr4ew=1P0Lb7mNXof6-Cx!kcr&^Q$H{~fY@c~!tf2#`#-t2Cg*nSm&07t ze`o}T?VkC!QvYmJ_oek$vg#-GPiv|i1BvQ?``r6t^E=Qu>C~%wjQCle|7~M3xy$EY zR+ahwFR2oKPsl261oZsh1#2s7P;nkJ&PXSMYLv>&cC&vXCQxhk_3Ggv)H*#VLATWFH!DZ&QV+UE zy>92Qx(#s1MNk~|zmUywSPx9uhzEvc`#9;9sKi!a^ITlFOxHPcp%Ly6xC#P)I&)#) z3b=z(-RnwtelFhP&c$r%n}*PyO;9;r?H)JvI<}jKWgXk%qNcR0h97B3PAOt&4+l~= zZXd96@%6J_`^kfiaxRXo+Pl`vUAtM_EvC(bzY3{p21l+1yN!CGcO$s_Ff$HY(V$i; zNa4^o1`&Ntt^CIOe{_2b{|0>f`+qvz|LOhzN7NtpPh;l?*I!i?nd<)o>pz})?#1*@ z-v8t!_0MG0EWQ8T34g@yf1}3z7(oyOK@dMT_x_B(e@|&32!bGp--*wD|M~8xe_uWS zQ?#@aleDZVi+f2HzyB!;o&VhlOV9t(bpH2Sp8pL+p@*1?)X*LA__^g@Ns6>PKcQo3 zrWaDh*GzA{+}~wht;zn${mnXw)v&D>H!B6^Nk{E9_LyBHo;QnyjpC-B&%f9^Ur#3r z>&?V*bWpb;UCCo9{V25BDt49E>>)d4b+q`ZoMtk+U^+`CR@cX_ORnTu{sa2#X2|$e&9~R*@QyL@^0=G(@-?e{A=xNeT{7~EwPGS zxB+r!WL-tE;q0Dc=W;vyj3tgS9){7U@#?jo6*j7ytTm5IOkD)N|8Fb7I&3uzeBoRy zw2%DNKM&g5JI|CNXUs%LExfO>K^SYbEJW6=b+-N-KhIe*GW&^z!d6Xc6fqK^DW=b& z^nE2;?F!R$_H-ad2>&k5aLNwmW#W!btT{Hn}v)g~d8*6q(JEc$Zq} zeO#I%c0Ogs2gR+6HTPLn8e)2j^;sE*Z-mJZN@6v1GCO#U(hqx32Ip|gf0ReMd;s?c6Ezc2RA%#LSw@ZZMb z-E1QAWikthK2bm{_xa{`IF+7%WvO-1&7k-#*L#xa`!o{nP9A&EwE z&SJg~i)aQz7DCKDk;qsKW|D)Dz(Vh36vHI)#AtzO&@>A@9)t8bNFGlTh(_t)sB;EK zJmfJ8pgS7`VhC+9Bl}1fys0w?#r)71ynF`WO2cEBy$){4HN*5|e2lFfpzoW}#f*eqe%=x?5}F zj7qiDZuKwJ0vfG;r{3#9Wi+QE@JSb4piFYC^(Ud*2>*K2fKxNa|R=%#*K%ClVc z^REuw_QA8A>RuK{=C`lE{-V@8!m)DZin(Sk$~oOrU5pZJ->i@X@n|A5$`EM-s-?WRQ|D^w<{~Oi+p=$IH zw<14`Jf8hhBsVB~yPB5BXu7oNH^#^^K)=zAvaV?ZKE}P63y*7AEPTxK>UNSC#thTA zweiqX7SpsfZRN^drUH&ae6=!}sj2bJ?@YziR2!uxOrmKSV$JXWYq-WE`VUaL|Nm#1 zrqX}CXp;VKgslgMe8Ne~1<5Fa*|Km2(0p#SGzANK$B%N6Y+ zK@bE%5ClOG1VQ}I+4{7y^&M>kK@bE%5ClOG1VIo4K@bE%5ClOG1VIqQhstlgpi0aD GPyhhdBk>~u literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/jitenban-2.4.tar.gz b/lib/eb/appendix/jitenban-2.4.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..4f06f43998bcc94dafc1fb97e4aaca1270a7c4c6 GIT binary patch literal 7459 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 bMMOXef=V-lB7)Mf&;_J-1f)ZVC?Ham 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 Pij;P0LKOuA6~+Gn-81|? literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/kanjigen-2.0.tar.gz b/lib/eb/appendix/kanjigen-2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..463d6a13682c77fd9bf5473a6ba336aed78181b0 GIT binary patch literal 2046 zcmVNTZ-LTDJDoBN9fpP$W|(GDCX8YDz!#pC zcBO4B-_mL7($4O}jCY8dXlkJ{=%kF%1L75K8O1j{gD_ z@|O&NQcTlGYpRBjno<=thK$$|pydaahfr*1WZUwsns=CPw`SY**cT4lZ2!wvVAb8t z`@M#$DCutB59zd+VC7oP@ln%r zH$7_yfm!uz8~JWE*tI-+0`0jiRJIz(vn!4tcuuJm*vJWx)u^0uJ+$Lioa!D-1Flx1 zVtXj4*(k8R9Ur;X&R~A|9GbTqwrADRN~=_N%IJ(!wi~{UELa(P{F+@sB|Hs&U=ByH zN+LjWF3f8Mj@y_(wgbF}p0qt5#waz6AcUk9;3z%hHnB>ES**q$s#`%{IttDKx%N}4 zAg9q;yyi9`{u;~)8SOgtIx5+y<=fR(eHdl{EqY{O?ey7mYbd|GjvmPu3i;)=^$E}h zH5XX>NxM6fv(v0QFfnA|S&d*1>H!lh%@(Fl!xQo|eAg|+3`)m1ciwt(_z zC0|%um_BzVUqCD83M*$yOw9nX zUMQ@BU!ki#C{5*_c(`!pn-3vulN65{^v-~XGHilW}{+n;;?>uKHS-T$ho;`hI_s*3wx-2dYKKhpcZj2m5s zQjC<{iXGo_{0mA-8A~Mmz-@MY$_2HmWRP+}QQ-1Sl+$#owGGhQ#7={r+9v3!JqCJeXF%@| z+X6kcOQ5HA8T8byfZipx4SH% z0H@F!Kn^_{a)6J!W8cG{d|glJfT!H?e7)KCRJxugum^fT8@B6I?Ej@*Mww|>5@wPf zl4hhuX;V4@Gq%C8gcpZj=d z*Vv>3T*)yyz!l5T0j`Xy&=D?zN@LJ*`YH`V$BC;n3LU4c(lB(Ko7#&5vMNHR3f^Sr ziLcc4&H0S4-1SW;jITm`ON|jK}CMoE+*eY@`pUOrko@sK$uz1mnweeM9VQq%1@1v!&h^hi%Dh@iFFH8r^IB z*!kY2eWdUI_y1o3KF06=hN*Pk|KaUI{Qm#heE&NI-~V9OITw!T`(Fxreedu8@Rd;f z{(m(1a_md@c*ywTvDjCMf{wEt<16A9`1+lg!}Dlf0qY6KN@cdW9Uxq&op9?>1|Mr7H^WP3%22FR3pZr@sz&{V%wJ>Zy7YHc&+`?JA>zcC43K3+z8fodFUKufaAaUygaae`(*#zctIYx{?p;l!r!!C`{%&=UVB@P+@HVrS2Ta+N;D7U zyA?juDbdTn9}wSLe~f;9QjR`9Du+*Tc#XsB9NysYX%264_%RNj;nhcpuCJFYZ|H88z{$@0J zesujVKNZbiy2Rn5=g0RW+-{xw@#h2X?~8x>KYsyu;A?U2fBF{?5D*X$5D*X$5D*X$ c5D*X$5D*X$5D*X$5cpi+zhIrqg#b_h07In-UjP6A literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/kanjigen2-2.0.tar.gz b/lib/eb/appendix/kanjigen2-2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7b7cdcd89ceaebee44e26864a483ea82398a5a5f GIT binary patch literal 897 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 literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/kojien4-2.2.tar.gz b/lib/eb/appendix/kojien4-2.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8c3dd355b24b1c1f49322e86f080027c908bcd6e GIT binary patch literal 2272 zcmV<62p{(!iwFRn01-3*1MOVxQX9z?)n+S|8oh#lq%BM&wh)X)Gb6wn$^r|}8UrOE zZ(Qr87)dQOM$E`Fqs0)1%B$GfO>N}~@(iiuU-Ag~pS(eCOWnXCwtH=m9EW@M2dD3u zzH{#MOzXp|dlB^Mn8((kdVYt_Rx*oPWV&D9d{`0PQuV+ad>I{n{MoOgM&G@*SpnonK&bDxXh`A?B{2<;A`-L*gY~UCS*Jb?-7eYbH@aSvY$4V$pW9Mrf2vKByIH}(SmA)y}VA^Dbu5sZm3OTa?LjhV}k1U+`t3}kWr z6Vi3#i$muiculPrCAEm>4^G|*df>kUIiaFsuiGUJO8OCP_q(%@0gfeKRdzSF>${}1 z^_+ZFs#Z%|yU!oOv2iB=m3~WynY^Q3*Mr1RMdrDs${2L-Px{{=Lo4$W{Sdm$<=HR)&nkCi^i_kjiBh{ zaEZOROP91KgMERtT#uNf=lZkcG0f|Dq!9#%By$SxsW(F!t`Bo|__~DAl2$o(efP*C zwN4OIChnf}AfHxV`E3bCmDD8IIqf!=W?M`)Cb~+*nYBI|FTlvO0Lzb+fVArkNt$pae4ng4Ek(v>+b`8 z=Ig%&SJciG*#4i-8#=!JPXgDiKfL}^zvaEYt#im<|MRBK-t*a}ZW_972n1qmNV{@x%6;@%_IQ`hVp5nj-&A@1K-H-&5%C z{w3F^%JL)9CHef|ja*M{%k{VaQ0V_uBHy6S%xQha`rd>hJ#io`&8Nm1pD4|G$o#USHMSH}2c>*$wl*`(B|dz8`TE|A3HHe7`$x{P3qA zz8hzL#n+=_hwA+K&@ z{U1!zve@r`&0N7S3szy!|3SC$_n(sh_J6?s59j?KqB!Vfn?Z|e`s-X0fca9h(H!3&z^&T_s0Ih&j>YTB~kuBNrbF%39|a^8gV z3f|JRqTm$HD|j2u#d%(b;}19o|D8F`!GGH0ocR}=`4=4gJA#A%F87lM|3`u||32s7 z|4eZ3Ulbht`{H=;pAI+&|NDZ2|2@IMe~NPx{GSO9{vE-=|BT?^KjisM@LxP1KmqB9 zb0{DZaVVfD;!r>=;!r@k&p8yZCpZ+45*!L}1cw4Lg0lrU;T#G`pANYN1)TEy7At^L z@XwdR0{i?bTj2hTQ}Est^T2zCQ?S0zDLCgVYcb=Tx)%qq>;95+uwCR7T<19j(@UI! z=kENF+u*szDOjH3_oNM;191qLj^}s#rIA=w@;T(!e zZF6o8GTq<3m}Lzk^@|A9m#T9P^*JIZ6c}AOB~<8N39&n@!a3Bq$uDgIiY%2mhbprj z&Y{e7dAJuDY|mlorbIf!Fh?TRNW>nA6h$g_FV=ci>){*SJm$u
F9ZUCKp^fMu>Y4_$Npb(9s7SN&X4`Sq&oKhQsl?} zUsCKVbnO2n2loGx>)8KGu4Df%xsLt6K5ZR=Kp+qZ1OkEhe**UZLVU`={$Do(_W!!s zeC+=v*RlWCc!B-D5C{YUfk3=Bu>ThVfj}S-cMg|-|9Ken+2Gb2fPFy!uUx)>zyF*B uu>TkK|HA%X*#8Ure_{VG9s7S_|1TZ;f8C}2UkC)^?&81Ae(#9@pa1|u&z+?J literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/oxford-2.0.tar.gz b/lib/eb/appendix/oxford-2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9062e872ada5044c39ffcb391234078b65518db8 GIT binary patch literal 3849 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 literal 0 HcmV?d00001 diff --git a/lib/eb/appendix/superdic98-1.0.tar.gz b/lib/eb/appendix/superdic98-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a14a6e56f1ece5f1c8854b0a88c451fa15c190f GIT binary patch literal 5252 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 H*vs`_=OD9? literal 0 HcmV?d00001 diff --git a/lib/ebu/AUTHORS b/lib/ebu/AUTHORS new file mode 100644 index 0000000..99a23db --- /dev/null +++ b/lib/ebu/AUTHORS @@ -0,0 +1 @@ +Motoyuki Kasahara diff --git a/lib/ebu/COPYING b/lib/ebu/COPYING new file mode 100644 index 0000000..46b46ec --- /dev/null +++ b/lib/ebu/COPYING @@ -0,0 +1,23 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the project nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. diff --git a/lib/ebu/ChangeLog b/lib/ebu/ChangeLog new file mode 100644 index 0000000..1f3ac20 --- /dev/null +++ b/lib/ebu/ChangeLog @@ -0,0 +1,708 @@ +2020-04-13 Kazuhiro Ito + + Add color chart suppot. + + * configure.ac: Version 4.5. + + * ebu/color.c: New file. + + * ebu/text.h (EB_HOOK_BEGIN_COLOR_CHART) + (EB_HOOK_END_COLOR_CHART): New macros. + + * ebu/defs.h (EB_NUMBER_OF_HOOKS): Increase to 57. + (EB_MAX_COLOR_VALUE_LENGTH, EB_MAX_COLOR_NAME_LENGTH): New macros. + (EB_Subbook_Struct): Add new member color_chart. + + * ebu/error.h (EB_ERR_NO_SUCH_COLOR): New macro. + (EB_NUMBER_OF_ERRORS): Increased to 70 + + * ebu/readtext.c (eb_read_text_internal): Support new hooks. + + * ebu/subbook.c (eb_load_subbook_indexes): Support index of color + chart. + + * ebu/jacode.c (ebcdic_ascii_table): New constant. + (eb_ebcdic037_to_ascii): New function. + + * ebu/error.c (error_strings, error_messages): Add new entry for + EB_ERR_NO_SUCH_COLOR. + + * ebu/eb.h: Add new functions in color.c + + * ebu/build-post.h.in: Add declaration for eb_ebcdic037_to_ascii. + + * ebu/Makefile.am (libebu_la_SOURCES): Add color.c + + * ebinfo/ebinfo.c (output_information): Output information for + color chart. + + * po-ebutils/ebuutils.pot: Updated. + + * po-ebutils/ja.po: Likewise. + + * po-eb/ebu.pot: Likewise. + + * po-eb/ja.po: Likewise. + +2020-03-10 Kazuhiro Ito + + * ebu/zio.c (zio_unzip_slice_epwing): Fix wrong variable type + definition. + Cf. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833085#5 + +2019-06-30 Kazuhiro Ito + + * ebzip/zipfile.c (ebzip_zip_file_internal): Fix progress messages + were showed too frequently. + +2019-06-30 Kazuhiro Ito + + Add libdeflate library support. To enable it, run configure with + --enable-libdeflate option. + + * configure.ac: Accept --enable-libdeflate, + --with-libdeflate-includes, --with-libdeflate-libraries options. + + * ebu/bitmap.c (png_compress): Add libdeflate support. Return 0 + when succeeded, otherwise -1. + (eb_bitmap_to_png): Adopt to the change. + + * ebzip/zipfile.c (ebzip_zip_file_internal): Add libdeflate support. + + * ebzip/unzipfile.c (ebzip_unzip_file_internal): Likewise. + + * ebzip/ebzip1.c (ebzip1_slice): Likewise. + + * ebzip/ebzip.h: Likewise. + + * ebu/zio.c (zio_unzip_slice_ebzip1) + (zio_unzip_slice_ebzip1_internal): zio_unzip_slice_ebzip1_internal + is extracted uncompressing part from zio_unzip_slice_ebzip1 and + libdeflate support is added. + + * libebutils/ebutils.c (output_version): output "LIBDEFLATE" + feature when build with libdeflate. + +2019-06-27 Kazuhiro Ito + + * ebzip/ebzip1.c (ebzip1_slice): Use Z_BEST_COMPRESSION instead of + Z_DEFAULT_COMPRESSION when compression level is higher than 3. + +2015-03-01 Kazuhiro Ito + + * ebfont/ebfont.c (make_subbook_size_fonts): Fix error handling. + +2015-02-28 Kazuhiro Ito + + * m4/gettext.m4 (eb_GNU_GETTEXT): Support Cygwin environment. + + * libebutils/puts_eucjp.c (fputs_eucjp_to_locale): Support the + case which has libiconv_open and doesn't have iconv_open. + +2015-02-28 Kazuhiro Ito + + * libebutils/makedir.c (make_missing_directory): Fix the case of + 64-bit Windows. + +2015-02-28 Kazuhiro Ito + + * ebu/urlparts.c (url_parts_parse): Do not perform a NULL-pointer + dereference. + Cf. Origin: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=715855#20 + +2015-02-28 Kazuhiro Ito + + * libebutils/makedir.c (make_missing_directory): Correct parameter + declarations. + Cf. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=748030#12 + + * libebutils/makedir.h: Include sys/types.h. + +2015-02-28 Kazuhiro Ito + + * ebinfo/ebinfo.c (output_multi_information, output_information): + Fix too many arguments for format string. + Cf. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776602#5 + +2010-03-08 Motoyuki Kasahara + + * Version 4.4.3. + + * configure.ac (AC_INIT): Set version to 4.4.3. + * eb/ebnet.c (ebnet_open): Use _atoi64() or atol(), when atoll() + is not available. + * configure.ac (LIBEB_VERSION_INFO): + EB Library verison 4.2.2 sets LIBEB_VERSION_INFO to 15:0:2, + but it is wrong. To avoid the confusion, I decide to update + LIBEB_VERSION_INFO to 16:0:0. + +2010-01-16 Motoyuki Kasahara + + * Version 4.4.2. + + * eb/readtext.c (eb_read_text_internal): In the escape sequence + 0x1c and 0x1d sections, separate EBXA-C codes from others. + +2010-01-03 Motoyuki Kasahara + + * configure.ac (AC_INIT): Set version to 4.4.2. + * configure.ac (LIBEB_VERSION_INFO): Set LIBEB_VERSION_INFO to 15:0:2. + + * ebzip/speedup.c (ebzip_set_zip_speedup): + Add missing ebzip_close() and ebzip_finalize() calls for zio. + * ebzip/ebzip.c (main): Don't call(1) just after unzip_book(). + * ebzip/copyfile.c (ebzip_copy_file): Don't copy a file in + case of test mode. + + * ebzip/unlinkfile.c: New file. + * ebzip/Makefile.am (ebzip_SOURCES): Add unlinkfile.c + * ebzip/zipfile.c (ebzip_zip_file): Don't call unlink() directly + for an input file. Call unlink_files_add() instead. + * ebzip/unzipfile.c (ebzip_unzip_file): Likewise. + * ebzip/copyfile.c (ebzip_copy_file): Likewise. + +2009-05-02 Motoyuki Kasahara + + * eb/text.h (EB_HOOK_BEGIN_UNICODE, EB_HOOK_END_UNICODE, + EB_HOOK_BEGIN_EBXAC_GAIJI, EB_HOOK_END_EBXAC_GAIJI, + EB_HOOK_EBXAC_GAIJI): Added. + * eb/defs.h (EB_NUMBER_OF_HOOKS): Defined as 54. + * eb/defs.h (EB_Text_Context_Struct): Add `ebxac_gaiji_flag'. + * eb/readtext.c (eb_read_text_internal): Also recognize escape + sequences 0x0b, 0x0c, 0x1c and 0x1d. + +2009-03-14 Motoyuki Kasahara + + * Version 4.4.1. + + * configure.ac (AC_INIT): Set version to 4.4.1. + * configure.ac (LIBEB_VERSION_INFO): Set LIBEB_VERSION_INFO to 14:0:1. + + * eb/binary.c (eb_set_binary_mono_graphic, eb_set_binary_gray_graphic, + eb_set_binary_wave, eb_set_binary_color_graphic): Apply large + file support patch by Kazuhiro Ito. + +2009-02-28 Motoyuki Kasahara + + * Version 4.4. + + * configure.ac (AC_CHECK_FUNCS): Also checks atoll() and _atoi64(). + * eb/ebnet.c (ebnet_open, ebnet_lseek, ebnet_read): + Support large files. + * eb/multiplex.c (EBNet_Socket_Entry_Struct, ebnet_get_file_size): + Likewise. + * eb/ebnet.h: Likewise. + +2009-01-29 Motoyuki Kasahara + + * Version 4.4. + + * eb/zio.c (zio_open_ebzip): Always set zio->code to ZIO_EBZIP1, + regardless of ebzip-mode value in an EBZIP header. + + * ebzip/zipfile.c (ebzip_zip_file_internal): Improve compression + progress messages. Don't output a message with the same percent + as the previous. + * ebzip/unzipfile.c (ebzip_unzip_file_internal): Also improve + uncompression messages. + + * ebzip/zipbook.c (ebzip_zip_book_eb, ebzip_zip_book_epwing): + Output an error message when make_missing_directory() fails. + * ebzip/unzipbook.c (ebzip_unzip_book_eb, ebzip_unzip_book_epwing): + Ditto. + * ebzip/copyfile.c (ebzip_copy_files_in_directory): Ditto. + +2009-01-23 Motoyuki Kasahara + + * INSTALL: Describe `--enable-largefile' option of configure. + + * eb/subbook.c (eb_set_subbook): If eb_set_subbook_eb() or + eb_set_subbook_epwing() returns -1, also this function returns -1. + + * ebzip/zipbook.c (ebzip_zip_book_eb, ebzip_zip_book_epwing): + Output a warning mesage when eb_load_all_subbooks() fails. + * ebzip/unzipbook.c (ebzip_unzip_book_eb, + ebzip_unzip_book_epwing): Ditto. + * ebzip/zipinfobook.c (ebzip_zipinfo_book_eb, + ebzip_zipinfo_book_epwing): Ditto. + + * ebzip/zipfile.c (ebzip_zip_file_internal): Don't output + strerror(errno) in an error message when zio_open(), zio_lseek() or + zio_read() fails, since errno may be 0. + * ebzip/unzipfile.c (ebzip_unzip_file_internal): Likewise. + * ebzip/sppedup.c (ebzip_zipinfo_file_internal): Likewise. + +2009-01-08 Motoyuki Kasahara + + * configure.ac (AC_INIT): Set version to 4.4. + * configure.ac (EB_VERSION_MINOR): Set EB_VERSION_MINOR to 4. + * configure.ac (LIBEB_VERSION_INFO): Set LIBEB_VERSION_INFO to 13:0:0. + + * configure.ac (eb_SYS_LARGEFILE): Added. + * m4/largefile.m4: New file. It defines macros to check + large file support. + + * m4/libtool.m4, m4/m4/ltdl.m4, m4/ltoptions.m4, m4/ltsugar.m4, + m4/ltversion.m4, m4/lt~obsolete.m4, ltmain.sh, config.guess, + config.sub: Import from libtool-2.2.6. + + * depcomp, missing, compile, install-sh: Import from Autoconf-1.63. + * po-eb/Makefile.in, po-ebutils/Makefile.in (datarootdir): + Set `datarootdir' macro. + + * m4/eb.m4 (AC_C_CONST, AC_C_PROTOTYPES, AC_HEADER_TIME): + Don't call those obsolete macros any longer. + + * po-ep/Makefile.in, po-ebutils/Makefile.in (datarootdir): Defined. + +2009-01-07 Motoyuki Kasahara + + * eb/build-post.h.in (off_t_is_large): New macro. + * eb/zio.c (off_t_is_large): Likewise. + + * ebzip/zipinfofile.c, ebzip/sebxa.c, ebzip/zipfile.c, + ebzip/speedup.c, ebzip/unzipfile.c, ebzip/copyfile.c: + Support large files (over 2GB). + + * eb/narwfont.c, eb/zio.c, eb/subbook.c, eb/readtext.c, eb/binary.c, + eb/appsub.c, eb/multi.c, eb/search.c: Likewise. + +2008-12-25 Motoyuki Kasahara + + * Version 4.3.3. + + * configure.ac (AC_INIT): Set version to 4.3.4. + + * m4/gettext.m4 (eb_GNU_GETTEXT): Fix a bug of iconv() and + iconv_open() checks. Don't add '-liconv' to LIBS at all times. + +2008-09-29 Motoyuki Kasahara + + * Version 4.3.3. + + * configure.ac (AC_INIT): Set version to 4.3.3. + * configure.ac (LIBEB_VERSION_INFO): Set it to 12:7:0. + * ltmain.sh, m4/libtool.m4, config.guess, config.sub: Import from + libtool-1.5.26. + +2008-09-17 Motoyuki Kasahara + + * eb/Makefile.am (libeb_la_LDFLAGS): Add `-no-undefined' option + Add $(ZLIBLIBS) and $(INTLLIBS) arguments. + * ebzip/Makefile.am (ebzip_LDADD): Exchange the order of + $(LIBEBUTILS) and $(LIBEB). + +2008-02-04 Motoyuki Kasahara + + * ebzip/zipinfofile.c (ebzip_zipinfo_file_internal): Don't close + `in_file' directly. On Windows, it raises an exception. + +2008-01-28 Motoyuki Kasahara + + * Version 4.3.2. + + * configure.ac (LIBEB_VERSION_INFO): Set it to 12:6:0. + In EB Library version 4.3.1, LIBEB_VERSION_INFO is set to 12:4:1, + but it is incorrect. It would be 12:5:0. + + * po-ebutils/ja.po: Add a missing space to a msgstr corresponding + to the msgid "image-menu ". + +2008-01-14 Motoyuki Kasahara + + * Version 4.3.1. + + * ltmain.sh, config.sub, config.guess: Imported from libtool-1.5.24. + +2007-02-13 Motoyuki Kasahara + + * ltmain.sh, config.sub, config.guess: Imported from libtool-1.5.22. + + * eb/multiplex.c (ebnet_set_book_name): Fix a buffer overrun bug. + * eb/binary.c (eb_set_binary_mpeg): Fix a bug that it doesn't + compose a movie file name correctly. + * eb/book.c (misleaded_book_table): Add Panasonic KX-EBP2 accessories. + +2006-08-31 Motoyuki Kasahara + + * Version 4.3. + + * configure.ac (LIBEB_VERSION_INFO): Set it to 12:4:0. + * configure.ac (AC_INIT): Set version to 4.3.0. + * configure.ac (EB_VERSION_MINOR): Set it to 3. + + * eb/subbook.c (eb_load_subbook_indexes): Support for image menu, + contributed by Kazuhiro Ito. + * eb/readtext.c (eb_read_text_internal): Ditto. + * eb/readtext.c (EB_MAX_ARGV): Change the value from 6 to 7. + * eb/text.h (EB_HOOK_BEGIN_IMAGE_PAGE, EB_HOOK_END_IMAGE_PAGE, + EB_HOOK_BEGIN_CLICKABLE_AREA, EB_HOOK_END_CLICKABLE_AREA): + Add the four hooks. + * eb/menu.c (eb_have_image_menu, eb_image_menu): New functions. + * eb/defs.h (EB_NUMBER_OF_HOOKS): Change the value from 45 to 49. + * eb/defs.h (EB_Subbook_Struct): Add the member `image_menu'. + * ebinfo/ebinfo.c (output_information): Also display "image-menu". + +2006-06-20 Motoyuki Kasahara + + * Makefile.am (EXTRA_DIST): Add `ChangeLog.2'. + + * ebappendix/ebappendix.in: Use `File::Basename' module. + * ebappendix/ebappendix.in: Specify `my' modifier to local variables. + * ebappendix/ebappendix.in: Use reference (\$var, \@array and \%hash) + instead of alias (*name). + + * ebzip/ebunzip.c (ebzip_unzip_book_eb): Fix a bug that `ebunzip + --test' rewrites START files. + + * eb/zio.c (zio_unzip_slice_sebxa): Fix a bug in the uncompression + algorithm. + +2006-06-16 Motoyuki Kasahara + + * eb/subbook.c (eb_set_subbook_epwing): Fix a bug that EB + cannot initialize a book if a subbook has stream data only + and the subbook shares `data' sub-directory with another + subbook. + + * libebutils/strlist.c, libebutils/strlist.h: New file. + * libebutils/Makefile.am (libebutils_a_SOURCES): Add strlist.c. + * libebutils/Makefile.am (dist_noinst_HEADERS): Add strlist.h. + * ebzip/zipbook.c (ebzip_zip_book_eb, ebzip_zip_book_epwing): + Use `String_List' to avoid compressing a file twice. + * ebzip/unzipbook.c (ebzip_unzip_book_eb, ebzip_unzip_book_epwing): + Ditto. + +2006-05-15 Motoyuki Kasahara + + * ebappendix/ebappendix.in: Fix a bug that ebappendix creates + an appendix in EB style even when it reads `catalogs.app'. + +2005-11-26 Motoyuki Kasahara + + * Version 4.2.2. + + * ltmain.sh, config.sub, config.guess, depcomp, install-sh: + Imported from libtool-1.5.20 and Automake-1.9.6. + + * m4/lcmessage.m4, m4/gettext.m4, m4/sockaddrin6.m4, m4/in6addr.m4, + m4/sockinttypes.m4, configure.ac: Substitute AC_TRY_COMPILE, + AC_TRY_LINK and AC_TRY_RUN with AC_COMPILE_IFELSE, AC_LINK_IFELSE + and AC_RUN_IFELSE. + +2005-11-21 Motoyuki Kasahara + + * m4/gettext.m4: Check for existance of libintl and libiconv even + when `--with-gettext-libraries' or `--with-iconv-libraries' option + is not specified. + * m4/gettext.m4: Do not perform AC_TRY_RUN to check for gettext(). + We perform AC_TRY_LINK instead. On Debian Linux, the test program + doesn't succeed though gettext() is available. The test program + called setlocale(LC_ALL, "en_US") but it didn't change the locale + to `en' or `en_US' since "en_US" is not acceptable locale name on + that environment. + * gttest.po, gttest.mo: Deleted. + * Makefile.am (EXTRA_DIST): Likewise. + +2005-11-20 Motoyuki Kasahara + + * eb/binary.c (eb_set_binary_wave): Fix a bug that it set wrong + wave data size to `context'. + * eb/binary.c (eb_set_binary_wave): Fix a bug that it generated + wrong RIFF header when the CD-ROM book provided fmt block of the + wave data. + + * eb/multiplex.c (ebnet_get_addresses): Retry getnameinfo() + without the NI_WITHSCOPEID flag if getnameinfo() with that flag + doesn't succeed. + +2005-10-25 Motoyuki Kasahara + + * eb.conf.in (EBCONF_ENABLE_NLS): Fix a bug that Makefile filled + an incorrect value. + * Makefile.am (eb.conf): Likewise. + + * eb/book.c (eb_load_catalog_epwing): When EPWING version is 1, + the function never read an extra information block. + +2005-09-16 Motoyuki Kasahara + + * eb/book.c (eb_load_catalog_epwing): Fix a bug that it sometimes + raises an error when the catalog file doesn't have extra information + block. + +2005-09-08 Motoyuki Kasahara + + * eb/search.c (eb_and_hit_lists): Fix a bug that it outputs + a wrong debug mesasge at the end of the function. + +2005-08-14 Motoyuki Kasahara + + * Version 4.2.1. + + * eb/book.c (eb_load_catalog_epwing): Fix a bug that EB Library + sets wrong graphic and sound file names if target subbook contains + graphic and/or sound data in a text file. + + * eb/book.c (eb_load_catalog_epwing): Correct a debug message + that shows EB_ERR_FAIL_READ_CAT error. + +2005-05-29 Motoyuki Kasahara + + * Version 4.2. + + * eb/book.c (eb_load_catalog_epwing): Fix a bug that EB Library + sets wrong graphic and sound file names if target subbook has + HONMON2 only. + + * eb/binary.c (eb_set_binary_wave): Fix a bug that the function + appends "fmt " to the wave data mistakenly. + +2005-04-18 Motoyuki Kasahara + + * ltmain.sh, config.guess, config.sub, install-sh, m4/libtool.m4: + Import from libtool 1.5.18. + +2005-04-10 Motoyuki Kasahara + + * eb/build-post.h.in (EB_TEXT_TEXT): Renamed to EB_TEXT_MAIN_TEXT. + * eb/ebinfo.c: Support `Cross Search'. + + * eb/multiplex.c (ebnet_create_new_connection): Set stream socket + to non-blocking I/O mode. + +2005-03-20 Motoyuki Kasahara + + * eb/binary.c (eb_read_binary_mono_graphic, + eb_read_binary_gray_graphic): Fix the 2nd argument to zio_lseek(). + `line_length * -2' must be `(off_t)line_length * -2' since + `line_length' is `size_t' which is usually unsigned integral type. + +2005-02-05 Motoyuki Kasahara + + * eb/multi.c (eb_initialize_multi_searches, + eb_finalize_multi_searches): Remove the internal functions. + + * eb/defs.h (EB_Subbook_Struct): Add the member `cross'. + * eb/defs.h (EB_MAX_CROSS_ENTRIES): Defined. + * eb/build-post.h.in (EB_SEARCH_CROSS): Defined. + * eb/Makefile.am (libeb_la_SOURCES): Add `cross.c'. + * eb/cross.c: New file. + * eb/search.c (eb_initialize_searches, eb_hit_list): Support for + cross search. + * eb/subbook.c (eb_load_subbook_indexes): Ditto. + + * eb/filename.c (eb_compose_movie_path_name): New function. + + * configure.ac (AC_CONFIG_SUBDIRS): Remove `zlib'. + * Makefile.am (SUBDIRS): Remove $(ZLIB_SUBDIR). + +2005-01-29 Motoyuki Kasahara + + * ebrefile/ebrefile.c (copy_file, refile_book): `ebrefile' + preserves an original catalog file in an output directory as + "catalogs.old" and then it overwrites the original catalog file. + +2004-12-05 Motoyuki Kasahara + + * Version 4.1.3. + + * po-eb/Makefile.in, po-ebutils/Makefile.in (mkinstalldirs): + Defined as `$(install_sh) -d'. + * po-eb/Makefile.in, po-ebutils/Makefile.in (install_sh): + Defined as `@install_sh@'. + + * configure.ac (LIBEB_VERSION_INFO): Set it to 9:1:0. + * configure.ac (AC_INIT): Set version to 4.1.3. + +2004-11-28 Motoyuki Kasahara + + * Version 4.1.2. + + * ebzip/ebzip.c (main): Also recognize `\' as a path separator when + DOS_FILE_PATH is defined. + + * po-eb/Makefile.in, po-ebutils/Makefile.in (mkinstalldirs): + Defined as `$(SHELL) $(top_srcdir)/mkinstalldirs'. + It was defined as `$(mkdir_p)', but it causes cycric reference + on FreeBSD-5.3-RELEASE. + + * eb/readtext.c (eb_seek_text): Accept position whose offset is + greater than or equal to EB_SIZE_PAGE. + * eb/binary.c (eb_set_binary_mono_graphic, eb_set_binary_gray_graphic, + eb_set_binary_wave, eb_set_binary_color_graphic, eb_set_binary_mpeg): + Don't accept position whose offset is less than 0. + +2004-11-22 Motoyuki Kasahara + + * eb/search.c (eb_hit_list_word, eb_hit_list_keyword, + eb_hit_list_multi): Fix a historical bug that EB Library cannot + find matched entries in particular books. + + * eb/eb.c (eb_initialize_library): In debug mode, EB Library + displays its version number. + + * eb/searh.c (eb_presearch_word, eb_hit_list_word, + eb_hit_list_keyword, eb_hit_list_multi): The debug messages also + outputs index page number. + +2004-10-24 Motoyuki Kasahara + + * Version 4.1.1. + + * libebutils/getopt.c: Fix a bug in getopt_long(). + It may abort when it outputs the message "option `--xxx' requires + an argument". + + * eb/readtext.c (eb_write_text_byte2): Fix a bug that the function + writes incorrect data on the text buffer. + +2004-07-03 Motoyuki Kasahara + + * Version 4.1. + + * doc/Makefile.am (uninstall-hook): Defined. + * doc/Makefile.am: Fix bugs that `make all' fails when $(srcdir) + != `.'. + +2004-06-23 Motoyuki Kasahara + + * doc/Makefile.am (pkgdoc_DATA): Do not use meta characters to + specify splitted HTML files. Use `install-data-hook' instead. + +2004-05-27 Motoyuki Kasahara + + * README-ja, INSTALL-ja: Removed. + * README, INSTALL: These documents are now written in Japanese. + + * doc-ja: Directory removed. + * doc: The documents under the directory are now written in Japanese + and with HTML format. + + * Makefile.am (SUBDIRS): Delete `doc-ja'. + * configure.ac (AC_CONFIG_FILES): Ditto. + + * configure.ac (AC_ARG_WITH): Add `--with-pkgdocdir' option. + + * move-if-change: Rewrite it from scratch. + +2004-05-22 Motoyuki Kasahara + + * EB Library now adopts BSD License. + + * ebzip/zipfile.c (ebzip_zip_file_internal), + ebzip/zipbook.c (ebzip_zip_book_eb, ebzip_zip_book_epwing): + Support for partial compression. + * ebzip/speedup.c: New file. + * ebzip/Makefile.am (ebzip_SOURCES): Add `ebzip/speedup.c'. + * po-ebutils/Makefile.in (POTFILES): Ditto. + +2004-05-16 Motoyuki Kasahara + + * ebzip/sebxa.c (fix_sebxa_start): Renamed to rewrite_sebxa_start(). + * ebzip/sebxa.c (fix_sebxa_start): Fix a bug that ebzip outputs + `completed' message even when quiet flag is enabled. + +2004-05-09 Motoyuki Kasahara + + * ebzip/zipfile.c (ebzip_zip_file_internal): Output compression + result even when input is an empty file. + +2004-05-08 Motoyuki Kasahara + + * configure.ac (AC_CHECK_HEADERS): Delete `utime.h' and `sys/utime.h'. + Add `mbstring.h' instead. + * ebzip/ebzip.h (EBZIP_OVERWRITE_QUERY): Renamed to + EBZIP_OVERWRITE_CONFIRM. + + * ebzip/ebzip.c: Add `--overwrite' (-w) option. + + * ebzip/zipfile.c (ebzip_zip_file_internal): Don't abort when ebzip + fails to delete an original file. Delete an original file even when + ebzip outputs "already exists, skip the file" message. + ebzip/unzipfile.c (ebzip_unzip_file_internal): Ditto. + ebzip/copyfile.c (ebzip_copy_file): Ditto. + +2004-05-07 Motoyuki Kasahara + + * Use Automake-1.8.4 and Libtool-1.5.6. + + * configure.ac (AC_TYPE_SIGNAL, AC_STRUCT_UTIMBUF): Removed. + * configure.ac (AC_CHECK_FUNCS): Remove dup2() and utime(). + * m4/herrno.m4, m4/utimbuf,m4, m4/voidpointer.m4: Removed. + +2004-04-29 Motoyuki Kasahara + + * eb/bitmap.c (eb_bitmap_to_png): New function. + * eb/bitmap.c (eb_bitmap_to_xbm, eb_bitmap_to_xpm, eb_bitmap_to_gif, + eb_bitmap_to_bmp, eb_bitmap_to_png): They return EB_Error_Code. + * ebfont/ebfont.c: `ebfont' supports PNG format images. + + * eb/zio.c: Enlarge cache buffer, contributed by Takashi NEMOTO. + + * eb/setword.c (eb_convert_euc_jp): Fix argument order. + + * configure.ac (AC_INIT): Set version to 4.1. + * configure.ac (EB_VERSION_MINOR): Set minor version to 1. + * configure.ac (LIBEB_VERSION_INFO): Set version to 9:0:0. + + * configure.ac (AC_C_CONST, AC_C_PROTOTYPES, AC_C_VOID_POINTER, + AC_HEADER_STDC, AC_HEADER_STAT, AC_HEADER_TIME, AC_HEADER_DIRENT, + AC_FUNC_VPRINTF, AC_TYPE_OFF_T, AC_TYPE_SIZE_T): Removed. + * configure.ac (AC_CHECK_HEADERS): Remove checks for fcntl.h, + limits.h, memory.h, stdlib.h and unistd.h. + * eb/Makefile.am + * configure.ac (AC_CHECK_FUNCS): Remove checks for getcwd(), memcpy(), + memmove() and strchr(). + * configure.ac (AC_REPLACE_FUNCS): Remove checks for memset() and + strerror(). + + * eb/appendix.c, eb/appendix.h, eb/appsub.c, eb/bcd.c, eb/binary.c, + eb/binary.h, eb/bitmap.c, eb/book.c, eb/booklist.c, eb/booklist.h, + eb/build-post.h.in, eb/build-pre.h, eb/copyright.c, eb/defs.h, + eb/eb.c, eb/eb.h, eb/ebnet.c, eb/ebnet.h, eb/endword.c, eb/error.c, + eb/error.h, eb/exactword.c, eb/filename.c, eb/font.c, eb/font.h, + eb/getaddrinfo.c, eb/getaddrinfo.h, eb/hook.c, eb/jacode.c, + eb/keyword.c, eb/linebuf.c, eb/linebuf.h, eb/lock.c, eb/log.c, + eb/makeproto, eb/match.c, eb/menu.c, eb/multi.c, eb/multiplex.c, + eb/narwalt.c, eb/narwfont.c, eb/readtext.c, eb/search.c, eb/setword.c, + eb/stopcode.c, eb/strcasecmp.c, eb/subbook.c, eb/text.c, eb/text.h, + eb/urlparts.c, eb/urlparts.h, eb/word.c, eb/zio.c, eb/zio.h, + ebfont/ebfont.c, ebinfo/ebinfo.c, ebrefile/ebrefile.c, + ebstopcode/ebstopcode.c, ebzip/copyfile.c, ebzip/ebzip.c, + ebzip/ebzip.h, ebzip/ebzip1.c, ebzip/sebxa.c, ebzip/unzipbook.c, + ebzip/unzipfile.c, ebzip/zipbook.c, ebzip/zipfile.c, + ebzip/zipinfobook.c, ebzip/zipinfofile.c, libebutils/ebutils.c, + libebutils/ebutils.h.in, libebutils/getopt.c, libebutils/getopt.h, + libebutils/getumask.c, libebutils/getumask.h, libebutils/makedir.c, + libebutils/makedir.h, libebutils/puts_eucjp.c, libebutils/samefile.c, + libebutils/samefile.h, libebutils/strcasecmp.c, libebutils/yesno.c, + libebutils/yesno.h, samples/appendix.c, samples/booklist.c, + samples/disctype.c, samples/font.c, samples/initexit.c, + samples/subbook.c, samples/text.c, samples/word.c: + EB Library now assumes POSIX.1-1990 systems and requires ANSI C89 + compiler. + +2004-03-20 Motoyuki Kasahara + + * Version 4.0.1. + + * ebzip/zipfile.c, ebzip/unzipfile.c, ebzip/copyfile.c, ebzip/sebxa.c: + Output progress messages to stderr, not stdout. + + * ebzip/zipbook.c (ebzip_zip_book, ebzip_zip_book_eb, + ebzip_zip_book_epwing): Abort if ebzip_zip_file() fails. + * ebzip/unzipbook.c (ebzip_unzip_book, ebzip_unzip_book_eb, + ebzip_unzip_book_epwing): Abort if ebzip_unzip_file() or + ebzip_unzip_start_file() fails. + +2004-02-29 Motoyuki Kasahara + + * ebzip/zipinfobook.c (ebzip_zipinfo_book_epwing): Also display + movie files. + +2004-01-30 Motoyuki Kasahara + + * eb/build-pre.h, eb/defs.h, ebzip/ebzip.h (EB_P): Fix typo in + the definition of EB_P. + * eb/zio.h (ZIO_P): Likewise. diff --git a/lib/ebu/ChangeLog.0 b/lib/ebu/ChangeLog.0 new file mode 100644 index 0000000..f411bec --- /dev/null +++ b/lib/ebu/ChangeLog.0 @@ -0,0 +1,1464 @@ +1999-12-03 Motoyuki Kasahara + + * Version 2.3.6. + + * eb/subbook.c (eb_initialize_indexes): Fix a bug that search + method parameters aren't set correctly. + + * eb/font.c (eb_initialize_eb_fonts): If the number of characters + in a font is 0, ignore the font entry. This fix is for "Nihongo + Goi Taikei" (EPWING, Iwanami Shoten). + * eb/font.c (eb_initialize_epwing_fonts): Likewise. + +1999-11-03 Motoyuki Kasahara + + * Version 2.3.5. + +1999-10-23 Motoyuki Kasahara + + * Version 2.3.4. + + * eb/epwunzip.c (eb_epwunzip_slice): Fix a bug that an + application dumps core when the compression ratio of a target + page is over 100%. + + * eb/appendix.h: Add missing `}' for extern "C". + +1999-10-03 Motoyuki Kasahara + + * ebrefile/ebrefile.in: When the `--version' option is specified, + don't put an empty line followed by the Copyright string. + * ebappendix/ebappendix.in: Likewise. + + * ebinfo/ebinfo.c (output_information): Add `S-EBXA' to the + string `EB/EBG/EBXA/...'. + +1999-09-04 Motoyuki Kasahara + + * Version 2.3.3. + +1999-06-20 Motoyuki Kasahara + + * Version 2.3.2. + + * Use libtool-1.3.2. + + * eb/text.c (eb_read_internal): Skip text within `1ff0H - 1ff1H', + `1ff2H - 1ff3H', ... `1ffeH - 1ffHH', not `1ff1H - 1ff2H', + `1ff3H - 1ff4H' ... `1ffdH - 1ffeH'. + +1999-04-29 Motoyuki Kasahara + + * Version 2.3. + +1999-04-24 Motoyuki Kasahara + + * Version 2.3beta2. + + * eb/subbook.c (eb_initialize_subbook): Don't access the removed + `length' member in the `EB_Search' structure. + * eb/text.c (eb_text): Likewise. Don't tell text from menu. + * eb/text.c (CONTENT_MENU): Removed. + +1999-04-17 Motoyuki Kasahara + + * eb/eb.c (eb_initialize_catalog): Change the character code + parameter of `EB Kagakugijutu Yougo Daijiten (YRRS-048)' + to JIS X 0208. + +1999-04-11 Motoyuki Kasahara + + * eb/zio.c (eb_zopen): Remove and append `.' to a filename + and try to open the file, when failed to open the file. + +1999-03-28 Motoyuki Kasahara + + * Version 2.3beta1. + + * ebinfo/ebinfo.c (output_information): Recognize the book + written in EB_CHARCODE_JISX0208_GB2312. + + * eb/text.c (eb_read_internal): Case to `unsigned char' when + assign an integral value to `*workbuf'. + + * eb/defs.h (EB_Search): Add the member `length'. + * eb/subbook.c (eb_initialize_subbook): Record not only start + pages of search methods but their index length. + * eb/text.c (CONTENT_MENU): Defined. + * eb/text.c (eb_text): Check for the content type, text or menu. + * eb/text.c (eb_read_internal): If the content type is menu, + text is fed to the application until the library meets `0x1f03'. + + * eb/eb.c (eb_initialize_catalog): Tell EB_CHARCODE_ISO8859_1 + from others, not EB_CHARCODE_JISX0208 from others. + * eb/font.c (eb_initialize_eb_fonts, + eb_initialize_epwing_fonts): Likewise. + * eb/narwalt.c(eb_narrow_alt_character_text, + eb_forward_narrow_alt_character, + eb_backward_narrow_alt_character): Likewise. + * eb/narwfont.c (eb_narrow_font_character_bitmap, + eb_forward_narrow_font_character, + eb_backward_narrow_font_character): Likewise. + * eb/widealt.c(eb_wide_alt_character_text, + eb_forward_wide_alt_character, + eb_backward_wide_alt_character): Likewise. + * eb/widefont.c (eb_wide_font_character_bitmap, + eb_forward_wide_font_character, + eb_backward_wide_font_character): Likewise. + + * eb/text.c (eb_read_internal): Recognize GB 2312 character in + EBXA-C. + * eb/text.h (EB_HOOK_GB2312): Add the hook. + * eb/text.h (EB_NUM_HOOKS): Increment. + + * eb/defs.h (EB_CHARCODE_JISX0208_GB2312): Defined. + * eb/language.c:eb_initialize_languages): Recognize EBXA-C disc. + +1999-03-07 Motoyuki Kasahara + + * Version 2.3beta0. + + * eb/ebrefile.in: Find catalog file in the same order as + ebzip does. + + * eb/zio.c (eb_zopen2): Defined. + * eb/zio.c (eb_zclose): Dispose memory for huffman nodes. + + * ebzip/ebzip.c (zip_book, unzip_book, zipinfo_book): Support + CD-ROM book compressed with EPWING compression format. + * ebzip/ebzip.c (zip_book, unzip_book, zipinfo_book): Support + CD-ROM book compressed with EPWING compression format. + * ebzip/ebzip.c (zip_file, unzip_file): Argument formats are + changed. `in_filename' are changed to `in_filename_list'. + * ebzip/ebzip.c (zipinfo_file): Argument format is changed. + `ebz_filename' and `orig_filename' are unified to `filename_list'. + * ebzip/ebzip.c (zip_file, unzip_file, zipinfo_file): Use + eb_zopen2(), eb_zlseek(), eb_zread() and eb_zclose() for input + files. + + * ebzip/ebzip.c (fix_filename, zip_file, unzip_file, zipinfo_file): + `eb_canonicalize_filename()' are called at `fix_filename()', not + elsewhere. + +1999-02-27 Motoyuki Kasahara + + * eb/zio.c (eb_read_all): Return the number of read bytes so far + when it receives an EOF. + +1999-02-26 Motoyuki Kasahara + + * eb/internal.h (EB_HUFFMAN_NODE_INTERMEDIATE, EB_HUFFMAN_NODE_LEAF8, + EB_HUFFMAN_NODE_LEAF16, EB_HUFFMAN_NODE_EOF): Defined. + +1999-02-25 Motoyuki Kasahara + + * eb/unzip1.c: Renamed to `ebunzip1.c'. + * eb/ebunzip1.c (eb_unzip_mode1): Renamed to `eb_ebunzip1_slice'. + + * ebzip/zip1.c: Renamed to `ebzip1.c'. + * ebzip/ebzip1.c (zip_mode1): Renamed to `ebzip1_slice'. + + * eb/def.h (EB_SIZE_ZIP_HEADER): Renamed to `EB_SIZE_EBZIP_HEADER'. + * eb/def.h (EB_SIZE_ZIP_MARGIN): Renamed to `EB_SIZE_EBZIP_MARGIN'. + * eb/def.h (EB_SIZE_ZIP_LEVEL): Renamed to `EB_SIZE_EBZIP_LEVEL'. + * eb/def.h (EB_ZIP_MODE1): Renamed to `EB_ZIP_EBZIP1'. + * eb/def.h (EB_ZIP_EPWING): Defined. + * eb/defs.h (EB_Huffman_Node): Defined. + * eb/defs.h (EB_Zip): Add some members for EPWING compression: + `index_location', `index_length', `frequencies_location', + `frequencies_length', `huffman_nodes' and `huffman_root'. + + * eb/zio.c (eb_zopen): Split this function into `eb_zopen()' and + `eb_zopen_ebzipped()'. + * eb/zio.c (eb_zopen): Split this function into `eb_zread()' and + `eb_zread_ebzipped()'. + * eb/zio.c (eb_zopen_epwzipped, eb_zread_epwzipped): Defined. + * eb/zio.c (eb_fix_ebzip_filename): Removed. The procedures in + this function are moved into `eb_open_ebzipped'. + +1999-02-20 Motoyuki Kasahara + + * Version 2.2.1. + + * eb/jpcode.c: Renamed to `eb/jacode.c'. + + * configure.in (AC_CYGWIN, AC_MINGW32, AC_EXEEXT, AC_OBJEXT): + Added. + * configure.in: Add AM_CONDITIONAL(EXEEXT, ...) + * ebzip/Makefile.am: add `if..else..endif' statement which + branches off according with `EXEEXT'. + + * Makefile.am: add `if..else..endif' statement which branches + off according with `ENABLE_SAMPLES'. + * Makefile.am (EXTRA_DIST): Delete files under the `samples' + and `samples-ja' directories. + * Makefile.am (SUBDIRS): Add `$(SAMPLES_SUBDIR)'. + * samples/disctype.c, samples/subbook.c, samples/word.c: + Import Japanese comments in `samples-ja/*.c' and renamed + to `*.c.in'. + * samples/Makefile.am (disctype.c, subbook.c, word.c): They + are generated from `*.c.in' files. + * samples-ja/configure.in, samples-ja/Makefile.am + samples-ja/disctype.c, samples/subbook.c, samples/word.c: + Removed. + * doc/Makefile.am (disctype.c.texi, subbook.c.texi): Generated + from `$(samplesdir)/disctype.c.in' and `$(samplesdir)/subbook.c.in'. + * doc-ja/Makefile.am (disctype.c.texi, subbook.c.texi): Likewise. + * doc-ja/Makefile.am (samplesdir): Changed to `$(srcdir)/../samples', + from `$(srcdir)/../samples-ja'. + +1999-02-11 Motoyuki Kasahara + + * ebinfo/ebinfo.c (main): Don't include . + * ebfont/ebfont.c (main): Likewise. + * ebfont/ebzip.c (main): Likewise. + + * lib/fakelog.c (set_fakelog_level): Takes a facility with + `FAKELOG_' prefix as an argument. + * lib/fakelog.h, lib/fakelog.c: Move facility macros definitions + (`FAKELOG_QUIET', `FAKELOG_EMERG' ...) from `lib/fakelog.c' to + `lib/fakelog.h'. + * lib/fakelog.c: include `syslog.h' only when `HAVE_SYSLOG_H' + is defined (for DOS and Windows). + * lib/fakelog.c (fakelog): call syslog() only when HAVE_SYSLOG + is defined (for DOS and Windows). + * configure.in (AC_CHECK_FUNCS): Add `syslog'. + * configure.in (AC_CHECK_HEADERS): Add `syslog.h'. + +1999-01-28 Motoyuki Kasahara + + * ebzip/ebzip.c (zip_book, unzip_book, zipinfo_book): + Fix eb_canonicalize_filename() calls in the `DOS_FILE_PATH' + blocks. Undefined variables were used. + +1999-01-15 Motoyuki Kasahara + + * Version 2.2. + + * eb/text.c (eb_initialize_hookset): Set hook functions + of `EB_HOOK_STOPCODE', `EB_HOOK_NARROW_JISX0208', + `EB_HOOK_NARROW_FONT' and `EB_HOOK_WIDE_FONT' + + * eb/hookset.c (eb_hook_stopcode_dummy, eb_hook_stopcode_mixed): + Now, simply call `eb_hook_stopcode'. + * eb/hookset.c (eb_hook_stopcode_mixed): Rename to + `eb_hook_stopcode'. The old version of `eb_hook_stopcode' + has overwritten. + + * eb/hookset.c (eb_hook_narrow_character_text, + eb_hook_wide_character_text, eb_hook_empty): Add three builtin + hooks. + +1999-01-10 Motoyuki Kasahara + + * eb/text.c (default_hookset, default_hookset_initialized): + Add these static variables. + * eb/text.c (eb_text, eb_heading): Initialize `default_hookset' + if it has not been initialized yet. + * eb/text.c (eb_read_internal): Use `default_hookset' when + `hookset' is `NULL'. + + * doc/Makefile.am (info_TEXINFOS): Add `eb.texi'. + * doc/Makefile.am (eb_ja_TEXINFOS): Define this macro. + * doc/Makefile.am (MOSTLYCLEANFILES): Rename to `CLEANFILES'. + * doc/Makefile.am (CLEANFILES): Add `disctype.c.texi' and + `subbook.c.texi'. + * doc/Makefile.am (EXTRA_DIST): Add `stamp-eb'. + * doc/Makefile.am (eb-ver.texi, stamp-eb): Add these targets. + + * doc-ja/Makefile.am (info_TEXINFOS): Add `eb-ja.texi'. + * doc-ja/Makefile.am (eb_ja_TEXINFOS): Define this macro. + * doc-ja/Makefile.am (MOSTLYCLEANFILES): Rename to `CLEANFILES'. + * doc-ja/Makefile.am (CLEANFILES): Add `disctype.c.texi' and + `subbook.c.texi'. + * doc-ja/Makefile.am (EXTRA_DIST): Add `stamp-eb'. + * doc-ja/Makefile.am (eb-ver.texi, stamp-eb): Add these targets. + + * Makefile.am (EXTRA_DIST): add files under the `samples' and + `samples-ja' directories. + +1998-12-12 Motoyuki Kasahara + + * Version 2.1.2. + + * ebzip/ebzip.c (zip_file, unzip_file, copy_file): Check + whether SIGHUP, SIGTERM and SIGQUIT are defined or not. + + * config.guess, config.sub, ltconfig, ltmain.sh: Use libtool + version 1.2c, taken via anonymous CVS. This version supports + FreeBSD-ELF. + + * configure.in (LIBEB_VERSION_INFO): Set it to `1:2:0'. + (The previous version was `1:1:1', but this is incorrect.) + +1998-11-13 Motoyuki Kasahara + + * Version 2.1.1. + + * eb/text.c (eb_read_internal): Update `pagebufp' and `pagerest' + before go to `at_end'. + +1998-11-09 Motoyuki Kasahara + + * eb/eb.c (eb_initialize_catalog): If the target book is a + CD-ROM of SONY DataDiscMan (DD-DR1), modify `char_code' to + JIS X 0208. + + * eb/appendix.c (eb_initialize_appendix_catalog): Raise an error + if the target appendix has no subbook. + * eb/eb.c (eb_initialize_catalog): Raise an error if the target + book has no subbook. + +1998-11-08 Motoyuki Kasahara + + * ebinfo/ebinfo.c (output_information): Output `copyright' + instead of `copyright-notice'. + +1998-11-06 Motoyuki Kasahara + + * INSTALL-ja, README-ja: Add these files. + * Makefile.am (EXTRA_DIST): Add this macro. + + * configure.in (LIBEB_VERSION_INFO): Set it to `1:1:1'. + + * eb/appsub.c (eb_initialize_all_appendix_subbooks): Examine + whether the appendix is bound or not. + * eb/subbook.c (eb_initialize_all_subbooks): Examine whether + the book is bound or not. + +1998-10-31 Motoyuki Kasahara + + * doc-ja/texinfo.tex: Use Japanized 1998-10-27 version. + * doc/texinfo.tex: Use 1998-10-27 version. + * doc-ja/Makefile.am (EXTRA_DIST): Add texinfo-ja.tex. + +1998-10-28 Motoyuki Kasahara + + * eb/font.c (eb_initialize_epwing_fonts): Close a font file + immediately and set `font_count' to 0 when an error occurs. + +1998-10-19 Motoyuki Kasahara + + * libebutils/samefile.c (is_same_file): If `DOS_FILE_PATH' + is defined, compare fields other than `st_dev' and `st_ino'. + +1998-10-08 Motoyuki Kasahara + + * eb/ebzip.c (main): Ignore case of the command name + when DOS_FILE_PATH is defined. + * eb/ebzip.c (main, zip_book, unzip_book, zipinfo_book): + Call eb_canonicalize_filename() after fix_filename(), when + DOS_FILE_PATH is defined. + * eb/ebzip.c (main): Recognize the command name `ebunzip.exe' + and `ebzipinfo.exe' when DOS_FILE_PATH is defined. + + * eb/ebzip.c (info_book): Rename it to `zipinfo_book'. + * eb/ebzip.c (info_file): Rename it to `zipinfo_file'. + +1998-10-02 Motoyuki Kasahara + + * Version 2.1. + + * eb/subbook.c (eb_initialize_indexes): Recognize an index + with the identifer 0x02 as copyright notice. + +1998-09-23 Motoyuki Kasahara + + * ebzip/ebzip.c: Add missing O_BINARY modifier to an argument + to read(). + +1998-09-17 Motoyuki Kasahara + + * eb/text.c (eb_read_internal): `0x1f53' is an escape sequence + for END-OF-SOUND, not END-OF-PICTURE. + +1998-08-21 Motoyuki Kasahara + + * ebrefile/ebrefile.in: Copy reserved area 1 (described in JIS + X 4081) in an original CATALOG(S) to a new CATALOG(S). + + * configure.in (LIBZ_INCLUDED): Rename it to `INCLUDED_FOR_LIBZ'. + * configure.in (LIBZ_DEPENDED): Rename it to `DEPENDENCIES_FOR_LIBZ'. + * configure.in (LIBZ_LDADDED): Rename it to `LDADD_FOR_LIBZ'. + +1998-08-15 Motoyuki Kasahara + + * Version 2.1beta2. + + * eb/defs.h (EB_VERSION_MINOR): Set to `1'. + (NDTPD 2.1beta0 and beta1 set wrong miner version.) + +1998-08-14 Motoyuki Kasahara + + * libebutils/getopt_long.pl (getopt_long): Set option name to '' + for a return value of a non-option argument when RETURN_IN_ORDER + mode. + +1998-08-02 Motoyuki Kasahara + + * ebzip/Makefile.am (TEXINFO_TEX): Deleted. + +1998-07-19 Motoyuki Kasahara + + * ebappendix/Makefile.am (EXTRA_DIST, ebappendix): Move + `getopt_long.in' to the `libebutils' directory. + * libebutils/Makefile.am (EXTRA_DIST): Add `getopt_long.in'. + + * eb/zio.c (eb_zread): Decrease size of `tmp_buffer'. + * eb/unzip1.c (eb_unzip_mode1): Set `avail_out' to just + `out_byte_length'. Don't add margin. + + * ebrefile/ebrefile.in, ebrefile/Makefile.am, ebrefile/getopt_long.pl: + Add these files. + * Makefile.am (SUBDIRS): Add `ebrefile'. + * configure.in (AC_OUTPUT): Add `ebrefile/Makefile'. + + * eb/ebzip.c (info_file): Output size of original files. + * eb/defs.h (EB_MAX_ZIP_LEVEL): Set to `3' (it was `2'). + +1998-07-16 Motoyuki Kasahara + + * Version 2.1beta1. + + * libebutils/samefile.c (is_same_file): Fix an expression of + inode comparion. + * ebzip/ebzip.c (main): Don't change `filename_suffix' regardless + of action mode. + * ebzip/ebzip.c (list_book): Rename to `info_book'. + * ebzip/ebzip.c (list_file): Rename to `info_file'. + * ebzip/ebzip.c (fix_output_directory): Delete the function. + * ebzip/ebzip.c (fix_output_filename): Rename to `fix_filename' + and change its interface. + + * ebzip/ebzip.c (zip_file, unzip_file): Output status messages + with more precise output byte-counts during compression/uncompression. + +1998-07-16 Motoyuki Kasahara + + * zlib/Makefile.am (EXTRA_DIST): List minimum files; `*.c' and + `*.h' sources required to build the library, and documents. + + * Import zlib-1.1.3 sources. + + * acinclude.m4 (AX_HAVE_STRUCT_UTIMBUF): Fix a message. + + * ebinfo/Makefile.am, ebfont/Makefile.am (INCLUDES): Delete + `-I$(zincludedir)'. + + * ebzip/ebzip.c (compress_book, uncompress_book): Correctly + generate filenames of HONMON files. + + * ebzip/ebzip.c (output_help): Fix miss-spelling. + +1998-07-12 Motoyuki Kasahara + + * Version 2.1beta0. + + * ebappendix/ebappendix.in: Fix option parser. + + * ebfont/ebfont.c (make_subbook_size_fonts): Omit intermedate + directories for image-names. + + * configure.in (AC_ARG_WITH): Add `--with-zlib'. + +1998-07-10 Motoyuki Kasahara + + * doc/Makefile.am (ebinfo-ver.texi, stamp-ebinfo, ebzip-ver.texi, + stamp-ebzip): Define these rules. + * doc-ja/Makefile.am (ebinfo-ver.texi, stamp-ebinfo, ebzip-ver.texi, + stamp-ebzip): Liksewise. + + * doc/Makefile.am (ebinfo_TEXINFOS, ebzip_TEXINFO): Define + these macros. + * doc-ja/Makefile.am (ebinfo_ja_TEXINFOS, ebzip_ja_TEXINFO): + Likewise. + + * doc/Makefile.am (MOSTLYCLEANFILES): Add vti.tmp. + * doc-ja/Makefile.am (MOSTLYCLEANFILES): Likewise. + + * doc/ebzip.texi: Add this file. + * doc/ebzip-ja.texi: Likewise. + * doc/Makefile.am (info_TEXINFOS): Add `ebzip.texi'. + * doc/Makefile.am (info_TEXINFOS): Likewise. + +1998-07-05 Motoyuki Kasahara + + * Makefile.am (JA_DOC_SUBDIR): Define this variable according to + `ENABLE_JA_DOC' conditinal flag. + * Makefile.am (SUBDIRS): Add `doc' and `$(JA_DOC_SUBDIR)'. + * configure.in (AC_ARG_ENABLE): Add `--with-ja-doc'. + * configure.in (AM_CONDITIONAL): Add `ENABLE_JA_DOC'. + * configure.in (AC_OUTPUT): Add `doc/Makefile' and `doc-ja/Makefile'. + + * ebinfo/Makefile.am (info_TEXINFOS, TEXINFO_TEX): Delete these + macros. + * ebinfo/ebinfo.texi: Move to `doc/ebinfo.texi'. + * doc-ja/Makefile.am: Add this file. + * doc-ja/ebinfo-ja.texi: Add this file. + * doc/Makefile.am: Likewise. + +1998-06-28 Motoyuki Kasahara + + * ebfont/ebfont.c (short_options): Define this variable and passed + to getopt_long(). + * ebinfo/ebinfo.c (longopts): Likewise. + + * ebfont/ebfont.c (longopts): Rename to `long_options'. + * ebinfo/ebinfo.c (longopts): Likewise. + +1998-06-27 Motoyuki Kasahara + + * eb/appendix.c (eb_clear_appendix), eb/eb.c (eb_clear): Call + `eb_zclear'. + * eb/appendix.c, eb/eb.c: Use `eb_read_all' instead of `read'. + * eb/appsub.c, eb/font.c, eb/keyword.c, eb/language.c, eb/message.c, + eb/multi.c, eb/narwalt.c, eb/narwfont.c, eb/search.c, eb/subbook.c, + eb/text.c, eb/widealt.c, eb/widefont.c: Use `eb_zopn', `eb_zclose', + `eb_zlseek' and `eb_zread' instead of `open', `close', `lseek' and + `read'. + + * eb/internal.h: Add declarations of the functions defined in + `unzip.c' and `zio.c'. + * eb/defs.h (EB_Appendix_Subbook, EB_Font, EB_Subbook): Add + the member `zip'. + * eb/defs.h (EB_Zip_Code, EB_Zip): Define these types. + * eb/defs.h (EB_ZIP_NONE, EB_ZIP_MODE1, EB_SIZE_ZIP_HEADER, + EB_SIZE_ZIP_MARGIN, EB_MAX_ZIP_LEVEL): Define these macros. + * eb/Makefile.am (libeb_la_SOURCES): Add `zio.c' and `unzip1.c'. + * eb/zio.c, eb/unzip1.c: Add the file. + + * Makefile.am (ZLIB_SUBDIR): Define this variable according to + `WITH_ZLIB' conditinal flag. + * Makefile.am (SUBDIRS): Add `$(ZLIB_SUBDIR)'. + * configure.in (AC_ARG_WITH): Add `--with-zlib-includes' + and `--with-zlib-libraries'. + * configure.in (AM_CONDITIONAL): Add `WITH_ZLIB'. + * configure.in (AC_CONFIG_SUBDIRS): Set as `zlib'. + + * Use libtool-1.2a. + + * eb/Makefile.am (install-data-hook): Insert $(DESTDIR) to + filenames. + + * configure.in (AC_TYPE_SIGNAL): Add this macro. + * configure.in (AC_DEFINE): Define RETSIGTYPE_VOID. + * acconfig.h: Add RETSIGTYPE_VOID. + +1998-06-23 Motoyuki Kasahara + + * ebfont/ebfont.c (main): Call output_try_help() when + an argument to `-f' or `-i' is invalid value. + +1998-06-21 Motoyuki Kasahara + + * ebfont/Makefile.am (INCLUDES): Add `-I$(zincludedir)'. + + * ebfont/Makefile.am (ebfont_LDADD): Add $(LIBZ) + * ebinfo/Makefile.am (ebinfo_LDADD): Likewise. + + * ebfont/Makefile.am (LIBZ): Set this macro. + * ebinfo/Makefile.am (LIBZ): Likewise. + + * configure.in (LIBEB_VERSION_INFO): Set to `1:1:0'. + * configure.in (AC_CONFIG_SUBDIRS): Add `zlib'. + * configure.in (AC_ARG_WITH): Add the `--with-zlib-includes' + and `--with-zlib-libraries' options. + * configure.in (AM_CONDITIONAL): Add `WITH_ZLIB'. + * configure.in (AC_SUBST): Substitute `zincludedir' and + `zlibdir'. + + * Import zlib-1.12 sources. + +1998-06-18 Motoyuki Kasahara + + * configure.in (AC_PREREQ): Set to `2.12'. + +1998-06-14 Motoyuki Kasahara + + * configure.in (AC_CHECK_FUNCS): Add `utime'. + * configure.in (AC_CHECK_HEADERS): Add `utime.h'. + + * ebappendix/ebappendix.in: Rename the option name `--filename-case' + to `--case'. + +1998-06-13 Motoyuki Kasahara + + * ebfont/ebfont.c: Include `getumask.h'. + * ebfont/ebfont.c (get_umask): Move the function to + `libebutils/getumask.c'. + * libebutils/getumask.c, libebutils/getumask.h: Add these files. + * libebutils/Makefile.am (libebutils_a_SOURCES): Add `getumask.c' + and `getumask.h'. + + * ebfont/ebfont.c (main): Check the length of an argument + to the option `-o', canonicalize the argument as an absolute + path, and then check the length of the canonicalized path + again. + +1998-06-11 Motoyuki Kasahara + + * Version 2.0.1. + + * eb/defs.h: Add `EB_SUFFIX_DOT' for an alias name to + `EB_SUFFIX_PERIOD'. + + * eb/eb.c (eb_initialize_catalog): Ignore font filenames + which beginning with a character 0x80...0xff. + * eb/filename.c (eb_catalog_filename_internal): Fix a gug; + add a suffix to a filename correctly. + +1998-06-09 Motoyuki Kasahara + + * Version 2.0. + + * eb/filename.c (eb_canonicalize_filename): Rename + `EB_ERR_TOO_LONG_FNAME' to `EB_ERR_TOO_LONG_FILENAME'. + +1998-06-07 Motoyuki Kasahara + + * ebappendix/ebappendix.in: Rename argument to the `--suffix' + (`-s') option; from `period' to `dot'. + + * ebfont/ebfont.c (longopts): Add the `--subbook' (`-S') option. + * ebfont/ebfont.c (main, help): Add the `--subbook' (`-S') option. + * ebfont/ebfont.c (make_book_fonts): Change an arugment list. + Add `subname_list' and `subname_count' arguments. + * ebfont/ebfont.c (make_fonts): Rename to `make_book_fonts'. + +1998-06-06 Motoyuki Kasahara + + * ebfont/ebfont.c (DEFAULT_FONT_HEIGHT, DEFAULT_IMAGE_FORMAT): + Define these macros as strings; "16" and "xbm". + * ebfont/ebfont.c (main): Call `parse_font_argument' with + `DEFAULT_FONT_HEIGHT' when `-f' option is not speicified. + * ebfont/ebfont.c (main): Call `parse_image_argument' with + `DEFAULT_IMAGE_HEIGHT' when `-i' option is not speicified. + +1998-06-05 Motoyuki Kasahara + + * ebfont/ebfont.c (parse_font_argument): Use `strcmp' to + check an argument instead of `strncmp'. + + * ebfont/ebfont.c: Define `DEFAULT_BOOK_DIRECTORY' and use + it rather than ".". + * ebfont/ebinfo.c: Define `DEFAULT_BOOK_DIRECTORY' and use + it rather than ".". + +1998-06-01 Motoyuki Kasahara + + * ebappendix/ebappendix.in: Use `if expr {die "..."}' intead + of `die "..." if expr' when `$!' is used in "...". + * ebappendix/ebappendix.in: Add two argument tyes `version' + and `both' to the option `-s'. + + * ebappendix/ebappendix.in (@long_options): + Rename `--check-only'(`-n') to `--test'(`-t'). + Rename `-N'(`--no-catalog') to `-n'(`--no-catalog'). + +1998-05-30 Motoyuki Kasahara + + * eb/Makefile.am (libeb_la_SOURCES): Add `unzip.c' and + `unzip-mode1.c'. + * eb/unzip.c, eb/unzip-mode1.c: Add these files. + * ebzip/Makefile.am, ebzip/zip-mode1.c, ebzip/ebzip.c: + Add these files. + * Makefile.am (SUBDIRS): Add `ebzip'. + * configure.in (AC_OUTPUT): Add `ebzip/Makefile'. + + * eb/defs.h: include `time.h' and/or `sys/time.h' according + with `TIME_WITH_SYS_TIME' and `HAVE_SYS_TIME_H'. + * configure.in: Add `AC_HEADER_TIME'. + * eb/eb.c (eb_bind): Assume that the suffix `.ebz' may be + inserted to the filename. + * eb/defs.h (EB_Appendix_Subbook, EB_Font, EB_Subbook): Add + the member `unzip'. + * eb/defs.h (EB_Zip): Define the type. + +1998-05-23 Motoyuki Kasahara + + * eb/defs.h (EB_Appendix_Subbook): + Rename `appfile' to `sub_file'. + Rename `charcode' to `char_code'. + Rename `narwstart' to `narw_start'. + Rename `widestart' to `wide_start'. + Rename `narwend' to `narw_end'. + Rename `wideend' to `wide_end'. + Rename `narwpage' to `narw_page'. + Rename `widepage' to `wide_page'. + * eb/defs.h (EB_Appendix): + Rename `pathlen' to `path_length'. + Rename `disccode' to `disc_code'. + Rename `casecode' to `case_code'. + Rename `suffixcode' to `suffix_code'. + Rename `subcount' to `sub_count'. + Rename `subcurrent' to `sub_current'. + Rename `narwcache' to `narw_cache'. + Rename `widecache' to `wide_cache'. + * eb/defs.h (EB_Font): + Rename `fontfile' to `font_file'. + * eb/defs.h (EB_Language): + Rename `msgcount' to `msg_count'. + * eb/defs.h (EB_Search): + Rename `entrycount' to `entry_count'. + * eb/defs.h (EB_Subbook): + Rename `startfile' to `sub_file'. + Rename `multicount' to `multi_count'. + Rename `fontcount' to `font_count'. + Rename `narwcurrent' to `narw_current'. + Rename `widecurrent' to `wide_current'. + * eb/defs.h (EB_Book): + Rename `disccode' to `disc_code'. + Rename `charcode' to `char_code'. + Rename `pathlen' to `path_length'. + Rename `casecode' to `case_code'. + Rename `suffixcode' to `suffix_code'. + Rename `subcount' to `sub_count'. + Rename `subcurrent' to `sub_current'. + Rename `langcount' to `lang_count'. + Rename `langcurrent' to `lang_current'. + +1998-04-29 Motoyuki Kasahara + + * Version 2.0beta1. + + * Use automake 1.3. + + * eb/appendix.h, eb/eb.h, eb/error.h, eb/font.h, eb/internal.h, + eb/language.h, eb/text.h (EB_P): Examine whether the `__cplusplus' + macro is defined or not. + + * ebappendix/getopt_long.pl: Don't use the expression like as + `($ver, $var, $var) = (0..2)'. Perl5.004_01 doesn't accept + such an expression. + + * ebappendix/ebappendix.in: Rename an option name; + `--filename-cases' to `--filename-case'. + + * texinfo.tex: Move to the sub-directory `ebinfo'. + * ebinfo/Makefile.am: Delete `TEXINFO_TEX'. + (automake-1.2 and 1.3 seems to ignore TEXINFO_TEX.) + +1998-04-14 Motoyuki Kasahara + + * ebappendix/Makefile.am (ebappendix): Concat the header part + of `ebappendix.in', `getopt_long.pl' and the body part of + `ebappendix.in' in that order to generate `ebappendix'. + +1998-04-11 Motoyuki Kasahara + + * eb/setword.c (eb_fix_word_jis): Return with the return value + EB_WORD_OTHER when a word contains kana and kanji, or contains + alphabet and kanji. + + * eb/defs.h (EB_WORD_KANJI): Rename to `EB_WORD_OTHER'. + + * eb/filename.c (eb_catalog_filename_internal): Find a catalog + file with EB_SUFFIX_VERSION style filename. + * eb/defs.h (EB_SUFFIX_VERSION): Add this cpp macro. + +1998-04-05 Motoyuki Kasahara + + * eb/setword.c (eb_fix_word_jis): Don't reject spaces. + * eb/subbook.c (eb_initialize_indexes): Initialize `search.space' + when inex style information is available. + + * eb/text.h (EB_HOOK_JISX0208): Split to `EB_HOOK_NARROW_JISX0208' + and `EB_HOOK_WIDE_JISX0208'. + + * eb/text.h (EB_HOOK_NULL): Modify its value to -1. + +1998-04-04 Motoyuki Kasahara + + * eb/font.h, eb/bitmap.c (eb_convert_bitmap_xbm, + eb_convert_bitmap_xpm, eb_convert_bitmap_gif): Rename to + `eb_bitmap_to_xbm', `eb_bitmap_to_xpm', `eb_bitmap_to_gif'. + + * eb/defs.h (EB_CHARACTER_ISO8859_1 and EB_CHARACTER_JISX0208): + Rename to `EB_CHARCODE_ISO8859_1' and `EB_CHARCODE_JISX0208'. + +1998-04-01 Motoyuki Kasahara + + * eb/eb.c (eb_initialize_catalog): Fix the character-code of + the earliest edition of `Shin Eiwa Waei Chujiten'. + +1998-03-30 Motoyuki Kasahara + + * eb/text.c (eb_read_internal): Don't use auto stop-code decision + mechanism. This mechanism cannot guess a stop-code collectly. + + * eb/appendix.c (eb_clear_appendix): Call `eb_unset_appendix_subbook' + at first, and then dispose memories asigned to `appendix->subbooks'. + +1998-03-25 Motoyuki Kasahara + + * Version 2.0beta0. + + * Use GNU libtool-1.2. + +1998-03-21 Motoyuki Kasahara + + * eb/text.c (eb_text_internal): Detect text stopcode automatically. + + * narwfont.c (eb_forward_narrow_character): Rename to + `eb_forward_narrow_font_character'. + * widefont.c (eb_forward_wide_character): Rename to + `eb_forward_wide_font_character'. + + * widealt.c (eb_have_wide_alternation, + eb_wide_alternation_start, + eb_wide_alternation_end, + eb_wide_character_text, + eb_wide_character_text_jis, + eb_wide_character_text_latin, + eb_next_wide_appendix_character, + eb_previous_wide_appendix_character): Rename to + `eb_have_wide_alt', + `eb_wide_alt_start', + `eb_wide_alt_end', + `eb_wide_alt_character', + `eb_wide_alt_character_jis, + `eb_wide_alt_character_latin, + `eb_forward_wide_alt_character', and + `eb_backward_wide_alt_character'. + * narwalt.c (eb_have_narrow_alternation, + eb_narrow_alternation_start, + eb_narrow_alternation_end, + eb_narrow_character_text, + eb_narrow_character_text_jis, + eb_narrow_character_text_latin, + eb_next_narrow_appendix_character, + eb_previous_narrow_appendix_character): Rename to + `eb_have_narrow_alt', + `eb_narrow_alt_start', + `eb_narrow_alt_end', + `eb_narrow_alt_character', + `eb_narrow_alt_character_jis, + `eb_narrow_alt_character_latin, + `eb_forward_narrow_alt_character', and + `eb_backward_narrow_alt_character'. + * appendix.c (eb_initialize_alternation_cache), appsub.c, + (eb_initialize_appendix_subbook): Rename + `eb_initialize_alternation_cache' to `eb_initialize_alt_cache'. + + * eb/search.c (eb_hit_list): Add the function. + * eb/search.c (eb_next_word, eb_next_endword): Delete these + functions. + * eb/search.c (eb_search_endword, eb_search_endword): Change + interfaces. + * eb/search.c (eb_presearch, eb_next_word_internal): + Change interfaces and rename to `eb_search_word_internal' + and `eb_hit_list_internal'. + + * eb/text.c (eb_next_text_internal): Change interface and rename + to `eb_read_internal'. + * eb/text.c (eb_text, eb_heading): Change interfaces. + These functions can be invoked repeatedly in order to get suceesive + text. + * eb/io.c (eb_read), eb/text.c: Rename `eb_read' to `eb_rawtext' + and move it to `eb/text.c'. + * eb/text.c (eb_next_text, eb_next_heading): Delete these functions. + * eb/io.c (eb_seek): Change interface. + This function is used before getting text or heading. + + * eb/setword.c (eb_fix_word_jis): Support SS2. + +1998-03-08 Motoyuki Kasahara + + * eb/narwalt.c (eb_forward_narrow_appendix_character): + Rename to `eb_forward_narrow_alternation_character'. + * eb/widealt.c (eb_forward_wide_appendix_character): + Rename to `eb_forward_wide_alternation_character'. + + * eb/narwfont.c (eb_forward_narrow_character): + Rename to `eb_forward_narrow_font_character'. + * eb/widefont.c (eb_forward_wide_character): + Rename to `eb_forward_wide_font_character'. + +1998-03-08 KSK + + * eb/filename.c (eb_canonicalize_filename): Add DOS version + of this function. + +1998-02-20 Motoyuki Kasahara + + * ebinfo/ebinfo.c (output_information): Add 2nd argument + `multiflag'. Call `output_multi_information' when `multiflag' + is non-zero. + * ebinfo/ebinfo.c (output_multi_information): Add this function. + * ebinfo/ebinfo.c (option longopts, main, outout_help): + Add the `-m' and `--multi-search' options. + +1998-02-15 Motoyuki Kasahara + + * eb/subbook.c (eb_subbook2): Add this function. + * eb/appsub.c (eb_appendix_subbook2): Add this function. + + * eb/subbook.c (eb_initialize_subbook): Get the location of + the index page from the member `page_index' in `EB_Subbook'. + * eb/eb.c (eb_initialize_catalog): Get an index page location + from the `CATALOGS' file. + * eb/internal.c (eb_uint3): Add this macro. + + * eb/multi.c (eb_initialize_multi_search, eb_multi_search_count, + eb_multi_search_list, eb_multi_entry_count, eb_multi_entry_list, + eb_multi_entry_label, eb_multi_entry_have_exactword_search, + eb_multi_entry_have_word_search, eb_multi_entry_have_endword_search, + eb_multi_entry_have_keyword_search): Add these functions. + * eb/subbook.c (eb_initialize_subbook): Call + eb_initialize_multi_search(). + * eb/error.h, eb/error.c (messages): Add new error codes + `EB_ERR_NO_SUCH_MULTI_ID' and `EB_ERR_NO_SUCH_ENTRY_ID'. + * eb/error.h: Increase EB_NUM_ERRORS. + + * eb/setword.c (eb_set_word, eb_set_endword): Fully revised. + * eb/setword.c (eb_convert_katakana_jis, eb_convert_lower_latin, + eb_convert_lower_jis, eb_delete_marks_jis, eb_convert_long_vowels_jis, + eb_delete_long_vowels_jis, eb_convert_double_consonants_jis, + eb_convert_contracted_sounds_jis, eb_convert_small_vowels_jis, + eb_convert_voiced_consonants_jis, eb_convert_p_sounds_jis, + eb_delete_spaces_jis): Add these functions. + * eb/setword.c (eb_fix_word_jis): Don't delete spaces in a + word. + * ebinfo/ebinfo.c (output_multi_information): Add this function. + +1998-02-11 Motoyuki Kasahara + + * eb/appendix.h, eb/defs.h, eb/eb.h, eb/error.h, + eb/font.h, eb/internal.h, eb/language.h, eb/text.h: + Define the cpp macro `EB_P' used at function declarations. + + * eb/Makefile.am (install-data-hook): Add this target. + + * eb/appendix.h, eb/eb.h, eb/font.h, eb/internal.h, eb/language.h, + eb/text.h: Regenerate function declarations. + + * eb/text.h (EB_UINT_FUNC): Rename to `EB_UINT_FUNCTION'. + + * eb/defs.h, eb/types.h: Merge these files and put into + `eb/defs.h'. `eb/types.h' is deleted. + + * eb/havesearch.c (eb_have_word_search, eb_have_endword_search, + eb_have_exactword_search): Move to `eb/search.c'. + * eb/havesearch.c (eb_have_keyword_search): Move to `eb/keyword.c'. + * eb/havesearch.c (eb_have_multi_search): Move to `eb/multi.c'. + * eb/havesearch.c (eb_have_grpahic_search): Move to `eb/graphic.c'. + * eb/havesearch.c (eb_have_menu): Move to `eb/menu.c'. + * eb/havesearch.c (eb_have_copyright): Move to `eb/copyright.c'. + * eb/search.c (eb_menu): Move to `eb/menu.c'. + * eb/search.c (eb_copyright): Move to `eb/copyright.c'. + + * eb/io.c (eb_seek, eb_read): Move to `eb/text.c'. + * eb/io.h: Move definitions of eb_seek() and eb_read() to + `eb/text.h' + * eb/io.c: Rename to `eb/uint.c'. + * eb/io.h: Move definitions of eb_uint1(), eb_uint2(), eb_uint4(), + eb_bcd2(), eb_bcd4() and eb_bcd6() to `text.h' and `internal.h'. + * eb/io.h: Delete this file. + +1998-01-26 Motoyuki Kasahara + + * eb/text.c (eb_text_internal, eb_text, eb_heading): + Unified the `page' and `offset' static variables, and + to `location'. In `eb_text_internal', `page' and `offset' + were not updated correctly. + +1998-01-19 Motoyuki Kasahara + + * eb/setword.c (eb_fix_word_latin): Don't ignore spaces in + a word. + + * eb/search.c (eb_search_exactword, eb_search_word, + eb_search_endword): Don't canonicalize a word if the book + is EPWING and if `page' is `EB_INDEX_WORD_ASIS'. + (temporary solution) + +1998-01-11 Motoyuki Kasahara + + * eb/Makefile.am (libeb_la_LDFLAGS): Use `@LIBEB_VERSION_INFO@' + as an argument to the `-version-info' option of libtool. + * configure.in: Add the `LIBEB_VERSION_INFO' variable and + substitute it by `AC_SUBST'. + +1998-01-10 Motoyuki Kasahara + + * eb/subbook.c (eb_initialize_subbook, eb_initialize_indexes): + Initialize `EB_Search' type members in `EB_Subbook' data at + `eb_initialize_indexes'. + + * eb/io.c (eb_seek, eb_tell, eb_read), eb/text.c (eb_heading, + eb_next_heading, eb_text, eb_next_text): Return with the error + code `EB_ERR_NO_START' when the subbook lacks a start file. + * eb/error.c, eb/error.h: Add `EB_ERR_NO_START' to the error + code list. + + * eb/narwalt.c (eb_previous_narrow_appendix_character): + Set `eb_error' to `EB_ERR_NO_CUR_APPSUB', not `EB_ERR_NO_CUR_SUB' + when the current subbook is not selected. + + * eb/io.c (eb_seek): Set `eb_error' when lseek() is failed. + + * eb/language.c (eb_initialize_languages): Close the LANGUAGE + file upon return. + + * ebappendix/getopt_long.pl (getopt_initialize), + ebappendix/ebappendix.in (long_options): + Modify option-list format of `getopt_long'. + FLAGS must be `no-argument' or `required-argument'. + +1998-01-04 Motoyuki Kasahara + + * eb/subbook.c (eb_initialize_indexes), eb/search.c + (eb_search_exactword, eb_search_word, eb_search_endword, eb_menu, + eb_copyright), havesearch.c (eb_have_word_search, + eb_have_endword_search, eb_have_keyword_search, eb_have_multi_search, + eb_have_graphic_search, eb_have_menu, eb_have_copyright): + Adapt to new `EB_Subbook' structure. + * eb/types.h (EB_Subbook): Delete the `indexes' member, and add + `word_alpha', `word_asis', `word_kana', `endword_alpha', + `endword_asis', `endword_kana', `keyword', `menu', `graphic', + `copyright', `multi' and `multicount' members. + Delete the `EB_Index_Code' type; + * eb/defs.h: Delete `EB_INDEX_WORD_KANA', `EB_INDEX_WORD_ASIS', + `EB_INDEX_WORD_ALPHA', `EB_INDEX_ENDWORD_KANA', + `EB_INDEX_ENDWORD_ASIS', `EB_INDEX_ENDWORD_ALPHA', + `EB_INDEX_KEYWORD', `EB_INDEX_MENU', `EB_INDEX_GRAPHIC' and + `EB_INDEX_MULTI'. + +1998-01-03 Motoyuki Kasahara + + * eb/havesearch.c: Rename `eb_have_menu_search' to `eb_have_menu'. + * eb/search.c: Rename `eb_search_menu' to `eb_menu'. + +1998-01-01 Motoyuki Kasahara + + * eb/match.c (eb_match_word, eb_match_exactword): + Don't ignore all spaces in a search pattern, but in the tail of + the pattern. + + * eb/narwalt.c: Rename `eb_narrow_character_text_ltn' to + `eb_narrow_character_text_latin'. + * eb/narwfont.c: Rename `eb_narrow_character_bitmap_ltn' + to `eb_narrow_character_charavter_latin'. + * eb/setword.c Rename `eb_fix_word_ltn, eb_reverse_word_ltn' + to `eb_fix_word_latin' and `eb_reverse_word_ltn'. + * eb/widealt.c: Rename `eb_wide_character_text_ltn' to + `eb_wide_character_text_latin'. + * eb/widefont.c: Rename `eb_wide_character_bitmap_ltn' + to `eb_wide_character_charavter_latin'. + + * eb/defs.h: Define `EB_INDEX_STYLE_CONVERT', `EB_INDEX_STYLE_ASIS' + and `EB_INDEX_STYLE_DELETE'. + * eb/types.h: Define the `EB_Search', `EB_Multi_Entry', + `EB_Index_Style_Code', `EB_Multi_Search_Code' and + `EB_Multi_Entry_Code' types. + * eb/types.h (EB_Subbook): Add the `index_page' member. + * eb/tyes.h (EB_Subbook): Add the `multicout' and `multi' members. + * eb/defs.h: Define `EB_MAX_MULTI_SEARCHES` and + `EB_MAX_MULTI_ENTRIES' macros. + +1997-12-31 Motoyuki Kasahara + + * ebinfo/ebinfo.texi: Add this file. + * ebinfo/Makefile.am: Define `info_TEXINFOS' as `ebinfo.texi'. + + * ebinfo/ebinfo.c (main), ebfont/ebfont.c (main): + Call `set_fakelog_name', `set_fakelog_mode' and `set_fakelog_level'. + * ebinfo/ebinfo.c: Include `fakelog.h'. + + * ebappendix/ebappendix.in: Delete the `--no-catalogs' option. + * ebappendix/ebappendix.in, ebfont/ebfont.c (main, output_help, + longopts): Add the `--verbose' option. + + * Makefile.am: Define `appendixdir' and `appendix_DATA'. + + * ebappendix/ebappendix.in, ebfont/ebfont.c (main, make_fonts, + make_subbook_fonts, make_subbook_size_fonts, + make_subbook_size_image_fonts, save_image_file), ebinfo/ebinfo.c + (main, output_information): Unify style of error messages. + + * configure.in: ebappendix/Makfile.am, ebappendix/ebappendix.in: + Set and substitute `MAILING_ADDRESS'. + + * ebappendix/ebappendix.in, ebfont/ebfont.c (output_help, + output_version), ebinfo/ebinfo.c (output_help, output_version): + Change version and help messages; output to standard rather than + standard error, add copyright and license into version message, + and add mailing address information into help message. + +1997-12-27 Motoyuki Kasahara + + * eb/appendix.c, eb/appsub.c, eb/eb.c, eb/font.c, eb/language.c, + eb/message.c, eb/subbook.c, ebfont/ebfont.c: + Define O_BINARY if not defined. + Specify `O_BINARY' at the 2nd argument of `open'. + +1997-12-21 Motoyuki Kasahara + + * eb/setword.c (eb_set_word, eb_set_endword): + Don't call `eb_canonicalize_word_jis' when the current subbook + doesn't have a KANA index table. + The current subbook must have been set to call the functions. + + * Delete the `doc/' subdirectory. + +1997-12-06 Motoyuki Kasahara + + * eb/appendix.c: Move functions related to subbook to the new + file `appsub.c'. + * eb/Makefile.am (libeb_la_SOURCES): Add `eb/appsub.c'. + + * ebinfo/Makefile.am (ebinfo_LDADD, ebinfo_DEPENDENCIES), + ebfont/Makefile.am (ebfont_LDADD, ebfont_DEPENDENCIES): + Link `../eb/libeb.la' instead of `../eb/libeb.a'. + * eb/Makefile.am: Rename `lib_LIBRARIES' to `lib_LTLIBRARIES'. + Rename `libeb_a_SOURCES' to `libeb_la_SOURCES'. + Define `libeb_la_LDFLAGS'. + * configure.in: Define `AM_PROG_LIBTOOL'. + * Get 4 files from the libtool-1.0 distribution; + `config.guess', `config.sub', `ltconfig' and `ltmain.sh'. + +1997-11-30 Motoyuki Kasahara + + * eb/error.h: + Rename `EB_ERR_TOO_LONG_FNAME' to `EB_ERR_TOO_LONG_FILENAME'. + Rename `EB_ERR_TOO_LONG_FILENAME' to `EB_ERR_TOO_EMPTY_FILENAME'. + + * eb/eb.h, eb/filename.c: + Rename `EB_FSUFFIX_NONE' to `EB_SUFFIX_NONE'. + Rename `EB_FSUFFIX_DOT' to `EB_SUFFIX_DOT'. + Rename `EB_FSUFFIX_BOTH' to `EB_SUFFIX_BOTH'. + Rename `EB_FCASE_UPPER' to `EB_CASE_UPPER'. + Rename `EB_FCASE_LOWER' to `EB_CASE_LOWER'. + Rename `EB_SIZE_EP_CATALOG' to `EB_EPWING_EB_SIZE_EPWING_CATALOG'. + Rename `EB_MAXLEN_EP_TILE' to `EB_EPWING_EB_MAXLEN_EPWING_TITLE'. + Rename `EB_FNAME_START' to `EB_FILENAME_START'. + Rename `EB_FNAME_SOUND' to `EB_FILENAME_SOUND'. + Rename `EB_FNAME_CATALOG' to `EB_FILENAME_CATALOG'. + Rename `EB_FNAME_LANGUAGE' to `EB_FILENAME_LANGUAGE'. + Rename `EB_FNAME_VTOC' to `EB_FILENAME_VTOC'. + Rename `EB_FNAME_WELCOME' to `EB_FILENAME_WELCOME'. + Rename `EB_FNAME_CATALOGS' to `EB_FILENAME_CATALOGS'. + Rename `EB_FNAME_HONMON' to `EB_FILENAME_HONMON'. + Rename `EB_FNAME_APPENDIX' to `EB_FILENAME_APPENDIX'. + Rename `EB_FNAME_FUROKU' to `EB_FILENAME_FUROKU'. + Rename `EB_CHAR_ISO8859_1' to `EB_CHARACTER_ISO8859_1'. + Rename `EB_CHAR_JISX0208' to `EB_CHARACTER_JISX0208'. + + * Delete the `utils/' sub-directory. + * utils/lib/fakelog.c, utils/lib/fakelog.h, utils/lib/getopt.c, + utils/lib/getopt.h, utils/lib/getopt1.c, utils/lib/makedir.c, + utils/lib/makedir.h, utils/lib/memset.c, utils/lib/strcasecmp.c, + utils/lib/strerror.c: Move these files to the `libebutils/' + sub-directory. + * utils/src/ebappendix.in: Move this file to the `ebappendix' sub- + directory. + * utils/src/ebinfo.c: Move this file to the `ebinfo/' sub-directory. + * utils/src/ebfont.c: Move this file to the `ebfont/' sub-directory. + * ebappendix/Makefile.am, ebinfo/Makefile.am, ebfont/Makefile.am: + Add these files. + * Makefile.am (SUBDIR): Define as `eb libebutils ebappendix ebfont + ebinfo'. + +1997-11-23 Motoyuki Kasahara + + * Version 1.0.4. + + * ebappendix/ggetopt.pl: Rename to `ebappendix/getopt_long.pl'. + + * eb/ebinfo.c (output_information): Display whether a target book + has a copyright notice or not. + + * eb/subbook.c (eb_initialize_indexes): Record an index of + multi search. eb_have_search() returns with a valid return + code, but multi search has not implemented yet. + + * eb/search.c, eb/eb.h: Add the `eb_copyright' function. + * eb/havesearch.c, eb/eb.h: Add the `eb_have_copyright' function. + + * eb/defs.h: Define `EB_INDEX_COPYRIGHT'. + + * Makefile.am: Generate dependency rules again. + + * eb/subbook.c (eb_initialize_subbook): Call `eb_initialize_fonts' + instead of `eb_initialize_eb_fonts' and `eb_initialize_epwing_fonts'. + + * eb/font.c, eb/font.h: Add the `eb_initialize_fonts' function. + + * eb/ebinfo.c (output_information), eb/ebfont.c (main): Call + `eb_bind', and then call `eb_initialize'. + * eb/eb.c (eb_bind): Call `eb_clear' rather than `eb_initialize'. + + * eb/language.c, eb/message.c: Move the functions `eb_message_count', + `eb_message_list', `eb_have_message' and `eb_message' in + `eb/language.c' to `eb/message.c'. + * eb/eb.c, eb/message.c: Move `eb_initialize_messages' in `eb/eb.c' + to `eb/message.c'. + * eb/eb.c, eb/language.c: Move `eb_initialize_language' in `eb/eb.c' + to `eb/language.c', and rename it to `eb_initialize_languages'. + * eb/eb.c, eb/font.c: Move `eb_initialize_eb_fonts' and + `eb_initialize_epwing_fonts' in `eb/eb.c' to `eb/font.c'. + * eb/eb.c, eb/subbook.c: Move `eb_initialize_subbook', + `eb_initialize_all_subbooks', and `eb_initialize_indexes' + in `eb/eb.c' to `eb/subbook.c'. + + * eb/appendix.c, eb/font.c, eb/eb.c, eb/language.c, eb/subbook.c: + Don't include `ctype.h'. + + * Add `eb/internal.h' and `eb/message.c'. + + * eb/util.c, eb/eb.c: Delete `eb/util.c'. + Move `eb_is_bound' `eb_path' and `eb_disc_type' in `eb/util.c' to + `eb/eb.c'. + * eb/init.c: Rename to `eb/eb.c'. + +1997-11-03 Motoyuki Kasahara + + * eb/text.h, text.c (eb_text_internal): Delete the hook + `EB_HOOK_UNKNOWN_SEQUENCE'. + + * eb/text.c (eb_text_internal): Skip data between a pair of + extended control sequences, as described in JIS X 4081. + +1997-10-19 Motoyuki Kasahara + + * Version 1.0.3. + + * utils/src/ebfont.c (make_subbook_fonts): Don't exit if a subbook + lacks the specified font. + + * utils/src/ebappendix.in: Add `-s' (and `--suffix') options. + +1997-10-18 Motoyuki Kasahara + + * configure.in: Use `AC_MSG_WARN' rather than `echo'. + + * eb/match.c (eb_match_word, eb_match_exactword): Ignore spaces + in a search pattern. This modicication is for the Oxford Concise + Dictionary. + + * eb/setword.c (eb_fix_word_ltn): Ignore spaces in a search + word. + + * utils/src/ebfont.c (make_fonts): Split into the five functions; + `make_fonts', `make_subbook_fonts', `make_subbook_size_fonts' + `make_subbook_size_image_fonts', and `save_image_file'. + +1997-10-10 Motoyuki Kasahara + + * utils/src/Makefile.am (ebappendix): Use `$(srcdir)/ebappendix.in' + rather than `ebappendix.in'. + Use `$(srcdir)/ggetopt.pl', not `ggetopt.pl'. + + * utils/src/Makefile.am (INCLUDES): + Use the `-I$(top_srcdir)' option, not `-I$(top_srcdir)/eb'. + + * eb/bitmap.h: Define macros; `EB_SIZE_NARROW_FONT_16_XBM', + `EB_SIZE_NARROW_FONT_16_XPM', `EB_SIZE_NARROW_FONT_16_GIF', + `EB_SIZE_NARROW_FONT_24_XBM', `EB_SIZE_NARROW_FONT_24_XPM', + `EB_SIZE_NARROW_FONT_24_GIF', `EB_SIZE_NARROW_FONT_30_XBM', + `EB_SIZE_NARROW_FONT_30_XPM', `EB_SIZE_NARROW_FONT_30_GIF', + `EB_SIZE_NARROW_FONT_48_XBM', `EB_SIZE_NARROW_FONT_48_XPM', + `EB_SIZE_NARROW_FONT_48_GIF'. + * eb/bitmap.c, eb/bitmap.h: Delete `eb_save_bitmap_xbm', + `eb_save_bitmap_xpm', `eb_save_bitmap_gif', `eb_write_bitmap_xbm', + `eb_write_bitmap_xpm', and `eb_write_bitmap_gif'. + * eb/bitmap.c, eb/bitmap.h: Add `eb_narrow_font_xbm_size', + `eb_narrow_font_xpm_size', `eb_narrow_font_gif_size', + `eb_wide_font_xbm_size', `eb_wide_font_xpm_size', + `eb_wide_font_gif_size', `eb_convert_bitmap_xbm', + `eb_convert_bitmap_xpm' and `eb_convert_bitmap_gif'. + + * eb/error.h, eb/error.c: Delete three error codes; + `EB_ERR_BAD_SIZE_BITMAP', `EB_ERR_FAIL_OPEN_BITMAP', and + `EB_ERR_FAIL_WRITE_BITMAP'. + +1997-10-05 Motoyuki Kasahara + + * eb/error.h: Define EB_MAXLEN_ERROR_MESSAGE. + + * utils/src/ebfont.c (make_fonts): Use `eb_forward_narrow_character' + and `eb_forward_wide_character'. + Don't calculate character number by itself. + * eb/widealt.c: Add `eb_forward_wide_appendix_character' and + `eb_backward_wide_appendix_character'. + * eb/narwalt.c: Add `eb_forward_narrow_appendix_character' and + `eb_backward_narrow_appendix_character'. + * eb/widefont.c: Add `eb_forward_wide_character' and + `eb_backward_wide_character'. + * eb/narwfont.c: Add `eb_forward_narrow_character' and + `eb_backward_narrow_character'. + + * eb/font.c (eb_font): Set `eb_errno' when no current book + is set. + * eb/font.c (eb_font_list): Return -1 when an error occurs. + +1997-09-27 Motoyuki Kasahara + + * Version 1.0.2. + + * utils/src/ebfont.c (make_fonts): Fix error messages. + Append some information to the error message. + +1997-09-25 Motoyuki Kasahara + + * utils/lib/memset.c: Add this file. + + * configure.in (AC_REPLACE_FUNCS): Add `memset'. + + * eb/narwalt.c, eb/widealt.c: Define `SEEK_SET', `SEEK_CUR' and + `SEEK_END' if undefined. + + * eb/bitmap.c, eb/bitmap.h: Adapt to EB library. + Insert the `eb_' prefix to function names. + Set `eb_error' instead of syslog message when an error occurs. + * utils/lib/bitmap.h, utils/lib/bitmap.c: Move to the `eb/' + sub-directory. + + * eb/error.h, eb/error.c: Add the following error codes; + `EB_ERR_BAD_SIZE_BITMAP', `EB_ERR_FAIL_OPEN_BITMAP', and + `EB_ERR_FAIL_WRITE_BITMAP'. + + * lib/fakelog.c (fakelog): Fix a mistake in `%m' expansion. + Took `strcat' for `strcpy'. + +1997-09-18 Motoyuki Kasahara + + * lib/logpid.c (log_pid_file): Output the warning message + which tells pid file already exists only when the file is + regular file. + +1997-09-13 Motoyuki Kasahara + + * utils/src/version.h.in, utils/src/version.h: Delete these files + because `config.h' also defines $(VERSION). + +1997-09-06 Motoyuki Kasahara + + * Version 1.0.1. + + * eb/text.c (eb_text_internal): Fix the control sequence + processes. + The display control sequences `1f1a'...`1f1f' and `1fe0' take + an arguemnt only when the book is EPWING. + + * utils/src/ebappendix.in: Fix the calculation way of + $wide_len and $narrow_len. + +1997-09-03 Motoyuki Kasahara + + * eb/init.c (eb_initialize_catalog): Scan all eight filename + slots in the `catalogs' file even when an empty filename is + found. (for EPWING `Readers eiwa jiten', kenkyusha) + +1997-08-30 Motoyuki Kasahara + + * Use original version of automake-1.2. + + * doc/texinfo.tex: Delete this file. + + * eb/defs.h, eb/setword.c, eb/search.c, eb/init.c, havesearch.c: + Rename `EB_INDEX_WORD_ALPHA' to `EB_INDEX_WORD_ASIS', and + add `EB_INDEX_WORD_ALPHA' again. + Rename `EB_INDEX_ENDWORD_ALPHA' to `EB_INDEX_ENDWORD_ASIS', + and add `EB_INDEX_ENDWORD_ALPHA' again. + (for EPWING `Readers eiwa jiten', kenkyusha) + +1997-08-24 Motoyuki Kasahara + + * lib/bitmap.c, lib/bitmap.h: Add `write_bitmap_xbm', + `write_bitmap_xpm', and `write_bitmap_gif'. + + * eb/text.c (eb_text_internal): Fix a bug which causes + segmentation violation when `EB_HOOK_NARROW' is not defined. + + * eb/text.c (eb_text_internal): Parse control sequences described + in JIS X 4081-1996. + + * eb/defs.h, eb/search.c (eb_search_exact_word, eb_search_word, + eb_search_endword), eb/setword.c (eb_fix_word_jis): + Define the new word type `EB_WORD_KANJI'. + +1997-08-19 Motoyuki Kasahara + + * configure.in: Delete `AC_PROG_MAKE_SET'. + It is defined by `AM_INIT_AUTOMAKE'. + + * utils/src/Makefile.am (ebappendix): Generate `ebappendix.tmp' + from `ebappendix.in', and then copy `ebappendix.tmp' to `ebappendix'. + * utils/src/Makefile.am (CLEANFILES): Add `ebappendix.tmp'. + +1997-08-09 Motoyuki Kasahara + + * utils/src/ebappendix.in: Don't output a blank page in the + tail of the alternation text data. + +1997-08-05 Motoyuki Kasahara + + * Version 1.0. + + * doc/texinfo.tex: Get the file from texinfo-3.11. + +1997-07-19 Motoyuki Kasahara + + * Version 1.0beta2. + + * eb/init.c (eb_bind), eb/appendix.c (eb_bind_appendix): Get + disc and filename types before trying to open a language file + and a catalog file. + + * eb/io.c (eb_uint1, eb_uint2, eb_uint4), eb/io.h (eb_uint1, + eb_uint2, eb_uint4): Fix casts. + eb/io.c (eb_bcd2, eb_bcd4, eb_bcd6): Fix functions because + they returns an incorrect value. + + * eb/text.c (eb_text_internal): Call a hook function of + `EB_HOOK_END_REFERENCE', not `EB_HOOK_END_KEYWORD'. + + * eb/init.c, eb/language.c, eb/eb.h (eb_init_language): Split + into `eb_init_language' and `eb_init_messages'. + +1997-07-06 Motoyuki Kasahara + + * Use automake-1.2. + + * utils/src/ebinfo.c (output_information): Output title and + directory name of a subbook even when eb_set_subbook() to the + subbook is failed. + + * eb/error.c (messages): Modify error messages. + +1997-06-25 Motoyuki Kasahara + + * lib/getopt.c, lib/getopt1.c, lib/getopt.h: Get these files + from glibc-2.0.4. + +1997-06-18 Motoyuki Kasahara + + * Version 1.0beta1. + + * lib/fakelog.c, lib/fakelog.h: Don't include `varargs.h' for + ANSI C compilers even when `STDC_HEADERS' is undefined. + + * utils/src/ebfont.c: Add the missing `HAVE_STRCASECMP' check. + +1997-06-08 Motoyuki Kasahara + + * utils/src/ebappendix.in: Add a character code field with 2 + bytes in the beginning of an appendix file -- the format of + appendix data files is changed. + * eb/appendix.c (eb_initialize_appendix_subbook): Get a character + code from appendix data when initializing subbook. + + * eb/types.h (EB_Appendix_Subbook): Add the `charcode' member. + + * eb/narwalt.c (eb_narrow_character_text), eb/widealt.c + (eb_wide_character_text): Fix bugs in alternation text proceessing. + Character code of appendix data was examined by a wrong way. + +1997-06-07 Motoyuki Kasahara + + * configure.in: Add `AC_HEADER_STAT'. + + * lib/makedir.c, eb/filename.c: Use `S_ISDIR' instead of `S_IFDIR'. + Define `S_ISREG' and `S_ISDIR' if they aren't defined in . + Redefine `S_ISREG' and `S_ISDIR' if they are broken. diff --git a/lib/ebu/ChangeLog.1 b/lib/ebu/ChangeLog.1 new file mode 100644 index 0000000..9d33b12 --- /dev/null +++ b/lib/ebu/ChangeLog.1 @@ -0,0 +1,2222 @@ +2001-06-03 Motoyuki Kasahara + + * Version 3.0. + + * configure.ac (AM_INIT_AUTOMAKE): Set version to 3.0. + + * eb/error.h (EB_ERR_FAIL_OPEN_LANG, EB_ERR_FAIL_READ_LANG, + EB_ERR_FAIL_SEEK_LANG, EB_ERR_UNEXP_LANG, EB_ERR_NO_LANG, + EB_ERR_NO_MSG, EB_ERR_NO_CUR_LANG, EB_ERR_NO_SUCH_LANG, + EB_ERR_NO_SUCH_MSG): Removed. + * eb/error.c (error_messages): Ditto. + + * eb/book.c (eb_initialize_language): Not to return a value. + +2001-05-19 Motoyuki Kasahara + + * eb/book.c: Function declaration of eb_initialize_catalog() is + duplicated. Fixed. + * eb/book.c: + * eb/language.c, eb/message.c: Removed. + All functions in the files except for eb_initialize_languages() + are removed. + eb_initialize_languages() is renamed to eb_initialize_languages() + and it is now placed in eb/book.c. + * eb/defs.h (EB_MAX_LANGUAGE_NAME_LENGTH, EB_MAX_MESSAGE_LENGTH, + EB_MAX_LANGUAGES, EB_MAX_MESSAGES): Deleted. + * eb/defs.h (EB_Language_Code, EB_Message_Code, EB_Language_Struct): + Removed. + * eb/defs.h (EB_Book_Struct): Delete `language_file_name', + `language_zio', `language_count', `languages', `language_current', + and `messages' from the structure. + * eb/zipbook.c (eb_zip_book_eb): Find LANGUAGE file by itself. + * eb/unzipbook.c (eb_unzip_book_eb): Ditto. + * eb/zipinfobook.c (eb_zipinfo_book_eb): Ditto. + +2001-05-11 Motoyuki Kasahara + + * Version 3.0beta1. + + * configure.ac (AM_INIT_AUTOMAKE): Set version to 3.0beta1. + + * eb/Makefile, libebutils/Makefile, ebfont/Makefile, ebinfo/Makefile, + ebrefile/Makefile, ebzip/Makefile: Delete dependencies between *.c + and *.o. + +2001-05-09 Motoyuki Kasahara + + * m4/eb3.m4 (eb_LIB_EB3): Avoid other AC_TRY_LINK and CK_TRY_RUN + checks linking libeb.* to test program. + +2001-05-08 Motoyuki Kasahara + + * Makefile.am (ACLOCAL_AMFLAGS): Set the variable to `-I m4', not + `-I $(srcdir)/m4'. + +2001-05-02 Motoyuki Kasahara + + * ebzip/zipbook.c (ebzip_zip_book_epwing): Fix a bug that ebzip + doesn't compress gaiji files. + + * eb/narwfont.c (eb_initialize_narrow_font): Canonicalize font file + name before fix. + * eb/filename.c (eb_canonicalize_font_file_name): New function. + + * po-ebutils/Makefile.in (POTFILES): Updated. + Delete ebzip/filename.c and add ebrefile/ebrefile.c. + + * ebrefile/Makefile.am: Revised. Now ebrefile is written in C. + * ebrefile/ebrefile.c: New file. + * ebrefile/ebrefile.in: Deleted. + +2001-04-28 Motoyuki Kasahara + + * ebzip/filename.c, eb/filename.c: fix_path_name_suffix() is + renamed to eb_fix_path_name_suffix() and its definition is moved + from ebzip/filename.c to eb/filename.c. + * ebzip/filename.c: Removed. + * ebzip/Makefile.am (ebzip_SOURCES): Delete `filename.c'. + + * ebfont/Makefile.am (ebfont_LDADD): Fix the order of library to + be linked. + * ebinfo/Makefile.am (ebinfo_LDADD): Ditto. + * ebzip/Makefile.am (ebzip_LDADD): Ditto. + +2001-04-24 Motoyuki Kasahara + + * eb/setword.c (eb_fix_word): Fix word if the given word is for + keyword search or multi-search without candidates. Reported by + Kenichi Suto. + +2001-04-23 Motoyuki Kasahara + + * configure.in: Renamed to `configure.ac'. + +2001-04-13 Motoyuki Kasahara + + * eb/narwfont.c (eb_initialize_narrow_font): Fix a bug in reopen + a font file, reported by HASEGAWA Masafumi. + +2001-04-12 Motoyuki Kasahara + + * eb/subbook.c (eb_initialize_indexes): Fix calcuration of end + page number of an index. + + * m4/gettext.m4 (eb_GNU_GETTEXT): Ignore arguments. + * configure.in (eb_GNU_GETTEXT): Don't pass arguments to the macro. + + * eb/po: Move the directory to po-eb. + * po-eb/Makefile.in (top_builddir, subdir): Updated. + * po: Move the directory to po-ebutils. + * po-ebutils/Makefile.in (subdir): Updated. + + * configure.in (AC_OUTPUT): Delete `po/Makefile' and `eb/po/Makefile', + and add `po-eb/Makefile' and `po-ebutils/Makefile' instead. + * Makefile.am (SUBDIRS): Delete `po' and add `po-eb' and `po-ebutils' + instead. + * eb/Makefile.am (SUBDIRS): Deleted. + +2001-04-10 Motoyuki Kasahara + + * Version 3.0beta0. + + * ebzip/Makefile.am (noinst_HEADERS): Add `ebzip.h'. + + * gttest.po: Add header. + +2001-04-08 Motoyuki Kasahara + + * eb/defs.h (EB_Search_Struct): Add `index_id'. + * eb/subbook.c (eb_initialize_indexies): Also set index ID. + * eb/multi.c (eb_initialize_multi_search): Likewise. + * eb/setword.c (eb_fix_word): Copy `canonicalized_word' to `word' + if as-is or alphabet search. Don't modify `word' otherwise. + Don't modify `word' nor `canonicalized_word' if keyword or + candidate search. + * eb/setword.c (eb_set_multiword): Pass entry's search information + to `eb_fix_word', not to pass method's search information. + + * configure.in (AC_ARG_ENABLE): Use `[[' and `]]' in a help string. + + * Makefile.am (SUBDIRS): Delete `intl'. + * configure.in (AC_OUTPUT): Delete `intl/Makefile'. + * m4/gettext.m4 (AM_GNU_GETTEXT_HACKED): Renamed to `eb_GNU_GETTEXT', + and revised to support GNU gettext 0.10.36. Now, we inspect not only + libintl but also libiconv. Instead, we never use included libintl + sources. + + * configure.in (AM_INIT_AUTOMAKE): Set version to `3.0beta0'. + +2001-04-07 Motoyuki Kasahara + + * ebzip/zipbook.c (zip_book.c): Change type of the argument + `subbook_name_list'. + * ebzip/unzipbook.c (unzip_book.c): Ditto. + * ebzip/zipinfobook.c (zipinfo_book.c): Ditto. + +2001-04-06 Motoyuki Kasahara + + * eb/internal.h.in (EB_TEXT_OPTINAL_TEXT): Defined. + * eb/defs.h.in (EB_Search_Struct): add `end_page'. Rename + `index_page' to `start_page'. + * eb/subbook.c (eb_initialize_indexes): Also initialize and set + end pages of search methods. + * eb/text.c (eb_read_text): Set text mode to EB_TEXT_OPTINAL_TEXT + if the current position points to menu or copyright text. + +2001-04-05 Motoyuki Kasahara + + * po/Makefile.in (POTFILES): Add `ebzip/copyfile.c', + `ebzip/filename.c', `ebzip/unzipbook.c', `ebzip/unzipfile.c', + `ebzip/zipbook.c', `ebzip/zipfile.c', `ebzip/zipinfobook.c', + `ebzip/zipinfofile.c'. Delete `ebzip/ebzip1.c'. + + * eb/text.h (EB_HOOK_BEGIN_BITMAP, EB_HOOK_END_BITMAP): Renamed to + EB_HOOK_BEGIN_MONO_GRAPHIC and EB_HOOK_END_MONO_GRAPHIC. + * eb/text.h (EB_HOOK_BEGIN_BMP, EB_HOOK_END_BMP): Renamed to + EB_HOOK_BEGIN_COLOR_BMP and EB_HOOK_END_COLOR_BMP. + * eb/text.h (EB_HOOK_BEGIN_JPEG, EB_HOOK_END_JPEG): + EB_HOOK_BEGIN_COLOR_JPEG and EB_HOOK_END_COLOR_JPEG. + * eb/text.h (EB_HOOK_BEGIN_IN_JPEG, EB_HOOK_END_IN_JPEG): + EB_HOOK_BEGIN_IN_COLOR_JPEG and EB_HOOK_END_IN_COLOR_JPEG. + * eb/text.h (EB_HOOK_BEGIN_GRAY_GRAPHIC, EB_HOOK_END_GRAY_GRAPHIC): + Defined. + + * eb/internal.h.in (EB_BINARY_MONO_GRAPHIC, EB_BINARY_COLOR_GRAPHIC, + EB_BINARY_WAVE, EB_BINARY_MPEG, EB_BINARY_GRAY_GRAPHIC, + EB_BINARY_INVALID): Defined. + * eb/ebconfig.h (EB_Binary_Code): Defined. + * eb/defs.h (EB_SIZE_BINARY_CACHE_BUFFER): Change the value to 128. + * eb/defs.h (EB_Binary_Context_Struct): Add `code' and `width'. + * eb/binary.c (eb_set_binary_mono_graphic, eb_set_binary_gray_graphic, + eb_read_binary_mono_graphic): New functions. + +2001-03-25 Motoyuki Kasahara + + * eb/libintl_r.c, eb/libintl_r.h: Removed. + * eb/Makefile.am (libeb_la_SOURCES): Remove `libintl_r.c'. + * eb/Makefile.am (pkginclude_HEADERS): Remove `libintl_r.h'. + + * eb/error.h (EB_MAX_ERROR_MESSAGE_LENGTH): Deleted. + * eb/error.c (eb_error_message_r): Deleted. + +2001-03-20 Motoyuki Kasahara + + * m4/gettext.m4 (AM_GNU_GETTEXT_HACKED): Quote $INCLUDED_GETTEXT + and $ENABLE_NLS. + +2001-03-18 Motoyuki Kasahara + + * ebzip/zio.c (zio_reopen): Return -1 if `zio' context cannot be + re-used. + + * eb/book.c (eb_initialize_book): `book->language_zio' was not + initialized. Fixed. + + * eb/defs.h (EB_Font_Struct): Fix the length of the array `file_name'. + + * eb/narwfont.c (eb_initialize_narrow_font): Fix a bug that it cannot + open a font file correctly. + + * eb/zio.c (eb_reopen): Check strictly whehter the zio context is + ready to reopen. + + * eb/zio.h (ZIO_REOPEN, ZIO_EBZIP1, ZIO_EPWING, ZIO_EPWING6, + ZIO_SEBXA): Renumbered. + + * ebfont/ebfont.c: Don't include . + * ebinfo/ebinfo.c: Ditto. + * ebfont/ebfont.c (main): Don't call set_fakelog_name(), + set_fakelog_mode() nor set_fakelog_level(). + * ebinfo/ebinfo.c (main): Ditto. + + * libebutils/ebutils.c (output_try_help): Add the argument + `invoked_name'. + * libebutils/ebutils.c (output_version): Add the arguments + `program_name' and `program_version'. + * libebutils/ebutils.c (parse_subbook_name_argument): Add the + argument `invoked_name'. + * libebutils/ebutils.c: Delete definition of `program_name', + `program_version' and `invoked_name'. + * ebfont/ebfont.c: Define `program_name', `program_version' and + `invoked_name'. + * ebinfo/ebinfo.c: Ditto. + * ebfont/ebfont. (main): Don't initialize `program_name'. + * ebinfo/ebinfo.c (main): Ditto. + + * ebfont/ebfont.c (subbook_list, subbook_count): + Changed to `static' variables. + * ebfont/ebfont.c (font_list, fount_count): Ditto. + * ebfont/ebfont.c (image_list, image_count): Ditto. + + * ebfont/ebfont.c (parse_image_argument): The order of arguments + is changed. + * ebfont/ebfont.c (parse_font_argument): Ditto. + + * libebtuils/ebutils.c (find_subbook): Fix a bug. The function + returns invalid error code if an error has occured. + + * ebzip/copyfile.c: Include "eb.h", "error.h" and "internal.h". + + * ebzip/copyfile.c (copy_file): Don't `stat' the input file. + + * ebzip/copyfile.c (copy_files_in_directory): Don't output an error + message if input directory doesn't exists. + * ebzip/copyfile.c (copy_files_in_directory): Output an error message + if failed to open the input directory. + * ebzip/copyfile.c (copy_files_in_directory): Skip a file entry + if it is not regular file. + + * ebzip/ebzip.c: Add `-s' and `--skip-content' options. + * ebzip/ebzip.c (ebzip_skip_flag_font, ebzip_skip_flag_graphic, + ebzip_skip_flag_movie, ebzip_skip_flag_sound): New variables. + * ebzip/ebzip.h (EBZIP_DEFAULT_SKIP_FONT, EBZIP_DEFAULT_SKIP_GRAPHIC, + EBZIP_DEFAULT_SKIP_MOVIE, EBZIP_DEFAULT_SKIP_SOUND): New cpp macros. + * ebzip/ebzip.c (parse_skip_content_argument): New function. + + * ebzip/ebzip.h (EBZIP_SUFFIX_NONE, EBZIP_SUFFIX_EBZ, + EBZIP_SUFFIX_ORG): New cpp macros. + + * ebzip/filename.c (compose_unfixed_path_name): Renamed to + fix_path_name_suffix() and revised. + * ebzip/filename.c (compose_unfixed_path_name2, + compose_unfixed_path_name3, compose_fixed_path_name, + compose_fixed_path_name2, compose_fixed_path_name3): Deleted. + + * ebzip/zipbook.c (ebzip_zipbook): In order to compose a file name, + use eb_find_file_name(), eb_compose_file_name(), + eb_compose_file_name2(), eb_compose_file_name3() and + fix_path_name_suffix(). + * ebzip/unzipbook.c (ebzip_unzip_book): Ditto. + * ebzip/zipinfobook.c (ebzip_zipinfo_book): Ditto. + + * ebzip/zipbook.c (ebzip_zip_book): Support movie files. + * ebzip/unzipbook.c (ebzip_unzip_book): Ditto. + +2001-03-12 Motoyuki Kasahara + + * configure.in (AC_PROG_CC, AC_AIX, AC_MINIX, AC_PROG_LIBTOOL): + Check AC_PROG_CC, (AC_AIX + AC_MINIX) and AC_PROG_LIBTOOL in that + order. + + * eb/filename.c (eb_fix_file_name, eb_fix_file_name2, + eb_fix_file_name3): Removed. + * eb/filename.c (eb_find_file_name, eb_find_file_name2, + eb_find_file_name3): Added. + * eb/filename.c (eb_compose_path_name, eb_compose_path_name2, + eb_compose_path_name3): Revised. + * eb/internal.h.in (EB_FILE_NAME_START, EB_FILE_NAME_SOUND, + EB_FILE_NAME_CATALOG, EB_FILE_NAME_LANGUAGE, EB_FILE_NAME_VTOC, + EB_FILE_NAME_WELCOME, EB_FILE_NAME_CATALOGS, EB_FILE_NAME_HONMON, + EB_FILE_NAME_HONMON2, EB_FILE_NAME_HONMONG, EB_FILE_NAME_HONMONS, + EB_FILE_NAME_APPENDIX, EB_FILE_NAME_FUROKU): Deleted. + * eb/internal.h.in (EB_SUFFIX_NONE, EB_SUFFIX_EBZ, EB_SUFFIX_ORG): + Deleted. + + * eb/appendix.c (eb_initialize_appendix_catalog): + Use eb_find_file_name() to find a file to open. + * eb/appsub.c (eb_set_appendix_subbook_eb): Ditto. + * eb/appsub.c (eb_set_appendix_subbook_epwing): Ditto. + * eb/binary.c (eb_set_binary_mpeg): Ditto. + * eb/book.c (eb_initialize_catalog): Ditto. + * eb/language.c (eb_initialize_languages, eb_set_language): Ditto. + * eb/message.c (eb_initialize_messages): Ditto. + * eb/narwfont.c (eb_initialize_narrow_font): Ditto. + * eb/subbook.c (eb_set_subbook_eb, eb_set_subbook_epwing): Ditto. + + * eb/defs.h (EB_Font_Struct): Delete unused member `available'. + * eb/defs.h (EB_Book_Struct): Add the member `language_file_name'. + * eb/defs.h (EB_Book_Struct): Add `language_file_name' and + `language_zio'. + +2001-02-26 Motoyuki Kasahara + + * eb/appsub.c (eb_initialize_appendix_subbook, + eb_set_appendix_subbook): fix `data' sub-dirtory name in + eb_set_appendix_subbook(), reported by HASEGAWA Masafumi. + +2001-02-25 Motoyuki Kasahara + + * m4/eb3.m4 (AC_ARG_WITH): Fix typo. + + * m4/utimbuf.m4: Rename variable prefix from `ax_cv' to `ac_cv'. + +2001-02-20 Motoyuki Kasahara + + * check gettext() in libintl , and then in libc. + +2001-02-19 Motoyuki Kasahara + + * ebzip/filename.c (compose_unfixed_path_name2): Enclose "%s/%s" + with F_(). + +2001-02-18 Motoyuki Kasahara + + * ebzip/filename.c (compose_out_path_name, compose_out_path_name2, + compose_out_path_name3): Rename prefix from `compose_out_' to + `compose_unfixed_'. + + * ebzip/filename.c (compose_existent_path_name, + compose_existent_path_name2, compose_existent_path_name3): Rename + prefix from `compose_exisntent_' to `compose_fixed_'. + + * lib/text.c (eb_read_text_internal): Fix ISO 8859-1 code point range, + reported by HASEGAWA Masafumi. + +2001-02-12 Motoyuki Kasahara + + * ebzip/ebzip.c: Split the file into 9 files; eb/copyfile.c, + eb/ebzip.c, eb/ebzip.h, eb/unzipbook.c, eb/unzipfile.c, eb/zipbook.c, + eb/zipfile.c, eb/zipinfobook.c and eb/zipinfofile.c. + + * ebzip/zipbook.c (zip_book, zip_book_eb, zip_book_epwing): + Add the prefix `ebzip_', and revised. + * ebzip/zipfile.c (zip_file): Ditto. + * ebzip/unzipbook.c (unzip_book, unzip_book_eb, unzip_book_epwing): + Ditto. + * ebzip/unzipfile.c (unzip_file): Ditto. + * ebzip/zipinfobook.c (zipinfo_book, unzip_book_eb, + unzip_book_epwing): Ditto. + * ebzip/zipinfofile.c (zipinfo_file): Ditto. + + * ebzip/ebzip.h (zip_level, keep_flag, quiet_flag, test_flag, + overwirte_mode): Add the prefx `ebzip_'. + + * libebutils/Makefile.am (INCLUDES): Remove `-DUSE_FAKELOG'. + * libebutils/Makefile.am (noinst_HEADERS): Remove `fakelog.h'. + * libebutils/Makefile.am (libebutils_a_SOURCES): Remove `fakelog.c'. + * libebutils/fakelog.c, libebutils/fakelog.h: Removed. + * libebutils/makedir.c: Don't use fakelog. + + * libebutils/makedir.c (make_missing_directory_chaing): Removed. + +2001-02-11 Motoyuki Kasahara + + * m4/gettext.m4 (AM_GNU_GETTEXT_HACKED): Find gettext() in libc. + + * eb/search.c (eb_hit_list_keyword, eb_hit_list_multi): Comparison + Group entry with `context->word', not `context->canonicalized_word'. + Pill Book 2001 needs this fix. + + * eb/configure.in (AM_INIT_AUTOMAKE): Set version to `3.0alpha5'. + +2001-02-09 Motoyuki Kasahara + + * eb/filename.c (eb_canonicalize_path_name): Fix typo, reported + by Satomi Igi. + + * eb/internal.h.in (EB_SUFFIX_ORG): Defined. + * eb/subbook.c (eb_set_subbook_epwing): Try to open `HONMON2.ORG'. + * eb/subbook.c (eb_set_subbook_epwing): Assume HONMON(.EBZ) file + has graphic and sound data regardless of EPWING version. + * ebzip/ebzip.c (zip_book, unzip_book, zipinfo_book): Support + `HONMONS', `HONMONG' and `HONMON2.ORG' files. + * ebzip/ebzip.c (zip_book): When compress HONMON2, output the result + to HONMON2.EBZ, not `HONMON.EBZ'. + * ebzip/ebzip.c (unzip_book): When uncompress HONMON2.EBZ, output the + result to `HONMON2.ORG', not `HONMON2' or `HONMON'. + +2001-02-06 Motoyuki Kasahara + + * zlib/Makefile.am (AC_CHECK_FUNCS): Fix typo (vnsprintf -> vsnprintf). + Reported by Takashi NEMOTO. + * m4/gettext.m4: When tests, use the locale name `en_US' instead of + `en'. Reported by Takashi NEMOTO. + * libebutils/Makefile.am (INCLUDES): Use @INTLINCS@, not `-I../intl' + Reported by Takashi NEMOTO. + * intl/libgettext.h: Added again. Since `intl/bindtextdomain.c' + includes the file. Reported by Takashi NEMOTO. + +2001-02-03 Motoyuki Kasahara + + * Version 3.0alpha4. + + * po/Makefile.in, eb/po/Makefile (DISTFILES): Distribute + `Makefile.in', not `Makefile.in.in'. Add `$(CATALOGS)'. + * po/Makefile.in, eb/po/Makefile (distclean): Don't delete `Makefil.in' + itself. + * eb/text.c (eb_read_text_internal): Dispatch the BEGIN_WAVE hook. + +2001-01-31 Motoyuki Kasahara + + * eb/defs.h (EB_Appendix_Subbook_Struct): Rename `appendix_zio' to + `zio'. + * eb/defs.h (EB_Font_Struct): Rename `font_zio' to `zio'. + + * eb/graphic.c: Removed. + * eb/Makefile.am (libeb_la_SOURCES): Remove `eb/graphic.c'. + * eb/defs.h (EB_Subbook_Struct): The member `graphic' is removed. + * eb/ebinfo.c (output_information): Delete `graphic search' + information. + + * eb/defs.h (EB_Subbook_Struct): The member `sound' is added. + * eb/subbook.c (eb_initialize_indexes): Recognize 0xd8 as sound data. + + * eb/defs.h (EB_Binary_Context_Struct): Add the members; + `cache_buffer', `cache_length' and `cache_offset'. + * eb/binary.c (eb_set_binary_wave): Add the argument `type'. + * eb/binary.c (eb_est_binary_wave, eb_set_binary_color_graphic, + eb_set_binary_mpeg, eb_read_binary, eb_unset_binary): Update cache + data. + + * eb/Makefile.am (pkginclude_HEADERS): Add `zio.h'. + +2001-01-28 Motoyuki Kasahara + + * ebfont/ebfont.c (make_subbook_size_image_fonts): Fix typo. + + * eb/uint.c: Renamed to `eb/bcd.c'. + * eb/uint.c: Delete definition of eb_uint1(), eb_uint2(), eb_uint4() + and eb_uint4_le(). + + * eb/zio.h: New file. + * eb/defs.h (EB_Zip_Code ,EB_Huffman_Node): Move declaration of + these types to `eb/zio.h'. + * eb/defs.h (EB_SIZE_EBZIP_HEADER, EB_SIZE_EBZIP_MARGIN, + EB_MAX_EBZIP_LEVEL, EB_HUFFMAN_NODE_INTERMEDIATE, + EB_HUFFMAN_NODE_EOF, EB_HUFFMAN_NODE_LEAF8, EB_HUFFMAN_NODE_LEAF16, + EB_HUFFMAN_NODE_LEAF32, EB_ZIO_NONE, EB_ZIO_EBZIP1, EB_ZIO_EPWING, + EB_ZIO_EPWING6, EB_ZIO_SEBXA, EB_ZIO_INVALID): Move definition of + these cpp macros to `eb/zio.h'. + * eb/zio.c: Include `eb/zio.h'. + * eb/defs.h: Include `eb/zio.h'. + + * eb/zio.h (EB_Zip): Renamed to `Zio'. + * eb/zio.h (EB_Zip_Code): Renamed to `Zio_Code'. + * eb/defs.h (EB_SIZE_EBZIP_HEADER): Renamed to `ZIO_SIZE_EBZIP_HEADER'. + * eb/defs.h (EB_SIZE_EBZIP_MARGIN): Renamed to `ZIO_SIZE_EBZIP_MARGIN'. + * eb/defs.h (EB_MAX_EBZIP_LEVEL): Renamed to `ZIO_MAX_EBZIP_LEVEL'. + * eb/defs.h (EB_HUFFMAN_NODE_INTERMEDIATE): Renamed to + `ZIO_HUFFMAN_NODE_INTERMEDIATE'. + * eb/defs.h (EB_HUFFMAN_NODE_EOF): Renamed to `ZIO_HUFFMAN_NODE_EOF'. + * eb/defs.h (EB_HUFFMAN_NODE_LEAF8): Renamed to + `ZIO_HUFFMAN_NODE_LEAF8'. + * eb/defs.h (EB_HUFFMAN_NODE_LEAF16): Renamed to + `ZIO_HUFFMAN_NODE_LEAF16'. + * eb/defs.h (EB_HUFFMAN_NODE_LEAF32): Renamed to + `ZIO_HUFFMAN_NODE_LEAF32'. + * eb/defs.h (EB_ZIO_NONE): Renamed to `ZIO_NONE'. + * eb/defs.h (EB_ZIO_EBZIP1): Renamed to `ZIO_EBZIP1'. + * eb/defs.h (EB_ZIO_EPWING): Renamed to `ZIO_EPWING'. + * eb/defs.h (EB_ZIO_EPWING6): Renamed to `ZIO_EPWING6'. + * eb/defs.h (EB_ZIO_SEBXA): Renamed to `ZIO_SEBXA'. + * eb/defs.h (EB_ZIO_INVALID): Renamed to `ZIO_INVALID'. + + * eb/unebzip.c, eb/unzepwng.c, eb/unzsebxa.c: Removed. + The contents of those files are moved to `eb/zio.c'. + + * eb/defs.h (EB_Appendix_Subbook_Struct): Rename `appendix_zip' to + `appendix_zio'. + * eb/defs.h (EB_Appendix_Subbook_Struct): Remove `appendix_file'. + * eb/defs.h (EB_Font_Struct): Rename `font_zip' to `font_zio'. + * eb/defs.h (EB_Font_Struct): Delete `font_file'. + * eb/defs.h (EB_Subbook_Struct): Rename `text_zip' to `text_zio'. + * eb/defs.h (EB_Subbook_Struct): Delete `text_file'. + * eb/defs.h (EB_Subbook_Struct): Rename `graphic_zip' to `graphic_zio'. + * eb/defs.h (EB_Subbook_Struct): Delete `graphic_file'. + * eb/defs.h (EB_Subbook_Struct): Rename `sound_zip' to `sound_zio'. + * eb/defs.h (EB_Subbook_Struct): Delete `sound_file'. + * eb/defs.h (EB_Subbook_Struct): Add `movie_zip'. + * eb/defs.h (EB_Binary_Context_Struct): Delete `file'. + * eb/defs.h (EB_Binary_Context_Struct): Rename `zip' to `zio'. + + * eb/zio.c: Don't include `ebconfig.h', `errorh.h' nor `internal.h'. + * eb/zio.c (eb_zinitialize): Renamed to `zio_initialize_library'. + * eb/zio.c (eb_zfinalize): Renamed to `zio_finalize_library'. + * eb/zio.c (eb_zopen): Renamed to `zio_open'. + * eb/zio.c (eb_zopen_none): Renamed to `zio_open_none'. + * eb/zio.c (eb_zopen_ebzip): Renamed to `zio_open_ebzip'. + * eb/zio.c (eb_zopen_epwing): Renamed to `zio_open_epwing'. + * eb/zio.c (eb_zopen_epwing6): Renamed to `zio_open_epwing6'. + * eb/zio.c (eb_zopen_sebxa): Renamed to `zio_open_sebxa'. + * eb/zio.c (eb_zclose): Renamed to `zio_close'. + * eb/zio.c (eb_zlseek): Renamed to `zio_lseek'. + * eb/zio.c (eb_zread): Renamed to `zio_read'. + * eb/zio.c (eb_zread_ebzip): Renamed to `zio_read_ebzip'. + * eb/zio.c (eb_zread_epwing): Renamed to `zio_epwing'. + * eb/zio.c (eb_make_epwing_huffman_tree): Renamed to + `zio_make_epwing_huffman_tree'. + * eb/zio.c (eb_unzip_slice_ebzip1): Renamed to + `zio_unzip_slice_ebzip1'. + * eb/zio.c (eb_unzip_slice_epwing): Renamed to + `zio_unzip_slice_epwing'. + * eb/zio.c (eb_unzip_slice_epwing6): Renamed to + `zio_unzip_slice_epwing6'. + * eb/zio.c (eb_initialize, eb_finalize, eb_reopen, eb_file): + New functions. + * eb/zio.c (eb_read_all): Renamed to `zio_read_raw'. + + * eb/zio.c (Zio): Add the member `file'. + + * eb/zio.c (zio_close, zio_lseek, zio_read, zio_read_ebzip, + eb_zread_epwing, eb_zread_sebxa): Delete 2nd argument `file'. + + * eb/zio.c (zio_uint1, zio_uint2, zio_uint4): Defined. + Don't use eb_uint1, eb_uint2 or zio_uint4. + + * eb/appendix.c (eb_finalize_appendix): Finalize `appendix_zio' + in all subbooks. + * eb/book.c (eb_finalize_book): Ditto. + + * eb/appendix.c (eb_initialize_appendix_catalog): Use zio to + open a catalog file. + * eb/book.c (eb_initialize_catalog): Ditto. + + * eb/book.c (eb_fix_misleaded_book): New function. + * eb/book.c (eb_initialize_catalog): Fix chachacter-code information + by calling eb_fix_misleaded_book(). + + * eb/appendix.c (eb_initialize_catalog): Initialize `appendix_zio' in + an EB_Appendix_Subbook Object. + * eb/book.c (eb_initialize_catalog): Initialize `text_zio', + `graphic_zio', `sound_zio and movie_zio' in an EB_Book_Subbook object. + +2001-01-27 Motoyuki Kasahara + + * eb/error.h: Rivse error codes. + * eb/error.c (error_messages): Revised. + * eb/binary.c (eb_set_binary_mpeg): Fix a bug in initialization of + binary context. + * eb/filename.c (eb_decompose_movie_file_name): New function. + * eb/filename.c (eb_compose_movie_file_name): Don't believe file name + consists of 8 characters. + + * eb/text.c (SIZE_FEW_REST): Change the value from 40 to 48. + * eb/text.c (eb_read_text_internal): BEGIN_MPEG hook was not called + correctly. Fixed. + + * eb/subbook.c (eb_set_subbook_epwing): Don't suppose graphic or + sound data are in HONMON file if EPWING version is 5 or later. + +2001-01-23 Motoyuki Kasahara + + * eb/error.h (EB_ERR_BAD_FILE_NAME, EB_ERR_BAD_DIR_NAME): Add these + error codes. + + * eb/filename.c (eb_fix_directory_name, eb_fix_directory_name2, + eb_fix_file_name, eb_fix_file_name2, eb_fix_file_name3, + eb_compose_path_name, eb_compose_path_name2, eb_compose_path_name3): + eb_compose_movie_file_name): Return EB_Error_Code, not {0 or -1}. + +2001-01-21 Motoyuki Kasahara + + * eb/error.h, eb/error.c (EB_ERR_FAIL_OPEN_BIANRY, + EB_ERR_FAIL_READ_BINARY, EB_ERR_FAIL_SEEK_BINARY, EB_ERR_UNEXP_BINARY, + EB_ERR_NO_CUR_BINARY, EB_ERR_NO_SUCH_BINARY): Add these error codes. + + * eb/binary.h: New file. + * eb/Makefile.am (pkginclude_HEADERS): Add binary.h. + + * eb/text.h, eb/internal.h.in: Move function declaration of + eb_uint1(), eb_uint2(), eb_uint4(), eb_bcd2(), eb_bcd4() and eb_bcd6() + from eb/text.h to eb/internal.h.in. + +2001-01-20 Motoyuki Kasahara + + * configure.in, m4/gettext.m4 (AM_GNU_GETTEXT): renamed to + AM_GNU_GETTEXT_HACKED. + * m4/gettext.m4: Use the language `en' instead of `fr' in the test + program. + + * eb/defs.h (EB_Subbook_Struct): Fix array length of `text_file_name', + `graphic_file_name' and `sound_file_name'. + + * eb/internal.h.in: Declare eb_intialize_binary(). + * eb/binary.c: Added. + * eb/subbook.c: Call eb_initialize_binary() to initialize a binary + context. + + * eb/Makefile.am (libeb_la_SOURCES): Add `binary.c'. + +2001-01-17 Motoyuki Kasahara + + * eb/text.c (EB_MAX_ARGV): Change the value from 4 to 6. + + * eb/filename.c (eb_compose_movie_file_name): Defined. + + * ebzip/ebzip.c (zip_eb_book): Renamed to zip_book_eb(). + * ebzip/ebzip.c (zip_epwing_book): Renamed to zip_book_epwing(). + * ebzip/ebzip.c (unzip_eb_book): Renamed to unzip_book_eb(). + * ebzip/ebzip.c (unzip_epwing_book): Renamed to unzip_book_epwing(). + * ebzip/ebzip.c (zipinfo_eb_book): Renamed to zipinfo_book_eb(). + * ebzip/ebzip.c (zipinfo_epwing_book): Renamed to + zipinfo_book_epwing(). + + * eb/defs.h (EB_Subbook_Struct): Add the following members; + `graphic_file', `graphic_zip', `sound_file' and `sound_zip'. + * eb/internal.h.in (EB_FILE_NAME_HONMONG, EB_FILE_NAME_HONMONS): + Defined. + * eb/subbook.c (eb_set_subbook): Split this function into + eb_set_subbook(), eb_set_subbook_eb() and eb_set_subbook_epwing(). + * eb/subook.c (eb_set_subbook_epwing): Try opening graphic and sound + files. + + * eb/uint.c, eb/internal.h.in (eb_uint4_le): Defined. + + * eb/defs.h (EB_Binary_Context_Struct, EB_Binary_Context): Defined. + * eb/defs.h (EB_Book_Struct): Add the member `binary_context'. + + * eb/text.h: (EB_HOOK_BEGIN_BITMAP, EB_HOOK_END_BITMAP, + EB_HOOK_BEGIN_BMP, EB_HOOK_BEGIN_JPEG, EB_HOOK_END_COLOR_GRAPHIC, + EB_HOOK_BEGIN_IN_BMP, EB_HOOK_BEGIN_IN_JPEG, + EB_HOOK_END_IN_COLOR_GRAPHIC, EB_HOOK_BEGIN_WAVE, EB_HOOK_END_WAVE, + EB_HOOK_BEGIN_MPEG, EB_HOOK_END_MPEG): Defined. + * eb/defs.h (EB_NUMBER_OF_HOOKS): Updated. + + * eb/zio.c (zio_reopen): become `static' function. + * eb/zio.h (ZIO_REOPEN): Added. + * eb/zio.c (zio_open): Recognize the compression mode `ZIO_REOPEN'. + * eb/zio.c (zio_mode): New function. + + * eb/book.c (eb_filenalize_book): Don't call zio_finalize() for + `movie_zio'. Call zio_finalize() for `language_zio'. + +2001-01-16 Motoyuki Kasahara + + * eb/internal.h (EB_Subbook_Struct): Remove the member + `stream_directory_name'. + * eb/subbook.c (eb_set_subbook): Don't initialize + `subbook->stream_directory_name'. + + * eb/text.h (EB_HOOK_STOP_CODE, EB_HOOK_BEGIN_BITMAP, + EB_HOOK_END_BITMAP, EB_HOOK_BEGIN_BMP, EB_HOOK_BEGIN_JPEG, + EB_HOOK_END_IMAGE, EB_HOOK_BEGIN_IN_BMP, EB_HOOK_BEGIN_IN_JPEG, + EB_HOOK_END_IN_IMAGE, EB_HOOK_BEGIN_WAVE, EB_HOOK_END_WAVE, + EB_HOOK_BEGIN_MPEG, EB_HOOK_END_MPEG): Define new text hooks. + + * eb/text.c (SIZE_FEW_REST): Change the value from 16 to 40. + +2001-01-14 Motoyuki Kasahara + + * eb/defs.h (EB_Binary_Context_Struct, EB_Binary_Context, + EB_Binary_Code): Defined. + +2001-01-11 Motoyuki Kasahara + + * m4/gettext.m4 (AM_GNU_GETTEXT): Set LC_ALL to `fr', and set LANGUAGE + to empty string. + + * ebzip/ebzip.c (zip_epwing_book, unzip_epwing_book, + zipinfo_epwing_book): Fix filenames in error messages. + +2001-01-03 Motoyuki Kasahara + + * lib/strcasecmp.c (strncasecmp): Fix a bug that the function returns + wrong result when comparison length is 0. + * libebutils/strcasecmp.c (strncasecmp): Ditto. + + * eb/Makefile.am (SUBDIRS): Don't use @POSUB@. + +2001-01-02 Motoyuki Kasahara + + * configure.in (AC_ARG_WITH): Fix a bug that configure cannot + recognize --with-included-zlib option. Reported by Kazuhiko. + +2001-01-01 Motoyuki Kasahara + + * po/Makefile.in.in, eb/po/Makefile.in.in: Use `ENABLE_NLS', not + `USE_NLS'. + + * eb/Makefile.am (SUBDIRS): Set to `po', not `@POSUB@'. + +2000-12-31 Motoyuki Kasahara + + * intl/Makefile.am (noinst_HEADERS): Remove `libgettext.h'. Add + `libintl.h' instead. + * intl/Makefile.am (BUILT_SOURCES): Remove libintl.h. + * intl/Makefile.am (DISTCLEANFILES): Remove libintl.h. + + * po/Makefile.in.in, eb/po/Makefile.in.in (ja_JP.SJIS): Remove the + target. + + * gttest.po, gttest.mo: New files. + * Makefile.am (EXTRA_DIST): Add `gttest.mo' and `gttest.po'. + * Makefile.am (gttest.mo): New target. + * m4/gettext.m4: Fully revised. + * configure.in (AC_OUTPUT): Fix an output file name. + +2000-12-30 Motoyuki Kasahara + + * libebutils/Makefile.am (EXTRA_DIST): Delete `memset.c', `strerror.c' + and `strcasecmp.c'. Automake recognizes them as distirbution files. + +2000-12-29 Motoyuki Kasahara + + * Makefile.am (ACLOCAL_AMFLAGS): Defined. + + * m4/ssizet.m4 (AX_TYPE_SSIZE_T): Renamed to `AC_TYPE_SSIZE_T'. + * m4/utimbuf.m4 (AX_HAVE_STRUCT_UTIMBUF): Renamed to + `AC_STRUCT_UTIMBUF'. + * configure.in: Use new macro names described above. + + * m4/libtool.m4: New file. + (This file will be removed when a bug in libtool.m4 distributed + with Libtool is fixed.) + * m4/Makefile.am (EXTRA_DIST): Add `libtool.m4'. + +2000-12-23 Motoyuki Kasahara + + * Use autoconf 2.49b, automake 1.4b, and libtool 1.3c (checkout + 2000-12-18). + * depcomp: New file. + + * configure.in: Call `AX_TYPE_SSIZE_T' instead of + `AC_CHECK_TYPE(ssize_t, int)'. + + * lib/fakelog.c (fakelog): Use memcpy() instead of strcpy() to + expand `%m'. + + * m4/Makefile.am, m4/eb3.m4, m4/gettext.m4, m4/lcmessage.m4, + m4/ssize_t.m4, m4/utimbuf.m4: New files. + * configure.in (AC_OUTPUT): Add `m4/Makefile.in'. + * Makefile.am (SUBDIRS): Add `m4'. + + * acconfig.h, acinclude.m4: Removed. + + * intl/Makefile.am, eb/Makefile.am, libebutils/Makefile.am, + ebfont/Makefile.am, ebinfo/Makefile.am, ebzip/Makefile.am, + doc/Makefile.am, doc-ja/Makefile.am: + Remove @MAKE_SET@. + +2000-12-06 Motoyuki Kasahara + + * Version 3.0alpha3. + + * ebzip/Makefile.am (INCLUDES): Delete `-I$(top_srcdir)'. + * ebzip/Makefile.am (INCLUDES): Add `-I../eb' and `-I$(top_srcdir)/eb'. + * ebzip/ebzip.c: Include `*.h' in the `../eb' directory, not `eb/*.h'. + +2000-11-28 Motoyuki Kasahara + + * eb/subbook.c (eb_subbook_directory, eb_subbook_directory2): + All letters in a directory name are converted to lower letters + that were converted to upper letters. + * libebutils/ebutils.c (parse_subbook_name_argument): Ditto. + +2000-11-23 Motoyuki Kasahara + + * intl/Makefile.am: Don't make a symbolc link `libintl.h'. + + * eb/font.c (eb_set_font): Set font files to -1. + * eb/font.c (eb_unset_font): Check file descriptor before close + the file. + +2000-11-18 Motoyuki Kasahara + + * configure.in (AC_OUTPUT_COMMANDS): Copy `intl/libgettext.h' to + `intl/libintl.h'. + + * eb/filename.c, ebzip/filename.c, ebfont/ebfont.c: Define the macro + `F_' to resolve path notation problem between UNIX and DOS. + + * ebconfig.h: New file. + * appendix.c, appsub.c, bitmap.c, book.c, copyright.c, eb.c, + endword.c, error.c, exactword.c, filename.c, font.c, graphic.c, + hook.c, jacode.c, keyword.c, language.c, lock.c, match.c, menu.c, + message.c, multi.c, narwalt.c, narwfont.c, search.c, setword.c, + stopcode.c, subbook.c, text.c, uint.c, unzebzip.c, unzepwing.c, + unzsebxa.c, widefont.c, word.c, zio.c: + Include `ebconfig.h'. + Dont' include public headers nor define public macros. + * Makefile.am (noinst_HEADERS): Add `ebconfig.h'. + + * eb/search.c (eb_and_hit_lists): In its prototype declaration, + type of the 4th argument is changed from (EB_Hit [N1][]) to + (EB_Hit [][N2]). + +2000-11-14 Motoyuki Kasahara + + * Makefile.am (CLEANFILES): Add stamp-widealt-h, stamp-widefont-h, + widealt.c and widefont.c. + * Makefile.am (BUILT_SOURCES): Add widealt.c and widefont.c. + * Makefile.am (widealt.c, stamp-widealt-h): Add the targets. + * Makefile.am (widefont.c, stamp-widefont-h): Add the targets. + * widealt.c, widefont.c: Generated from narwalt.c and narwfont.c. + +2000-11-08 Motoyuki Kasahara + + * eb/text.c (eb_read_text_internal): + * eb/text.h (EB_HOOK_END_CANDIDATE): Split this hook into + EB_HOOK_END_CANDIDATE_GROUP and EB_HOOK_END_CANDIDATE_LEAF. + * eb/text.h (EB_HOOK_BEGIN_SOUND, EB_HOOK_END_SOUND, + EB_HOOK_BEGIN_PICTURE, EB_HOOK_END_PICTURE): Removed temporary. + * eb/defs.h (EB_NUMBER_OF_HOOKS): Updated. + + * eb/defs.h (EB_Text_Context): Add the members `candidate' and + `is_candidate'. + * eb/text.c (eb_current_candidate): New function. + + * eb/text.c (eb_read_internal): Manage the current candidate. + * eb/text.c (eb_seek_text, eb_read_text, eb_read_heading): + Clear the current candidate. + + * eb/text.c (eb_seek_text): Complain if the given position is not + valid. + +2000-11-07 Motoyuki Kasahara + + * eb/hook.c (euc_a1_to_ascii_table, euc_a1_to_ascii_table): + The tables start with the character 0xa0 and end with 0xff. + * eb/hook.c (EUC_TO_ASCII_TABLE_START, EUC_TO_ASCII_TABLE_END): + Defined + * eb/hook.c (eb_hook_euc_to_ascii): Use new convertion tables. + + * eb/multi.c (eb_multi_entry_candidates): Return EB_ERR_NO_CANDIDATES + not EB_ERR_NO_SUCH_SEARCH if the multi entry doesn't have candidates. + + * eb/error.c (EB_ERR_STOP_CODE): Defined. + * eb/error.c (EB_ERR_HOOK_WORKSPACE): Removed. + * eb/hook.c (eb_hook_stop_code): Return EB_ERR_STOP_CODE when the + stop code is found. + * eb/text.c (eb_read_text_internal): Return only when STOP_CODE hook + function returns EB_ERR_STOP_CODE. + +2000-11-06 Motoyuki Kasahara + + * eb/text.c (eb_read_text_internal): `argv' must be `unsigned int []'. + * eb/text.c (eb_read_text_internal): Set MSB of argv[0] passed to + NARROW_JISX0208, WIDE_JISX0208, GB2312 hooks. + +2000-11-04 Motoyuki Kasahara + + * eb/text.c: Include . + +2000-11-03 Motoyuki Kasahara + + * eb/defs.h (EB_Text_Context_Strcut): + The member `work_buffer', `work_length' and `work_step' are removed. + The member `out', `out_rest_length', `unprocessed', `in_step', + `out_step' and `unprocessed_size' are added. + * eb/text.c (eb_read_text_internal): `text_p' and `text_rest_length' + are now recorded in `book->text_context.out' and + `book->text_context.out_rest_length'. + * eb/defs.h (EB_MAX_WORK_LENGTH): Removed. + + * eb/text.c (eb_read_text_internal): Don't write `\0' on the tail + of text buffer. + + * eb/text.c (eb_write_text_byte1, eb_write_text_byte2, + eb_write_text_string, eb_write_text): New functions. + * eb/text.c (eb_read_text_internal): Use eb_write_text*() functions + to write characters to a text buffer. Don't write directly. + + * eb/defs.h (EB_Hook_Struct): The type of `argv' is changed from + `const int *' to `const unsigned int *'. + + * eb/defs.h (EB_Hook_Struct): Add the new argument `container' + and remove `workbuf'. + * eb/hook.c (eb_hook_euc_to_ascii, eb_hook_stop_code, + eb_hook_narrow_character_text, eb_hook_wide_character_text, + eb_hook_empty): Ditto. + * eb/text.c (eb_read_text, eb_read_heading): Add the new argument + `container'. + + * eb/hook.c (eb_hook_newline): New function. + * eb/hook.c (eb_initialize_hookset): Set EB_HOOK_NEWLINE of the + default hookset. + +2000-10-31 Motoyuki Kasahara + + * ebinfo/ebinfo.c (output_information): In the font-size and + font-range paramter lines, output a newline character even + when an error occurs. + +2000-10-30 Motoyuki Kasahara + + * eb/hook.c (eb_hook_stop_code): Return EB_ERR_HOOK_WORKSPACE + not -1 when a stop code is found. + + * eb/text.c (eb_read_text, eb_read_heading, eb_read_text_internal): + give up formatting text when a hook function returns any other value + than EB_SUCCESS. + +2000-10-27 Motoyuki Kasahara + + * ebzip/filename.c (compose_exisitent_path_name, + compose_exisitent_path_name2, compose_exisitent_path_name3): + New functions. + * ebzip/ebzip.c (zip_eb_book, zip_epwing_book, unzip_eb_book, + unzip_epwing_book, zipinfo_eb_book, zipinfo_epwing_book): Use + compose_exisitent_path_name*() functions instead of sprintf(). + + * eb/filename.c (eb_canonicalize_path_name): Don't expand `/./' + and `/../' in the given path name. + +2000-10-26 Motoyuki Kasahara + + * eb/subbook.c (eb_set_subbook): Set `book->subbook_current->text_file' + to 1 when no text file exists. + +2000-10-21 Motoyuki Kasahara + + * eb/text.c (eb_read_text_internal): Cache controll bug was still + remained. Fix the bug. + + * doc-ja/ebinfo-ja.texi: Include `ebinfo-ver.texi', not `version.texi'. + +2000-10-20 Motoyuki Kasahara + + * Version 3.0alpha2. + + * doc-ja/Makefile.am (EXTRA_DIST): Remove `stamp-eb'. + * doc-ja/Makefile.am (stamp-eb): Remove the target. + + * eb/text.c (eb_read_text_internal): Fix a cache controll bug. + Reported by Rei. + +2000-10-17 Motoyuki Kasahara + + * eb/ebzip.c (zip_epwing_book): Fix a bug that it tries to compress + non-existant font files. + * eb/text.c (eb_read_text_internal): Check text-end-flag, + cache buffer, and unprocessed data in the text context, in + this order. + +2000-09-30 Motoyuki Kasahara + + * eb/zio.c (eb_zopen_epwing): Add missing initialization code for + the variable `read_length'. + +2000-09-24 Motoyuki Kasahara + + * eb/defs.h (EB_Language_Struct): the member `offset' is renamed to + `location'. + * eb/defs.h (EB_Zip_Struct): likewise. + + * eb/appsub.c (eb_initialize_appendix_subbook): value passed to + eb_zlseek() must be off_t. + * eb/font.c (eb_initialize_font): Likewise. + * eb/language.c (eb_set_language): Likewise. + * eb/multi.c (eb_initialize_multi_search): Likewise. + * eb/narwalt.c (eb_narrow_character_text_jis): Likewise. + * eb/narwalt.c (eb_narrow_character_text_latin): Likewise. + * eb/narwfont.c (eb_initialize_narrow_font): Likewise. + * eb/narwfont.c (eb_narrow_character_bitmap_jis): Likewise. + * eb/narwfont.c (eb_narrow_character_bitmap_latin): Likewise. + * eb/search.c (eb_presearch_word): Likewise. + * eb/search.c (eb_hit_list_word): Likewise. + * eb/search.c (eb_hit_list_keyword): Likewise. + * eb/search.c (eb_hit_list_multi): Likewise. + * eb/subbook.c (eb_initialize_subbook): Likewise. + * eb/widealt.c (eb_wide_character_text_jis): Likewise. + * eb/widealt.c (eb_wide_character_text_latin): Likewise. + * eb/widefont.c (eb_initialize_wide_font): Likewise. + * eb/widefont.c (eb_wide_character_bitmap_jis): Likewise. + * eb/widefont.c (eb_wide_character_bitmap_latin): Likewise. + * eb/text.c (eb_initialize_text): `book->text_context.location' + must be calculated with `off_t' values. + + * po/POTFILES.in: Add `libebutils/getopt.c'. + + * eb/zio.c (eb_zopen_none): Get file size, reported by Takashi NEMOTO. + +2000-09-09 Motoyuki Kasahara + + * eb/defs.h (EB_Subbook_Struct): Add the member `cross'. + * eb/subbook.c (eb_initialize_subbook): Also initialize the member + `cross'. + * eb/subbook.c (eb_initialize_indexes): Recognize index code + 0x81 as Cross-Index. + +2000-09-07 Motoyuki Kasahara + + * eb/setword.c (eb_fix_word_latin): Renamed to `eb_convert_latin'. + * eb/setword.c (eb_fix_word_jis): Renamed to `eb_convert_euc_jp'. + + * eb/setword.c (eb_fix_word): New static function. + * eb/setword.c (eb_set_word, eb_set_endword, eb_set_keyword): + Call `eb_fix_word' to fix `word' and `canonicalized_word' according + with index page style. + * eb/setword.c (eb_set_endword): Get index page style from endword + search indexes, not from word search. + * eb/setword.c (eb_set_keyword): Get index page style from keyword + search indexes, not from word search. + + * eb/libintl_r.c: New file. + * eb/error.c (gettext_mutex): Moved to `libintl_r.c'. + * eb/error.c (eb_error_message): Do not lock. + * eb/error.c (eb_error_message_r): New function. + + * eb/lock.c (eb_pthread_enabled): New function. + * eb/eb.c (eb_nls_enabled): New function. + + * eb/Makefile.am (pkginclude_HEADERS): Add `libintl_r.h'. + * eb/Makefile.am (libintl_la_SOURCES): Add `libintl_r.c'. + + * eb/subbook.c (eb_set_subbook): Don't return an error code when + no text file exists. + + * eb/setword.c (eb_convert_euc_jp): Accept local character + 0xa121 ... 0xfe7e. + + * eb/subbook.c (eb_initialize_subbook): Becomes static function. + * eb/appsub.c (eb_initialize_appendix_subbook): Likewise. + + * eb/text.c (eb_read_text, eb_read_heading, eb_forward_text, + eb_read_text_internal): Discard `const' of the argument `hookset'. + + * eb/subbook.c (eb_set_subbook): Add missing call of eb_unlock(). + + * eb/text.c (eb_fowrard_text): Don't unlock `cache_mutex'. + * eb/text.c (eb_fowrard_heading): Likewise. + + * eb/zio.c (eb_zread_ebzip, eb_zread_epwing, eb_zread_sebxa): Don't + lock or unkock `cache_mutex'. + * eb/zio.c (eb_zread): Lock and unkock `cache_mutex'. + + * eb/internal.h.in (EB_ZIP_INVALID): Defined. + * eb/zip.c (eb_zopen_none, eb_zopen_ebzip, eb_zopen_epwing, + eb_zopen_epwing6): Now they are static functions. + * eb/zip.c (eb_zopen): New function. + + * eb/appsub.c (eb_set_subbook): Call eb_zopen(), instead of + eb_zopen_ZIPTYPE() functions. + * eb/font.c (eb_set_font): Likewise. + * eb/language.c (eb_initialize_language): Likewise. + * eb/language.c (eb_set_language): Likewise. + * eb/subbook.c (eb_set_subbook): Likewise. + * ebzip/ebzip.c (zip_eb_book, zip_epwing_book, unzip_eb_book, + unzip_epwing_book, zipinfo_eb_book, zipinfo_epwing_book): Likewise. + * ebzip/ebzip.c (zip_file, unzip_file, zipinfo_file): The argument + `in_open_function' is replaced to `in_zip_code'. + + * ebzip/ebzip.c (zipinfo_file): Call `stat' before open a file. + + * ebzip/ebzip.c (zipinfo_epwing_book): Skip font entires whose + code is EB_FONT_INVALID. + +2000-09-05 Motoyuki Kasahara + + * eb/internal.h.in, libebutils/ebutils.c, ebfont/ebfont.c, + ebinfo/ebinfo.c, ebzip/ebzip.c: Define `_' and `N_' macros even + when ENABLE_NLS is not defined. + +2000-08-11 Motoyuki Kasahara + + * ebfont/ebfont.c (make_subbook_size_image_fonts): Fixed bugs + that use old API. Reported by Takashi NEMOTO. + * eb/book.c (eb_initialize_catalog): Fix a bug that wrong font code + is set to EB_Font struct. Reported by Takashi NEMOTO. + + * eb/internal.h.in (EB_INDEX_STYLE_REVERSED_CONVERT): Defined. + Super Tougou Jisho 2000 sets 2 to the katakana index style parameter. + * eb/setword.c (eb_convert_hiragana_jis): New function. + Convert all hiragana characters in a string to katakana. + * eb/setword.c (eb_set_word): If the katakana index style parameter + is EB_INDEX_STYLE_REVERSED_CONVERT, call eb_convert_hiragana_jis(). + +2000-08-04 Motoyuki Kasahara + + * eb/internal.h.in (eb_initialize_lock, eb_finalize_lock, eb_lock, + eb_unlock): Add function declarations. + * eb/font.c (eb_set_font): Set the variable `subbook' after + lock the book. + * eb/font.c (eb_set_font, eb_font_list, eb_have_font): Set the + variable `subbook' after lock the book. + + * eb/Makefile.am (libeb_la_SOURCES): Add lock.c. + +2000-07-21 Motoyuki Kasahara + + * Version 3.0alpha1. + + * eb/defs.h (EB_Huffman_Node_Struct): The type of the member `value' + is changed to `unsigned int'. + + * eb/epwunzip.c (eb_unzip_slice_epwing6): New function. + + * libebutils/ebutils.c (fix_file_name, parse_case_argument, + parse_suffix_argument): Removed. + + * eb/internal.h.in: Include `config.h'. + * eb/internal.h.in: Always includes `defs.h'. + * eb/internal.h: Delete extern declaration of `eb_option'. + + * eb/font.c, eb/message.c, eb/search.c, eb/text.c: Remove cpp macro + definition of `memmove'. + * eb/internal.h.in: Add cpp macro definition of `memmove'. + * eb/filename.c: Remove cpp macro definition of `strcasecmp' and + `strncasecmp'. + * eb/internal.h.in: Add cpp macro definition of `strcasecmp' and + `strncasecmp'. + + * ebzip/ebzip.c (short_options, long_options): Delete `--suffix' + and `--case' options. + +2000-07-20 Motoyuki Kasahara + + * eb/filename.c (eb_fix_file_name2, eb_fix_file_name3): New functions. + * ebzip/filename.c (compose_out_file_name, compose_out_file_name2, + compose_out_file_name3): New functions, New file. + * eb/Makefile.am (ebzip_SOURCES): Add `filename.c'. + * ebzip/ebzip.c (zip_book, unzip_book, zipinfo_book): Rewritten. + * ebzip/ebzip.c: Delete `--case' and `--suffix' options. + + * eb/defs.h (EB_ZIP_EPWING): Assign the value `100'. + * eb/defs.h (EB_ZIP_EPWING6, EB_ZIP_SEBXA): New macros. + + * eb/internal.h.in (EB_HUFFMAN_NODE_EOF, EB_HUFFMAN_NODE_LEAF8, + EB_HUFFMAN_NODE_LEAF16): Assign new values. + * eb/internal.h.in (EB_HUFFMAN_NODE_LEAF32): Defined. + + * eb/zio.c (eb_zread_ebzipped): Renamed to eb_zread_ebzip(). + * eb/zio.c (eb_zread_epwzipped): Renamed to eb_zread_epwing(). + * eb/ebunzip1.c (eb_ebunzip1_slice): Renamed to + eb_unzip_slice_ebzip1().. + * eb/epwunzip.c (eb_epwunzip_slice): Renamed to + eb_unzip_slice_epwing(). + + * eb/ebunzip1.c: Renamed to eb/unzebzip.c. + * eb/epwunzip.c: Renamed to eb/unzepwing.c. + * eb/unzsebxa.c: New file. + +2000-07-16 Motoyuki Kasahara + + * eb/subbook.c (eb_initialize_all_subbooks): Also set each font. + * eb/subbook.c (eb_initialize_all_subbooks): Call eb_unset_subbook() + if an error occurs. + + * ebzip/Makefile.am (ebzip_SOURCES): Remove `filelist.c'. + * ebzip/ebzip.c: Remove function declarations of + initialize_file_name_list(), finalize_file_name_list() and + add_file_name_list(). + +2000-07-09 Motoyuki Kasahara + + * eb/narwfont.c (eb_narrow_font_file_name, eb_narrow_font_file_name2): + Removed. + * eb/widefont.c (eb_wide_font_file_name, eb_wide_font_file_name2): + Removed. + + * eb/font.c (eb_initialize_fonts, eb_initialize_eb_fonts, + eb_initialize_epwing_fonts): Removed. + * eb/font.c (eb_initialize_font): New function. + * eb/narwfont.c (eb_initialize_narrow_font): New function. + * eb/widefont.c (eb_initialize_wide_font): New function. + * eb/appendix.c (eb_initialize_appendix_catalog): Adapt to new + file name composition rule. + * eb/appsub.c (eb_set_subbook): Likewise. + * eb/book.c (eb_initialize_catalog): Likewise. + * eb/font.c (eb_set_font): Likewise. + * eb/language.c (eb_initialize_language): Likewise. + * eb/language.c (eb_set_language): Likewise. + * eb/subbook.c (eb_set_subbook): Likewise. + + * eb/zio.c (eb_zopen, eb_zopen2): Removed. + * eb/zio.c (eb_zopen_none): New function. + * eb/zio.c (eb_zopen_ebzipped): Renamed to `eb_zopen_ebzip' and + changed to non-static. + * eb/zio.c (eb_zopen_epwing): Renamed to `eb_zopen_epwing' and + changed to non-static. + + * eb/appendix.c (eb_initialize_appendix_catalog): Adjuts subbook + directory names. + * eb/book.c (eb_initialize_catalog): Likewise. + * eb/appsub.c (eb_initialize_appendix_subbook): Adjust data directory + name. + * eb/subbook.c (eb_initialize_subbook): Adjust date, gaiji, stream + and movie directory names. + + * configure.in (AC_HEADER_DIRENT): Added. + + * eb/subbook.c (eb_initialize_subbook): Don't call + eb_initialize_fonts(). + + * eb/defs.h (EB_CASE_UNCHANGE, EB_CASE_UPPER, EB_CASE_LOWER): Deleted. + * eb/defs.h (EB_SUFFIX_UNCHANGE, EB_SUFFIX_NONE, EB_SUFFIX_DOT, + EB_SUFFIX_PERIOD, EB_SUFFIX_VERSION, EB_SUFFIX_BOTH): Deleted. + * eb/ebzip.c (CASE_UNCHANGE, CASE_UPPER, CASE_LOWER): Defined. + * eb/ebzip.c (SUFFIX_UNCHANGE, SUFFIX_NONE, SUFFIX_DOT, + SUFFIX_VERSION, SUFFIX_BOTH): Defined. + + * eb/defs.h (EB_FILE_NAME_START, EB_FILE_NAME_SOUND, + EB_FILE_NAME_CATALOG, EB_FILE_NAME_LANGUAGE, EB_FILE_NAME_WELCOME, + EB_FILE_NAME_CATALOGS, EB_FILE_NAME_HONMON, EB_FILE_NAME_HONMON2, + EB_FILE_NAME_APPENDIX, EB_FILE_NAME_FUROKU, EB_DIRECTORY_NAME_DATA, + EB_DIRECTORY_NAME_GAIJI, EB_DIRECTORY_NAME_STREAM, + EB_DIRECTORY_NAME_MOVIE): Move these definitions to `eb/internal.h.in' + and convert their values to lower cases. + * eb/internal.h.in (EB_SUFFIX_EBZ): Defined. + * eb/internal.h.in (EB_SUFFIX_NONE): Defined. + * eb/internal.h.in (EB_FILE_NAME_HONMONS): Defined. + * eb/internal.h.in (EB_FILE_NAME_HONMONG): Defined. + * eb/internal.h.in (EB_FILE_NAME_VTOC): Removed. + + * eb/ebinfo.c (output_information): Adapt to new EB_FONT_* macro + values. They were 16, 24, 30, 48, but now they are 0, 1, 2, 3. + +2000-07-08 Motoyuki Kasahara + + * eb/defs.h (EB_MAX_BASE_NAME_LENGTH): Renamed to + EB_MAX_DIRECTORY_NAME_LENGTH. + * eb/defs.h (EB_MAX_FILE_NAME_LENGTH): Defined. + + * eb/defs.h (EB_Subbook_Struct): Add the member `version'. + * eb/book.c (eb_initialize_catalog): Set format version. + + * eb/zio.c (eb_zopen_epwzipped): Check if least frequent node + is found or not after scanning a node list. + + * eb/strcasecmp.c: New file. + * eb/Makefile.am (libeb_la_SOURCES): Add `strcasecmp.c'. + + * libebutil/strcasecmp.c: Include `sys/type.h'. + + * eb/defs.h (EB_Subbook_Struct): Rename the member `directory' to + `directory_name', + * eb/defs.h (EB_Subbook_Struct): Add the member `data_directory_name', + `gaiji_directory_name', `movie_directory_name', + `stream_directory_name', `text_file_name', `graphic_file_name', + and `sound_file_name'. + * eb/defs.h (EB_Book_Struct): Remove the member `case_code' and + `suffix_code'. + * eb/defs.h (EB_Appendix_Struct): Add the member `data_directory_name', + and `appendix_file_name'. + * eb/defs.h (EB_Appendix_Subbook_Struct): Rename the member + `directory' to `directory_name', + * eb/defs.h (EB_APpendix_Subbook_Struct): Remove the member + `case_code' and `suffix_code'. + + * eb/filename.c (eb_catalog_file_name): Removed. + * eb/filename.c (eb_appendix_catalog_file_name): Removed. + * eb/filename.c (eb_canonicalize_appendix_file_name): Removed. + * eb/filename.c (eb_canonicalize_file_name_internal): Renamed to + `eb_canonicalize_file_name'. The original `eb_canonicalize_file_name' + is overwritten. + * eb/filename.c (eb_fix_file_name): Removed. + * eb/filename.c (eb_fix_appendix_file_name): Removed. + * eb/filename.c (eb_fix_file_name_internal): Removed. + * eb/filename.c (eb_fix_directory_name, eb_fix_sub_directory_name): + New functions. + * eb/filename.c (eb_fix_file_name, eb_compose_file_name, + eb_compose_file_name2, eb_compose_file_name3): New functions. + + * eb/defs.h (EB_DIRECTORY_NAME_DATA, EB_DIRECTORY_NAME_GAIJI, + EB_DIRECTORY_NAME_STREAM): Moved to eb/internal.h.in. + * eb/internal.h.in (EB_DIRECTORY_NAME_STREAM, + EB_DIRECTORY_NAME_MOVIE): Defined. + + * eb/font.h (EB_FONT_16, EB_FONT_24, EB_FONT_30, EB_FONT_48): + Change their integer values. + + * eb/defs.h (EB_Font_Struct): Remove the memeber `width' and `height'. + * eb/defs.h (EB_Font_Struct): Add the memeber `available' and + `font_code'. + * eb/defs.h (EB_Subbook_Struct): Remove the memeber `font_count'. + * eb/defs.h (EB_Subbook_Struct): Split the memeber `fonts' into + `narrow_fonts' and `wide_fonts'. + * eb/book.c (eb_initialize_catalog): Assume that the order of font + names is always wide-16, -24, -30, -48, narrow-16, -24, -30, -48. + + * eb/font.c (eb_initialize_eb_fonts, eb_initialize_epwing_fonts, + eb_font, eb_set_font, eb_unset_font, eb_font_list, eb_have_font): + Catch up with new EB_Font_Struct. + * eb/narwfont.c (eb_have_narrow_font, eb_narrow_font_width, + eb_narrow_font_width2, eb_narrow_font_size, eb_narrow_font_size2, + eb_narrow_font_file_name, eb_narrow_font_file_name2, + eb_narrow_font_start, eb_narrow_font_end, + eb_narrow_character_bitmap_jis, eb_narrow_character_bitmap_latin): + Likewise. + * eb/widefont.c (eb_have_wide_font, eb_wide_font_width, + eb_wide_font_width2, eb_wide_font_size, eb_wide_font_size2, + eb_wide_font_file_name, eb_wide_font_file_name2, + eb_wide_font_start, eb_wide_font_end, + eb_wide_character_bitmap_jis, eb_wide_character_bitmap_latin): + Likewise. + * eb/subbook.c (eb_initialize_indexes): Likewise. + + * eb/font.c (eb_font_height, eb_font_height2): New functions. + * eb/font.h (EB_HEIGHT_FONT_16, EB_HEIGHT_FONT_24, EB_HEIGHT_FONT_30, + EB_HEIGHT_FONT_48): Defined. + + * eb/defs.h (EB_Subbook_Struct): Rename the member `zip' to + `text_zip'. + * eb/defs.h (EB_Appendix_Subbook_Struct): Rename the member `zip' to + `appendix_zip'. + +2000-06-24 Motoyuki Kasahara + + * eb/subbook.c (eb_initialize_subbook): Fix bugs that EB 2.x API + are remained. + + * eb/setword.c (eb_fix_word_jis): Initialize `c1' and `c2' to + avoid GCC warning `might be used uninitialized...'. + + * eb/search.c (eb_presearch_word): Return EB_ERR_FAIL_SEEK_TEXT + when eb_zlseek() failed, and EB_ERR_FAIL_READ_TEXT when eb_zread(). + + * eb/exactword.c (eb_search_exactword): Return EB_ERR_NO_SUCH_FONT + when invalid font height is given. + + * eb/bitmap.c (eb_narrow_font_xbm_size): Return EB_ERR_NO_SUCH_FONT + when invalid font height is given. + * eb/bitmap.c (eb_narrow_font_xpm_size): Likewise. + * eb/bitmap.c (eb_narrow_font_gif_size): Likewise. + * eb/bitmap.c (eb_wide_font_xbm_size): Likewise. + * eb/bitmap.c (eb_wide_font_xpm_size): Likewise. + * eb/bitmap.c (eb_wide_font_gif_size): Likewise. + + * eb/appendix.c (eb_initialize_appendix_catalog): Return + EB_ERR_FAIL_OPEN_CATAPP when failed to open the catalog file. + * eb/book.c (eb_initialize_catalog): Return EB_ERR_FAIL_OPEN_CAT when + failed to open the catalog file. + + * eb/hook.c: Include appendix.h. + + * configure.in (AC_OUTPUT_COMMANDS): Remove `libintl.h', linked + from `libgettext.h' by gettext.m4. + * intl/Makefile.am: Make a symlink from `libgettext.h' to `libintl.h'. + + * eb/zio.c (eb_zopen, eb_zopen2): Support DOS style path, reported + by Kazuhiro Ito. + + * Makefile.am (SUBDIRS): Don't use ${INTL_SUBDIR} for `intl' + because automake complains. + * intl/Makefile.am (INCLUDED_LIBINTL): Use this conditional + to determine whether we build `libintl.la' or not. + * Makefile.am (intl/lib_LTLIBRARIES): Set to $(INTL_LTLIB). + +2000-06-17 Motoyuki Kasahara + + * ebrefile/ebrefile.in: Fix a bug that ebrefile fills the reserved-1 + with 0x00, reported by Takashi NEMOTO. + +2000-06-13 Motoyuki Kasahara + + * eb/keyword.c (eb_search_keyword): Type of 2nd argument is changed + from `const *[]' to `const * const []'. + * eb/multi.c (eb_search_multi): Likewise. + + * configure.in (ZLIBLIBS): Fixed a bug that this variable was not + set when zlib was built from included sources,reported by Kazuhiro + Ito. + * eb/filename.c (eb_canonicalize_file_name_internal for DOS): + EB Library 2.x API code was remained, reported by Kazuhiro Ito. + Fixed. + +2000-06-11 Motoyuki Kasahara + + * ebzip/ebzip.c (zip_file): Type of 2nd argument is changed from + `const char **' to `const char * const *'. + * ebzip/ebzip.c (unzip_file): Likewise + * ebzip/ebzip.c (zip_finfo): Likewise. + + * libebutils/ebutils.c (parse_case_argument): Control reached end of + non-void function. Fixed. + * libebutils/ebzip.c (parse_suffix_argument): Likewise. + * libebutils/getumask.c: Include `sys/stat.h'. + + * eb/book.c (misleaded_book_table): Type is changed from + `const char *[]' to `const char * const[]'. + * eb/error.c (error_messages): Likewise. + +2000-05-27 Motoyuki Kasahara + + * Version 3.0alpha0. + + * configure.in: Add `--enable-pthread', `--with-pthread-cppflags', + `--with-pthread-cflags' and ``--with-pthread-ldflags'. + * configure.in (AC_TRY_LINK): Add a test program that checks Pthread. + + * configure.in (WITH_ZLIB): Renamed to `INCLUDED_ZLIB'. + + * configure.in: Add `--with-gettext-includes' and + `--with-gettext-libraries' options. + + * configure.in (EBCONF_ZLIBINCS, EBCONF_ZLIBLIBS, PTHREAD_CPPFLAGS, + PTHREAD_CFLAGS, PTHREAD_LDFLAGS, EBCONF_INTLINCS, EBCONF_INTLLIBS, + EBCONF_EBINCS, EBCONF_EBLIBS): Substitute these variables, for + generating eb.conf. + * Makefile.am (sysconf_DATA): Add `eb.conf'. + * Makefile.am (CLEANFILES): Add `eb.conf'. + * Makefile.am (EXTRA_DIST): Add `eb.conf.in'. + * Makefile.am (eb.conf): New target. + +2000-05-22 Motoyuki Kasahara + + * configure.in: Remove the `--enable-ja-doc' option. + * Makefile.am (ENABLE_JA_DOC): Remvoe the condition. + * Makefile.am (SUBDIRS): Remove $(JA_DOC_SUBDIR). + + * configure.in (AC_OUTPUT): Add `eb_r/Makefile'. + * Makefile.am (ENABLE_PTHREAD): Add the condition. + * Makefile.am (SUBDIRS): Add $(EB_R_SUBDIR). + * eb_r/Makefile.am: New file. + + * eb/defs.h (EB_Text_Context_Struct): Add `auto_stop_code'. + * eb/text.c (eb_seek_text): Initialize `auto_stop_code' of the + text context in `book'. + * eb/text.c (eb_read_text_internal): Update `auto_stop_code' + when the control sequence 0x41 is seen. + * eb/hook.c (eb_hook_stop_code): Don't assume the control sequence + 0x09 as the stop code. + + * eb/text.h (EB_HOOK_STOPCODE): Renamed to EB_HOOK_STOP_CODE. + +2000-05-21 Motoyuki Kasahara + + * eb/Makefile.am (install-data-hook): Removed. + +2000-05-20 Motoyuki Kasahara + + * libebtuils/Makefile.am (libebutils_a_SOURCES): Add `ebtuils.c'. + * libebtuils/Makefile.am (INCLUDES): Add `-I$(top_srcdir)/intl'. + * libebtuils/ebtuils.c: New file. + * libebtuils/ebtuils.c (output_try_help, output_version, + parse_case_argument, parse_suffix_argument, + parse_subbook_name_argument, find_subbook, fix_file_name, + canonicalize_path): Define these functions. + * libebtuils/ebtuils.c (program_name, program_version, invoked_name): + Define these global variables. + * ebfont/ebfont.c (program_name, program_version, invoked_name): + these global variables are removed. + * ebinfo/ebinfo.c (program_name, program_version, invoked_name): + Likewise. + * ebzip/ebzip.c (program_name, program_version, invoked_name): + Likewise. + * ebfont/ebfont.c (parse_subbook_name_argument, find_subbook, + output_version, output_try_help, canonicalize_path): + these global functions are removed. + * ebinfo/ebinfo.c (output_version, output_try_help): + Likewise. + * ebzip/ebzip.c (output_version, output_try_help, + parse_subbook_name_argument, find_subbook, fix_file_name, + canonicalize_path): + Likewise. + +2000-05-18 Motoyuki Kasahara + + * eb/Makefile.am (EXTRA_DIST): Add `internal.h.in'. + * eb/Makefile.am (CLEANFILES): Defined and add + `stamp-defs-h` and `internal.h' to this macro. + * eb/Makefile.am (BUILT_SOURCES): Defined as `internal.h'. + * eb/Makefile.am (noinst_HEADERS): Add `internal.h'. + * eb/Makefile.am (internal.h, stamp-internal-h): New targets. + +2000-05-14 Motoyuki Kasahara + + * move-if-change: New script. + * Makfile.am (EXTRA_DIST): Add `move-if-change'. + * libebutils/Makefile.am (EXTRA_DIST): Add `ebutils.h.in'. + * libebutils/Makefile.am (CLEANFILES): Defined and add + `stamp-defs-h` and `ebutils.h' to this macro. + * libebutils/Makefile.am (BUILT_SOURCES): Defined as `ebutils.h'. + * libebutils/Makefile.am (noinst_HEADERS): Add `ebutils.h'. + * libebutils/Makefile.am (ebutils.h, stamp-ebutils-h): New targets. + + * eb/error.c, ebfont/ebfont.c, ebinfo/ebinfo.c, ebzip/ebzip.c, + ebzip/filelist.c: Support gettext. + * ebfont/ebfont.c, ebinfo/ebinfo.c, ebzip/ebzip.c: Include + locale.h, libintil.h and ebutils.h. + * ebfont/ebfont.c, ebinfo/ebinfo.c, ebzip/ebzip.c (main): Call + setlocale(), bindtextdomain() and textdomain() when NLS is enabled. + + * ebfont/Makefile.am, ebinfo/Makefile.am, ebzip/Makefile.am + (INCLUDES): Add `-I$(srcdir)/../intl'. + * ebfont/Makefile.am (ebfont_LDADD): Add @INTLLIBS@. + * ebinfo/Makefile.am (ebinfo_LDADD): Likewise. + * ebzip/Makefile.am (ebzip_LDADD): Likewise. + * ebfont/Makefile.am (ebfont_DEPENDENCIES): Add @INTLDEPS@. + * ebinfo/Makefile.am (ebinfo_DEPENDENCIES): Likewise. + * ebzip/Makefile.am (ebzip_DEPENDENCIES): Likewise. + + * po/Makefile.in.in, eb/po/Makefile.in.in: Support DESTDIR. + * po/Makefile.in.in, eb/po/Makefile.in.in (TEXTDOMAIN, top_builddir, + subdir): Defined. + * po/Makefile.in.in, eb/po/Makefile.in.in: Don't use $PACKAGE for + text domain name. Use $TEXTDOMAIN, instead. + * po/Makefile.in.in, eb/po/Makefile.in.in: Don't use `basename'. + * po/Makefile.in.in, eb/po/Makefile.in.in: Use `$(top_builddir)' not + '..'. Use `$(top_srcdir) not `$(srcdir)/.' + * po/Makefile.in.in, eb/po/Makefile.in.in: Use `$(top_builddir)/intl' + not `../intl'. Use `$(top_srcdir)/../intl' not `$(srcdir)/../intl'. + * po/Makefile.in.in, eb/po/Makefile.in.in: Set @localedir@ to + $localedir. + * po/Makefile.in.in, eb/po/Makefile.in.in: Use `$(subdir)' not `po'. + +2000-05-13 Motoyuki Kasahara + + * eb/po: New directory. + * eb/Makefile.am (SUBDIRS): Add `po'. + * configure.in (AC_OUTPUT): Add `eb/po/Makefile.in'. + * configure.in (AC_OUTPUT_COMMANDS): Generate `Makefile' from + `Makefile.in'. + * configuer.in: Subst `localedir'. + * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_LC_MESSAGES, + HAVE_STPCPY): Defined. + + * configure.in (DEPENDENCIES_FOR_LIBZ): Renamed to `ZLIBDEPS'. + * configure.in (LDADD_FOR_LIBZ): Renamed to `ZLIBLIBS'. + * configure.in (INCLUDES_FOR_LIBZ): Renamed to `ZLIBINCS'. + +2000-05-11 Motoyuki Kasahara + + * configure.in (--with-zlib): Renamed to `--with-included-zlib'. + * Invoke gettexize. + * configure.in (ALL_LINGUAS, AM_GNU_GETTEXT): Added. + * Makefile.am (SUBDIRS): Add `intl' and `po'. + * configure.in (AC_OUTPUT): Add `intl/Makefile' and `po/Makefile'. + +2000-05-05 Motoyuki Kasahara + + * acconfig.h (USE_FAKELOG, EB_BUILD_LIBRARY): Remove the definitions. + * eb/Makefile.am (INCLUDES): Add `-DEB_BUILD_LIBRARY'. + * libebutils/Makefile.am (INCLUDES): Defined as `-DUSE_FAKELOG'. + +2000-05-03 Motoyuki Kasahara + + * eb/error.h (EB_ERR_NO_CANDIDATES): Added. + + * eb/language.h (EB_LANG_ENGLISH, EB_LANG_FRENCH, EB_LANG_GERMAN, + EB_LANG_ITALIAN, EB_LANG_SPANISH, EB_LANG_JAPANESE, EB_LANG_DANISH, + EB_LANG_FINNISH, EB_LANG_SWEDISH, EB_LANG_NORWEGIAN, EB_LANG_DUTCH, + EB_LANG_POLISH): Rename _LANG_ to _LANGUAGE_. + * eb/language.h (EB_MSG_WORD_SEARCH, EB_MSG_END_SEARCH, + EB_MSG_KEY_SEARCH, EB_MSG_MENU_SEARCH, EB_MSG_MULTI_SEARCH, + EB_MSG_GRAPHIC_SEARCH, EB_MSG_BOOK_CONTAIN, EB_MSG_ENTER_WORD, + EB_MSG_ENTER_WORDS, EB_MSG_SUCCESSFUL, EB_MSG_ENTRY, EB_MSG_ENTRIES, + EB_MSG_SEARCH_FAIL, EB_MSG_PUSH_NO, EB_MSG_INSERT_DISC, + EB_MSG_CANT_READ, EB_MSG_REINSERT_DISC, EB_MSG_CLEAN_DISC, + EB_MSG_NOT_EB_DISC, EB_MSG_SEARCHING, EB_MSG_CHANGING_BATT, + EB_MSG_DRY_BATT, EB_MSG_CHARGE_END, EB_MSG_BATT_EMPTY, + EB_MSG_BATT_CHANGE, EB_MSG_CANT_CHANGE_BATT, EB_MSG_SELECT_LANGUAGE, + EB_MSG_MENU): Rename _MSG_ to _MESSAGE_. + + * eb/language.h (EB_MESSAGE_INVALID): Defined. + * eb/language.h (EB_LANG_ERROR): Renamed to EB_LANGUAGE_INVALID. + * eb/defs.h (EB_MULTI_INVALID, EB_MULTI_ENTRY_INVALID): Defined. + + * eb/defs.h (EB_CHARCODE_ERROR): Renamed to EB_CHARCODE_INVALID. + * eb/defs.h (EB_WORD_ERROR): Renamed to EB_WORD_INVALID. + * eb/defs.h (EB_TEXT_ERROR): Renamed to EB_TEXT_INVALID. + * eb/defs.h (EB_DISC_ERROR): Renamed to EB_DISC_INVALID. + * eb/defs.h (EB_SUBBOOK_ERROR): Renamed to EB_SUBBOOK_INVALID. + * eb/defs.h (EB_MULTI_ERROR): Renamed to EB_MULTI_INVALID. + * eb/defs.h (EB_MULTI_ENTRY_ERROR): Renamed to + EB_MULTI_ENTRY_INVALID. + * eb/font.h (EB_FONT_ERROR): Renamed to EB_FONT_INVALID. + +2000-03-29 Motoyuki Kasahara + + * ebinfo/ebinfo.c (output_multi_information): Fix the length of + an entry label buffer. + + * eb/stopcode.c (eb_have_stopcode): Renamed to eb_have_stop_code(). + * eb/stopcode.c (eb_stopcode): Renamed to eb_stop_code(). + * eb/hook.c (eb_hook_stopcode): Renamed to eb_hook_stop_code(). + + * eb/defs.h (EB_Appendix_Subbook_Struct): the members `narw_start' + `narw_end' and `narw_page' are renamed to `narrow_start', `narrow_end' + and `narrow_page'. + * eb/def.sh (EB_Appendix_Struct): the member `narw_cache' is renamed + to `narrow_cache'. + * eb/defs.h (EB_Subbook_Struct): the member `narw_current' is + renamed to `narrow_current'. + * eb/defs.h (EB_Text_Context_Struct): the member `narw_flag' is + renamed to `narrow_flag'. + + * eb/defs.h (EB_Alternation_Cache_Struct): the memeber `char_no' is + renamed to `character_number'. + * eb/defs.h (EB_Appendix_Subbook_Struct): the memeber `char_code' is + renamed to `character_code'. + * eb/defs.h (EB_Subbook_Struct): Likewise. + + * eb/error.h (EB_NUM_ERRORS): Renamed to EB_NUMBER_OF_ERRORS. + * eb/def.s (EB_NUM_HOOKS): Renamed to EB_NUMBER_OF_HOOKS. + * eb/def.s (EB_NUM_SEARCH_CONTEXTS): Renamed to + EB_NUMBER_OF_SEARCH_CONTEXTS. + +2000-03-27 Motoyuki Kasahara + + * ebzip/ebzip.c: Don't include `ctype.h'. Define compatible + character test and letter conversion macros. + * ebinfo/ebinfo.c: Likewise. + + * eb/defs.h (EB_EB_MAXLEN_WORD): Renamed to EB_MAX_WORD_LENGTH. + * eb/defs.h (EB_MAXLEN_EB_TITLE): Renamed to EB_MAX_EB_TITLE_LENGTH. + * eb/defs.h (EB_MAXLEN_EPWING_TITLE): Renamed to + EB_MAX_EPWING_TITLE_LENGTH. + * eb/defs.h (EB_MAXLEN_TITLE): Renamed to EB_MAX_TITLE_LENGTH. + * eb/defs.h (EB_MAXLEN_BASENAME): Renamed to EB_MAX_BASE_NAME_LENGTH. + * eb/defs.h (EB_MAXLEN_LANGNAME): Renamed to + EB_MAX_LANGUAGE_NAME_LENGTH. + * eb/defs.h (EB_MAXLEN_MESSAGE): Renamed to EB_MAX_MESSAGE_LENGTH. + * eb/defs.h (EB_MAXLEN_MULTI_LABEL): Renamed to + EB_MAX_MULTI_LABEL_LENGTH. + * eb/defs.h (EB_MAXLEN_ALTERNATION_TEXT): Renamed to + EB_MAX_ALTERNATION_TEXT_LENGTH. + * eb/error.h (EB_MAXLEN_ERROR_MESSAGE): Renamed to + EB_MAX_ERROR_MESSAGE_LENGTH. + + * eb/defs.h (EB_FILENAME_START): Renamed to EB_FILE_NAME_START. + * eb/defs.h (EB_FILENAME_SOUND): Renamed to EB_FILE_NAME_SOUND. + * eb/defs.h (EB_FILENAME_CATALOG): Renamed to EB_FILE_NAME_CATALOG. + * eb/defs.h (EB_FILENAME_LANGUAGE): Renamed to EB_FILE_NAME_LANGUAGE. + * eb/defs.h (EB_FILENAME_VTOC): Renamed to EB_FILE_NAME_VTOC. + * eb/defs.h (EB_FILENAME_WELCOME): Renamed to EB_FILE_NAME_WELCOME. + * eb/defs.h (EB_FILENAME_CATALOGS): Renamed to EB_FILE_NAME_CATALOGS. + * eb/defs.h (EB_FILENAME_HONMON): Renamed to EB_FILE_NAME_HONMON. + * eb/defs.h (EB_FILENAME_HONMON2): Renamed to EB_FILE_NAME_HONMON2. + * eb/defs.h (EB_FILENAME_APPENDIX): Renamed to EB_FILE_NAME_APPENDIX. + * eb/defs.h (EB_FILENAME_FUROKU): Renamed to EB_FILE_NAME_FUROKU. + + * eb/defs.h (EB_DIRNAME_DATA): Renamed to EB_DIRECTORY_NAME_DATA. + * eb/defs.h (EB_DIRNAME_GAIJI): Renamed to EB_DIRECTORY_NAME_GAIJI. + + * eb/defs.h (EB_Font_Struct): Rename the member `filename' to + `file_name'. + + * eb/font.h (EB_ERR_EMPTY_FILENAME): Renamed to EB_ERR_EMPTY_FILE_NAME. + * eb/font.h (EB_ERR_TOO_LONG_FILENAME): Renamed to + EB_ERR_TOO_LONG_FILENAME. + + * eb/error.h (EB_ERR_EMPTY_FILENAME): EB_ERR_EMPTY_FILE_NAME. + * eb/error.h (EB_ERR_TOO_LONG_FILENAME): EB_ERR_TOO_LONG_FILE_NAME. + +2000-02-27 Motoyuki Kasahara + + * eb/defs.h (EB_Search_Context): Add the member `keyword_heading' + for keyword search. + + * eb/text.c, eb/text.h (eb_seek, eb_tell): Renamed to eb_seek_text() + and eb_tell_text(). + +2000-02-10 Motoyuki Kasahara + + * eb/zio.c (eb_zopen_epwzipped): Fix offset passed to lseek(). + Reported by Takashi NEMOTO. + +2000-01-23 Motoyuki Kasahara + + * configure.in (--with-zlib): zlib is detected automatically. + + * acconfig.h (MAILING_ADDRESS, PACKAGE, VERSION, RETSIGTYPE_VOID, + HAVE_STRUCT_UTIMBUF, WITH_SYMBOL_UNDERSCORE, DOS_FILE_PATH, + EXEEXT_EXE): Removed. + * acinclude.m4 (HAVE_STRUCT_UTIMBUF): Specify the third argument + of AC_DEFINE. + * cofigure.in (RETSIGTYPE_VOID): Likewise. + * cofigure.in (EXEEXT_EXE): Likewise. + + * configure.in: Delete the `--enable-samples' option. + * Makefile.am (ENABLE_SAMPLES): Remove the condition variable. + + * doc/Makfile.am (info_TEXINFOS): Remove eb.texi. + * doc/Makfile.am (eb_TEXINFOS): Removed. + * doc/Makfile.am (EXTRA_DIST): Remove `stamp-eb'. + * doc/Makfile.am (eb-ver.texi, stamp-eb): Delete the targets. + + * eb/filename.c: Don't use ctype.h. + + * eb/text.c, eb/text.h (eb_forward_text): New function. + * eb/text.c, eb/eb.h (eb_forward_heading): New function. + * eb/search.c (eb_hit_list_keyword): Use eb_forward_heading() + to get heading position. + +2000-01-22 Motoyuki Kasahara + + * ebfont/ebfont.c (canonicalize_path): New function, copied + from eb/ebzip.c. + * ebzip/ebzip.c (main): Don't call eb_canoncalize_filename() to + canonicalize `out_path'. Use canonicalize_path() instead. + * ebfont/ebfont.c (make_book_fonts): Check whether `book_path' + is "/". + + * eb/setword.c (eb_convert_lower_latin): Also convert alphaet + with an accent mark to the corresponding upper letter. + + * eb/font.c, eb/font.h (eb_font_count): Removed. + * eb/subbook.c, eb/eb.h (eb_subbook_count): Removed. + * eb/appsub.c, eb/eb.h (eb_appendix_subbook_count): Removed. + * eb/language.c, eb/language.h (eb_language_count): Removed. + * eb/message.c, eb/language.h (eb_message_count): Removed. + * eb/multi.c, eb/eb.h (eb_multi_search_count): Removed. + * eb/multi.c, eb/eb.h (eb_multi_entry_count): Removed. + +2000-01-18 Motoyuki Kasahara + + * eb/hook.c (euc2ascii_table_a1, euc2ascii_table_a3): Renamed + to `euc_a1_to_ascii_table' and `euc_a3_to_ascii_table'. + + * eb/defs.h (EB_TEXT_ERROR): Defined. + * eb/text.c (eb_read_text, eb_heading, eb_rawtext): If it returns + with an error, set context mode to `EB_TEXT_ERROR'. + + * ebappendix/ebappendix.in ($copyright): Defined and use it + when `ebappendix --version'. + * ebrefile/ebrefile.in ($copyright): Likewise. + +2000-01-16 Motoyuki Kasahara + + * eb/text.c (eb_text, eb_heading, eb_rawtext): Renamed to + eb_read_text(), eb_read_heading(), eb_read_rawtext(). + + * eb/defs.h (EB_CASE_UNCHANGE, EB_SUFFIX_UNCHANGE): Define the cpp + macros. + + * ebinfo/ebinfo.c (output_error_message): New static function. + * ebinfo/ebinfo.c: Use output_error_message() to output an error + messge. + + * ebzip/ebzip.c (find_subbook): Oputput an error message when + an errorr occurs. + * ebzip/ebzip.c: Return EB_SUBBOOK_ERROR rather than -1 if + the target subbook is not found. + +2000-01-15 Motoyuki Kasahara + + * eb/match.c (eb_match_exactword): Also ignores NULs in the + tail of a pattern. + + * eb/search.c (eb_presearch_word, eb_hit_list_word, + eb_hit_list_keyword, eb_hit_list_multi): Support DUDEN, which + has leaf index pages of fixed length entires. + + * eb/defs.h (Text_Context_Struct): Remove the membsers + `modifier_hook' and `reference_hook'. + * eb/text.c (eb_read_internal): Delete operations to `modifier_hook' + and `reference_hook'. + * eb/text.h (EB_HOOK_NARROW, EB_HOOK_SUBSCRIPT, EB_HOOK_SUPERSCRIPT, + EB_HOOK_EMPHASIS, EB_HOOK_PICTURE, EB_HOOK_MENU, EB_HOOK_SOUND, + EB_HOOK_REFERENCE, EB_HOOK_KEYWORD): Remove these hook codes. + * eb/defs.h (EB_NUM_HOOKS): Updated. + +2000-01-13 Motoyuki Kasahara + + * eb/defs.h (EB_Hook_Struct): The member `function' is pointer + to a function that returns `EB_Error_Code', not `int'. + + * eb/error.h (EB_NO_ERR): Renamed to `EB_SUCCESS'. + + * eb/search.c (EB_PAGE_ID_LEAF, EB_PAGE_ID_START, EB_PAGE_ID_END, + EB_PAGE_ID_HAVE_GROUP): Define these cpp macros. + * eb/search.c (eb_presearch_word, eb_hit_list_word, + eb_hit_list_keyword, eb_hit_list_multi): Use EB_PAGE_ID_* macros + to check page id. + +2000-01-10 Motoyuki Kasahara + + * eb/text.c (eb_read_internal): Discard cache data when read error + occurs. + * eb/search.c (eb_hit_list_word, eb_hit_list_keyword, + eb_hit_list_multi): Likewise. + + * eb/search.c (cache_rest_length): Declare as an auto variable + in eb_read_internal(), not static variable in this file. + * eb/search.c (cache_location, cache_length): New static variables. + * eb/text.c (eb_read_internal): Check cache status before processing + text. + + * eb/eb.c, eb/book.c: All the functions defined in eb/eb.c + are moved to `eb/book.c'. + * eb/eb.c, eb/eb.h (eb_initialize_library, eb_finalize_library): + New functions. + * eb/book.c (eb_initialize, eb_clear): Renamed to + `eb_initialize_book' and `eb_finalize_book'. + * eb/appendix.c (eb_clear_appendix): Renamed to `eb_finalize_appendix'. + + * eb/book.c (eb_finalize_book): Don't call eb_initialize_book(). + Reset variables by itself. + * eb/appendix.c (eb_finalize_appendix): Don't call + eb_finalize_appendix(). Reset variables by itself. + + * ebzip/ebzip.c (canonicalize_path): New function. + * ebzip/ebzip.c (main): Don't call eb_canoncalize_filename() to + canonicalize `out_path'. Use canonicalize_path() instead. + * ebzip/ebzip.c (main): Define `book_path' as an array of char, + rather than a pointer to char. Copy a book's path to it, and + call canonicalize_path() to canonicalize it. + * ebzip/ebzip.c (zip_book, unzip_book, zipinfo_book): Also takes + `book_path' as an argument. Refer it rather than `book->path'. + * ebzip/ebzip.c (zip_book, unzip_book, zipinfo_book): Check whether + `book_path' and/or `out_path' is "/". + +2000-01-09 Motoyuki Kasahara + + * eb/zio.c (eb_zclaer): dispose `cache_buffer' only when it is not + NULL. + * eb/zio.c (eb_zclaer): Renamed to eb_zfinalize(). + * eb/zio.c (eb_zinitialize): Add the new function. + * eb/zio.c (eb_zinitialize, eb_zread_ebzipped, eb_zread_epwzipped): + Allocate memory to `cache_buffer' in the new function eb_zinitialize() + rather than eb_zread_ebzipped() or eb_zread_epwzipped(). + + * eb/text.c (eb_text, eb_heading): Don't initialize `default_hookset'. + * eb/text.c (default_hookset): Move to `hook.c' and renamed to + `eb_default_hookset'. + * eb/internal.h (eb_default_hookset): Declare as an external variable. + * eb/hook.c, eb/internal.h (eb_initialize_default_hookset): + Add the function. + + * ebzip/ebzip.c (main): Go to `die' when eb_subbook_list() fails, + or when an unknown subbook is specified. + * eb/ebzip.c (main): Call eb_clear() at the end of the routine. + + * eb/search.c (eb_hit_list): Fully re-written to support + keyword and multi search. + + * eb/search.c (eb_initialize_search): Initialize also + `search_contexts[0].code' in a book. + * eb/search.c (eb_presearch_word, eb_hit_list_word, + eb_hit_list_keyword, eb_hit_list_multi): Take a search context + as a second argument to record search parameters. + * eb/search.c (eb_search_word_internal): Use search context + in a target book. + * eb/search.c (eb_hit_list): Likewise. + * eb/search.c (eb_hit_list_internal): Likewise. + * eb/exactword.c (eb_search_exactword): Likewise. + * eb/word.c (eb_search_word): Likewise. + * eb/endword.c (eb_search_endword): Likewise. + +2000-01-08 Motoyuki Kasahara + + * eb/defs.h (EB_BOOK_NONE): Define the cpp macro. + * eb/text.c (eb_initialize_text, eb_read_internal): Use EB_BOOK_NONE + rather than -1, to represent no cache data is buffered. + * eb/search.c (eb_initialize_search, eb_presearch_word): Likewise. + + * eb/appsub.c (eb_initialize_appendix_subbook, + eb_set_appendix_subbook): Define the `succeeded' label, and + go to there when there is nothing to be done in the latter of the + function. + * eb/font.c (eb_set_font) Likewise. + * eb/language.c (eb_set_language): Likewise. + * eb/narwalt.c (eb_narrow_character_text_jis, + eb_narrow_character_text_latin): Likewise. + * eb/narwfont.c (eb_have_narrow_font): Likewise. + eb/search.c (eb_presearch_word, eb_hit_list_word, eb_hit_list_keyword, + eb_hit_list_multi): Likewise. + * eb/subbook.c (eb_initialize_subbook, eb_set_subbook): Likewise. + * eb/widealt.c (eb_wide_character_text_jis, + eb_wide_character_text_latin): Likewise. + * eb/widefont.c (eb_have_wide_font): Likewise. + + * eb/appendix.c, eb/appsub.c, eb/copyright.c, eb/eb.c, + eb/exactword.c, eb/filename.c, eb/font.c, eb/graphic.c, eb/hook.c, + eb/keyword.c, eb/language.c, eb/menu.c, eb/message.c, eb/multi.c, + eb/narwalt.c, eb/narwfont.c, eb/search.c, eb/setword.c, eb/stopcode.c, + eb/subbook.c, eb/text.c, eb/widealt.c, eb/widefont.c, eb/word.c: + Define the `failed' label in most functions. Go to there + if error. + + * eb/defs.h (EB_SUBBOOK_ERROR): Define the cpp macro. + * eb/appsub.c (eb_appendix_subbook): Return EB_SUBBOOK_ERROR + rather than -1 if error. + * eb/subbook.c (eb_subbook): Likewise. + + * eb/defs.h (EB_DISC_ERROR): Define the cpp macro. + * eb/eb.c (eb_disc_type): Return EB_DISC_ERROR rather than -1 + if error. + * eb/defs.h (EB_CHARCODE_ERROR): Define the cpp macro. + * eb/eb.c (eb_character_code): Return EB_CHARCODE_ERROR rather than + -1 if error. + + * eb/font.h (EB_FONT_ERROR): Define the cpp macro. + * eb/eb.c (eb_font): Return EB_FONT_ERROR rather than -1 if error. + + * eb/language.h (EB_LANG_ERROR): Define the cpp macro. + * eb/setword.c (eb_language): Return EB_LANG_ERROR rather than + -1 if error. + + * eb/setword.c (eb_reverse_word_latin): Don't check whether + `word_length' is 0. This is not needed. + * eb/setword.c (eb_reverse_word_jis): Don't check whether + `word_length' is less than 2. This is not needed. + + * eb/messages.c (eb_initialize_messages): Return 0 or -1. + + * eb/narwalt.c (eb_narrow_alt_start, eb_narrow_alt_end): + Return -1 if an error occurs. + * eb/widealt.c (eb_wide_alt_start, eb_wide_alt_end): Likewise. + +2000-01-07 Motoyuki Kasahara + + * eb/defs.h (EB_Appendix_Struct, EB_Book_Struct, EB_Hookset_Struct): + Add a member named `error'. + * eb/appendix.c (eb_initialize_appendix): Initialize `error' to 0. + * eb/eb.c (eb_initialize): Initialize `error' to 0. + * eb/hook.c (eb_initialize_hookset): Initialize `error' to 0. + + * eb/setword.c (eb_fix_word_latin, eb_fix_word_jis): + Takes the argument `book' as the first argument. + + * eb/appendix.c, eb/appsub.c, eb/hook.c, eb/narwalt.c, eb/widealt.c: + Set `appendix->error' instead of `eb_error', if an error occurs. + * eb/copyright.c, eb/eb.c, eb/error.c, eb/font.c, eb/graphic.c, + eb/keyword.c, eb/language.c, eb/match.c, eb/menu.c, eb/message.c, + eb/multi.c, eb/narwfont.c, eb/search.c, eb/setword.c, eb/stopcode.c, + eb/subbook.c, eb/text.c, eb/uint.c, eb/widefont.c: Set `book->error' + instead of `eb_error', if an error occurs. + * eb/hookset.c: Set `hookset->error' instead of `eb_error', + if an error occurs. + + * eb/filename.c (eb_canonicalize_filename, + eb_canonicalize_filename_internal, eb_canonicalize_appendix_filename): + Rename the original `eb_canonicalize_filename()' to `...internal()', + and add the argument `error'. + Add the new function `eb_canonicalize_filename()' and + `eb_canonicalize_appendix_filename()'. + * filename.c (eb_catalog_filename_internal, + eb_fix_filename_internal): Call `eb_canonicalize_filename_internal()', + instead of `eb_canonicalize_filename'. + * eb/eb.c (eb_bind): Call `eb_canonicalize_appendix_filename()', + instead of `eb_canonicalize_filename'. + + * eb/error.c, eb/error.h (eb_error): Removed. + * eb/error.c, eb/error.h (eb_error, eb_appendix_error, + eb_hookset_error): Add these functions. + * eb/error.c, eb/error.h (eb_error_message, eb_error_message2): + The original eb_error_message2() is renamed to eb_error_message(). + The original eb_error_message() is overwritten. + + * eb/narwfont.c (eb_narrow_font_width2, eb_narrow_font_size2): + Don't set `eb_error'. + * eb/widefont.c (eb_wide_font_width2, eb_wide_font_size2): + Likewise. + * eb/bitmap.c (eb_narrow_font_xbm_size, eb_narrow_font_xpm_size, + eb_narrow_font_gif_size, eb_wide_font_xbm_size, + eb_wide_font_xpm_size, eb_wide_font_gif_size): + Likewise. + + * eb/text.c, eb/text.h (eb_initialize_hookset, eb_set_hook, + eb_set_hooks): Move to `eb/hook.c'. + * eb/hook.c, eb/text/h (eb_hook_stopcode_dummy, + eb_hook_stopcode_mixed): Removed. + + * Makefile.am (EXTRA_DIST): Add `ChangeLog.0'. + + * eb/font.c (eb_font_count): Return -1 if an error occurs. + + * eb/appendix.c (eb_bind_appendix): Don't call + eb_initialize_appendix(), but eb_clear_appendix(). + +2000-01-06 Motoyuki Kasahara + + * eb/defs.h (EB_Subbook): Rename the member `multi' to `multis'. + + * eb/font.c (eb_initialize_eb_fonts, eb_initialize_epwing_fonts): + Use memmove(), not memcpy(). + * eb/message.c (eb_initialize_messages): Likewise. + * eb/text.c (eb_read_internal): Likewise. + * eb/font.c, eb/message.c, eb/text.c: Check for HAVE_MEMMOVE. + * eb/memmove.c: New file. + * eb/internal.h: Declare eb_memmove(). + * eb/Makefile.am (libeb_la_SOURCES): Add `memmove.c'. + * configure.in (AC_CHECK_FUNCS): Add `memmove'. + + * eb/search.c: Include string.h, and check HAVE_MEMCPY and + MEMMOVE. + + * libebutils/memset.c (memset): Type of return value is `VOID *', + not `void *'. + +2000-01-05 Motoyuki Kasahara + + * eb/defs.h (EB_SEARCH_EXACTWORD, EB_SEARCH_WORD, EB_SEARCH_ENDWORD, + EB_SEARCH_KEYWORD, EB_SEARCH_MULTI,EB_SEARCH_NONE): Defined. + * eb/defs.h (EB_Search_Code, EB_Text_Code): Defined. + * eb/defs.h (EB_Multi_Search_Struct, EB_Search): Defined. + * eb/defs.h (EB_Search_Context_Struct, EB_Search_Context): Defined. + * eb/defs.h (EB_Multi_Entry_Struct, EB_Multi_Entry): Merged to + `EB_Search_Struct' and `EB_Search'. + * eb/defs.h (EB_Search_Context_Struct): Add the member `label' and + `candidates_page', and rename `page' to `index_page'. + * eb/defs.h (EB_Multi_Search_Struct): Add the member `search', and + change the type of `entries' from `EB_Multi_Entry' to `EB_Search'. + * eb/defs.h (EB_Subbook_STruct): Change the type of `multi' from + `EB_Search[]' to `EB_Multi_Search[]'. + + * eb/eb.h: Declaration of functions defined in eb/filename.c + are moved to `eb/internal.h'. + + * eb/search.c: Move eb_have_word_search() and eb_search_word() + to the new file eb/word.c. + * eb/search.c: Move eb_have_endword_search() and eb_search_endword() + to eb/endword.c, new file. + * eb/search.c: Move eb_have_endword_search() and eb_search_endword() + to the new file eb/endword.c. + * eb/search.c: Move eb_have_exactword_search() and + eb_search_exactword() to the new file eb/exactword.c. + + * eb/multi.c, eb/eb.h (eb_multi_entry_have_exactword_search, + eb_multi_entry_have_word_search, eb_multi_entry_have_endword_search, + eb_multi_entry_have_keyword_search): Removed. + * eb/multi.c, eb/eb.h (eb_multi_entry_have_candidates, + eb_multi_entry_candidates): Added these functions. + * eb/multi.c, eb/eb.h (eb_search_multi): Added these functions. + + * eb/error.h (EB_ERR_DIFF_SUBBOOK, EB_ERR_DIFF_BOOK, + EB_ERR_NO_PREV_SEARCH, EB_ERR_NO_PREV_CONTENT, + EB_ERR_NO_SUCH_MULTI_ID, EB_ERR_NO_SUCH_ENTRY_ID): Removed. + * eb/error.h (EB_ERR_FAIL_OPEN_START, EB_ERR_FAIL_READ_START, + EB_ERR_FAIL_SEEK_START, EB_ERR_UNEXP_START, EB_ERR_NO_START): + Removed these obsolete error code names that are remained for + backword compatibility. + + * eb/error.h (EB_ERR_TOO_MANY_WORDS, EB_ERR_NO_WORD): Add these + to the error code list. + + * eb/hook.c (euc2ascii_table_a1, euc2ascii_table_a3) Declared + as `const'. + + * eb/keyword.c: Define `eb_search_keyword()'. + + * eb/setword.c, eb/internal.h (eb_set_keyword, eb_set_multiword): + Added these functions. + + * eb/subbook.c (eb_initialize_indexes): Initialize `label' and + `candidates_page', the struct members in `EB_Search'. + + * eb/search.c (comparison_result, word, canonicalized_word, page, + offset, page_id, entry_count, entry_index): These static variables + are moved to struct members of `EB_Search_Context'. + * eb/search.c (subbook_code): The static variable are removed. + * eb/search.c (book_code, page_buffer, bufp): These static variables + are renamed to `cache_book_code', `cache_buffer' and `cachep'. + * eb/search.c (cache_page): New static variable. + + * eb/search.c (eb_search_word_internal): Renamed to + `eb_presearch_word'. + * eb/search.c (eb_hit_list_internal): Renamed to `eb_hit_list_word'. + * eb/search.c (eb_hit_list_word): Read a page at the beginning of + the loop, instead of the tail. + * eb/search.c (eb_hit_list_keyword, eb_hit_list_multi): New functions. + * eb/defs.h (EB_Book_Struct): Add the member `search_contexts'. + * eb/defs.h (EB_Search_Context_Struct): Defined. + + * eb/ebinfo.c (output_multi_information): Output `with candidates' + instead of `search methods'. + +2000-01-03 Motoyuki Kasahara + + * eb/setword.c (jisx0208_table, jisx0201_table, long_vowel_table, + voiced_consonant_table): Declared as `const'. + * eb/hook.c (euc2ascii_table_a1, euc2ascii_table_a3): Likewise. + + * eb/defs.h, eb/internal.h: All functions defined in `eb/filename.h' + are declared in `eb/internal.h', not `eb/defs.h'. + + * eb/text.h: Use `EB_UINT_FUNCTION', not `EB_UINT_FUNC'. + +1999-12-28 Motoyuki Kasahara + + * eb/bitmap.c (gif_preamble): Renamed to `gif_default_preamble'. + * eb/bitmap.c (eb_bitmap_to_gif): Don't modify `gif_default_preamble'. + +1999-12-26 Motoyuki Kasahara + + * eb/text.c (eb_read_internal): Discard cache buffered in + `cache_buffer' if different book's data are cached. + * eb/text.c (eb_read_internal): Update `book->text_context.location' + when the pointed character is prossessed. + + * eb/text.c (eb_initialize_text): Rewritten. + + * eb/text.c (eb_text): Don't check for EB_ERR_NO_PREV_CONTENT, + EB_ERR_DIFF_BOOK or EB_ERR_DIFF_SUBBOOK error. + * eb/text.c (eb_heading): Likewise. + + * eb/text.c, eb_text.h (eb_tell): Add this function. + + * eb/text.c (eb_set_hook): Don't test whether `hook->code' is + EB_HOOK_NULL. + + * eb/text.c (bookcode, pagebuf, pagebufp, pagerest): Renamed to + `cache_book_code`, `cache_buffer`, `cachep` and `cache_rest_length'. + * eb/text.c (callcount, subcode, location, workbuf, worklen, + modhook, refhook, narwflag, charapp, bookeof, textend, skipcode): + Remove these static variables. + * eb/defs.h (EB_Book_Struct): Add the member `text_context'. + * eb/defs.h (EB_Text_Context_Struct): Defined. + + * eb/bitmap.c, eb/copyright.c, eb/ebunzip1.c, eb/error.c, + eb/filename.c, eb/graphic.c, eb/hook.c, eb/menu.c, eb/setword.c, + eb/stopcode.c, eb/uint.c: Include `internal.h'. + * eb/uint.c: Undefine the cpp macros eb_uint1, eb_uint2, eb_uint3 + and eb_uint4. + + * eb/defs.h, eb/appendix.h, eb/eb.h, eb/error.h, eb/font.h, + eb/internal.h, eb/language.h, eb/text.h (EB_P): + Defined in eb/defs.h only. + + * eb/appsub.c, eb/appendix.h (eb_appendix_subbook2): Removed. + + * eb/defs.h, eb/text.h (EB_Hook, EB_Hookset): Move definitions + from eb/text.h to eb/defs.h, + * eb/defs.h (EB_Book_Struct): Rename the member `sub_count' to + `subbook_count', `sub_current' to `subbook_current', `lang_count' + to `language_count' and `lang_current' to `language_current'. + * eb/defs.h (EB_Subbook_Struct): Rename the member `sub_file' to + `text_file', `word_alpha' to `word_alphabet' and `endword_alpha' + to `endword_alphabet'. + * eb/defs.h (EB_Language_Struct): Rename the member `msg_count' to + `message_count'. + * eb/defs.h (EB_Appendix_Struct): Rename the member `sub_count' to + `subbook_count', and `sub_current' to `subbook_current'. + * eb/defs.h (EB_Alternation_Cache_Struct): Rename the member + `charno' to `char_no'. + * eb/defs.h (EB_Huffman_Node_Struct): Change the type of the members + `left` and `right` to `EB_Huffman_Node'. + * eb/defs.h (EB_Huffman_Node, EB_Zip, EB_Alternation_Cache, + EB_Appendix_Subbook, EB_Appendix, EB_Font, EB_Language, + EB_Multi_Entry, EB_Search, EB_Subbook, EB_Text_Context, EB_Book, + EB_Position, EB_Hit, EB_Hook, EB_Hookset): Typedef'ed first, + and then define their conrete structs. + * eb/defs.h, eb/error.h (EB_Error_Code): + Move definition from eb/error.h to eb/defs.h. + * eb/defs.h, eb/text.c (EB_MAXLEN_TEXT_WORK, EB_NUM_HOOKS): + Move definitions from eb/text.c to eb/defs.h. + * eb/defs.h, eb/text.c (CONTENT_TEXT, CONTENT_HEADING, + CONTENT_RAWTEXT): Move definitions from eb/text.c to eb/defs.h, + and renamed to EB_TEXT_TEXT, EB_TEXT_HEADING and EB_TEXT_RAWTEXT. + Add the new content type macro `EB_TEXT_NONE'. + * eb/defs.h (EB_WORD_ALPHA): Renamed to `EB_WORD_ALPHABET'. + + * eb/error.c (messages): Add the `const' modifier. + +1999-12-13 Motoyuki Kasahara + + * eb/error.h: Rename the error code + EB_ERR_FAIL_OPEN_START to EB_ERR_FAIL_OPEN_TEXT, + EB_ERR_FAIL_READ_START to EB_ERR_FAIL_READ_TEXT, + EB_ERR_FAIL_SEEK_START to EB_ERR_FAIL_SEEK_TEXT, + EB_ERR_UNEXP_START to EB_ERR_UNEXP_TEXT, + and EB_ERR_NO_START to EB_ERR_NO_TEXT. + The old error code names are obsoleted, but still available. + + * eb/defs.h (EB_WORD_ALPHA): Renamed to `EB_WORD_ALPHABET'. + * eb/defs.h (EB_Alternation_Cache): Rename the structure member + `charno' to `char_no'. + * eb/defs.h (EB_Appendix): Rename the structure member + `sub_file' to `appendix_file', + `sub_count' to `subbook_count' + and `sub_current' to `subbook_current'. + * eb/defs.h (EB_Language): Rename the structure member + `msg_count' to `message_count'. + * eb/defs.h (EB_Book): Rename the structure member + `sub_file' to `text_file', + `word_alpha' to `word_alphabet', + `endword_alpha' to `endword_alphabet', + `sub_count' to `subbook_count', + `sub_current' to `subbook_current'. + `sub_count' to `subbook_count', + and `lang_current' to `language_current'. + +1999-12-12 Motoyuki Kasahara + + * eb/error.c (messages): Modify the error message of the error + code 39 (EB_ERR_NO_START). + + * eb/text.c, eb/internal.h (eb_initialize_text): Add an argument + `book'. Initialize variables only when a code of `book' is + equal to `bookcode'. + * eb/seaarch.c, eb/internal.h (eb_initialize_search): Likewise. + + * eb/text.c (eb_text, eb_heading, eb_rawtext): Check `bookcode' + for the EB_ERR_NO_PREV_CONTENT error when `callcount' is 0. + + * eb/text.c (eb_tell): Add a new function. + + * eb/text.c (eb_text_internal): Don't go to `at_end' when + no enough space is left on the text buffer. + diff --git a/lib/ebu/ChangeLog.2 b/lib/ebu/ChangeLog.2 new file mode 100644 index 0000000..775864b --- /dev/null +++ b/lib/ebu/ChangeLog.2 @@ -0,0 +1,1409 @@ +2003-12-28 Motoyuki Kasahara + + * Version 4.0. + + * eb/defs.h: Do not be generated from `eb/defs.h.in' any longer. + * eb/Makefile.am (EXTRA_DIST, MAINTAINERCLEANFILES): Delete + `stamp-defs-h' and `defs.h.in'. + * eb/Makefile.am (BUILT_SOURCES): Delete `defs.h'. + + * configure.ac (AC_ARG_ENABLE): Add `--enable-ebnet' option. + * eb/Makefile.am (libeb_ebnet_sources): Define the variable according + with ENABLE_EBNET. + + * samples/Makefile.am (noinst_PROGRAMS): Add `booklist'. + * doc-ja/Makefile.am (eb_ja_TEXINFOS, MAINTAINERCLEANFILES): + add `booklist-c.texi'. + + * eb/zio.h: Fix TIME_WITH_SYS_TIME check code. + + * eb/defs.h: Include `sysdefs.h'. Use `EB_ENABLE_PTHREAD' and + `EB_ENABLE_EBNET', instead of `EBCONF_ENABLE_PTHREAD' and + `EBCONF_ENABLE_EBNET'. + * eb/Makefile.am (CLEANFILES): Add `stamp-sysdefs-h' and `sysdefs.h'. + * eb/Makefile.am (BUILT_SOURCES): Add `sysdefs.h' + * eb/Makefile.am (nodist_pkginclude_HEADERS): Defined. + +2003-12-22 Motoyuki Kasahara + + * m4/eb3.m4: Renamed to `eb4.m4'. + * m4/Makefile.am (m4data_DATA, EXTRA_DIST): Rename `eb4.m4' to + `eb3.m4'. + + * Use Autoconf-2.59, Automake-1.8 and Libtool-1.5. + * m4/eb4.m4, m4/gettext.m4, m4/herrno.m4, m4/in6addr.m4, + m4/lcmessage.m4, m4/libtool.m4, m4/sockaddrin6.m4, + m4/utimbuf.m4, m4/voidpointer.m4: Quote function name to be defined + in AC_DEFUN. + + * m4/eb4.m4 (AC_REQUIRE): Add AC_C_PROTOTYPES. + +2003-12-21 Motoyuki Kasahara + + * eb.conf.in: Always define EBCONF_ENABLE_EBNET. + * m4/eb3.m4: Check EBCONF_ENABLE_EBNET. + * eb/defs.h.in: Use EBCONF_ENABLE_EBNET instead of ENABLE_EBNET. + + * eb/error.c, eb/error.h: Add two error codes EB_ERR_UNBOUND_BOOKLIST + and EB_ERR_NO_SUCH_BOOK. + * eb/defs.h, eb/booklist.c, eb/booklist.h: APIs for EB_BookList + are revised. eb_booklist_book_count(), eb_booklist_book_name() + and eb_booklist_book_title() return EB_Error_Code. + * eb/defs.h, eb/booklist.c, eb/booklist.h: Support for pthread. + * eb/defs.h, eb/booklist.c, eb/booklist.h: Add internal object counter + for EB_BookList. + +2003-11-23 Motoyuki Kasahara + + * config.guess, config.sub, depcomp, install-sh, missing, + mkinstalldirs, doc/mdate-sh, doc-ja/mdate-sh: + Import from Autocomake-1.7.9. + +2003-11-22 Motoyuki Kasahara + + * m4/Makefile.am (EXTRA_DIST): Add `voidpointer.m4'. + + * eb/search.c (eb_hit_list_keyword, eb_hit_list_multi): + Don't perform comparison of input keyword and group entry element. + + * eb/readtext.c (eb_read_text_internal): Fix a bug that EB Library + crashes when it outputs a debug log. + +2003-11-19 Motoyuki Kasahara + + * configure.ac (AC_C_VOID_POINTER, AC_C_PROTOTYPES): Added. + * configure.ac (AC_C_VOID_POINTER): Added. + * m4/voidpointer.m4: Define `AC_C_VOID_POINTER'. + * ebrefile/ebrefile.c, ebfont/ebfont.c, eb/zio.c, eb/memmove.c, + eb/zio.h, eb/urlparts.c, eb/urlparts.h, eb/linebuf.c, eb/build-pre.h, + eb/linebuf.h, eb/defs.h.in, eb/filename.c, eb/log.c, eb/multiplex.c, + eb/getaddrinfo.c, eb/eb.h, eb/getaddrinfo.h, eb/ebnet.c, + ebstopcode/ebstopcode.c, libebutils/getopt.c, libebutils/yesno.h, + libebutils/getopt.h, libebutils/ebutils.c, libebutils/makedir.h, + libebutils/getumask.h, libebutils/samefile.h, libebutils/memset.c, + ebinfo/ebinfo.c, ebzip/ebzip.h: + Use PROTOTYPES and VOID, instead of __STDC__ and WIN32. + + * eb/log.c, eb/build-pre.h, eb/eb.h: Use `stdarg.h' if __STDC__ or + MSVC is defined. + +2003-11-12 Motoyuki Kasahara + + * eb/match.c (eb_match_word_jis_kana): Rename the function to + `eb_match_word_kana_group'. + Add variant function eb_match_word_kana_group_single(). + * eb/match.c (eb_exact_match_word_jis_kana): Rename the function to + `eb_exact_match_word_kana_group'. + Add variant function eb_match_exact_word_kana_group_single(). + +2003-10-19 Motoyuki Kasahara + + * Version 4.0beta3. + + * ebstopcode/ebstopcode.c (parse_text_position_argument): Add check + codes for page:offset. + +2003-10-18 Motoyuki Kasahara + + * ebstopcode/ebstopcode.c: Add `--text-position' (-p) option. + +2003-10-14 Motoyuki Kasahara + + * doc-ja/c2texi: Expand tabs to spaces. + +2003-10-13 Motoyuki Kasahara + + * eb/subbook.c, eb/urlparts.c, eb/build-pre.h, eb/filename.c, + eb/ebnet.c, libebutils/ebutils.c, ebfont/ebfont.c, + ebrefile/ebrefile.c, ebstopcode/ebstopcode.c, ebzip/ebzip.c, + ebzip/ebzip.h: Don't redefine or use ctype macros such as isalpha(). + Define and use ASCII_ISXXX() macros instead. + +2003-10-04 Motoyuki Kasahara + + * eb/Makefile.am (stamp-defs-h, stamp-build-post-h, stamp-widealt-h, + stamp-widefont-h): Insert "automatically generated from ..." messages + to the source files. + + * m4/gettext.m4 (eb_GNU_GETTEXT): Also checks for iconv.h, + libcharset.h, iconv_open(), libiconv_open(), locale_charset() and + -liconv. Also add the ICONVINCS and ICONVLIBS variables. + * m4/gettext.m4 (eb_GNU_GETTEXT): Don't add iconv_includes to INTLINCS. + * configure.ac (AC_CHECK_FUNCS): Add nl_langinfo(). + * configure.ac (AC_CHECK_HEADERS): Add `langinfo.h'. + + * ebfont/Makefile.am (ebfont_LDADD, ebfont_DEPENDENCIES): + Add $(ICONVLIBS) and $(ICONVDEPS) respectively. + * ebinfo/Makefile.am (ebinfo_LDADD, ebinfo_DEPENDENCIES): Ditto + * ebrefile/Makefile.am (ebrefile_LDADD, ebrefile_DEPENDENCIES): Ditto + * ebstopcode/Makefile.am (ebstopcode_LDADD, ebstopcode_DEPENDENCIES): + Ditto + * ebzip/Makefile.am (ebzip_LDADD, ebzip_DEPENDENCIES): Ditto + + * libebutils/puts_eucjp.c: New file. + * libebutils/Makefile.am (libebutils_a_SOURCES): Add puts_eucjp.c + * libebutils/Makefile.am (INCLUDES): Add @ICONVINCS@ + + * ebinfo/ebinfo.c: Print EUC-JP strings as the current locale + encoding with fputs_eucjp_to_locale(). + * ebstopcode/ebstopcode.c: Ditto. + + * ebzip/ebzip.c (main): Also recognize "ebzipinfo.exe" and "ebzipinf" + as the `invoked_base_name' when EXEEXT_EXE is defined. + +2003-10-03 Motoyuki Kasahara + + * eb/build-post.h.in (LOCALEDIR): Renamed to EB_LOCALEDIR. + * eb/build-post.h.in (LOCALEDIR): Set to localedir() if WIN32. + * ebutils/ebutils.h.in (LOCALEDIR): Ditto. + + * eb/Makefile.am (dist_libeb_la_SOURCES, nodist_libeb_la_SOURCES): + Move `widealt.c' and `widefont.c' from nodist_ to to dist_. + * eb/Makefile.am (CLEANFILES, MAINTAINERCLEANFILES): + Move `stamp-wide-alt-h', `stamp-wide-font-h', `widealt.c' and + `widefont.c' from CLEANFILES to MAINTAINERCLEANFILES. + * eb/Makefile.am (EXTRA_DIST): Add ``stamp-wide-alt-h' and + `stamp-wide-font-h'. + + * eb/Makefile.am (dist_pkginclude_HEADERS, nodist_pkginclude_HEADERS): + Move `defs.h' from nodist_ to to dist_. + * eb/Makefile.am (CLEANFILES, MAINTAINERCLEANFILES): + Move `stamp-defs-h' from CLEANFILES to MAINTAINERCLEANFILES. + * eb/Makefile.am (EXTRA_DIST): Add ``stamp-defs-h'. + +2003-09-23 Motoyuki Kasahara + + * configure.ac (AC_INIT): Set version to 4.0beta3. + + * eb/build-pre.h, eb/refile.c, ebfont/ebfont.c, eb/urlparts.c, + ebstopcode/ebstopcode.c, libebutils/ebutils.c, ebzip/ebzip.h + Undefine ctype macros if defined. + + * ebzip/unzipfile (EB_P): Delete definition of the cpp macro. + + * eb/ebnet.c (ebnet_get_booklist): Fix a bug. Don't call close() + directly to close a connection. Call ebnet_disconnect_socket() + instead. + + * configure.ac (AC_CHECK_FUNCS): Delete `syslog' and `vsyslog'. + Add `dup2' instead. + * eb/ebnet.c (ebnet_read): Change type of the first argument + `file' from `int' to `int *'. It means the given file descriptor + might be changed by ebnet_read(). + + * eb/multiplex.c: On WIN32, call closesocket() instead of close() + to close a socket. + + * eb/zio.c, eb/build-post.h.in (is_ebnet_url): Don't call + strncasecmp(). + + * eb/filename.c (eb_fix_path_name_suffix, eb_compose_path_name, + eb_compose_path_name2, eb_compose_path_name3): Supprt for EBNET URL + handle on WIN32. + * eb/ebnet.c (ebnet_initialize): Call WSAStartup() if WIN32. + * eb/muliplex.c (ebnet_connect_socket): Replace dup() with + WSADuplicateSocket() if WIN32. + + * ebinfo/ebinfo.c (output_booklist): Call eb_initialize_library() + and eb_finalize_library(). + +2003-09-21 Motoyuki Kasahara + + * eb/match.c (eb_match_word_jis_kana): Fix a bug that it never returns + 0 even if `word' matches `pattern'. + + * eb/keyword.c (eb_search_keyword): Perform `word search' for each + keyword. + eb/multi.c (eb_search_multi): Perform `word search' for each entry + if the entry doesn't have candidates. + + * libebutils/makedir.c (make_missing_directory): Support for WIN32. + * eb/log.c (eb_log): Ditto. + * eb/linebuf.c: Ditto. + * eb/getaddrinfo.c, eb/getaddrinfo.h: Ditto. + * eb/dummyin6.c, eb/dummyin6.h: Ditto. + * eb/linebuf.c (read_line_buffer, binary_read_line_buffer): For WIN32, + use recv() rather than read(). + * eb/filename.c (eb_path_name_zio_code): Support for Win32. + + * libebutils/getopt.c: Include if exists. + + * eb/Makefile.am (noinst_HEADERS): `build-post.h' is now + nodist_noinst_HEADERS. + +2003-09-01 Motoyuki Kasahara + + * Version 4.0beta2. + + * eb/defs.h.in (EB_Search_Context_Struct): Add `compare_pre'. + * eb/match.c (eb_pre_match_word, eb_exact_pre_match_word_jis, + eb_exact_pre_match_word_latin): New functions for pre-search. + *eb/search.c (eb_presearch_word): Use `compare_pre' for comparision. + + * eb/match.c (eb_match_word_jis_kana, eb_match_exactword_jis_kana): + Fix bugs in comparision of Kana characters. + +2003-08-30 Motoyuki Kasahara + + * Version 4.0beta1. + + * eb/error.c, eb/error.h: Add EB_ERR_NO_ALT and EB_ERR_NO_STOPCODE. + * eb/stopcode.c: Set stop_code[0] and stop_code[1] to -1 if an error + occurs. + + * samples/Makefile.am (noinst_PROGRAMS): Add `appendix'. + * samples/appendix.c: New file. + +2003-08-24 Motoyuki Kasahara + + * eb/multiplex.c (ebnet_connect_socket): Fix a bug in duplication + of socket entry. + + * eb/narwfont.c (eb_open_narrow_font_file): Fix bugs in LOG() calls. + +2003-08-15 Motoyuki Kasahara + + * configure.ac (AC_INIT): Set version to "4.0beta1". + +2003-08-14 Motoyuki Kasahara + + * eb/Makefile.am (dist_libeb_la_SOURCES): Add `booklist.c'. + * eb/Makefile.am (dist_pkginclude_HEADERS): Add `booklist.h'. + * eb/booklist.c: New file. + * eb/defs.h.in (EB_BookList_Entry, EB_BookList): New structured types. + * eb/ebnet.h (EBNET_MAX_BOOK_TITLE_LENGTH): Defined. + * eb/ebnet.c (ebnet_get_booklist): New function. + * ebinfo/ebinf.c (output_booklist): New function. + * ebinfo/ebinf.c (main): Add `--booklist' and `-l' options. + * ebinfo/ebinfo.c (output_information, output_multi_information): + Return `EB_Error_Code' instead of `int'. + +2003-08-09 Motoyuki Kasahara + + * eb/appendix.in: delete `--case' and `--suffix' options. + Now ebappendix checks all existing directories and files. + +2003-07-30 Motoyuki Kasahara + + * configure.ac, ebstopchk/ebstopchk.c, ebstopchk/Makefile.am: + Rename `ebstopchk' to `ebstopcode'. + + * Makefile.am (EXTRA_DIST): Add `misc/ebdump', `misc/ebfixlog' and + `misc/eb-index-info'. + +2003-07-24 Motoyuki Kasahara + + * eb/bitmap.c (eb_wide_font_xbm_size, eb_wide_font_xpm_size, + eb_wide_font_gif_size, eb_wide_font_bmp_size): Fix bugs that they + returned size of narrow font. + + * eb/defs.h.in (EB_Search_Context_Struct): Rename `compare_pre' and + `compare_hit' to `compare_single' and `compare_group'. + + * eb/match.c: Revise string comparison functions. + * eb/word.c (eb_search_word), eb/endword.c (eb_search_endword), + eb/exactword.c (eb_search_exactword), eb/keyword.c (eb_search_keyword), + eb/multi.c (eb_search_multi): Likewise. + eb/search.c (eb_hit_list_word, eb_hit_list_keyword, + eb_hit_list_multi): Likewise. + +2003-07-19 Motoyuki Kasahara + + * eb/narwfont.c (eb_open_narrow_font_file): Fix a bug that it + cannot open a font file in EB/EBG/EBXA/S-EBXA/EBXA-C. + + * eb/subbook.c (eb_load_subbook_indexes): Fix a bug in word search + that EB Library sometimes cannot have found words. + * eb/match.c (eb_match_word_latin, eb_match_word_jis, + eb_exact_match_word_latin, eb_exact_match_word_jis): Ditto. + +2003-07-11 Motoyuki Kasahara + + * eb/ebnet.c (ebnet_read): Output a log message upon return. + +2003-07-03 Motoyuki Kasahara + + * eb/book.c (misleaded_book_table): + Add "Japanese-English-Spanish Jiten (YRRS-060)". + +2003-06-11 Motoyuki Kasahara + + * Version 4.0beta0. + + * eb/multiplex.c (ebnet_connect_socket): Fix a bug that it tries to + connect with an empty address. + +2003-06-07 Motoyuki Kasahara + + * eb/defs.h.in (EB_Font_Struct): Add `glyphs'. + * eb/narwfont.c (eb_load_narrow_font): Split it into + eb_open_narrow_font_file() and eb_load_narrow_font_header(). + * eb/narwfont.c (eb_load_narrow_font_glyphs): New function. + * eb/font.c (eb_load_fonts): Renamed to eb_load_font_headers(). + Don't call eb_set_font(). + * eb/font.c (eb_set_font, eb_narrow_character_bitmap_jis, + eb_narrow_character_bitmap_latin): Load font glyph data to memory. + + * eb/narwfont.c (eb_narrow_font_size2): Add missing `break' statements + in a `switch' block. + +2003-06-05 Motoyuki Kasahara + + * configure.ac (AC_INIT): Set version to 4.0beta0. + + * eb/appendix.c (eb_initialize_appendix, eb_bind_appendix, + eb_finalize_appendix): Add ebnet supprt codes. + * eb/ebnet.c (ebnet_bind_appendix, ebnet_finalize_appendix): + New functions. + * eb/defs.h.in (EB_Appendix_Struct): Add `ebnet_file'. + +2003-05-22 Motoyuki Kasahara + + * eb/ebnet.c, eb/multiplex.c: Implement automatic reconnection. + + * eb/multiplex.c (hello_hook, bye_hook): They are now static variables + in this file. + * eb/multiplex.c (ebnet_set_hello_hook, ebnet_set_bye_hook): + New functions. + * eb/multiplex.c (ebnet_initialize): + Renamed to `ebnet_initialize_multiplex'. + * eb/ebnet.c (ebnet_initialize): New function. + * eb/multiplex.c (ebnet_mark_as_lost_sync): + Renamed to `ebnet_set_lost_sync'. + +2003-05-12 Motoyuki Kasahara + + * eb/font.c (eb_load_fonts): Load 8x16 and 16x16 fonts only for + efficiency. + +2003-05-07 Motoyuki Kasahara + + * m4/Makefile.am (EXTRA_DIST): Add `herrno.m4', `in6addr.m4', + `sockaddrin6.m4' and `sockinttypes.m4'. + * configure.ac (AC_CHECK_LIB): Check resolv, bind, nsl and socket + libraries. + +2003-05-06 Motoyuki Kasahara + + * configure.ac (AC_INIT): Set version to 4.0alpha0. + * configure.ac (LIBEB_VERSION_INFO): Set to `8:0:0'. + * configure.ac (EB_VERSION_MAJOR, EB_VERSION_MINOR): + Set EB_VERSION_MAJOR to `4' and EB_VERSION_MINOR to `0'. + +2003-05-05 Motoyuki Kasahara + + * configure.ac (AC_ARG_ENABLE): Add `--enable-ipv6' option for + ebnet support. + * configure.ac (AC_REPLACE_FUNCS): Add `strtol'. + * configure.ac (AC_TYPE_IN_PORT_T, AC_TYPE_SA_FAMILY_T, + AC_TYPE_SOCKLEN_T, AC_STRUCT_IN6_ADDR, AC_STRUCT_SOCKADDR_IN6, + AC_STRUCT_SOCKADDR_STORAGE, AC_DECL_IN6ADDR_ANY, + AC_DECL_IN6ADDR_LOOPBACK): Added for ebnet support. + * configure.ac (AC_CHECK_FUNCS): Add getaddrinfo(), getnameinfo() + and gai_strerror() for ebnet support. + * eb/Makefile.am (dist_libeb_la_SOURCES): Add `ebnet.c', + `multiplex.c', `linebuf.c', `urlparts.c', `getaddrinfo.c' + and `dummyin6.c' for ebnet support. + * configure.ac (noinst_HEADERS): Add `dummyin6.h', `ebnet.h', + `getaddrinfo.h', `linebuf.h' and `urlparts.h' for ebnet support. + * eb/build-pre.h (addrinfo, getaddrinfo, freeaddrinfo, getnameinfo, + gai_strerror, in6addr_any, in6addr_loopback): Define if missing. + * eb/erro.c, eb/error.h (EB_ERR_EBNET_UNSUPPORTED, + EB_ERR_EBNET_FAIL_CONNECT, EB_ERR_EBNET_SERVER_BUSY, + EB_ERR_EBNET_NO_PERMISSION): Add the error codes. + * eb/build-post.h.in, eb/zio.c (is_ebnet_url): Defined. + + * eb/eb.c (eb_initialize_library, eb_finalize_library): Add ebnet + support codes. + * eb/book.c (eb_initialize_book, eb_bind, eb_finalize_book): Ditto. + * eb/zio.c (eb_read_raw): Ditto. + * eb/zio.c (eb_open_raw, eb_close_raw, eb_lseek_raw): New functions. + Any other functions in eb/zio.c must not call open(), close(), + lseek() or read() directly. + + * eb/ebzip.c (main): Complain if book path is ebnet URL. + +2003-04-26 Motoyuki Kasahara + + * eb/build-post.h.in (EB_MAX_RELATIVE_PATH_LENGTH): Defined. + +2003-03-29 Motoyuki Kasahara + + * configure.ac (AC_REPLACE_FUNCS): Add strtol.c. + * libebutils/strtol.c: New file. + + * configure.ac (AC_CONFIG_FILES): Add `ebstopchk/Makefile'. + * Makefile.am (SUBDIRS): Add `ebstopchk'. + * ebstopchk/ebstopchk.c, ebstopchk/Makefile.am: New files. + * po-ebutils/Makefile.in (POTFILES): + Add `$(top_srcdir)/ebstopchk/ebstopchk.c'. + +2003-03-05 Motoyuki Kasahara + + * Version 3.3.2. + + * configure.ac (LIBEB_VERSION_INFO): Change LIBEB_VERSION_INFO from + 7:0:2 to 7:2:1. The previous version 7:0:2 is wrong. + + * configure.ac (AC_INIT): Set version to 3.3.2. + + * eb/book.c (misleaded_book_table): Add `Nichi-Ei-Futsu Jiten' + YRRS-059. + +2003-03-01 Motoyuki Kasahara + + * Version 3.3.1. + + * configure.ac (LIBEB_VERSION_INFO): Change LIBEB_VERSION_INFO from + 7:0:1 to 7:0:2. + * configure.ac (AC_INIT): Set version to 3.3.1. + +2003-02-28 Motoyuki Kasahara + + * eb/match.c (eb_match_canonicalized_word, + eb_exact_match_canonicalized_word): If first `length' characters + of `canonicalized_word' and `pattern' are equivalent, the functions + return 0. This change is for EPWING Genius Eiwa Daijiten. + +2003-02-16 Motoyuki Kasahara + + * eb/readtext.c (eb_read_text, eb_read_heading, eb_read_text_internal, + eb_forward_text, eb_backward_text): Fix bugs in call of LOG(). + +2003-02-11 Motoyuki Kasahara + + * eb/multi.c (eb_initialize_multi_searches): Fix a bug that it + doesn't initialize multi search entries correctly. + +2003-02-07 Motoyuki Kasahara + + * Version 3.3. + + * configure.ac (AC_INIT): Set VERSION to 3.3. + +2003-02-01 Motoyuki Kasahara + + * eb/binary.c (eb_read_binary_generic): Fix a bug that it cannot + read an MPEG file correctly. + +2003-01-12 Motoyuki Kasahara + + * Version 3.3beta3. + + * doc-ja/Makefile.am (eb-ver.texi, stamp-eb): Add missing targets. + * doc-ja/Makefile.am (EXTRA_DIST): Add `stamp-eb'. + + * eb/multi.c (eb_load_multi_searches): Set index style flags. + + * configure.ac (AC_INIT): Set version to `3.3beta3'. + +2002-10-30 Motoyuki Kasahara + + * Version 3.3beta2. + + * configure.ac (AC_INIT): Set version to 3.3beta2. + + * eb/bitmap.c (eb_narrow_font_xbm_size, eb_narrow_font_xpm_size, + eb_narrow_font_gif_size, eb_narrow_font_bmp_size, + eb_wide_font_xbm_size, eb_wide_font_xpm_size, + eb_wide_font_gif_size, eb_wide_font_bmp_size): Fix bugs that + those functions always return EB_ERR_NO_SUCH_FONT, reported by + NISHIKAWA. + + * m4/Makefile.am: Install `eb3.m4' in `$(datadir)/aclocal', + rathar than `$(pkgdatadir)', suggested by Takashi NEMOTO. + + * eb/book.c (eb_load_catalog_epwing): Fix minor bugs, reported + by Takashi NEMOTO. + +2002-10-08 Motoyuki Kasahara + + * eb/subbook.c (eb_load_subbook_indexes): Get index location + using `subbook->index_page'. + +2002-10-07 Motoyuki Kasahara + + * eb/appsub.c (eb_set_appendix_subbook, eb_set_appendix_subbook_eb, + eb_set_appendix_subbook_epwing): Fix error recovery codes. + * eb/subbook.c (eb_set_subbook, eb_set_subbook_eb, + eb_set_subbook_epwing): Ditto. + * eb/narwfont.c (eb_load_narrow_font): Ditto. + * eb/font.c (eb_set_font): Ditto. + +2002-10-06 Motoyuki Kasahara + + * eb/defs.h.in (EB_Subbook_Struct): add the `initialized' member. + * eb/font.c (eb_initialize_fonts): Reset `font->initialized'. + * eb/font.c (eb_load_fonts): New internal function. + * eb/narwfont.c (eb_load_narrow_font): Don't complain if it cannot + open a font file. Set `font->initialized' upon success. + * eb/subbook.c (eb_set_subbook): Call eb_load_fonts(). + + * eb/subbook.c (eb_set_subbook, eb_load_subbook): Set + `subbook->initialized' by eb_set_subbook(). + +2002-09-28 Motoyuki Kasahara + + * Version 3.3beta1. + + * eb/book.c (eb_load_catalog_epwing): Don't complain when it fails + to read extended information block. + + * configure.ac (AC_INIT): Set version to `3.3beta1'. + +2002-09-26 Motoyuki Kasahara + + * configure.ac (AM_CONFIG_HEADER): Use `AC_CONFIG_HEADER' instead. + * configure.ac (AC_CYGWIN, AC_MINGW32): Removed. + * configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Package name and version + are set with AC_INIT, not AM_INIT_AUTOMAKE. + +2002-09-08 Motoyuki Kasahara + + * eb/defs.h.in (EB_Text_Context): Rename `text_end_flag' to + `text_status'. + * eb/defs.h.in (EB_Text_Status_Code): Define the type and its + possible values. + * eb/readtext.c (eb_forward_text): Fix a bug that eb_forward_text() + doesn't return EB_ERR_END_OF_CONTENT when the current file pointer + is at 1f03. + +2002-09-05 Motoyuki Kasahara + + * eb/appsub.c (eb_load_appendix_subbook): Fix a bug that the function + resets alt-text data for local characters if the appendix doesn't + define stop code. + +2002-08-30 Motoyuki Kasahara + + * eb/multi.c (eb_multi_label): Generate labels written in ASCII + if the book is written in ISO 8859-1. + +2002-08-24 Motoyuki Kasahara + + * Version 3.3beta0. + + * configure.ac (AM_INIT_AUTOMAKE): Set version to `3.3beta0'. + * configure.ac (EB_VERSION_MINOR): Set to 3. + * configure.ac (LIBEB_VERSION_INFO): Set to 7:0:1. + + * samples/font.c: New sample program. + * samples/Makefile.am (noinst_PROGRAMS): Add `font'. + * doc-ja/Makefile.am (eb_ja_TEXINFOS): add `font-c.texi'. + +2002-08-23 Motoyuki Kasahara + + * decomp, install-sh, mkinstalldirs, missing: Imported from + Automake-1.6.3. + + * eb/text.h: add EB_HOOK_BEGIN_IN_COLOR_BMP and + EB_HOOK_BEGIN_IN_COLOR_JPEG. + * eb/text.c: support those hooks for handling of inline color graphic. + +2002-08-21 Motoyuki Kasahara + + * eb/refile.c (refile_catalog): Fix a bug that extended information + blocks of eliminated subbooks are copied to `catalogs.new'. + +2002-08-20 Motoyuki Kasahara + * eb/binary.c (eb_set_binary_mono_graphic, eb_set_binary_gray_graphic): + Don't read data from `honmong', but `honmon' or `honmon2' when + the book is EPWING. + + * eb/defs.h.in (EB_SIZE_EBZIP_HEADER): Removed. + +2002-08-17 Motoyuki Kasahara + + * eb/defs.h.in (EB_Book_Struct): Delete `version'. + * eb/defs.h.in (EB_Subook_Struct): Add `text_hint_zio_code', + `graphic_hint_zio_code' and `sound_hint_zio_code'. + + * eb/book.c (eb_load_catalog): Revised. + Get text, graphic and sound file names from the `catalogs' file, + if the book is EPWING. + * eb/subbook.c (eb_set_subbook_epwing): Likewise. + * eb/filename.c (eb_find_file_name): `target_file_name' can be + equal to `found_file_name'. + + * eb/build-post.h.in (EB_FILE_NAME_START, EB_FILE_NAME_HONMON, + EB_FILE_NAME_APPENDIX, EB_FILE_NAME_FUROKU): Defined. + * eb/defs.h.in (EB_SIZE_EB_CATALOG, EB_SIZE_EPWING_CATALOG): + Moved to `eb/built-post.h.in'. + + * eb/build-post.h.in (EB_MAX_SEARCH_TITLES): Defined. + * eb/defs.h.in (EB_MAX_MULTI_SEARCHES): Change the value from 8 + to 10. + * eb/defs.h.in (EB_MAX_MULTI_TITLE_LENGTH): Defined. + * eb/defs.h.in (EB_Subbook_Struct): Add `search_title_page'. + * eb/defs.h.in (EB_Multi_Search_Struct): Add `title'. + * eb/multi.c (eb_load_multi_titles, eb_multi_title): New functions. + * eb/ebinfo.c (output_multi_information): Also output search titles. + +2002-08-16 Motoyuki Kasahara + + * Version 3.2.3. + + * eb/subbook.c (eb_set_subbook_epwing): Open `honmon2' for + sound or graphic file if `honmong' or `honmons' doesn't exist. + * eb/binary.c (eb_set_binary_wave): Fix a bug that the function + composes broken WAVE header. + + * eb/text.h, eb/readtext.c: Define `EB_HOOK_BEGIN_DECORATION' and + `EB_HOOK_END_DECORATION', requested from Kenichi SUTO. + +2002-06-10 Motoyuki Kasahara + + * Version 3.2.2. + + * configure.ac (AM_INIT_AUTOMAKE): Set version to 3.2.2. + * configure.ac (LIBEB_VERSION_INFO): Change the version info from + 6:1:0 to 6:2:0. + + * eb/appsub.c (eb_load_appendix_subbook): Fix a bug that EB Library + complains about absenseof alternation text definition. + + * missing, install-sh, mkinstalldirs, depcomp, doc/mdate-sh, + doc-ja/mdate-sh: Imported from automake-1.6.1. + + * libebutils/ebutils.c (output_version): Shorten the version info + massage. + +2002-03-21 Motoyuki Kasahara + + * ebzip/copyfile.c (ebzip_copy_file): fix type of the variable + `in_length'. + +2002-03-13 Motoyuki Kasahara + + * Version 3.2.1. + + * Import zlib-1.1.4. + + * eb/readtext.c (eb_is_stop_code): Fix a bug that it cannot + find stop-code when using appendix. + + * configure.ac (AM_INIT_AUTOMAKE): Set version to 3.2.1. + * configure.ac (LIBEB_VERSION_INFO): Change it from 6:0:0 to 6:1:0. + +2002-02-09 Motoyuki Kasahara + + * Version 3.2. + + * configure.ac(AM_INIT_AUTOMAKE): Set version to 3.2. + +2002-01-23 Motoyuki Kasahara + + * Version 3.2beta3. + + * po-eb/Makefile.in, po-ebutil/Makefile.in (DESTDIR): + Don't set DESTDIR in those files. + + * eb/filename.c (eb_find_file_name): Return a filename with highest + preference. + + * eb/zio.h (ZIO_P): Defined. + * eb/zio.c (LOG): Generate log codes if EB_BUILD_LIBRARY is defined. + + * eb/bitmap.c, eb/binary.c, eb/readtest.c: Supress warnings by + "gcc -Wconversion". + +2002-01-22 Motoyuki Kasahara + + * m4/eb3.m4 (AC_REQUIRE): Also AC_FUNC_VPRINTF is required. + + * eb/memmove.c (memmove): The function name should be eb_memmove(). + * eb/strcasecmp.c (eb_strcasecmp, eb_strncasecmp): Revised. + * libebutils/strcasecmp.c (strcasecmp, strncasecmp): Revised. + + * eb/build-post.h.in, eb/eb.h: Move declation of eb_enable_log() + and eb_disable_log() from `eb/build-post.h.in' to `eb/eb.h'. + * eb/log.c (eb_log_stderr): Do noting if the system doesn't have + vprintf() or dopront(). + * eb/log.c (eb_initialize_log): New function. + Definition of the EB_DEBUG environment variable is checked here. + * eb/log.c (eb_set_log_function, eb_enable_log, eb_disable_log): + Call eb_initialize_log() if not initialized yet. + + * config.guess: Use "2002-01-02". + * config.sub: Use "2002-01-10". + * depcomp, missing, mkinstalldirs: Import from Automake-1.5b. + + * configure.ac (AM_INIT_AUTOMAKE): Set version to 3.2beta3. + + * filename.c (eb_canonicalze_path_name): Delete "./" and "." + at the beginning of a given path name. + +2002-01-19 Motoyuki Kasahara + + * libebutils/getopt.c, libebutils/getopt.h: Delete `optreset' support + that is local extension to POSIX2. + + * Version 3.2beta2. + + * ebfont/ebfont.c (main): Stop parsing command line options when + getopt_long() returns -1 not EOF. + * ebinfo/ebinfo.c (main): Ditto. + * ebrefile/ebrefile.c (main): Ditto. + * ebzip/ebzip.c (main): Ditto. + * libebutils/getopt.c, libebutils/getopt.h, libebutils/getopt1.c: + Use getopt_long() taken from NetBSD, not from GLIBC. + * libebutils/Makefile.am (libebutils_a_SOURCES): Delete getopt1.c. + + * eb/hook.c, eb/search.c, eb/subbook.c, eb/zio.c, ebrefile/ebrefile.c, + ebzip/sebxa.c, ebzip/unzipfile.c, ebzip/zipfile.c, + libebutils/getumask.c: Supress warnings by "gcc -Wconversion". + +2002-01-18 Motoyuki Kasahara + + + * configure.ac (AM_INIT_AUTOMAKE): Set version to "3.2beta2". + + * eb/zio.c (zio_unzip_slice_ebzip1): Fix a decompression bug. + + * eb/defs.h (EB_MULTI_ENTRY_INVALID): Deleted. + + * configure.ac (EB_VERSION_MAJOR, EB_VERSION_MINOR): AC_SUBST + variables. + * eb/Makefile.am (nodist_pkginclude_HEADERS): Add defs.h. + * eb/Makefile.am (pkginclude_HEADERS): use dist_pkginclude_HEADERS + instead. + * eb/defs.h: Now this file is generated from eb/defs.h.in by Makefile. + * eb/defs.h.in: New file. + * eb/Makefile.am (BUILT_SOURCES): Add defs.h. + * eb/Makefile.am (EXTRA_DIST): Add defs.h.in. + * eb/Makefile.am (CLEANFILES): Add stamp-defs-h and defs.h. + * eb/Makefile.am (defs.h, stamp-defs-h): New targets. + + * eb/Makefile.am (nodist_libeb_la_SOURCES): Add widealt.c and + widefont.c. + * eb/Makefile.am (libeb_la_SOURCES): use dist_libeb_la_SOURCES instead. + + * eb/Makefile.am (dist_noinst_HEADERS): Add ebutils.h. + * eb/Makefile.am (noinst_HEADERS): use nodist_noinst_HEADERS instead. + + * configure.ac (AC_ARG_ENABLE): Delete --enable-debug option. + * eb/build-post.h.in (LOG): Revised. + * eb/build-post.h.in (eb_log_flag): New global variable. + * eb/log.c (eb_enable_log, eb_disable_log): New functions. + * eb/log.c (eb_set_log_function): Also set zio log function. + * eb/log.c (eb_log, eb_log_stderr): Mutx lock with `log_mutex' is + done by eb_log_stderr(), not eb_log(). + * eb/zio.c (zio_log_function, zio_log_flag): New variables. + * eb/zio.c (zio_enable_log, zio_disable_log, zio_set_log_function, + * eb/zio.c (LOG): Revised. + zio_log): New functions. + + * eb/hook.c (eb_set_hooks): Log debug messages if `eb_log_flag' + is not 0. + * eb/keyword.c (eb_search_keyword): Ditto. + * eb/multi.c (eb_search_multi): Ditto. + + * eb/eb.c (eb_initialize_library): Enable debug mode if the + EB_DEBUG environment variable is defined. + +2002-01-01 Motoyuki Kasahara + + * Version 3.2beta1. + + * po-eb/Makefile.in, po-ebutils/Makefile.in (CATALOGS): Renamed + to `MOFILES'. + * po-eb/Makefile.in, po-ebutils/Makefile.in (POFILES): Added. + * po-eb/Makefile.in, po-ebutils/Makefile.in (DISTFILES): Add POFILES. + + * eb/text.h (EB_HOOK_BEGIN_IN_COLOR_BMP, EB_HOOK_BEGIN_IN_COLOR_JPEG, + EB_HOOK_END_IN_COLOR_GRAPHIC): Removed. + * eb/text.h (EB_HOOK_BEGIN_GRAPHIC_REFERENCE, + EB_HOOK_END_GRAPHIC_REFERENCE, EB_HOOK_GRAPHIC_REFERENCE): Added. + * eb/readtext.c (eb_read_text_internal): Add handling of 1f4c and 1f6c + control sequences. + + * eb/zio.c (eb_read_ebzip, eb_unzip_slice_ebzip): Uncompress data + with small buffer. + * eb/zio.h (ZIO_MAX_EBZIP_LEVEL): Changed from 3 to 5. + +2001-12-16 Motoyuki Kasahara + + * eb/zio.c (zio_unzip_slice_ebzip1): Fix a memory leak bug. + +2001-11-25 Motoyuki Kasahara + + * eb/readtext.c (eb_read_rawtext): Fix a bug in handling of context + code, reported by Takashi NEMOTO. + + * eb/bitmap.c (eb_narrow_font_bmp_size, eb_wide_font_bmp_size, + eb_bitmap_to_bmp): New functions. + + * eb/font.c (main): `error_code' was used uninitialized. Fixed. + +2001-11-16 Motoyuki Kasahara + + * eb/ebzip1.c (ebzip1_slice): We must call deflateEnd() even when + deflate() doesn't succeed. + * eb/subbook.c (eb_set_subbook_epwing): We assume that "honmons" + in EPWING6 CD-ROM has been compressed, not plain. + +2001-11-11 Motoyuki Kasahara + + * eb/ebzip.c (eb_unzip_slice_epwing6): Fix a bug that it cannot + uncompress a page of compression_type != 0, reported by ISHIKAWA + Naoya. + +2001-11-05 Motoyuki Kasahara + + * eb/binary.c (eb_unset_binary): Fix typo in a log message. + * eb/subbook.c (eb_unset_subbook): Ditto. + + * eb/subbook.c (eb_set_subbook): Fix a bug that the library + opens a directory with open() if there isn't "honmons" but "honmon2". + This problem is reported by Yamagata san. + +2001-11-01 Motoyuki Kasahara + + * eb/binary.c (eb_set_binary_mono_graphic): For Kanjigen (EB), + allow the 0x1f31 escape sequence with arguments of 8 bytes, + reported by Yamagata san. + +2001-10-27 Motoyuki Kasahara + + * Version 3.2beta0. + + * doc-ja/Makefile.am (info_TEXINFOS): List in one line to avoid + a bug of GNU automake-1.5. + + * configure.ac (AC_ARG_ENABLE): Add `--enable-samples'. + * Makefile.am (SAMPLES_SUBDIR): New variable. + * Makefile.am (SUBDIRS): Add $(SAMPLES_SUBDIR). + * samples/Makefile.am, samples/disctype.c, samples/subbook.c, + samples/word.c: Revised. + * samples/initexit.c, samples/text.c: New files. + + * configure.ac (LIBEB_VERSION_INFO): Set to `6:0:0'. + +2001-10-26 Motoyuki Kasahara + + * m4/libtool.m4, ltmain.sh: Import libtool-1.4.2. + +2001-10-25 Motoyuki Kasahara + + * eb/error.h (EB_ERR_TEXT_END): Renamed to `EB_ERR_END_OF_CONTENT'. + + * doc-ja/Makefile.am (info_TEXINFOS): Add `eb-ja.texi'. + * doc-ja/Makefile.am (eb_ja_TEXINFOS): Defined. + * doc-ja/Makefile.am (C2TEXI): Defined. + * doc-ja/eb-ja.texi: Added. + * doc-ja/Makefile.am (EXTRA_DIST): Add `c2texi'. + + * doc-ja/c2texi: Delete copyright notice, #ifdef and #endif lines. + +2001-10-23 Motoyuki Kasahara + + * eb/build-post.h.in (EB_TEXT_NONE): Renamed to EB_TEXT_SEEKED. + * eb/error.h (EB_ERR_NO_PREV_SEEK): New error code. + * eb/readtext.c (eb_read_text, eb_read_heading, eb_read_rawtext, + eb_forward_text, eb_backward_text): If text_context code is + EB_TEXT_INVALID, return EB_ERR_NO_PREV_SEEK. + + * eb/readtext.c (eb_backward_text): Fix a bug that it misses + detecting the backward location. + +2001-10-22 Motoyuki Kasahara + + * eb/defs.h (EB_Appendix_Subbook_Struct): Rename `stop0' to + `stop_code0', and `stop1' to `stop_code1' respectively. + + * eb/text.c, eb/readtext.c: Rename text.c to readtext.c, and + create text.c, again. + * eb/Makefile.am (libeb_la_SOURCES): Add `readtext.c'. + + * eb/readtext.c (eb_backward_text): New function. + + * configure.ac (AM_INIT_AUTOMAKE): Set version to 3.2beta0. + +2001-10-20 Motoyuki Kasahara + + * eb/text.h (EB_HOOK_STOP_CODE): Removed. + * eb/error.h (EB_ERR_STOP_CODE): Removed. + * eb/hook.c: (eb_hook_stop_code): Removed. + * eb/text.c (eb_is_stop_code): New function. + * eb/text.c (eb_reset_text_context): Don't reset `location'. + * eb/text.c (eb_seek_text, eb_read_text, eb_read_heading, + eb_read_rawtext, eb_forward_text, eb_forward_heading): Use + eb_reset_text_context(). + * eb/error.h (EB_ERR_STOP_CODE): Removed. + * eb/error.h (EB_ERR_TEXT_END): New error code. + + * eb/text.c (eb_read_text_internal): Add the `forward_only' argument. + * eb/text.c (eb_forward_text): Remove the `hookset' argument. + * eb/text.c (eb_forward_text, eb_forward_heading): Revised. + * eb/defs.h (EB_Text_Context_Struct): Delete `in_step'. + + * eb/search.c (eb_reset_search_context): Fix log format. + * eb/search.c (eb_initialize_default_hookset): Ditto. + +2001-10-11 Motoyuki Kasahara + + * eb/narwfont.c (eb_load_narrow_font): Check range of character + numbers strictly. + * eb/appsub.c (eb_load_appendix_subbook): Likewise. + + * eb/narwfont.c (eb_load_narrow_font): Close a font file if the + number of local character is 0. + +2001-10-05 Motoyuki Kasahara + + * eb/text.c (eb_is_text_stopped): New function. + +2001-10-03 Motoyuki Kasahara + + * m4/Makefile.am (EXTRA_DIST, pkgdata_DATA): Remove `ssizet.m4'. + + * eb/filename.c (eb_path_name_zio_code): Fix a bug in path name + adjustment. + + * eb/hook.c (eb_hook_newline): Use `EB_SUCCESS', not `0'. + + * eb/narwfont.c (eb_load_narrow_font): Log on exit. + +2001-10-01 Motoyuki Kasahara + + * eb/log.c (eb_log): Add missing va_end() call. + + * eb/defs.h (EB_MAX_KEYWORDS, EB_NUMBER_OF_SEARCH_CONTEXTS): They + are now aliases of EB_MAX_MULTI_ENTRIES. + +2001-09-27 Motoyuki Kasahara + + * m4/eb3.m4 (AC_REQUIRE): Don't request `AC_TYPE_SSIZE_T'. + Check with AC_CHECK_TYPE(ssize_t, int), instead. + * m4/ssizet.m4: Removed. + * configure.ac (AC_TYPE_SSIZE_T): Removed. Use AC_CHECK_TYPE instead. + +2001-09-24 Motoyuki Kasahara + + * eb/subbook.c (eb_load_all_subbooks): Upon return, unset subbook. + + * eb/defs.h: Include . + * eb/defs.h (EB_MAX_PATH_LENGTH): New macro. + * eb/build-pre.h (PATH_MAX): Removed. Use EB_MAX_PATH_LENGTH instead. + + * m4/eb3.m4 (AC_CHECK_HEADERS): Defined. Check `limits.h'. + + * eb/multi.c (eb_multi_entry_count): New function. + * eb/multi.c (eb_multi_entry_list): Revised. + New implementation is based on eb_multi_entry_count(). + * ebinfo/ebinfo.c (output_multi_information): + Use eb_multi_entry_count() instead of eb_multi_entry_list(). + +2001-09-20 Motoyuki Kasahara + + * ebfont/ebfont.c, ebinfo/ebinfo.c, ebrefile/ebrefile.c, + ebzip/ebzip.c (main): Check return value of eb_initialize_library(). + +2001-09-08 Motoyuki Kasahara + + * ebzip/copyfile.c, ebzip/sebxa.c, ebzip/unzipbook.c, + ebzip/unzipfile.c, ebzip/zipbook.c, ebzip/zipfile.c, + ebzip/zipinfobook.c, ebzip/zipinfofile.c: Don't include "eb.h", + "error.h", "font.h" nor "build-post.h", reported by satomii. + * ebzip/ebzip.h: Include "build-post.h", reported by satomii. + + * ebrefile/ebrefile.c (main): Fix the bug of the order of + arguments passed to refile_book(), reported by satomii. + + * ebzip/ebzip1.c, eb/defs.h: Don't use `EB_SIZE_EBZIP_MARGIN'. + + * eb/binary.h: Delete declaration of eb_initialize_binary(), reported + by Takashi NEMOTO. + * eb/log.c: Include instead of if `WIN32' is + defined, requested by satomii. + * eb/zio.h: In function declaration, describe types of arguments if + `WIN32' is defined, requested by satomii. + + * libebutils/ebutils.c (canonicalize_path): Add DOS version. + +2001-08-30 Motoyuki Kasahara + + * Version 3.1. + + * configure.ac (AC_INIT): Don't pass unique file as an argument. + Use AC_CONFIG_SRCDIR instead. + * configure.ac (AC_PREREQ): Set to 2.52. + +2001-08-29 Motoyuki Kasahara + + * configure.ac (AM_INIT_AUTOMAKE): Set version to 3.1. + + * eb/zio.c (zio_open_plain): Set `slice_size'. + * eb/zio.c (zio_unzip_slice_sebxa): If copy offset is out of range, + fill 0x00. + + * po-ebutils/Makefile.am (POTFILES): Add `ebzip/sebxa.c'. + * ebzip/Makefile.am (ebzip_SOURCES): Add `sebxa.c'. + * ebzip/sebxa.c: New file. + + * ebzip/copyfile.c: Include "eb.h", "error.h" and "build-post.h". + * ebzip/unzipbook.c (ebzip_unzip_book_eb): Fix START file after + compression. + + * ebzip/unzipfile.c (ebzip_unzip_file): Splited into + ebzip_unzip_file() ebzip_unzip_start_file() and + ebzip_unzip_file_internal(). + * ebzip/zipfile.c (ebzip_zip_file): Splited into + ebzip_zip_file() ebzip_zip_start_file() and + ebzip_zip_file_internal(). + * ebzip/zipinfofile.c (ebzip_zipinfo_file): Splited into + ebzip_zipinfo_file() ebzip_zipinfo_start_file() and + ebzip_zipinfo_file_internal(). + + * ebzip/zipinfobook.c (ebzip_zipinfo_book_eb): + Call ebzip_zipinfo_start_file() rather than ebzip_zipinfo_file() to + inspect START file. + * ebzip/zipbook.c (ebzip_zip_book_eb): + Call ebzip_zip_start_file() rather than ebzip_zip_file() to + compress START file. + * ebzip/unzipbook.c (ebzip_unzip_book_eb): + Call ebzip_unzip_start_file() rather than ebzip_unzip_file() + to uncompress START file. + +2001-08-28 Motoyuki Kasahara + + * eb/zio.c (zio_unzip_slice_sebxa): Fix a critical bug that any + uncompression requests cannot be performed correctly. + +2001-08-14 Motoyuki Kasahara + + * eb/match.c (eb_match_word_latin, eb_exact_match_word_latin): + The function names ware exchanged by mistake, reported by + HASEGAWA Masafumi. Fixed. + * eb/appendix.h (eb_load_all_appendix_subbooks): Add missing + function declaration, reported by HASEGAWA Masafumi. + * eb/defs.h (EB_VERSION_MINOR): Set the macro to `1', reported + by HASEGAWA Masafumi. + + * configure.ac (AC_ARG_ENABLE, AC_ARG_WITH): Use AC_HELP_STRING. + * m4/gettext.m4 (AC_ARG_ENABLE, AC_ARG_WITH): Likewise. + * m4/eb3.m4 (AC_ARG_ENABLE, AC_ARG_WITH): Likewise. + * configure.ac (AC_OUTPUT): Use AC_CONFIG_FILES to specify + configuration file names. Call AC_OUTPUT with no argument. + + * configure.ac (AM_INIT_AUTOMAKE): Set version to 3.1beta2. + +2001-08-13 Motoyuki Kasahara + + * eb/configure.ac (AC_ARG_ENABLE): Disable `--enable-debug' by + default, reported by Kazu TAKAGI. + +2001-08-07 Motoyuki Kasahara + + * Version 3.1beta1. + + * eb/configure.ac (LIBEB_VERSION_INFO): Set the varaible to 5:0:0. + + * eb/ebconfig.h: Renamed to `eb/build-pre.h'. + * eb/internal.h.in: Renamed to `eb/build-post.h'. + + * ebrefile/ebrefile.c: Include "*.h" not "eb/*.h". + * ebrefile/Makefile.am (INCLUDES): Delete `-I$(top_srcdir)' and + add `-I../eb -I$(top_srcdir)/eb' instead. + +2001-08-06 Motoyuki Kasahara + + * missing: Import from Automake 1.4j. + + * eb/defs.h (EB_Lock_Struct, EB_Lock): Define the types + if ENABLE_PTHREAD or EBCONF_ENABLE_PTHREAD is defined. + +2001-08-04 Motoyuki Kasahara + + * ebzip/common.c, ebzip/copyfile.c, ebzip/ebzip.c, + ebzip/unzipbook.c, ebzip/unzipfile.c, ebzip/zipbook.c, + ebzip/zipfile.c, ebzip/zipinfobook.c, ebzip/zipinfofile.c, + ebzip/ebzip.h: Inclusions of header files and definitions of missing + macros in *.c are moved to `ebzip/ebzip.h'. + + * configure.ac (AC_CHECK_HEADERS): Add `pthread.h'. + +2001-08-03 Motoyuki Kasahara + + * eb/ebconfig.h, eb/memmove.c, eb/zio.c, libebutils/memset.c: + lib/memset.c: Don't define VOID if it has been defined. + * eb/ebconfig.h, eb/defs.h: Don't define EB_P if WIN32 is defined. + * configure.ac (AC_CHECK_HEADERS): Add `sys/utime.h'. + * win32/config.h, win32/dirent.h, win32/dirent.c, win32/funcname.h, + win32/unistd.h, win32/zconfig.h: Add new directory `win32' and put + new files on the directory. + + * eb/ebconfig.h (F_): Delete the macro. + * eb/filename.c (eb_canonicalize_path_name): In DOS version, replace + all '/' in the given path with `\\'. + * eb/filename.c (eb_canonicalize_path_name): Use strchr() to check + if the given path name represents root. + * eb/filename.c (eb_compose_path_name, eb_compose_path_name2, + eb_compose_path_name3): Revised. + +2001-08-01 Motoyuki Kasahara + + * eb/search.c (eb_initialize_search, eb_finalize_search): + Delete the first argument `EB_Book *'. + + * eb/bitmap.c, eb/narwalt.c, eb/font.c. eb/narwfont.c, eb/setword.c, + eb/subbook.c, eb/text.c: + Add debug codese. + + * eb/book.c (eb_bind): Assign a book code at first. + * eb/appendix (eb_bind_appendix): Likewise. + + * eb/multi.c (eb_finalie_multi_searches): Revised. + + * eb/narwfont.c (eb_narrow_font_size2): Fix a bug. Add missing + `return' statement. + + * eb/log.c (log_mutex): New variable. + * eb/log.c (eb_log): Lock `log_mutex' at invoking log function. + + * eb/text.c (eb_invalidate_text_context): New function. + * eb/text.c (eb_read_text, eb_read_heading, eb_read_rawtext, + eb_forward_text, eb_forward_heading): Call eb_invalidate_text_context() + upon failure return. + +2001-07-31 Motoyuki Kasahara + + * eb/binary.c (eb_set_binary_mpeg): Fix a critical bug in file name + composition. + + * eb/book.c (eb_finalize_book): Revised. + + * eb/binary.c, eb/book.c, eb/copyright.c, eb/eb.c eb/endword.c, + eb/exactword.c, eb/hook.c, eb/keyword.c, eb/menu.c, eb/multi.c, + eb/stopcode.c, eb/subbook.c, eb/word.c: Add debug codes. + + * eb/subbook.c: Include "binary.h". + + * eb/zio.c (ZIO_ID_NONE): Defined. + * eb/zio.c (cache_file): Renamed to `cache_zio_id'. + * eb/zio.c (cache_mutex): Renamed to `zio_mutex'. + * eb/zio.c (zio_open): Initialize `zio' again if file descriptor + the given `zio' holds is active. + * eb/zio.c (zio_open_plain, zio_open_ebzip, zio_open_epwing, + zio_open_epwing6): Assign ID to `zio'. + +2001-07-30 Motoyuki Kasahara + + * eb/appendix.c (eb_initialize_appendix_catalog): Renamed to + eb_load_appendix_catalog(). + * eb/appendix.c (eb_initialize_alt_cache): Renamed to + eb_initialize_alt_caches(). + * eb/appendix.c (eb_initialize_appendix): Initialize all members + in EB_Appendix. + * eb/appendix.c (eb_finalize_appendix): Revised. + + * eb/appendix.h (eb_initialize_all_appendix_subbooks): Define the + macro for backward compatibility. + + * eb/appsub.c (eb_initialize_appendix_subbook): Renamed to + eb_load_appendix_subbook(). + * eb/appsub.c (eb_finalize_appendix_subbooks): New function. + * eb/appsub.c (eb_initialize_appendix_subbooks): New function. + * eb/appsub.c (eb_load_all_appendix_subbooks): New function. + + * eb/binary.c (eb_initialize_binary): Renamed to + eb_initialize_binary_context(). Initialize all members in + EB_Binary_Context. + * eb/binary.c (eb_finalize_binary_context): New function. + * eb/binary.c (eb_reset_binary_context): New function. + + * eb/book.c (eb_initialize_catalog): Renamed to eb_load_catalog(). + * eb/book.c (eb_initialize_language): Renamed to eb_load_language(). + * eb/book.c (eb_initialize_book): Initialize all members to EB_Book. + * eb/book.c (eb_finalize_book): Revised. + + * eb/book.h (eb_initialize_all_subbooks): Define the macro for + backward compatibility. + + * eb/font.c (eb_initialize_fonts): New function. + * eb/font.c (eb_finalize_fonts): New function. + + * eb/hook.c (eb_finalize_hookset): Reset all the hooks. + + * eb/internal.h.in (EB_ARRANGE_INVALID): New macro. + + * eb/multi.c (eb_initialize_multi_searches): New function. + * eb/multi.c (eb_finalize_multi_searches): New function. + * eb/multi.c (eb_initialize_multi_search): Renamed to + eb_load_multi_search(). + + * eb/narwfont.c (eb_initialize_narrow_font): Renamed to + eb_load_narrow_font(). + + * eb/search.c (eb_initialize_search): Renamed to + eb_initialize_search_contexts(). Initialize all members in + EB_Search_Context. + * eb/search.c (eb_finalize_search_contexts): New function. + * eb/search.c (eb_reset_search_contexts): New function. + * eb/search.c (eb_initialize_search): New function. + * eb/search.c (eb_finalize_search): New function. + * eb/search.c (eb_initialize_searches): New function. + * eb/search.c (eb_finalize_searches): New function. + + * eb/subbook.c (eb_initialize_subbook): Renamed to eb_load_subbook(). + * eb/subbook.c (eb_initialize_indexes): Renamed to + eb_load_subbook_indexes(). + * eb/subbook.c (eb_load_subbook_indexes): Call eb_initialize_search() + to initialize EB_Search. + + * eb/text.c (eb_initialize_text): Renamed to + eb_initialize_text_context(). Initialize all members in + EB_Text_Context. + * eb/text.c (eb_finalize_text_context): New function. + * eb/text.c (eb_reset_text_context): New function. + + * eb/appendix.c, eb/appsub.c: Add debug codes. + * eb/defs.h (EB_Appendix_Struct): Add member `code'. + * eb/appendix.c (appendix_counter): New static variable. + + * eb/log.c: Include "internal.h". + +2001-07-25 Motoyuki Kasahara + + * eb/search.c (eb_presearch_word): Don't set `context->entry_length' + to 0 at successful return. + +2001-07-24 Motoyuki Kasahara + + * eb/zio.h (Zio_Struct): Add `id'. + * eb/zio.c (zio_counter): New static variable. + * eb/zio.c (zio_initialize): manage zio_counter, and assign the + counter value to `zio->id'. + * eb/zio.c (LOG): Defile this macro if ENABLE_DEBUG. + + * eb/log.c (eb_quoted_string): Prepare multiple static buffers. + * eb/log.c (eb_quoted_string): Accept NULL pattern. + * eb/log.c (eb_quoted_string): Encode '=' character as `=3D'. + +2001-07-22 Motoyuki Kasahara + + * eb/Makefile.am (libeb_la_SOURCES): Add `log.c'. + * eb/eb.h: Include if __STDC__ is defined. + * eb/error.c (error_strings): New static variable. + * eb/error.c (eb_error_string): New function. + * eb/error.c (unknown): Deleted. + * eb/internal.h.in (LOG): New macro. + * eb/match.c, eb/search.c: Output log messages. + +2001-07-18 Motoyuki Kasahara + + * ebzip/zipfile.c (ebzip_zip_file): Don't call utime() if + HAVE_STRUCT_UTIMBUF is not defined. + * ebzip/unzipfile.c (ebzip_unzip_file): Ditto. + * ebzip/copyfile.c (ebzip_copy_file): Ditto. + * ebzip/ebzip.c (parse_skip_content_argument): Defined as `static' + function. + * ebzip/copyfile.c (ebzip_copy_files_in_directory): Fix a bug that + the function always returns -1. + +2001-07-17 Motoyuki Kasahara + + * Version 3.1beta0. + + * eb/text.c (eb_read_text_internal): Suppose that area of user + defined characters in EPWING and EB* is 0xa121 ... 0xfe7f. + + * eb/configure.ac (LIBEB_VERSION_INFO): Set the varaible to 4:2:0. + * eb/configure.ac (AM_INIT_AUTOMAKE): Set version to 3.1.0beta0. + + * Makefile.am (EXTRA_DIST): Add `ChangeLog.1'. + +2001-07-16 Motoyuki Kasahara + + * eb/filename.c (eb_canonicalize_font_file_name): Renamed to + eb_canonicalize_file_name(). + + * eb/zio.h (ZIO_NONE): Renamed to ZIO_PLAIN. + * eb/zio.c (zio_open_none): Renamed to zio_open_plain(). + +2001-07-13 Motoyuki Kasahara + + * eb/match.c (eb_match_word, eb_match_exactword): + Renamed to eb_match_canonicalized_word() and + eb_exact_match_canonicalized_word(). + * eb/match.c (eb_match_word_latin, eb_match_word_jis, + eb_exact_match_word_latin, eb_exact_match_word_jis): New functions. + * eb/defs.h (EB_Search_Context_Struct): split `compare' into + `compare_pre' and `compare_hit'. + * eb/word.c (eb_search_word): Change policy of choosing search + function. + * eb/exactword.c (eb_search_exactword): Ditto. + * eb/endword.c (eb_search_endword): Ditto. + * eb/keyword.c (eb_search_keyword): Ditto. + * eb/multi.c (eb_search_multi): Ditto. + +2001-07-12 Motoyuki Kasahara + + * eb/defs.h (EB_Subbook_Struct): Add the member `text'. + * eb/subbook.c (eb_initialize_indexes): Revise S-EBXA compression + support code. + * eb/zio.c (zio_set_sebxa_mode): New function. + * eb/zio.c (zio_read_sebxa, zio_unzip_slice_sebxa): Revised and + Enabled. + * eb/zio.c (zio_read): Enable S-EBXA support code. + +2001-07-09 Motoyuki Kasahara + + * eb/filename.c (eb_find_file_name, eb_find_file_name2, + eb_find_file_name3): Change API of the internal functions. + * eb/filename.c (eb_path_name_zio_code): New function. + + * eb/appendix.c (EB_HINT_INDEX_CATALOG, EB_HINT_INDEX_CATALOGS, + catalog_hint_list): Deleted. + * eb/appsub.c (EB_HINT_INDEX_APPENDIX, EB_HINT_INDEX_APPENDIX_EBZ, + appendix_hint_list, EB_HINT_INDEX_FUROKU, EB_HINT_INDEX_FUROKU_EBZ, + furoku_hint_list): Deleted. + * eb/book.c (EB_HINT_INDEX_CATALOG, EB_HINT_INDEX_CATALOGS, + catalog_hint_list, EB_HINT_INDEX_LANGUAGE, EB_HINT_INDEX_LANGUAGE_EBZ, + language_hint_list): Deleted. + * eb/subbook.c (EB_HINT_INDEX_START, EB_HINT_INDEX_START_EBZ, + start_hint_list): Deleted. + * eb/subbook.c (EB_HINT_INDEX_HONMON_EBZ, EB_HINT_INDEX_HONMON2, + EB_HINT_INDEX_HONMON2_EBZ, EB_HINT_INDEX_HONMON2_ORG, + honmon_hint_list, EB_HINT_INDEX_HONMONG, EB_HINT_INDEX_HONMONG_EBZ, + EB_HINT_INDEX_HONMONG_ORG, honmong_hint_list, EB_HINT_INDEX_HONMONS, + EB_HINT_INDEX_HONMONS_EBZ, EB_HINT_INDEX_HONMONS_ORG, + honmons_hint_list): Deleted. + + * ebrefile/ebrefile.c (HINT_INDEX_CATALOG, HINT_INDEX_CATALOGS, + catalog_hint_list): Deleted. + + * ebzip/unzipbook.c (catalog_hint_list, language_hint_list, + catalogs_hint_list): Deleted. + * ebzip/zipbook.c (catalog_hint_list, language_hint_list, + catalogs_hint_list): Deleted. + * ebzip/zipinfobook.c (catalog_hint_list, language_hint_list, + catalogs_hint_list): Deleted. + +2001-06-25 Motoyuki Kasahara + + * Version 3.0.1. + + * configure.ac (LIBEB_VERSION_INFO): Set version to 4:1:0. + +2001-06-22 Motoyuki Kasahara + + * configure.ac (AM_INIT_AUTOMAKE): Set version to 3.0.1. + + * eb/text.c (eb_read_text_internal): Fix a bug of handling BG 2312 + character. + * eb/text.c (eb_read_text_internal): Add code to process escape + sequence 0x1f53. + +2001-06-12 Motoyuki Kasahara + + * eb/book.c (eb_initialize_language): Don't return a value, since + this is `void' function. + + * ebrefile/ebrefile.c: Don't include . + * ebrefile/ebrefile.c: Fix definition of `_' and `N_' macros. + +2001-06-11 Motoyuki Kasahara + + * libebutils/memset.c: Internally convert the 2nd argument (copy + value) to unsigned char, as ISO/IEC 9899:1990 says. diff --git a/lib/ebu/INSTALL b/lib/ebu/INSTALL new file mode 100644 index 0000000..2e1837d --- /dev/null +++ b/lib/ebu/INSTALL @@ -0,0 +1,203 @@ +$BI,MW$J%=%U%H%&%'%"(B +================== + +$BK\%=%U%H%&%'%"$r%$%s%9%H!<%k$9$k$K$O!"A0$b$C$F(B zlib $B$r%$%s%9%H!<%k$7$F(B +$B$*$/I,MW$,$"$j$^$9!#(Bzlib $B$Ol=j$+$iF~l9g$b$"$j$^(B +$B$9!#(B + + +$B4pK\E*$J%$%s%9%H!<%kJ}K!(B +======================== + +$BK\%=%U%H%&%'%"$N:G$bC1=c$J%3%s%Q%$%kJ}K!$O/!9;~4V$,(B + $B$+$+$j$^$9!#(B + + $Bl9g$O!"(B + `make check' $B$rC$9$3$H$,$G$-$^$9!#(B $B0l=o$K(B `configure' $B$,@8@.$7$?%U%!%$%k$b>C$9(B + $B$K$O(B ($B$3$&$9$k$3$H$G!"JL$N(B +============== + + $B%G%U%)%k%H$G$O!"(B`make install' $B$r$l0[$J$C(B +$B$?%$%s%9%H!<%k@h$K%$%s%9%H!<%k$9$k$3$H$b2DG=$G$9!#(B `configure' $B$KBP$7(B +$B$F(B `--exec-prefix=$B%Q%9(B' $B$r;XDj$9$k$H!"%W%m%0%i%`$d%i%$%V%i%j$J$I$N%$%s(B +$B%9%H!<%k@h$,!V%Q%9!W$KJQ$o$j$^$9!#%I%-%e%a%s%H$d!"%G!<%?%U%!%$%k$J$I$O!"(B +$BDL>o$N%$%s%9%H!<%k@h$K%$%s%9%H!<%k$5$l$^$9!#(B + + $B2C$($F!"$"$J$?$,DL>o$H$O0[$J$C$?%G%#%l%/%H%j%l%$%"%&%H$r:NMQ$7$F$$$k(B +$B>l9g$O!"(B`--bindir=$B%Q%9(B' $B$H$$$C$?%*%W%7%g%s$r;XDj$9$k$3$H$G!"FCDj$N$K@\F,<-$d@\Hx<-$rIU2C$9$k$3$H$,$G$-$^$9!#(B + +`configure' $B$NF0:n$N@)8f(B +======================== + + `configure' $B$Oo(B + `./config.cache' $B$G$9$,!"Be$o$j$K!V%U%!%$%k!W$rMQ$$$^$9!#(B + `configure' $B$r%G%P%C%0$9$k$H$-$O!"%U%!%$%k(B $B$K(B `/dev/null' $B$r;XDj(B + $B$9$k$3$H$G!"%-%c%C%7%e$rM^@)$9$k$3$H$,$G$-$^$9!#(B + +`--help' + `configure' $B$N%*%W%7%g%s$N0lMw$rI=<($7$F!"=*N;$7$^$9!#(B + +`--quiet' +`--silent' +`-q' + $B$I$N%A%'%C%/9`L\$r9T$C$F$$$k$N$+$r<($9%a%C%;!<%8$r=PNO$7$^$;$s!#(B + $BDL>o$N%a%C%;!<%8=PNO$r$9$Y$FM^@)$9$k$K$O!"(B`/dev/null' $B$X%j%@%$%l(B + $B%/%H$7$F2<$5$$(B ($B$?$@$7!"%(%i!<%a%C%;!<%8$K$D$$$F$O=PNO$5$l$F$7$^(B + $B$$$^$9$,(B)$B!#(B + +`--srcdir=$B%G%#%l%/%H%j(B' + $B%=%U%H%&%'%"$N%=!<%9%3!<%I$rC5$7=P$9:]$K!"!V%G%#%l%/%H%j!W$rC5$7$^(B + $B$9!#DL>o!"(B`configure' $B$O<+F0E*$K%G%#%l%/%H%j$r7hDj$7$^$9!#(B + +`--version' + `configure' $B%9%/%j%W%H$,$I$N%P!<%8%g%s$N(B Autoconf $B$K$h$C$F@8@.$5(B + $B$l$?$N$+$rI=<($7!"=*N;$7$^$9!#(B + +$BLr$KN)$D>lLL$O8B$i$l$^$9$,!"(B`configure' $B$K$OB>$K$b$$$/$D$+$N%*%W%7%g%s(B +$B$,MQ0U$5$l$F$$$^$9!#(B + +$BA*Br2DG=$J5!G=$N0lMw(B +==================== + + $BK\%=%U%H%&%'%"$N(B `configure' $B$O0J2<$K5-$7$?(B `--enable-' $B$*$h$S(B +`--with-' $B%*%W%7%g%s$rG'<1$7$^$9!#(B + +`--enable-ebnet' + $B1s3V%"%/%;%9BP1~$rM-8z$K$7$^$9!#L5;XDj;~$O(B `yes' $B$G$9!#(B + +`--enable-ipv6' + $B1s3V%"%/%;%9$G$N(B IPv6 $BBP1~$rM-8z$K$7$^$9!#(BIPv6 $B$KBP1~$7$?%7%9%F%`(B + $B$G$O!"L5;XDj;~$O(B `yes' $B$,;XDj$5$l$?$b$N$H$_$J$5$l$^$9!#(B`yes' $B$r;X(B + $BDj$7$?$K$b$+$+$o$i$:!"(B`configure' $B$,(B IPv6 $B$r;H$C$?%5%s%W%k%W%m%0%i(B + $B%`$N%3%s%Q%$%k$K<:GT$9$k$H!"%(%i!<$,Js9p$5$l$^$9!#(B`--enable-ebnet= + no' $B$r;XDj$7$?>l9g!"$3$N%*%W%7%g%s$OL5;k$5$l$^$9!#(B + +`--enable-pthread' + $B%3%s%Q%$%k$5$l$?(B EB $B%i%$%V%i%j$K(B pthread $BBP1~%3!<%I$,IU2C$5$^$9!#(B + $BL5;XDj;~$O(B `no' $B$G$9!#(B`yes' $B$r;XDj$7$?$K$b$+$+$o$i$:!"(B`configure' + $B$,(B pthread $B$r;H$C$?%5%s%W%k%W%m%0%i%`$N%3%s%Q%$%k$dH$7$^$9!#(B + +`--with-zlib-libraries=DIR' + DIR $B%G%#%l%/%H%j$K%$%s%9%H!<%k$5$l$F$$$k(B zlib $B$N%i%$%V%i%j%U%!%$(B + $B%k$r;2>H$7$^$9!#(B + +`--enable-nls' + $B%a%C%;!<%8$N9q:]2=5!G=(B ($B@53N$K$O(B NLS $B$O(B Native/National Language + Support)$B!#(BEB $B%i%$%V%i%j$*$h$S%f!<%F%#%j%F%#$O!"%a%C%;!<%8$N9q:]2=(B + $B5!G=$,M-8z$K$J$k$h$&$K%3%s%Q%$%k$5$l$^$9!#(B + + $B$3$N5!G=$r;H$&$K$O(B GNU gettext $B$,I,MW$G$9!#%7%9%F%`$K(B GNU gettext + $B$,$J$1$l$P!"$3$N%=%U%H%&%'%"$r%$%s%9%H!<%k$9$kA0$K(B GNU gettext $B$r%$(B + $B%s%9%H!<%k$7$F2<$5$$!#K\%=%U%H%&%'%"$O!"$?$H$($P(B Solaris $B$NH$7$^$9!#%a%C%;!<%8$N9q:]2=5!G=$,L58z$K$J$C$F$$$k>l9g!"$3$N(B + $B%*%W%7%g%s$O0UL#$r;}$A$^$;$s!#(B + +`--with-gettext-libraries=DIR' + DIR $B%G%#%l%/%H%j$K%$%s%9%H!<%k$5$l$F$$$k(B gettext $B$N%i%$%V%i%j%U%!(B + $B%$%k$r;2>H$7$^$9!#%a%C%;!<%8$N9q:]2=5!G=$,L58z$K$J$C$F$$$k>l9g!"(B + $B$3$N%*%W%7%g%s$O0UL#$r;}$A$^$;$s!#(B + +`--with-iconv-includes=DIR' + DIR $B%G%#%l%/%H%j$K%$%s%9%H!<%k$5$l$F$$$k(B iconv $B$N%X%C%@%U%!%$%k(B + $B$r;2>H$7$^$9!#%a%C%;!<%8$N9q:]2=5!G=$,L58z$K$J$C$F$$$k>l9g!"$"$k(B + $B$$$O%7%9%F%`>e$N(B gettext() $B4X?t$,(B iconv() $B$r;HMQ$7$J$$>l9g!"$3$N(B + $B%*%W%7%g%s$O0UL#$r;}$A$^$;$s!#(B + +`--with-iconv-libraries=DIR' + DIR $B%G%#%l%/%H%j$K%$%s%9%H!<%k$5$l$F$$$k(B iconv $B$N%i%$%V%i%j%U%!(B + $B%$%k$r;2>H$7$^$9!#%a%C%;!<%8$N9q:]2=5!G=$,L58z$K$J$C$F$$$k>l9g!"(B + $B$"$k$$$O%7%9%F%`>e$N(B gettext() $B4X?t$,(B iconv() $B$r;HMQ$7$J$$>l9g!"(B + $B$3$N%*%W%7%g%s$O0UL#$r;}$A$^$;$s!#(B + +`--enable-shared' + $B6&M-%i%$%V%i%jHG$N(B EB $B%i%$%V%i%j$r:n@.$7$^$9!#L5;XDj;~$O(B `yes' $B$G(B + $B$9!#(B + +`--enable-static' + $B@EE*%i%$%V%i%jHG$N(B EB $B%i%$%V%i%j$r:n@.$7$^$9!#L5;XDj;~$O(B `yes' $B$G(B + $B$9!#(B + +`--with-gnu-ld' + C $B%3%s%Q%$%i$,(B GNU ld $B$r;HMQ$7$F$$$k$H2>Dj$7$^$9!#(B + $BL5;XDj;~$O!"(B`no' $B$G$9!#(B + +`--disable-libtool-lock' + $B%m%C%/$7$J$$$h$&$K$7$^$9!#(B($BJBNs%3%s%Q%$%k$O!"@5$7$/9T$o$l$J$$2DG=(B + $B@-$,$"$j$^$9!#(B) + +`--enable-samples' + $B%5%s%W%k%W%m%0%i%`$b%3%s%Q%$%k$9$k$h$&$K$7$^$9!#L5;XDj;~$O(B `no' $B$G(B + $B$9!#%3%s%Q%$%k$7$F$b!"%5%s%W%k%W%m%0%i%`$O2?=h$K$b%$%s%9%H!<%k$5$l(B + $B$^$;$s!#(B + +`--enable-largefile' + 2GB $B$rD6$($k!"Bg$-$J%U%!%$%k$r07$($k$h$&$K$7$^$9!#%7%9%F%`B&$GBP1~(B + $B$7$F$$$J$$$H!";XDj$7$F$b8z2L$O$"$j$^$;$s!#L5;XDj;~$O(B `yes' $B$G$9!#(B diff --git a/lib/ebu/Makefile b/lib/ebu/Makefile new file mode 100644 index 0000000..bc0411b --- /dev/null +++ b/lib/ebu/Makefile @@ -0,0 +1,782 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure $(top_srcdir)/po-eb/Makefile.in \ + $(top_srcdir)/po-ebutils/Makefile.in AUTHORS COPYING ChangeLog \ + INSTALL NEWS config.guess config.sub depcomp install-sh \ + ltmain.sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = po-eb/Makefile po-ebutils/Makefile +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(appendixdir)" "$(DESTDIR)$(sysconfdir)" +appendixDATA_INSTALL = $(INSTALL_DATA) +sysconfDATA_INSTALL = $(INSTALL_DATA) +DATA = $(appendix_DATA) $(sysconf_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = ebu libebutils ebappendix ebfont ebinfo ebrefile \ + ebstopcode ebzip doc po-eb po-ebutils m4 samples +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = +top_builddir = . +top_srcdir = . +ACLOCAL_AMFLAGS = -I m4 +SAMPLES_SUBDIR = +#SAMPLES_SUBDIR = samples +SUBDIRS = ebu libebutils ebappendix ebfont ebinfo ebrefile ebstopcode ebzip \ + doc po-eb po-ebutils m4 $(SAMPLES_SUBDIR) + +EXTRA_DIST = ChangeLog.0 ChangeLog.1 ChangeLog.2 move-if-change \ + ebu.conf.in misc/ebfixlog misc/ebdump README.org + +CLEANFILES = ebu.conf +appendixdir = $(pkgdatadir)/appendix +appendix_DATA = +sysconf_DATA = ebu.conf +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +po-eb/Makefile: $(top_builddir)/config.status $(top_srcdir)/po-eb/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +po-ebutils/Makefile: $(top_builddir)/config.status $(top_srcdir)/po-ebutils/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-appendixDATA: $(appendix_DATA) + @$(NORMAL_INSTALL) + test -z "$(appendixdir)" || $(MKDIR_P) "$(DESTDIR)$(appendixdir)" + @list='$(appendix_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(appendixDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(appendixdir)/$$f'"; \ + $(appendixDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(appendixdir)/$$f"; \ + done + +uninstall-appendixDATA: + @$(NORMAL_UNINSTALL) + @list='$(appendix_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(appendixdir)/$$f'"; \ + rm -f "$(DESTDIR)$(appendixdir)/$$f"; \ + done +install-sysconfDATA: $(sysconf_DATA) + @$(NORMAL_INSTALL) + test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)" + @list='$(sysconf_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \ + $(sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \ + done + +uninstall-sysconfDATA: + @$(NORMAL_UNINSTALL) + @list='$(sysconf_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(sysconfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(sysconfdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(appendixdir)" "$(DESTDIR)$(sysconfdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-appendixDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-sysconfDATA + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-appendixDATA uninstall-sysconfDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ + distclean distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-appendixDATA install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip install-sysconfDATA installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-appendixDATA \ + uninstall-sysconfDATA + + +ebu.conf: ebu.conf.in Makefile + rm -f $@ + sed -e 's;\@VERSION\@;$(VERSION);' \ + -e 's;\@EBCONF_EBINCS\@;$(EBCONF_EBINCS);' \ + -e 's;\@EBCONF_EBLIBS\@;$(EBCONF_EBLIBS);' \ + -e 's;\@EBCONF_ZLIBINCS\@;$(EBCONF_ZLIBINCS);' \ + -e 's;\@EBCONF_ZLIBLIBS\@;$(EBCONF_ZLIBLIBS);' \ + -e 's;\@ENABLE_PTHREAD\@;$(ENABLE_PTHREAD);' \ + -e 's;\@PTHREAD_CPPFLAGS\@;$(PTHREAD_CPPFLAGS);' \ + -e 's;\@PTHREAD_CFLAGS\@;$(PTHREAD_CFLAGS);' \ + -e 's;\@PTHREAD_LDFLAGS\@;$(PTHREAD_LDFLAGS);' \ + -e 's;\@ENABLE_NLS\@;$(ENABLE_NLS);' \ + -e 's;\@EBCONF_INTLINCS\@;$(EBCONF_INTLINCS);' \ + -e 's;\@EBCONF_INTLLIBS\@;$(EBCONF_INTLLIBS);' \ + -e 's;\@ENABLE_EBNET\@;$(ENABLE_EBNET);' \ + $(srcdir)/$@.in > $@.tmp + cp $@.tmp $@ + chmod 644 $@ + rm -f $@.tmp + +gttest.mo: gttest.po + $(MSGFMT) -o gttest.mo gttest.po +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/Makefile.am b/lib/ebu/Makefile.am new file mode 100644 index 0000000..ec0c54c --- /dev/null +++ b/lib/ebu/Makefile.am @@ -0,0 +1,41 @@ +ACLOCAL_AMFLAGS = -I m4 + +if ENABLE_SAMPLES +SAMPLES_SUBDIR = samples +else +SAMPLES_SUBDIR = +endif + +SUBDIRS = ebu libebutils ebappendix ebfont ebinfo ebrefile ebstopcode ebzip \ + doc po-eb po-ebutils m4 $(SAMPLES_SUBDIR) + +EXTRA_DIST = ChangeLog.0 ChangeLog.1 ChangeLog.2 move-if-change \ + ebu.conf.in misc/ebfixlog misc/ebdump README.org +CLEANFILES = ebu.conf + +appendixdir = $(pkgdatadir)/appendix +appendix_DATA = +sysconf_DATA = ebu.conf + +ebu.conf: ebu.conf.in Makefile + rm -f $@ + sed -e 's;\@VERSION\@;$(VERSION);' \ + -e 's;\@EBCONF_EBINCS\@;$(EBCONF_EBINCS);' \ + -e 's;\@EBCONF_EBLIBS\@;$(EBCONF_EBLIBS);' \ + -e 's;\@EBCONF_ZLIBINCS\@;$(EBCONF_ZLIBINCS);' \ + -e 's;\@EBCONF_ZLIBLIBS\@;$(EBCONF_ZLIBLIBS);' \ + -e 's;\@ENABLE_PTHREAD\@;$(ENABLE_PTHREAD);' \ + -e 's;\@PTHREAD_CPPFLAGS\@;$(PTHREAD_CPPFLAGS);' \ + -e 's;\@PTHREAD_CFLAGS\@;$(PTHREAD_CFLAGS);' \ + -e 's;\@PTHREAD_LDFLAGS\@;$(PTHREAD_LDFLAGS);' \ + -e 's;\@ENABLE_NLS\@;$(ENABLE_NLS);' \ + -e 's;\@EBCONF_INTLINCS\@;$(EBCONF_INTLINCS);' \ + -e 's;\@EBCONF_INTLLIBS\@;$(EBCONF_INTLLIBS);' \ + -e 's;\@ENABLE_EBNET\@;$(ENABLE_EBNET);' \ + $(srcdir)/$@.in > $@.tmp + cp $@.tmp $@ + chmod 644 $@ + rm -f $@.tmp + +gttest.mo: gttest.po + $(MSGFMT) -o gttest.mo gttest.po diff --git a/lib/ebu/Makefile.in b/lib/ebu/Makefile.in new file mode 100644 index 0000000..8aa9e36 --- /dev/null +++ b/lib/ebu/Makefile.in @@ -0,0 +1,782 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure $(top_srcdir)/po-eb/Makefile.in \ + $(top_srcdir)/po-ebutils/Makefile.in AUTHORS COPYING ChangeLog \ + INSTALL NEWS config.guess config.sub depcomp install-sh \ + ltmain.sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = po-eb/Makefile po-ebutils/Makefile +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(appendixdir)" "$(DESTDIR)$(sysconfdir)" +appendixDATA_INSTALL = $(INSTALL_DATA) +sysconfDATA_INSTALL = $(INSTALL_DATA) +DATA = $(appendix_DATA) $(sysconf_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = ebu libebutils ebappendix ebfont ebinfo ebrefile \ + ebstopcode ebzip doc po-eb po-ebutils m4 samples +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 +@ENABLE_SAMPLES_FALSE@SAMPLES_SUBDIR = +@ENABLE_SAMPLES_TRUE@SAMPLES_SUBDIR = samples +SUBDIRS = ebu libebutils ebappendix ebfont ebinfo ebrefile ebstopcode ebzip \ + doc po-eb po-ebutils m4 $(SAMPLES_SUBDIR) + +EXTRA_DIST = ChangeLog.0 ChangeLog.1 ChangeLog.2 move-if-change \ + ebu.conf.in misc/ebfixlog misc/ebdump README.org + +CLEANFILES = ebu.conf +appendixdir = $(pkgdatadir)/appendix +appendix_DATA = +sysconf_DATA = ebu.conf +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +po-eb/Makefile: $(top_builddir)/config.status $(top_srcdir)/po-eb/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +po-ebutils/Makefile: $(top_builddir)/config.status $(top_srcdir)/po-ebutils/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-appendixDATA: $(appendix_DATA) + @$(NORMAL_INSTALL) + test -z "$(appendixdir)" || $(MKDIR_P) "$(DESTDIR)$(appendixdir)" + @list='$(appendix_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(appendixDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(appendixdir)/$$f'"; \ + $(appendixDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(appendixdir)/$$f"; \ + done + +uninstall-appendixDATA: + @$(NORMAL_UNINSTALL) + @list='$(appendix_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(appendixdir)/$$f'"; \ + rm -f "$(DESTDIR)$(appendixdir)/$$f"; \ + done +install-sysconfDATA: $(sysconf_DATA) + @$(NORMAL_INSTALL) + test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)" + @list='$(sysconf_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \ + $(sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \ + done + +uninstall-sysconfDATA: + @$(NORMAL_UNINSTALL) + @list='$(sysconf_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(sysconfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(sysconfdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(appendixdir)" "$(DESTDIR)$(sysconfdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-appendixDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-sysconfDATA + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-appendixDATA uninstall-sysconfDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ + distclean distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-appendixDATA install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip install-sysconfDATA installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-appendixDATA \ + uninstall-sysconfDATA + + +ebu.conf: ebu.conf.in Makefile + rm -f $@ + sed -e 's;\@VERSION\@;$(VERSION);' \ + -e 's;\@EBCONF_EBINCS\@;$(EBCONF_EBINCS);' \ + -e 's;\@EBCONF_EBLIBS\@;$(EBCONF_EBLIBS);' \ + -e 's;\@EBCONF_ZLIBINCS\@;$(EBCONF_ZLIBINCS);' \ + -e 's;\@EBCONF_ZLIBLIBS\@;$(EBCONF_ZLIBLIBS);' \ + -e 's;\@ENABLE_PTHREAD\@;$(ENABLE_PTHREAD);' \ + -e 's;\@PTHREAD_CPPFLAGS\@;$(PTHREAD_CPPFLAGS);' \ + -e 's;\@PTHREAD_CFLAGS\@;$(PTHREAD_CFLAGS);' \ + -e 's;\@PTHREAD_LDFLAGS\@;$(PTHREAD_LDFLAGS);' \ + -e 's;\@ENABLE_NLS\@;$(ENABLE_NLS);' \ + -e 's;\@EBCONF_INTLINCS\@;$(EBCONF_INTLINCS);' \ + -e 's;\@EBCONF_INTLLIBS\@;$(EBCONF_INTLLIBS);' \ + -e 's;\@ENABLE_EBNET\@;$(ENABLE_EBNET);' \ + $(srcdir)/$@.in > $@.tmp + cp $@.tmp $@ + chmod 644 $@ + rm -f $@.tmp + +gttest.mo: gttest.po + $(MSGFMT) -o gttest.mo gttest.po +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/NEWS b/lib/ebu/NEWS new file mode 100644 index 0000000..b2df1b6 --- /dev/null +++ b/lib/ebu/NEWS @@ -0,0 +1,535 @@ +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.4.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ãƒãƒ¼ã‚¸ãƒ§ãƒ³4.4.2ã§ã€å…±æœ‰ãƒ©ã‚¤ãƒ–ラリã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒæ­£ã—ããªã‹ã£ãŸãŸã‚〠+ 本ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ä¿®æ­£ã—ãŸã€‚ +* ç´°ã‹ãªä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.4.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 図版メニューã«é–¢ã™ã‚‹å‡¦ç†ã§ã€åˆæœŸåŒ–処ç†ãŒä¸€éƒ¨æŠœã‘ã¦ã„ãŸã®ã‚’修正ã—ãŸã€‚ +* ebzip 伸長時ã«ã€æ­£å¸¸çµ‚了時も終了コードãŒ1ã«ãªã£ã¦ã—ã¾ã†ä¸å…·åˆã‚’修正 + ã—ãŸã€‚ +* ebzip テストモード時もã€ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚³ãƒ”ーãŒå®Ÿè¡Œã•ã‚Œã¦ã—ã¾ã†ä¸å…·åˆã‚’ + 修正ã—ãŸã€‚ +* ebzip ã®ãƒ¡ãƒ¢ãƒªé–‹æ”¾å¿˜ã‚Œã‚’ç›´ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.4.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ç”»åƒã€éŸ³å£°ãƒ‡ãƒ¼ã‚¿ã‚’扱ã†éš›ã«ã€ãƒ‡ãƒ¼ã‚¿ãŒæ ¼ç´ã•ã‚Œã¦ã„るファイルã®å¤§ãã•ãŒ + 2GB ã‚’æ­£ã—ã扱ãˆãªã‹ã£ãŸã®ã§ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.4 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 2GB を超ãˆã‚‹å¤§ãã•ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’扱ãˆã‚‹ã‚ˆã†ã«ã—ãŸã€‚ãŸã ã—ã€ã‚·ã‚¹ãƒ†ãƒ å´ã§ + 対応ã—ã¦ã„ã‚‹ã“ã¨ãŒå‰ææ¡ä»¶ã€‚ +* EBZIPå½¢å¼ã®åœ§ç¸®ãƒ•ã‚¡ã‚¤ãƒ«ã§ã€4294967296〜1099511627775ãƒã‚¤ãƒˆ (4GB〜1TB) + ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®è¡¨ç¾æ–¹æ³•ã‚’è¦å®šã—ãŸã€‚ebzip, ebunzip ã¯ã“ã®è¦å®šã«æ²¿ã£ã¦åœ§ç¸® + ãŠã‚ˆã³ä¼¸å¼µã‚’è¡Œãªã†ã€‚ +* ebzip, ebunzip ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªä½œæˆã«å¤±æ•—ã—ãŸã¨ãã€ä½•ã‚‚エラーメッセージ + を出ã•ãšã«çµ‚了ã™ã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.3.4 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 環境ã«ã‚ˆã£ã¦ã¯ã€ebinfo ã®å‡ºåŠ›ã™ã‚‹å‰¯æœ¬ã®é¡ŒåãŒæ–‡å­—化ã‘ã™ã‚‹ã®ã‚’修正ã—ãŸã€‚ +* 注: ライブラリ本体ã«ã¯å¤‰æ›´ãŒãªã„ã®ã§ã€å…±æœ‰ãƒ©ã‚¤ãƒ–ラリã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯æ›´æ–° + ã—ã¦ã—ãªã„。 + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.3.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* Cygwin, MinGW 㧠DLL を作æˆã§ãるよã†ã«ã—ãŸã€‚ +* Windows 㧠ebzipinfo ãŒç•°å¸¸çµ‚了ã™ã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.3.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.3.1 ã§ã€å…±æœ‰ãƒ©ã‚¤ãƒ–ラリã®ç•ªå·ä»˜ã‘ãŒé–“é•ã£ã¦ã„ãŸã®ã§ä¿®æ­£ã—ãŸã€‚ +* ebinfo ã®æ—¥æœ¬èªžãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã€ç©ºç™½æ–‡å­—ãŒæŠœã‘ã¦ã„ã‚‹ã‚‚ã®ãŒã‚ã£ãŸã®ã§ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.3.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 動画ファイルåã«è‹±å¤§æ–‡å­—ãŒä½¿ã‚れるã¨ã€å‹•ç”»ãƒ‡ãƒ¼ã‚¿ã‚’読ã¿è¾¼ã‚ãªã„ä¸å…·åˆ + を修正ã—ãŸã€‚ +* é›»å­ãƒ–ックリーダー Panasonic KX-EBP2 付属å“ã«å¯¾å¿œã—ãŸã€‚ +* ebnet ã§ãƒãƒƒãƒ•ã‚¡ã‚ªãƒ¼ãƒãƒ¼ãƒ©ãƒ³ãŒèµ·ãã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EPWING ã§è¤‡æ•°ã®å‰¯æœ¬ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’共有ã—ã¦ã„ã‚‹å ´åˆã€æ­£ã—ãアクセス + ã§ããªã„ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* `ebunzip --test' ãŒã€é›»å­ãƒ–ックã®æœ¬æ–‡ãƒ•ã‚¡ã‚¤ãƒ«ã‚’上書ãã—ã¦ã—ã¾ã†ä¸å…·åˆ + を修正ã—ãŸã€‚ +* ebappendix ãŒã€`catalogs.app' を読ã¿è¾¼ã‚“ã§ã‚‚é›»å­ãƒ–ック形å¼ã® appendix + を生æˆã—ã¦ã—ã¾ã†ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* å‚照先付ãカラー図版ã«å¯¾å¿œã—ãŸã€‚ + API ã¨ã—ã¦ã€eb_have_image_menu() 㨠eb_image_menu() ãŒè¿½åŠ ã•ã‚ŒãŸã€‚ + テキストã®ãƒ•ãƒƒã‚¯ã¨ã—ã¦ã€EB_HOOK_BEGIN_IMAGE_PAGE, EB_HOOK_END_IMAGE_PAGE, + EB_HOOK_BEGIN_CLICKABLE_AREA, EB_HOOK_END_CLICKABLE_AREA ã® 4ã¤ãŒè¿½åŠ  + ã•ã‚ŒãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.2.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 4.2.1 ã§æ··å…¥ã—ãŸã€ä¸€éƒ¨ã® EPWING ãŒæ­£ã—ã扱ãˆãªã„ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* eb.conf ã® EBCONF_ENABLE_NLS ã®å€¤ãŒæ­£ã—ãセットã•ã‚Œãªã„ä¸å…·åˆã‚’修正 + ã—ãŸã€‚ +* 音声ファイルã®å–り出ã—ãŒã†ã¾ãã„ã‹ãªã„ä¸å…·åˆã‚’終始ã—ãŸã€‚ +* 一部㮠Linux 環境㧠configure 時㫠NLS (Native/National Language + Support) ãŒæœ‰åŠ¹ã«ãªã‚‰ãªã„ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* ç´°ã‹ãªä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.2.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* クロス検索ã«å¯¾å¿œã—ãŸã€‚ + 関数 eb_have_cross_search(), eb_search_cross() をライブラリã«è¿½åŠ ã—ãŸã€‚ + ã¾ãŸã€ebinfo ã¯ã€ã‚¯ãƒ­ã‚¹æ¤œç´¢ã®æƒ…報を出力ã™ã‚‹ã‚ˆã†ã«ãªã£ãŸã€‚ +* 動画ファイルåã®çµ¶å¯¾ãƒ‘スåã‚’è¿”ã™é–¢æ•° eb_compose_movie_path_name() ã‚’ + ライブラリã«è¿½åŠ ã—ãŸã€‚ +* ebrefile ã¯ã€ã‚«ã‚¿ãƒ­ã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã‚’上書ãã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ + 上書ãå‰ã®ã‚«ã‚¿ãƒ­ã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€".old" ã¨ã„ã†æŽ¥å°¾å­ã®ä»˜ã„ãŸãƒ•ã‚¡ã‚¤ãƒ«å㧠+ ä¿å­˜ã•ã‚Œã‚‹ã€‚ +* zlib を添付ã—ãªã„よã†ã«ã—ãŸã€‚ + configure ã‹ã‚‰ --with-included-zlib オプションを削除ã—ãŸã€‚ +* ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.1.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.1.2 ã§ã€å…±æœ‰ãƒ©ã‚¤ãƒ–ラリã®ç•ªå·ä»˜ã‘ãŒé–“é•ã£ã¦ã„ãŸã®ã§ä¿®æ­£ã—ãŸã€‚ +* `make install' ãŒå¤±æ•—ã™ã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.1.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 特定ã®æ›¸ç±ã§ã€EB ライブラリãŒæ›¸ç±ã«è¼‰ã£ã¦ã„ã‚‹å˜èªžã‚’検索ã§ããªã„ + ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* FreeBSD-5.3-RELEASE 㧠make ãŒå¤±æ•—ã™ã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* Windows 環境ã«ãŠã„ã¦ã€ebzip コマンドã®èµ·å‹•æ™‚ã®ã‚³ãƒžãƒ³ãƒ‰å (ebunzip.exe, + ebzipinfo.exe ãªã©) ã‚’ã‚‚ã¨ã«ã€æ­£ã—ã動作を決定ã§ããªã„ä¸å…·åˆã‚’修正 + ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.1.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ユーティリティコマンドã§ã€å¼•æ•°ã‚’å–ã‚‹é•·ã„オプション (例: ebzip ã® + --level) ã«å¯¾ã—ã¦å¼•æ•°ã‚’渡ã•ãªã„ã¨ã€ã‚³ãƒžãƒ³ãƒ‰ãŒç•°å¸¸çµ‚了ã™ã‚‹ä¸å…·åˆã‚’ + 修正ã—ãŸã€‚ +* eb_write_text_byte2() ãŒãŠã‹ã—ãªãƒ‡ãƒ¼ã‚¿ã‚’書ã込むä¸å…·åˆã‚’修正ã—ãŸã€‚ +* ドキュメント㮠HTML ファイルã®ã‚¹ã‚¿ã‚¤ãƒ«ã‚’変更ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* BSD ライセンスを採用ã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ +* ebfont ㌠PNG å½¢å¼ã®ç”»åƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’生æˆã§ãるよã†ã«ã—ãŸã€‚ + ebfont ã® --image-format オプション㫠`png' を指定ã§ãるよã†ã«ã—ãŸã€‚ +* ライブラリ㫠eb_narrow_font_png_size(), eb_wide_font_png_size(), + eb_bitmap_to_png() を加ãˆãŸã€‚ +* eb_bitmap_to_xbm(), eb_bitmap_to_xpm(), eb_bitmap_to_gif(), + eb_bitmap_to_bmp() 㯠EB_Error_Code ã‚’è¿”ã™ã‚ˆã†ã«ãŸã€‚ +* ライブラリãŒã€éžåœ§ç¸®ãƒ–ロックデータã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’より効率的ã«è¡Œã† + よã†ã«ã—ãŸã€‚ +* `ebzip' ㌠START/HONMON ファイルã®éƒ¨åˆ†åœ§ç¸®ã«å¯¾å¿œã—ãŸã€‚ + ã“ã‚Œã«ã‚ˆã‚Šã€å‰æ–¹ä¸€è‡´æ¤œç´¢ãŒé€Ÿããªã£ãŸã€‚ +* 日本語ドキュメントを HTML å½¢å¼ã§é…布ã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ +* 英語ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’削除ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.0.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ヘッダファイル内㮠EB_P, ZIO_P マクロã®å®šç¾©ã‚’修正ã—ãŸã€‚ +* `ebzipinfo' 㯠`--skip-content movie' オプションを指定ã—ãªã„é™ã‚Šã€ + 動画ファイルã®æƒ…報も表示ã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ +* `ebzip', `ebunzip' ã®é€²è¡ŒçŠ¶æ³ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã€æ¨™æº–出力ã§ã¯ãªã標準エラー + 出力ã«è¡¨ç¤ºã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EB_BookList 関連㮠API を改良ã—ãŸã€‚ +* EB_ERR_UNBOUND_BOOKLIST, EB_ERR_NO_SUCH_BOOK ã¨ã„ㆠ2 ã¤ã®ã‚¨ãƒ©ãƒ¼ + コードを追加ã—ãŸã€‚ +* `eb3.m4' ã‚’ `eb4.m4' ã«æ”¹åã—ãŸã€‚ +* `configure' ã« `--enable-ebnet' オプションを追加ã—ãŸã€‚ +* `eb/flags.h' をインストールã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ + ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€`eb/defs.h' ã‹ã‚‰è‡ªå‹•çš„ã« include ã•ã‚Œã‚‹ã€‚ +* é‡å¤§ãŠã‚ˆã³è»½åº¦ã®ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.0beta3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EUC-JP 以外ã®æ—¥æœ¬èªžã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã«å¯¾å¿œã—ãŸã€‚ +* Windows 対応ã®ãŸã‚ã®ã‚³ãƒ¼ãƒ‰ã‚’ã„ãã¤ã‹ä»˜åŠ ã—ãŸã€‚ + Windows 上㧠EB ライブラリã®ãƒ“ルドを行ã†ã«ã¯ã€`eb-win32' パッケージ + を使用ã—ã¦ä¸‹ã•ã„。 +* `ebstopcode' ã« `--text-position' (`-p') オプションを追加ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.0beta2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 検索メソッドã®é‡å¤§ãªä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.0beta1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* `ebstopchk' ã‚’ `ebstopcode' ã«æ”¹åã—ãŸã€‚ + コマンド㮠`--stop-code' オプションも `--code' ã«æ”¹åã—ãŸã€‚ +* `ebappendix' ã® `--case', `--suffix' オプションを削除ã—ãŸã€‚ +* `ebappendix' ã®æ—¥æœ¬èªžç‰ˆãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’用æ„ã—ãŸã€‚ +* `ebinfo' ã« `--book-list' オプションを追加ã—ãŸã€‚ +* `ebdump', `ebfixlog' ã‚’ `misc' サブディレクトリã«å…¥ã‚ŒãŸã€‚ +* ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4.0beta0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* é éš”アクセスã«å¯¾å¿œã—ãŸã€‚ +* `ebstopchk' コマンドを追加ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.3.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 共有ライブラリã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’修正ã—ãŸã€‚ +* 「日英ä»è¾žå…¸ã€(YRRS-059) ã«å¯¾å¿œã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.3.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EPWING 版「ジーニアス英和大辞典ã€ã«å¯¾å¿œã—ãŸã€‚ +* 複åˆæ¤œç´¢ã®å‡¦ç†ã®ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* デãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã®ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* eb_read_binary_mpeg() ã®ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.3beta3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 複åˆæ¤œç´¢ã‚’修正ã—ãŸã€‚ +* 軽度ã®ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.3beta2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* é‡å¤§ãŠã‚ˆã³è»½åº¦ã®ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ +* `eb3.m4' 㯠`$(datadir)/aclocal' ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.3beta1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.3beta0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EPWING ã®ãƒ•ã‚¡ã‚¤ãƒ«åや圧縮タイプを見分ã‘るコードを大幅ã«æ›¸ã改ã‚ãŸã€‚ +* 関数 eb_multi_title() を追加ã—ãŸã€‚ + ã“ã®é–¢æ•°ã¯ã€ç‰¹å®šã®è¤‡åˆæ¤œç´¢ã®é¡Œåã‚’å–å¾—ã™ã‚‹ã€‚ã“ã®é–¢æ•°ã®ä½¿ç”¨ã«ã‚ˆã£ã¦ã€ + `ebinfo' コマンド㧠`--multi-search' (`-m') を指定ã—ãŸéš›ã«ã€è¤‡åˆæ¤œç´¢ + ã®é¡Œåを表示ã™ã‚‹ã‚ˆã†ã«ãªã£ãŸã€‚ +* `ebrefile' ã®ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* インライン画åƒã«å¯¾å¿œã™ã‚‹ãŸã‚ã€ãƒ†ã‚­ã‚¹ãƒˆãƒ‡ãƒ¼ã‚¿ã¸ã®ãƒ•ãƒƒã‚¯ã‚’ 2 種類追加 + ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* PCM 音声データã®å‡¦ç†ã«ãŠã‘ã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* テキストã®ãƒ•ãƒƒã‚¯ã‚’ 2 種類追加ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* appendix ã®å‡¦ç†ã«ãŠã‘ã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* gettext ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚«ã‚¿ãƒ­ã‚°ã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* テキストã®èª­ã¿è¾¼ã¿ãƒ«ãƒ¼ãƒãƒ³ã‚’修正ã—ãŸã€‚ +* zlib-1.1.4 ã‚’å–り込んã ã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 特ã«ãªã—。 + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2beta3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* インストールã®éš›ã«èµ·ã“ã‚‹ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2beta2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 環境変数 EB_DEBUG ãŒå®šç¾©ã•ã‚Œã¦ã„ã‚‹ã¨ã€EB ライブラリãŒãƒ‡ãƒãƒƒã‚° + メッセージを出力ã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ + `configure' ã® `--enable-debug' オプションを削除ã—ãŸã€‚ +* EBZIP 圧縮形å¼ãƒ‡ãƒ¼ã‚¿ã®ä¼¸é•·ã«ãŠã‘る致命的ãªä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2beta1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* `ebzip' ã®æœ€é«˜åœ§ç¸®ãƒ¬ãƒ™ãƒ«ã‚’ 3 ã‹ã‚‰ 5 ã«å¤‰æ›´ã—ãŸã€‚ +* ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.2beta0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* eb_backward_text() を実装ã—ã€eb_forward_text() を改良ã—ãŸã€‚ +* EB ライブラリã®ãƒ—ログラミングドキュメント (日本語版) を復活ã•ã›ãŸã€‚ +* サンプルプログラムを復活ã•ã›ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 圧縮ã•ã‚ŒãŸ S-EBXA ã¸ã®ã‚µãƒãƒ¼ãƒˆã«ãŠã‘ã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.1beta1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* デãƒãƒƒã‚°ã‚³ãƒ¼ãƒ‰ã‚’付加ã—ãŸã€‚ + ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ `configure --enable-debug' ã¨ã™ã‚‹ã¨ã€æœ‰åŠ¹ã«ãªã‚‹ã€‚ +* eb_initialize_all_subbooks() ã‚’ eb_load_all_subbooks() ã«æ”¹åã—ãŸã€‚ + eb_initialize_all_appendix_subbooks() ã‚‚ eb_load_all_appendix_subbooks() + ã«æ”¹åã—ãŸã€‚ + 後方互æ›æ€§ã®ãŸã‚ã€ã“ã‚Œã¾ã§ã®åå‰ã¯ CPP マクロã¨ã—ã¦å®šç¾©ã™ã‚‹ã‚ˆã†ã« + ã—ãŸã€‚ +* "DUDEN" (EBG) ã¸ã®å¯¾å¿œãŒå¾©æ´»ã—ãŸã€‚ +* ルートディレクトリã«ãƒžã‚¦ãƒ³ãƒˆã•ã‚ŒãŸ CD-ROM ã®å‡¦ç†ã«ãŠã‘ã‚‹ä¸å…·åˆã‚’ + 修正ã—ãŸã€‚ +* EB ライブラリ内ã®åˆæœŸåŒ–ãŠã‚ˆã³å¾Œå§‹æœ«ãƒ«ãƒ¼ãƒãƒ³ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ›ãƒ¼ãƒ«ã‚’ + è¡Œã£ãŸã€‚ +* 軽度ã®ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.1beta0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 圧縮ã•ã‚ŒãŸ S-EBXA ã«å¯¾å¿œã—ãŸã€‚ +* ソニーデータディスクマン DP-S1000 付属ã®ã€Œæ—¥æœ¬å¤§ç™¾ç§‘全書ã€ã«å¯¾å¿œã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EB ã® LANGUAGE データã¸ã®å¯¾å¿œã‚’ã‚„ã‚ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0beta1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* `ebrefile' ã‚’ C ã§æ›¸ãç›´ã—ãŸã€‚ + 日本語ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚«ã‚¿ãƒ­ã‚°ã‚‚用æ„ã—ãŸã€‚ +* ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0beta0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* GNU gettext 0.10.36 ã® libintl ã«å¯¾å¿œã—ãŸã€‚ + 本パッケージã®ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ãƒ„ール群ã¯ã€libiconv ãŒåˆ©ç”¨å¯èƒ½ãªã‚‰ + リンクã™ã‚‹ã‚ˆã†ã«ãªã£ãŸã€‚ + `configure' ã« `--with-iconv-includes', `--with-iconv-libraries' + オプションを追加ã—ãŸã€‚ +* libintl ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’削除ã—ãŸã€‚ + `configure' ã® `--with-included-gettext' オプションも削除ã—ãŸã€‚ + libintl ãŒã‚·ã‚¹ãƒ†ãƒ ã«ãªã‘ã‚Œã°ã€NLS (Native/National Language Support) + ã¯ç„¡åŠ¹ã«ãªã‚‹ã€‚ +* EPWING ãŠã‚ˆã³ EB ã®ãƒ¢ãƒŽã‚¯ãƒ­ç”»åƒãƒ‡ãƒ¼ã‚¿ã«å¯¾å¿œã—ãŸã€‚ +* `ebzip' ã¯å‹•ç”»ã€ç”»åƒã€éŸ³å£°ã®å„データファイルã«å¯¾å¿œã™ã‚‹ã‚ˆã†ã«ãªã£ãŸã€‚ + `ebzip' ã« `--skip-content' (`-s') オプションを追加ã—ãŸã€‚ +* 軽度ã®ä¸å…·åˆã‚’ãŸãã•ã‚“修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0alpha4 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EPWING ã®å‹•ç”»ãƒ‡ãƒ¼ã‚¿ã€ã‚«ãƒ©ãƒ¼ç”»åƒãƒ‡ãƒ¼ã‚¿ã«å¯¾å¿œã—ãŸã€‚ +* EB ライブラリを利用ã—ãŸã‚¢ãƒ—リケーションå‘ã‘ã«ã€M4 マクロファイル + `eb3.m4' を用æ„ã—ãŸã€‚(Autoconf 2.49 ãŒå¿…è¦ã€‚) + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0alpha3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* テキストã®ãƒ•ãƒƒã‚¯é–¢é€£ã® API を改ã‚ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0alpha2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ãŸãã•ã‚“ã®ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0alpha1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EPWING V6 ã®åœ§ç¸®å½¢å¼ã«å¯¾å¿œã—ãŸã„。 +* ファイルåやディレクトリåã«ãŠã‘ã‚‹ã€å¤§æ–‡å­—/å°æ–‡å­—や接尾å­ã®ä¸€è²«æ€§ + ã®æ¬ å¦‚を無視ã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ +* `ebzip' ã® `--suffix', `--case' オプションを削除ã—ãŸã€‚ +* フォント関連㮠API を若干ãªãŒã‚‰å¤‰æ›´ã—ãŸã€‚ +* 軽度ã®ä¸å…·åˆã‚’ã€ã‹ãªã‚Šè‰²ã€…ã¨ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0alpha0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 複åˆæ¤œç´¢ã«å¯¾å¿œã—ãŸã€‚ +* æ¡ä»¶æ¤œç´¢ã«å¯¾å¿œã—ãŸã€‚ +* GNU gettext を用ã„㟠NLS (Native/National Language Support)。 + 日本語ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚«ã‚¿ãƒ­ã‚°ã‚’用æ„ã—ãŸã€‚ +* 実験的ãªãŒã‚‰ Pthread ã«å¯¾å¿œã—ãŸã€‚ + `configure' ã« `--enable-pthreads' オプションを追加ã—ãŸã€‚ +* `configure' ãŒã€è‡ªå‹•çš„ã« zlib を見ã¤ã‘出ã™ã‚ˆã†ã«ã—ãŸã€‚ +* API を変更ã—ãŸã€‚ + ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.x ã® API ã¨ã¯ã€éžäº’æ›ãªç‚¹ãŒã„ãã¤ã‹ã‚る。 +* 軽度ã®ä¸å…·åˆã‚’ãŸãã•ã‚“修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3.7 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* "DUDEN Die sinn-und sachverwandten Worter" (EBG) 㨠"DUDEN Das + Fremdworterbuch" ã«å¯¾å¿œã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3.6 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 「日本語語彙大系〠(EPWING, 岩波書店) ã§é¡•åœ¨åŒ–ã™ã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* "EDICT" (JIS X 4081, フリーã®è¾žæ›¸) ã§é¡•åœ¨åŒ–ã™ã‚‹ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3.5 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 特ã«ãªã—。 + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3.4 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EPWING ã®ä¼¸é•·ãƒ«ãƒ¼ãƒãƒ³ã®ä¸å…·åˆã‚’修正ã—ãŸã€‚ +* 軽度ã®ä¸å…·åˆã‚’ã„ãã¤ã‹ä¿®æ­£ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 共有ライブラリã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 軽度ãªä¸å…·åˆã‚’修正ã—ãŸã€‚ + +(ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3.1 ã¯ãƒªãƒªãƒ¼ã‚¹ã—ã¦ã„ãªã„。) + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 特ã«ãªã—。 + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3beta3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 特ã«ãªã—。 + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3beta2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 特ã«ãªã—。 + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3beta1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 実験的ãªãŒã‚‰ EBXA-C ã«å¯¾å¿œã—ãŸã€‚ +* 実験的ãªãŒã‚‰ã€åŒºåˆ‡ã‚Šæ–‡å­— (stop-code) ã®è‡ªå‹•æ¤œå‡ºã«å¯¾å¿œã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.3beta0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EPWING 圧縮形å¼ã§åœ§ç¸®ã•ã‚ŒãŸ CD-ROM 書ç±ã«å¯¾å¿œã—ãŸã€‚ +* `ebzip' ã®æƒ…報通知メッセージを変更ã—ãŸã€‚ +* `ebrefile' ã®ä¸å…·åˆã‚’修正ã—ãŸã€‚ + `ebrefile' 㯠`ebzip' ã¨åŒã˜é †åºã§ã‚«ã‚¿ãƒ­ã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã‚’探ã—ã«è¡Œã£ã¦ + ã„ãªã‹ã£ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.2.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* samples 㨠samples-ja ã‚’çµ±åˆã—ãŸã€‚ +* `configure' ã« `--enable-samples' オプションを追加ã—ãŸã€‚ +* DOS, Windows, OS/2 ã¸ã®å¯¾å¿œã‚’改善ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EB ライブラリã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’追加ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.1.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 共有ライブラリã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’修正ã—ãŸã€‚ +* FreeBSD-ELF ã«å¯¾å¿œã—㟠libtool を使ã†ã‚ˆã†ã«ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.1.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* Windows VC++ å‘ã‘ã®ã‚³ãƒ¼ãƒ‰ã‚’ã„ãã¤ã‹è¿½åŠ ã—ãŸã€‚ +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.1beta2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* `ebzip' ã«åœ§ç¸®ãƒ¬ãƒ™ãƒ« 3 を新設ã—ãŸã€‚ +* æ–°ãŸã« `ebrefile' コマンドを追加ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.1beta1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.1beta0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* `ebfont' ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’追加ã—ãŸã€‚ +* 日本語ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’追加ã—ãŸã€‚ +* `configure' ã« `--with-zlib', `--with-zlib-includes', + `--with-zlib-libraries' オプションを追加ã—ãŸã€‚ +* CD-ROM 書ç±ã®åœ§ç¸®/伸長ã«å¯¾å¿œã—ãŸã€‚ +* æ–°ãŸã« `ebzip' コマンドを追加ã—ãŸã€‚ +* `ebappendix' ã® `--filename-case' オプションを `--case' ã«æ”¹åã—ãŸã€‚ +* `ebappendix' ã® `--no-catalogs' オプションをå†è¿½åŠ ã—ãŸã€‚ +* `ebfont' ã« `--subbook' (`-S') オプションを足ã—ãŸã€‚ +* `ebfont' ãŒç”Ÿæˆã™ã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æ§‹é€ ã‚’変更ã—ãŸã€‚ +* zlib ソースコードをå–り込むよã†ã«ã—ãŸã€‚ +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 特ã«ãªã—。 + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0beta1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* `ebappendix' ã®ã‚ªãƒ—ション `--filename-cases' ã‚’ `--filename-case' ã« + 改åã—ãŸã€‚ +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0beta0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* GNU libtool ã®åˆ©ç”¨ã«ã‚ˆã‚Šã€EB ライブラリã®å…±æœ‰ãƒ©ã‚¤ãƒ–ラリ版をコンパイ + ルã§ãるよã†ã«ã—ãŸã€‚ +* 関数ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚’変更ã—ãŸã€‚ + EB ライブラリ 1.0.x 㨠2.0 ã§ã€ã„ãã¤ã‹éžäº’æ›ãªç®‡æ‰€ãŒç”Ÿã˜ãŸã€‚ +* `ebinfo' ã® Texinfo ドキュメントを追加ã—ãŸã€‚ +* JIS X 4081-1996 ã®ã»ã¨ã‚“ã©ã®è¨˜è¿°ã«å¯¾å¿œã—ãŸã€‚ +* ソースコードé…布パッケージã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ§‹æˆã‚’変更ã—ãŸã€‚ +* `ebappendix' ã® `--no-catalogs' オプションを削除ã—ãŸã€‚ +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.6 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.5 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.4 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* 特ã«ãªã—。 + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.3 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* "Concise Oxford dicitionary" ã«å¯¾å¿œã—ãŸã€‚ +* 複数ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ä¸Šã§ã®ã‚³ãƒ³ãƒ‘イルã«é–¢ã™ã‚‹ Makefile.am ã®ä¸å…·åˆ + を修正ã—ãŸã€‚ + 複数ã®ç¨®é¡žã®ã‚³ãƒ³ãƒ”ュータ上ã§ã€åŒæ™‚ã«æœ¬ãƒ‘ッケージをコンパイルã§ãã‚‹ + よã†ã«ãªã£ãŸã€‚ +* ビットマップã®å¤‰æ›é–¢æ•°ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚’変更ã—ãŸã€‚ +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* EB ライブラリã«é–¢æ•°ã‚’ã„ãã¤ã‹è¿½åŠ ã—ãŸã€‚ + ã“れらã®é–¢æ•°ã¯ã€CD-ROM 書ç±ãŒå®šç¾©ã—ã¦ã„る外字ã®ç”»åƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’ç”Ÿæˆ + ã™ã‚‹ã€‚対応ã—ã¦ã„ã‚‹ç”»åƒå½¢å¼ã¯ã€XBM, XPM 㨠GIF。 +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0.1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* JIS X 4081-1996 ã«è¨˜ã•ã‚Œã¦ã„る表示制御記述å­ã‚’èªè­˜ã™ã‚‹ã‚ˆã†ã«ã—ãŸã€‚ +* ã„ãã¤ã‹ã® EPWING 書ç±ã§ã€æ¼¢å­—ã«ã‚ˆã‚‹å‰æ–¹ä¸€è‡´æ¤œç´¢ãŒã§ãるよã†ã«ã—ãŸã€‚ +* EPWING 版リーダーズ英和辞典ã«å¯¾å¿œã—ãŸã€‚ +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0beta2 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ + +ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.0beta1 ã«ãŠã‘る主ãªå¤‰æ›´ç‚¹: + +* appendix データファイルã®å½¢å¼ã‚’変更ã—ãŸã€‚ +* ä¸å…·åˆã‚’修正ã—ãŸã€‚ diff --git a/lib/ebu/README b/lib/ebu/README new file mode 100644 index 0000000..fb22c88 --- /dev/null +++ b/lib/ebu/README @@ -0,0 +1,11 @@ +EB Library with UTF-8 support +http://green.ribbon.to/~ikazuhiro/dic/ebu.html + + Kazuhiro Ito + +JIS X 4081 UTF-8 extension ã«æº–æ‹ ã—ãŸæ›¸ç±ã«å¯¾å¿œã™ã‚‹ã€EB Library ã® +改造版ã§ã™ã€‚ + +ドキュメント類㯠EB Library ã‹ã‚‰æ›´æ–°ã—ã¦ã„ã¾ã›ã‚“。 +使用方法等ã¯é…布ページをå‚ç…§ã—ã¦ãã ã•ã„。 +EB Library ã® README 㯠README.org ã«ã‚ã‚Šã¾ã™ã€‚ diff --git a/lib/ebu/README.org b/lib/ebu/README.org new file mode 100644 index 0000000..39c55e0 --- /dev/null +++ b/lib/ebu/README.org @@ -0,0 +1,71 @@ + + EB $B%i%$%V%i%j(B + CD-ROM $B=q@R$K%"%/%;%9$9$k$?$a$N(B C $B$N%i%$%V%i%j(B + + +EB $B%i%$%V%i%j$O(B CD-ROM $B=q@R$K%"%/%;%9$9$k$?$a$N(B C $B$N%i%$%V%i%j$G$9!#(B +UNIX $B7O(B OS $B$*$h$S(B Windows (2000$B0J9_(B) $B$N%7%9%F%`>e$GF0:n$5$;$k$3$H$,$G(B +$B$-$^$9!#(B($B$?$@$7!"(BWindows $B$G%3%s%Q%$%k$9$k$K$O!"JL%Q%C%1!<%8$,I,MW$G$9!#(B) + +EB $B%i%$%V%i%j$O(B EB, EBG, EBXA, EBXA-C, S-EBXA $B$*$h$S(B EPWING $B7A<0$N(B +CD-ROM $B=q@R$KBP1~$7$F$$$^$9!#$3$l$i$O!"(B +$B$N(B ISO 9660 $B7A<0$HF1$8MWNN$G%^%&%s%H$9$k$3$H$,$G$-$^$9!#(B + +$B$^$?!"(BEB $B%i%$%V%i%j$O4v$D$+$N%f!<%F%j%F%#%3%^%s%I$bDs6!$7$F$$$^$9!#(B + + ebappendix appendix ($BIUO?(B) $B%G!<%?$r@07A$9$k(B + ebfont CD-ROM $B=q@RFb$N30;z$N%U%)%s%H%G!<%?$rpJs$r=PNO$9$k(B + ebrefile CD-ROM $B=q@R$N%+%?%m%0%U%!%$%k$r9=@.$7D>$9(B + ebstopcode CD-ROM $B=q@R$NK\J8$N6h@Z$j%3!<%I$r8!::$9$k(B + ebunzip CD-ROM $B=q@R$r?-D9$9$k(B + ebzip CD-ROM $B=q@R$r05=L$9$k(B + ebzipinfo CD-ROM $B=q@R$N05=L>pJs$r=PNO$9$k(B + + +$B%P!<%8%g%s(B 4.0 $B$+$i!"(BEB $B%i%$%V%i%j$OB>$N%[%9%H$N=q@R$K%"%/%;%9$G$-$k(B +$B$h$&$K$J$j$^$7$?!#1s3V%"%/%;%9MQ$N<1JL;R$r;H$&$3$H$G!"B>%[%9%H>e$N(B +CD-ROM $B=q@R$r;XDj$9$k$3$H$,$G$-$^$9!#$3$N<1JL;R$O!":<$B%]!<%H(B>/<$B=q@RL>(B> (CD-ROM $B=q@RK\BN(B) + ebnet://<$B%[%9%H(B>:<$B%]!<%H(B>/<$B=q@RL>(B>.app ($BIUO?%Q%C%1!<%8(B) + +<$B%[%9%H(B> $B$O1s3V%[%9%H$N(B IP $B%"%I%l%9$b$7$/$O%[%9%HL>$G$9!#$?$@$7!"(BIPv6 +$B%"%I%l%9$r;XDj$9$k>l9g$O!"%"%I%l%9$r(B `[' $B$H(B `]' $B$G0O$`I,MW$,$"$j$^$9!#(B +<$B%]!<%H(B> $B$O!"$=$N%[%9%H$,BT$A' $B$NItJ,$O>JN,2D(B +$BG=$G$9!#(B + +$B0J2<$KNc$r5-$7$^$9!#(B + ebnet://eb.example.com/dict + ebnet://eb.example.com:22010/dict.app + ebnet://192.168.1.1/dict.app + ebnet://192.168.1.1:22010/dict + ebnet://[fe80::290:27ff:fe3]/dict.app + ebnet://[fe80::290:27ff:fe3]:22010/dict + +$B1s3V%"%/%;%9$r9T$&$K$O!"(BEBNETD $B$r(B <$B%[%9%H(B> $B>e$K%$%s%9%H!<%k$9$kI,MW$,(B +$B$"$j$^$9!#(BEBNETD $B$O!"(BEB Library $BMQ$N1s3V%"%/%;%9%5!<%P$N%=%U%H%&%'%"(B +$B$G$9!#(B + +EB $B%i%$%V%i%j$O%U%j!<%=%U%H%&%'%"$G$9!#%=!<%9%3!<%I$*$h$S%P%$%J%j$r!"(B +$B$$$o$f$k(B Modified BSD $B%i%$%;%s%9(B $B$N2<$G;HMQ$9$k$3$H$,2DG=$G$9!#(B +($B%P!<%8%g%s(B 4.1$B$h$j$bA0$N$b$N$O!"(BGPL $B$r:NMQ$7$F$$$^$7$?!#(B) +$B%i%$%;%s%9$K4X$7$F!">\$7$/$O(B COPYING $B$H$$$&1QJ8$N%U%!%$%k$r;2>H$7$F(B +$B2<$5$$!#(B + +$B:G?7$N(B EB $B%i%$%V%i%j$OpJs$O sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 5 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 13 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.60])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/gettext.m4]) +m4_include([m4/in6addr.m4]) +m4_include([m4/largefile.m4]) +m4_include([m4/lcmessage.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([m4/sockaddrin6.m4]) +m4_include([m4/sockinttypes.m4]) diff --git a/lib/ebu/config.guess b/lib/ebu/config.guess new file mode 100644 index 0000000..dc84c68 --- /dev/null +++ b/lib/ebu/config.guess @@ -0,0 +1,1501 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. + +timestamp='2009-11-20' + +# 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., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, 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. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# 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. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +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 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # 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 ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-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 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + 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 ;; + 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 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #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_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${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 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????: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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + 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 ;; + *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | 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=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + 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_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # 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. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + 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 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*: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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + 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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *: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 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#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 + 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\n"); 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`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%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) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# 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_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# 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 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lib/ebu/config.h b/lib/ebu/config.h new file mode 100644 index 0000000..a7e5fcf --- /dev/null +++ b/lib/ebu/config.h @@ -0,0 +1,231 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Use DOS style pathnames */ +/* #undef DOS_FILE_PATH */ + +/* Define if build with ebnet support */ +#define ENABLE_EBNET 1 + +/* Define if build with IPv6 support */ +#define ENABLE_IPV6 1 + +/* Define if libdeflate support is enabled. */ +/* #undef ENABLE_LIBDEFLATE */ + +/* Define if NLS is requested */ +#define ENABLE_NLS 1 + +/* Define if pthread support is enabled. */ +/* #undef ENABLE_PTHREAD */ + +/* Define if build with Winsock2 */ +/* #undef ENABLE_WINSOCK2 */ + +/* Define if command names have the suffix \`.exe' */ +/* #undef EXEEXT_EXE */ + +/* Define to 1 if you have the `atoll' function. */ +#define HAVE_ATOLL 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_DIRECT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the `gai_strerror' function. */ +#define HAVE_GAI_STRERROR 1 + +/* Define to 1 if you have the `getaddrinfo' function. */ +#define HAVE_GETADDRINFO 1 + +/* Define to 1 if you have the `getnameinfo' function. */ +#define HAVE_GETNAMEINFO 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_GETOPT_H 1 + +/* Define to 1 if you have the `getopt_long' function. */ +#define HAVE_GETOPT_LONG 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ICONV_H 1 + +/* Define to 1 if you have the `iconv_open' function. */ +#define HAVE_ICONV_OPEN 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LANGINFO_H 1 + +/* Define to 1 if you have the `LC_MESSAGES' locale category */ +#define HAVE_LC_MESSAGES 1 + +/* Define to 1 if you have the `bind' library (-lbind). */ +/* #undef HAVE_LIBBIND */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LIBCHARSET_H */ + +/* Define to 1 if you have the `libiconv_open' function. */ +/* #undef HAVE_LIBICONV_OPEN */ + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#define HAVE_LIBNSL 1 + +/* Define to 1 if you have the `resolv' library (-lresolv). */ +/* #undef HAVE_LIBRESOLV */ + +/* Define to 1 if you have the `socket' library (-lsocket). */ +/* #undef HAVE_LIBSOCKET */ + +/* Define to 1 if you have the `ws2_32' library (-lws2_32). */ +/* #undef HAVE_LIBWS2_32 */ + +/* Define to 1 if you have the `locale_charset' function. */ +/* #undef HAVE_LOCALE_CHARSET */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MBSTRING_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `nl_langinfo' function. */ +#define HAVE_NL_LANGINFO 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_PTHREAD_H 1 + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if defines `struct in6_addr' */ +#define HAVE_STRUCT_IN6_ADDR 1 + +/* Define to 1 if defines `struct sockaddr_in6' */ +#define HAVE_STRUCT_SOCKADDR_IN6 1 + +/* Define to 1 if defines `struct sockaddr_storage' */ +#define HAVE_STRUCT_SOCKADDR_STORAGE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WS2TCPIP_H */ + +/* Define to 1 if you have the `_atoi64' function. */ +/* #undef HAVE__ATOI64 */ + +/* Define to 1 if you have the `_getdcwd' function. */ +/* #undef HAVE__GETDCWD */ + +/* Define to 1 if `in6addr_any' is declared by */ +#define IN6ADDR_ANY_DECLARED 1 + +/* Define to 1 if `in6addr_loopback' is declared by */ +#define IN6ADDR_LOOPBACK_DECLARED 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Mailing address */ +#define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" + +/* Name of package */ +#define PACKAGE "ebu" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "ebu" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "ebu 4.5-20200413" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "ebu" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "4.5-20200413" + +/* Define to `1' if printf() recognizes "I64" modifier for __int64 */ +/* #undef PRINTF_I64_MODIFIER */ + +/* Define to `1' if printf() recognizes "ll" modifier for long long */ +#define PRINTF_LL_MODIFIER 1 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "4.5-20200413" + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +/* #undef _FILE_OFFSET_BITS */ + +/* Define for large files, on AIX-style hosts. */ +/* #undef _LARGE_FILES */ + +/* Define to `unsigned char', `unsigned short', `unsigned int' or `unsigned + long' according with size of `sin_port' in `struct sockaddr_in', if + , or does not define + `in_port_t'. */ +/* #undef in_port_t */ + +/* Define to `int' if does not define. */ +/* #undef mode_t */ + +/* Define to `unsigned char', `unsigned short', `unsigned int' or `unsigned + long' according with size of `sa_family' in `struct sockaddr', if + or does not define `sa_family_t'. */ +/* #undef sa_family_t */ + +/* Define to `int' if or does not define. */ +/* #undef socklen_t */ + +/* Define to `int' if does not define. */ +/* #undef ssize_t */ diff --git a/lib/ebu/config.h.in b/lib/ebu/config.h.in new file mode 100644 index 0000000..388b6fa --- /dev/null +++ b/lib/ebu/config.h.in @@ -0,0 +1,230 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Use DOS style pathnames */ +#undef DOS_FILE_PATH + +/* Define if build with ebnet support */ +#undef ENABLE_EBNET + +/* Define if build with IPv6 support */ +#undef ENABLE_IPV6 + +/* Define if libdeflate support is enabled. */ +#undef ENABLE_LIBDEFLATE + +/* Define if NLS is requested */ +#undef ENABLE_NLS + +/* Define if pthread support is enabled. */ +#undef ENABLE_PTHREAD + +/* Define if build with Winsock2 */ +#undef ENABLE_WINSOCK2 + +/* Define if command names have the suffix \`.exe' */ +#undef EXEEXT_EXE + +/* Define to 1 if you have the `atoll' function. */ +#undef HAVE_ATOLL + +/* Define to 1 if you have the header file. */ +#undef HAVE_DIRECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `gai_strerror' function. */ +#undef HAVE_GAI_STRERROR + +/* Define to 1 if you have the `getaddrinfo' function. */ +#undef HAVE_GETADDRINFO + +/* Define to 1 if you have the `getnameinfo' function. */ +#undef HAVE_GETNAMEINFO + +/* Define to 1 if you have the header file. */ +#undef HAVE_GETOPT_H + +/* Define to 1 if you have the `getopt_long' function. */ +#undef HAVE_GETOPT_LONG + +/* Define to 1 if you have the header file. */ +#undef HAVE_ICONV_H + +/* Define to 1 if you have the `iconv_open' function. */ +#undef HAVE_ICONV_OPEN + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LANGINFO_H + +/* Define to 1 if you have the `LC_MESSAGES' locale category */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the `bind' library (-lbind). */ +#undef HAVE_LIBBIND + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBCHARSET_H + +/* Define to 1 if you have the `libiconv_open' function. */ +#undef HAVE_LIBICONV_OPEN + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#undef HAVE_LIBNSL + +/* Define to 1 if you have the `resolv' library (-lresolv). */ +#undef HAVE_LIBRESOLV + +/* Define to 1 if you have the `socket' library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define to 1 if you have the `ws2_32' library (-lws2_32). */ +#undef HAVE_LIBWS2_32 + +/* Define to 1 if you have the `locale_charset' function. */ +#undef HAVE_LOCALE_CHARSET + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MBSTRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `nl_langinfo' function. */ +#undef HAVE_NL_LANGINFO + +/* Define to 1 if you have the header file. */ +#undef HAVE_NL_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_PTHREAD_H + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if defines `struct in6_addr' */ +#undef HAVE_STRUCT_IN6_ADDR + +/* Define to 1 if defines `struct sockaddr_in6' */ +#undef HAVE_STRUCT_SOCKADDR_IN6 + +/* Define to 1 if defines `struct sockaddr_storage' */ +#undef HAVE_STRUCT_SOCKADDR_STORAGE + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_WS2TCPIP_H + +/* Define to 1 if you have the `_atoi64' function. */ +#undef HAVE__ATOI64 + +/* Define to 1 if you have the `_getdcwd' function. */ +#undef HAVE__GETDCWD + +/* Define to 1 if `in6addr_any' is declared by */ +#undef IN6ADDR_ANY_DECLARED + +/* Define to 1 if `in6addr_loopback' is declared by */ +#undef IN6ADDR_LOOPBACK_DECLARED + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Mailing address */ +#undef MAILING_ADDRESS + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to `1' if printf() recognizes "I64" modifier for __int64 */ +#undef PRINTF_I64_MODIFIER + +/* Define to `1' if printf() recognizes "ll" modifier for long long */ +#undef PRINTF_LL_MODIFIER + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to `unsigned char', `unsigned short', `unsigned int' or `unsigned + long' according with size of `sin_port' in `struct sockaddr_in', if + , or does not define + `in_port_t'. */ +#undef in_port_t + +/* Define to `int' if does not define. */ +#undef mode_t + +/* Define to `unsigned char', `unsigned short', `unsigned int' or `unsigned + long' according with size of `sa_family' in `struct sockaddr', if + or does not define `sa_family_t'. */ +#undef sa_family_t + +/* Define to `int' if or does not define. */ +#undef socklen_t + +/* Define to `int' if does not define. */ +#undef ssize_t diff --git a/lib/ebu/config.log b/lib/ebu/config.log new file mode 100644 index 0000000..d81c655 --- /dev/null +++ b/lib/ebu/config.log @@ -0,0 +1,2501 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by ebu configure 4.5-20200413, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = sagan-panda +uname -m = x86_64 +uname -r = 4.4.0-19041-Microsoft +uname -s = Linux +uname -v = #488-Microsoft Mon Sep 01 13:43:00 PST 2020 + +/usr/bin/uname -p = x86_64 +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/sbin +PATH: /usr/local/bin +PATH: /usr/sbin +PATH: /usr/bin +PATH: /sbin +PATH: /bin +PATH: /usr/games +PATH: /usr/local/games +PATH: /mnt/c/Program Files/VanDyke Software/SecureFX/ +PATH: /mnt/c/Program Files/Common Files/Oracle/Java/javapath +PATH: /mnt/c/WINDOWS/system32 +PATH: /mnt/c/WINDOWS +PATH: /mnt/c/WINDOWS/System32/Wbem +PATH: /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/ +PATH: /mnt/c/WINDOWS/System32/OpenSSH/ +PATH: /mnt/c/Program Files/nodejs/ +PATH: /mnt/c/Program Files (x86)/ZeroTier/One/ +PATH: /mnt/c/Program Files/Go/bin +PATH: /mnt/c/Users/root/AppData/Local/Programs/Python/Python39/Scripts/ +PATH: /mnt/c/Users/root/AppData/Local/Programs/Python/Python39/ +PATH: /mnt/c/Users/root/AppData/Local/Microsoft/WindowsApps +PATH: /mnt/c/Users/root/AppData/Roaming/npm +PATH: /mnt/c/Users/root/go/bin +PATH: /mnt/c/Program Files/Bandizip/ +PATH: /mnt/c/files/scripts +PATH: /mnt/c/files/bin +PATH: /mnt/c/Users/root/files/apps/Ubuntu_2004 +PATH: /mnt/c/files/apps/SuperCMD +PATH: /mnt/c/files/apps/iperf-3.1.3-win64 +PATH: /mnt/c/Program Files/Git/cmd +PATH: /mnt/c/files/apps/PSTools +PATH: /mnt/c/Users/root/AppData/Local/Programs/Python/Python39/Scripts/ +PATH: /mnt/c/Users/root/AppData/Local/Programs/Python/Python39/ +PATH: /mnt/c/Users/root/AppData/Local/Microsoft/WindowsApps +PATH: /mnt/c/Users/root/AppData/Roaming/npm +PATH: /mnt/c/Users/root/go/bin +PATH: /mnt/c/Program Files/Bandizip/ +PATH: /snap/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2397: checking for a BSD-compatible install +configure:2465: result: /usr/bin/install -c +configure:2476: checking whether build environment is sane +configure:2513: result: yes +configure:2640: checking for a thread-safe mkdir -p +configure:2679: result: /usr/bin/mkdir -p +configure:2692: checking for gawk +configure:2708: found /usr/bin/gawk +configure:2719: result: gawk +configure:2730: checking whether make sets $(MAKE) +configure:2752: result: yes +configure:2897: checking for gcc +configure:2913: found /usr/bin/gcc +configure:2924: result: gcc +configure:3153: checking for C compiler version +configure:3162: gcc --version >&5 +gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0 +Copyright (C) 2019 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:3173: $? = 0 +configure:3162: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.3.0-10ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu2) +configure:3173: $? = 0 +configure:3162: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:3173: $? = 1 +configure:3162: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? +gcc: fatal error: no input files +compilation terminated. +configure:3173: $? = 1 +configure:3193: checking whether the C compiler works +configure:3215: gcc conftest.c >&5 +configure:3219: $? = 0 +configure:3267: result: yes +configure:3270: checking for C compiler default output file name +configure:3272: result: a.out +configure:3278: checking for suffix of executables +configure:3285: gcc -o conftest conftest.c >&5 +configure:3289: $? = 0 +configure:3311: result: +configure:3333: checking whether we are cross compiling +configure:3341: gcc -o conftest conftest.c >&5 +configure:3345: $? = 0 +configure:3352: ./conftest +configure:3356: $? = 0 +configure:3344: result: no +configure:3349: checking for suffix of object files +configure:3371: gcc -c conftest.c >&5 +configure:3375: $? = 0 +configure:3396: result: o +configure:3400: checking whether we are using the GNU C compiler +configure:3419: gcc -c conftest.c >&5 +configure:3419: $? = 0 +configure:3428: result: yes +configure:3437: checking whether gcc accepts -g +configure:3457: gcc -c -g conftest.c >&5 +configure:3457: $? = 0 +configure:3498: result: yes +configure:3515: checking for gcc option to accept ISO C89 +configure:3578: gcc -c -g -O2 conftest.c >&5 +configure:3578: $? = 0 +configure:3591: result: none needed +configure:3622: checking for style of include used by make +configure:3650: result: GNU +configure:3675: checking dependency style of gcc +configure:3785: result: gcc3 +configure:3829: checking build system type +configure:3843: result: x86_64-unknown-linux-gnu +configure:3863: checking host system type +configure:3876: result: x86_64-unknown-linux-gnu +configure:3917: checking how to print strings +configure:3944: result: printf +configure:3965: checking for a sed that does not truncate output +configure:4029: result: /usr/bin/sed +configure:4047: checking for grep that handles long lines and -e +configure:4105: result: /usr/bin/grep +configure:4110: checking for egrep +configure:4172: result: /usr/bin/grep -E +configure:4177: checking for fgrep +configure:4239: result: /usr/bin/grep -F +configure:4274: checking for ld used by gcc +configure:4341: result: /usr/bin/ld +configure:4348: checking if the linker (/usr/bin/ld) is GNU ld +configure:4363: result: yes +configure:4375: checking for BSD- or MS-compatible name lister (nm) +configure:4429: result: /usr/bin/nm -B +configure:4559: checking the name lister (/usr/bin/nm -B) interface +configure:4566: gcc -c -g -O2 conftest.c >&5 +configure:4569: /usr/bin/nm -B "conftest.o" +configure:4572: output +0000000000000000 B some_variable +configure:4573: result: BSD nm +configure:4576: checking whether ln -s works +configure:4580: result: yes +configure:4588: checking the maximum length of command line arguments +configure:4719: result: 1572864 +configure:4767: checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format +configure:4807: result: func_convert_file_noop +configure:4814: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format +configure:4834: result: func_convert_file_noop +configure:4841: checking for /usr/bin/ld option to reload object files +configure:4848: result: -r +configure:4922: checking for objdump +configure:4938: found /usr/bin/objdump +configure:4949: result: objdump +configure:4981: checking how to recognize dependent libraries +configure:5181: result: pass_all +configure:5266: checking for dlltool +configure:5296: result: no +configure:5326: checking how to associate runtime and link libraries +configure:5353: result: printf %s\n +configure:5414: checking for ar +configure:5430: found /usr/bin/ar +configure:5441: result: ar +configure:5478: checking for archiver @FILE support +configure:5495: gcc -c -g -O2 conftest.c >&5 +configure:5495: $? = 0 +configure:5498: ar cru libconftest.a @conftest.lst >&5 +ar: `u' modifier ignored since `D' is the default (see `U') +configure:5501: $? = 0 +configure:5506: ar cru libconftest.a @conftest.lst >&5 +ar: `u' modifier ignored since `D' is the default (see `U') +ar: conftest.o: No such file or directory +configure:5509: $? = 1 +configure:5508: result: @ +configure:5566: checking for strip +configure:5582: found /usr/bin/strip +configure:5593: result: strip +configure:5665: checking for ranlib +configure:5681: found /usr/bin/ranlib +configure:5692: result: ranlib +configure:5794: checking command to parse /usr/bin/nm -B output from gcc object +configure:5947: gcc -c -g -O2 conftest.c >&5 +configure:5950: $? = 0 +configure:5954: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm +configure:5957: $? = 0 +configure:6023: gcc -o conftest -g -O2 conftest.c conftstm.o >&5 +configure:6026: $? = 0 +configure:6064: result: ok +configure:6111: checking for sysroot +configure:6141: result: no +configure:6148: checking for a working dd +configure:6186: result: /usr/bin/dd +configure:6190: checking how to truncate binary pipes +configure:6205: result: /usr/bin/dd bs=4096 count=1 +configure:6341: gcc -c -g -O2 conftest.c >&5 +configure:6344: $? = 0 +configure:6534: checking for mt +configure:6550: found /usr/bin/mt +configure:6561: result: mt +configure:6584: checking if mt is a manifest tool +configure:6590: mt '-?' +configure:6598: result: no +configure:7275: checking how to run the C preprocessor +configure:7306: gcc -E conftest.c +configure:7306: $? = 0 +configure:7320: gcc -E conftest.c +conftest.c:12:10: fatal error: ac_nonexistent.h: No such file or directory + 12 | #include + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:7320: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| /* end confdefs.h. */ +| #include +configure:7345: result: gcc -E +configure:7365: gcc -E conftest.c +configure:7365: $? = 0 +configure:7379: gcc -E conftest.c +conftest.c:12:10: fatal error: ac_nonexistent.h: No such file or directory + 12 | #include + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:7379: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| /* end confdefs.h. */ +| #include +configure:7408: checking for ANSI C header files +configure:7428: gcc -c -g -O2 conftest.c >&5 +configure:7428: $? = 0 +configure:7501: gcc -o conftest -g -O2 conftest.c >&5 +configure:7501: $? = 0 +configure:7501: ./conftest +configure:7501: $? = 0 +configure:7512: result: yes +configure:7525: checking for sys/types.h +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7525: $? = 0 +configure:7525: result: yes +configure:7525: checking for sys/stat.h +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7525: $? = 0 +configure:7525: result: yes +configure:7525: checking for stdlib.h +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7525: $? = 0 +configure:7525: result: yes +configure:7525: checking for string.h +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7525: $? = 0 +configure:7525: result: yes +configure:7525: checking for memory.h +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7525: $? = 0 +configure:7525: result: yes +configure:7525: checking for strings.h +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7525: $? = 0 +configure:7525: result: yes +configure:7525: checking for inttypes.h +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7525: $? = 0 +configure:7525: result: yes +configure:7525: checking for stdint.h +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7525: $? = 0 +configure:7525: result: yes +configure:7525: checking for unistd.h +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7525: $? = 0 +configure:7525: result: yes +configure:7539: checking for dlfcn.h +configure:7539: gcc -c -g -O2 conftest.c >&5 +configure:7539: $? = 0 +configure:7539: result: yes +configure:7795: checking for objdir +configure:7810: result: .libs +configure:8074: checking if gcc supports -fno-rtti -fno-exceptions +configure:8092: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 +cc1: warning: command line option '-fno-rtti' is valid for C++/D/ObjC++ but not for C +configure:8096: $? = 0 +configure:8109: result: no +configure:8467: checking for gcc option to produce PIC +configure:8474: result: -fPIC -DPIC +configure:8482: checking if gcc PIC flag -fPIC -DPIC works +configure:8500: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5 +configure:8504: $? = 0 +configure:8517: result: yes +configure:8546: checking if gcc static flag -static works +configure:8574: result: yes +configure:8589: checking if gcc supports -c -o file.o +configure:8610: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5 +configure:8614: $? = 0 +configure:8636: result: yes +configure:8644: checking if gcc supports -c -o file.o +configure:8691: result: yes +configure:8724: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:9983: result: yes +configure:10020: checking whether -lc should be explicitly linked in +configure:10028: gcc -c -g -O2 conftest.c >&5 +configure:10031: $? = 0 +configure:10046: gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/bin/grep -lc \>/dev/null 2\>\&1 +configure:10049: $? = 0 +configure:10063: result: no +configure:10223: checking dynamic linker characteristics +configure:10804: gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c >&5 +configure:10804: $? = 0 +configure:11041: result: GNU/Linux ld.so +configure:11163: checking how to hardcode library paths into programs +configure:11188: result: immediate +configure:11736: checking whether stripping libraries is possible +configure:11741: result: yes +configure:11776: checking if libtool supports shared libraries +configure:11778: result: yes +configure:11781: checking whether to build shared libraries +configure:11806: result: yes +configure:11809: checking whether to build static libraries +configure:11813: result: yes +configure:8642: checking whether ln -s works +configure:8646: result: yes +configure:8663: checking for gcc option to support OpenMP +configure:8678: gcc -o conftest -g -O2 conftest.c >&5 +conftest.c:26:2: error: unknown type name 'choke' + 26 | choke me + | ^~~~~ +conftest.c:26:10: error: expected ';' before 'typedef' + 26 | choke me + | ^ + | ; +configure:8678: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| +| #ifndef _OPENMP +| choke me +| #endif +| #include +| int main () { return omp_get_num_threads (); } +| +configure:8696: gcc -o conftest -g -O2 -fopenmp conftest.c >&5 +configure:8696: $? = 0 +configure:8710: result: -fopenmp +configure:8725: checking for perl +configure:8743: found /usr/bin/perl +configure:8756: result: /usr/bin/perl +configure:8777: checking for special C compiler options needed for large files +configure:8822: result: no +configure:8828: checking for _FILE_OFFSET_BITS value needed for large files +configure:8853: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:8853: $? = 0 +configure:8885: result: no +configure:8971: checking for ll modifier of printf +configure:8995: gcc -o conftest -g -O2 -fopenmp conftest.c >&5 +configure:8995: $? = 0 +configure:8995: ./conftest +configure:8995: $? = 0 +configure:9005: result: yes +configure:9007: checking for I64 modifier of printf +configure:9031: gcc -o conftest -g -O2 -fopenmp conftest.c >&5 +conftest.c: In function 'main': +conftest.c:30:36: error: expected ')' before '__int64' + 30 | sprintf(buffer, "%I64x", (unsigned __int64) 1 << 32); + | ~ ^~~~~~~~ + | ) +conftest.c:30:48: warning: left shift count >= width of type [-Wshift-count-overflow] + 30 | sprintf(buffer, "%I64x", (unsigned __int64) 1 << 32); + | ^~ +conftest.c:30:23: warning: 'I' flag used with '%x' gnu_printf format [-Wformat=] + 30 | sprintf(buffer, "%I64x", (unsigned __int64) 1 << 32); + | ^ +configure:9031: $? = 1 +configure: program exited with status 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| +| #include +| #include +| #include +| int main() { +| char buffer[128]; +| sprintf(buffer, "%I64x", (unsigned __int64) 1 << 32); +| return (strcmp(buffer, "100000000") == 0) ? 0 : 1; +| } +| +configure:9041: result: no +configure:9064: checking locale.h usability +configure:9064: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:9064: $? = 0 +configure:9064: result: yes +configure:9064: checking locale.h presence +configure:9064: gcc -E conftest.c +configure:9064: $? = 0 +configure:9064: result: yes +configure:9064: checking for locale.h +configure:9064: result: yes +configure:9064: checking nl_types.h usability +configure:9064: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:9064: $? = 0 +configure:9064: result: yes +configure:9064: checking nl_types.h presence +configure:9064: gcc -E conftest.c +configure:9064: $? = 0 +configure:9064: result: yes +configure:9064: checking for nl_types.h +configure:9064: result: yes +configure:9076: checking for setlocale +configure:9076: gcc -o conftest -g -O2 -fopenmp conftest.c >&5 +configure:9076: $? = 0 +configure:9076: result: yes +configure:9087: checking for LC_MESSAGES +configure:9103: gcc -o conftest -g -O2 -fopenmp conftest.c >&5 +configure:9103: $? = 0 +configure:9111: result: yes +configure:9170: checking for iconv_open in -liconv +configure:9195: gcc -o conftest -g -O2 -fopenmp conftest.c -liconv >&5 +/usr/bin/ld: cannot find -liconv +collect2: error: ld returned 1 exit status +configure:9195: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char iconv_open (); +| int +| main () +| { +| return iconv_open (); +| ; +| return 0; +| } +configure:9204: result: no +configure:9209: checking for libiconv_open in -liconv +configure:9234: gcc -o conftest -g -O2 -fopenmp conftest.c -liconv >&5 +/usr/bin/ld: cannot find -liconv +collect2: error: ld returned 1 exit status +configure:9234: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char libiconv_open (); +| int +| main () +| { +| return libiconv_open (); +| ; +| return 0; +| } +configure:9243: result: no +configure:9254: checking for iconv_open +configure:9254: gcc -o conftest -g -O2 -fopenmp conftest.c >&5 +configure:9254: $? = 0 +configure:9254: result: yes +configure:9254: checking for libiconv_open +configure:9254: gcc -o conftest -g -O2 -fopenmp conftest.c >&5 +/usr/bin/ld: /tmp/ccgUHSdg.o: in function `main': +/mnt/d/files/projects/ebclient/lib/ebu/conftest.c:64: undefined reference to `libiconv_open' +collect2: error: ld returned 1 exit status +configure:9254: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| /* end confdefs.h. */ +| /* Define libiconv_open to an innocuous variant, in case declares libiconv_open. +| For example, HP-UX 11i declares gettimeofday. */ +| #define libiconv_open innocuous_libiconv_open +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char libiconv_open (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef libiconv_open +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char libiconv_open (); +| /* 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_libiconv_open || defined __stub___libiconv_open +| choke me +| #endif +| +| int +| main () +| { +| return libiconv_open (); +| ; +| return 0; +| } +configure:9254: result: no +configure:9254: checking for locale_charset +configure:9254: gcc -o conftest -g -O2 -fopenmp conftest.c >&5 +/usr/bin/ld: /tmp/ccjYzMSF.o: in function `main': +/mnt/d/files/projects/ebclient/lib/ebu/conftest.c:64: undefined reference to `locale_charset' +collect2: error: ld returned 1 exit status +configure:9254: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| /* end confdefs.h. */ +| /* Define locale_charset to an innocuous variant, in case declares locale_charset. +| For example, HP-UX 11i declares gettimeofday. */ +| #define locale_charset innocuous_locale_charset +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char locale_charset (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef locale_charset +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char locale_charset (); +| /* 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_locale_charset || defined __stub___locale_charset +| choke me +| #endif +| +| int +| main () +| { +| return locale_charset (); +| ; +| return 0; +| } +configure:9254: result: no +configure:9266: checking iconv.h usability +configure:9266: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:9266: $? = 0 +configure:9266: result: yes +configure:9266: checking iconv.h presence +configure:9266: gcc -E conftest.c +configure:9266: $? = 0 +configure:9266: result: yes +configure:9266: checking for iconv.h +configure:9266: result: yes +configure:9266: checking libcharset.h usability +configure:9266: gcc -c -g -O2 -fopenmp conftest.c >&5 +conftest.c:64:10: fatal error: libcharset.h: No such file or directory + 64 | #include + | ^~~~~~~~~~~~~~ +compilation terminated. +configure:9266: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:9266: result: no +configure:9266: checking libcharset.h presence +configure:9266: gcc -E conftest.c +conftest.c:31:10: fatal error: libcharset.h: No such file or directory + 31 | #include + | ^~~~~~~~~~~~~~ +compilation terminated. +configure:9266: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| /* end confdefs.h. */ +| #include +configure:9266: result: no +configure:9266: checking for libcharset.h +configure:9266: result: no +configure:9288: checking for NLS support +configure:9323: gcc -o conftest -g -O2 -fopenmp conftest.c -lintl -liconv >&5 +/usr/bin/ld: cannot find -lintl +/usr/bin/ld: cannot find -liconv +collect2: error: ld returned 1 exit status +configure:9323: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| /* end confdefs.h. */ +| +| #include +| #ifdef ENABLE_NLS +| #undef ENABLE_NLS +| #endif +| #define ENABLE_NLS 1 +| #ifdef HAVE_LOCALE_H +| #include +| #endif +| #include +| +| int +| main() +| { +| #ifdef HAVE_SETLOCALE +| setlocale(LC_ALL, ""); +| #endif +| bindtextdomain("gttest", ".locale"); +| textdomain("gttest"); +| gettext("foo"); +| return 0; +| } +| +configure:9365: gcc -o conftest -g -O2 -fopenmp conftest.c -lintl >&5 +/usr/bin/ld: cannot find -lintl +collect2: error: ld returned 1 exit status +configure:9365: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| /* end confdefs.h. */ +| +| #include +| #ifdef ENABLE_NLS +| #undef ENABLE_NLS +| #endif +| #define ENABLE_NLS 1 +| #ifdef HAVE_LOCALE_H +| #include +| #endif +| #include +| +| int +| main() +| { +| #ifdef HAVE_SETLOCALE +| setlocale(LC_ALL, ""); +| #endif +| bindtextdomain("gttest", ".locale"); +| textdomain("gttest"); +| gettext("foo"); +| return 0; +| } +| +configure:9408: gcc -o conftest -g -O2 -fopenmp conftest.c -liconv >&5 +/usr/bin/ld: cannot find -liconv +collect2: error: ld returned 1 exit status +configure:9408: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| /* end confdefs.h. */ +| +| #include +| #ifdef ENABLE_NLS +| #undef ENABLE_NLS +| #endif +| #define ENABLE_NLS 1 +| #ifdef HAVE_LOCALE_H +| #include +| #endif +| #include +| +| int +| main() +| { +| #ifdef HAVE_SETLOCALE +| setlocale(LC_ALL, ""); +| #endif +| bindtextdomain("gttest", ".locale"); +| textdomain("gttest"); +| gettext("foo"); +| return 0; +| } +| +configure:9451: gcc -o conftest -g -O2 -fopenmp conftest.c >&5 +configure:9451: $? = 0 +configure:9473: result: yes +configure:9497: checking for gmsgfmt +configure:9530: result: no +configure:9497: checking for msgfmt +configure:9530: result: no +configure:9543: checking for gxgettext +configure:9576: result: no +configure:9543: checking for xgettext +configure:9576: result: no +configure:9658: checking for pthread +configure:9694: result: no +configure:9755: checking for libdeflate +configure:9774: gcc -o conftest -g -O2 -fopenmp conftest.c -ldeflate >&5 +conftest.c:33:10: fatal error: libdeflate.h: No such file or directory + 33 | #include + | ^~~~~~~~~~~~~~ +compilation terminated. +configure:9774: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| /* end confdefs.h. */ +| +| #include +| +| int +| main() +| { +| struct libdeflate_compressor *c; c = libdeflate_alloc_compressor(12); +| return 0; +| } +| +configure:9783: result: no +configure:9828: checking for zlib +configure:9847: gcc -o conftest -g -O2 -fopenmp conftest.c -lz >&5 +configure:9847: $? = 0 +configure:9856: result: yes +configure:9909: checking direct.h usability +configure:9909: gcc -c -g -O2 -fopenmp conftest.c >&5 +conftest.c:65:10: fatal error: direct.h: No such file or directory + 65 | #include + | ^~~~~~~~~~ +compilation terminated. +configure:9909: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:9909: result: no +configure:9909: checking direct.h presence +configure:9909: gcc -E conftest.c +conftest.c:32:10: fatal error: direct.h: No such file or directory + 32 | #include + | ^~~~~~~~~~ +compilation terminated. +configure:9909: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| /* end confdefs.h. */ +| #include +configure:9909: result: no +configure:9909: checking for direct.h +configure:9909: result: no +configure:9909: checking langinfo.h usability +configure:9909: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:9909: $? = 0 +configure:9909: result: yes +configure:9909: checking langinfo.h presence +configure:9909: gcc -E conftest.c +configure:9909: $? = 0 +configure:9909: result: yes +configure:9909: checking for langinfo.h +configure:9909: result: yes +configure:9909: checking mbstring.h usability +configure:9909: gcc -c -g -O2 -fopenmp conftest.c >&5 +conftest.c:66:10: fatal error: mbstring.h: No such file or directory + 66 | #include + | ^~~~~~~~~~~~ +compilation terminated. +configure:9909: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:9909: result: no +configure:9909: checking mbstring.h presence +configure:9909: gcc -E conftest.c +conftest.c:33:10: fatal error: mbstring.h: No such file or directory + 33 | #include + | ^~~~~~~~~~~~ +compilation terminated. +configure:9909: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| /* end confdefs.h. */ +| #include +configure:9909: result: no +configure:9909: checking for mbstring.h +configure:9909: result: no +configure:9909: checking pthread.h usability +configure:9909: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:9909: $? = 0 +configure:9909: result: yes +configure:9909: checking pthread.h presence +configure:9909: gcc -E conftest.c +configure:9909: $? = 0 +configure:9909: result: yes +configure:9909: checking for pthread.h +configure:9909: result: yes +configure:9921: checking for res_query in -lresolv +configure:9946: gcc -o conftest -g -O2 -fopenmp conftest.c -lresolv >&5 +/usr/bin/ld: /tmp/cc2Tbhzc.o: in function `main': +/mnt/d/files/projects/ebclient/lib/ebu/conftest.c:45: undefined reference to `res_query' +collect2: error: ld returned 1 exit status +configure:9946: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| #define HAVE_PTHREAD_H 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char res_query (); +| int +| main () +| { +| return res_query (); +| ; +| return 0; +| } +configure:9955: result: no +configure:9967: checking for res_query in -lbind +configure:9992: gcc -o conftest -g -O2 -fopenmp conftest.c -lbind >&5 +/usr/bin/ld: cannot find -lbind +collect2: error: ld returned 1 exit status +configure:9992: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| #define HAVE_PTHREAD_H 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char res_query (); +| int +| main () +| { +| return res_query (); +| ; +| return 0; +| } +configure:10001: result: no +configure:10013: checking for gethostname in -lnsl +configure:10038: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +configure:10038: $? = 0 +configure:10047: result: yes +configure:10058: checking for socket in -lsocket +configure:10083: gcc -o conftest -g -O2 -fopenmp conftest.c -lsocket -lnsl >&5 +/usr/bin/ld: cannot find -lsocket +collect2: error: ld returned 1 exit status +configure:10083: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| #define HAVE_PTHREAD_H 1 +| #define HAVE_LIBNSL 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char socket (); +| int +| main () +| { +| return socket (); +| ; +| return 0; +| } +configure:10092: result: no +configure:10107: checking for nl_langinfo +configure:10107: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +configure:10107: $? = 0 +configure:10107: result: yes +configure:10107: checking for _getdcwd +configure:10107: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +/usr/bin/ld: /tmp/ccA1ZuaW.o: in function `main': +/mnt/d/files/projects/ebclient/lib/ebu/conftest.c:70: undefined reference to `_getdcwd' +collect2: error: ld returned 1 exit status +configure:10107: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| #define HAVE_PTHREAD_H 1 +| #define HAVE_LIBNSL 1 +| #define HAVE_NL_LANGINFO 1 +| /* end confdefs.h. */ +| /* Define _getdcwd to an innocuous variant, in case declares _getdcwd. +| For example, HP-UX 11i declares gettimeofday. */ +| #define _getdcwd innocuous__getdcwd +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char _getdcwd (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef _getdcwd +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char _getdcwd (); +| /* 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__getdcwd || defined __stub____getdcwd +| choke me +| #endif +| +| int +| main () +| { +| return _getdcwd (); +| ; +| return 0; +| } +configure:10107: result: no +configure:10107: checking for atoll +configure:10107: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +configure:10107: $? = 0 +configure:10107: result: yes +configure:10107: checking for _atoi64 +configure:10107: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +/usr/bin/ld: /tmp/cc3vOvrL.o: in function `main': +/mnt/d/files/projects/ebclient/lib/ebu/conftest.c:71: undefined reference to `_atoi64' +collect2: error: ld returned 1 exit status +configure:10107: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| #define HAVE_PTHREAD_H 1 +| #define HAVE_LIBNSL 1 +| #define HAVE_NL_LANGINFO 1 +| #define HAVE_ATOLL 1 +| /* end confdefs.h. */ +| /* Define _atoi64 to an innocuous variant, in case declares _atoi64. +| For example, HP-UX 11i declares gettimeofday. */ +| #define _atoi64 innocuous__atoi64 +| +| /* System header to define __stub macros and hopefully few prototypes, +| which can conflict with char _atoi64 (); below. +| Prefer to if __STDC__ is defined, since +| exists even on freestanding compilers. */ +| +| #ifdef __STDC__ +| # include +| #else +| # include +| #endif +| +| #undef _atoi64 +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char _atoi64 (); +| /* 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__atoi64 || defined __stub____atoi64 +| choke me +| #endif +| +| int +| main () +| { +| return _atoi64 (); +| ; +| return 0; +| } +configure:10107: result: no +configure:10116: checking for strcasecmp +configure:10116: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +conftest.c:60:6: warning: conflicting types for built-in function 'strcasecmp'; expected 'int(const char *, const char *)' [-Wbuiltin-declaration-mismatch] + 60 | char strcasecmp (); + | ^~~~~~~~~~ +configure:10116: $? = 0 +configure:10116: result: yes +configure:10131: checking for mode_t +configure:10131: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10131: $? = 0 +configure:10131: gcc -c -g -O2 -fopenmp conftest.c >&5 +conftest.c: In function 'main': +conftest.c:74:21: error: expected expression before ')' token + 74 | if (sizeof ((mode_t))) + | ^ +configure:10131: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| #define HAVE_PTHREAD_H 1 +| #define HAVE_LIBNSL 1 +| #define HAVE_NL_LANGINFO 1 +| #define HAVE_ATOLL 1 +| #define HAVE_STRCASECMP 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((mode_t))) +| return 0; +| ; +| return 0; +| } +configure:10131: result: yes +configure:10142: checking for ssize_t +configure:10142: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10142: $? = 0 +configure:10142: gcc -c -g -O2 -fopenmp conftest.c >&5 +conftest.c: In function 'main': +conftest.c:74:22: error: expected expression before ')' token + 74 | if (sizeof ((ssize_t))) + | ^ +configure:10142: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| #define HAVE_PTHREAD_H 1 +| #define HAVE_LIBNSL 1 +| #define HAVE_NL_LANGINFO 1 +| #define HAVE_ATOLL 1 +| #define HAVE_STRCASECMP 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((ssize_t))) +| return 0; +| ; +| return 0; +| } +configure:10142: result: yes +configure:10174: checking ws2tcpip.h usability +configure:10174: gcc -c -g -O2 -fopenmp conftest.c >&5 +conftest.c:71:10: fatal error: ws2tcpip.h: No such file or directory + 71 | #include + | ^~~~~~~~~~~~ +compilation terminated. +configure:10174: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| #define HAVE_PTHREAD_H 1 +| #define HAVE_LIBNSL 1 +| #define HAVE_NL_LANGINFO 1 +| #define HAVE_ATOLL 1 +| #define HAVE_STRCASECMP 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:10174: result: no +configure:10174: checking ws2tcpip.h presence +configure:10174: gcc -E conftest.c +conftest.c:38:10: fatal error: ws2tcpip.h: No such file or directory + 38 | #include + | ^~~~~~~~~~~~ +compilation terminated. +configure:10174: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "ebu" +| #define PACKAGE_TARNAME "ebu" +| #define PACKAGE_VERSION "4.5-20200413" +| #define PACKAGE_STRING "ebu 4.5-20200413" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define PACKAGE "ebu" +| #define VERSION "4.5-20200413" +| #define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define PRINTF_LL_MODIFIER 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_NL_TYPES_H 1 +| #define HAVE_SETLOCALE 1 +| #define HAVE_LC_MESSAGES 1 +| #define HAVE_ICONV_OPEN 1 +| #define HAVE_ICONV_H 1 +| #define ENABLE_NLS 1 +| #define HAVE_LANGINFO_H 1 +| #define HAVE_PTHREAD_H 1 +| #define HAVE_LIBNSL 1 +| #define HAVE_NL_LANGINFO 1 +| #define HAVE_ATOLL 1 +| #define HAVE_STRCASECMP 1 +| /* end confdefs.h. */ +| #include +configure:10174: result: no +configure:10174: checking for ws2tcpip.h +configure:10174: result: no +configure:10174: checking sys/socket.h usability +configure:10174: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10174: $? = 0 +configure:10174: result: yes +configure:10174: checking sys/socket.h presence +configure:10174: gcc -E conftest.c +configure:10174: $? = 0 +configure:10174: result: yes +configure:10174: checking for sys/socket.h +configure:10174: result: yes +configure:10207: checking for Winsock2 support +configure:10217: result: no +configure:10222: checking getopt.h usability +configure:10222: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10222: $? = 0 +configure:10222: result: yes +configure:10222: checking getopt.h presence +configure:10222: gcc -E conftest.c +configure:10222: $? = 0 +configure:10222: result: yes +configure:10222: checking for getopt.h +configure:10222: result: yes +configure:10234: checking for getopt_long +configure:10234: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +configure:10234: $? = 0 +configure:10234: result: yes +configure:10257: checking for in_port_t +configure:10275: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10275: $? = 0 +configure:10282: result: yes +configure:10411: checking for sa_family_t +configure:10428: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10428: $? = 0 +configure:10435: result: yes +configure:10560: checking for socklen_t +configure:10577: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10577: $? = 0 +configure:10584: result: yes +configure:10591: checking for struct in6_addr +configure:10609: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10609: $? = 0 +configure:10616: result: yes +configure:10623: checking for struct sockaddr_in6 +configure:10641: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10641: $? = 0 +configure:10648: result: yes +configure:10655: checking for struct sockaddr_storage +configure:10673: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10673: $? = 0 +configure:10680: result: yes +configure:10691: checking for in6addr_any declaration in netinet/in.h or ws2tcpip.h +configure:10715: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10715: $? = 0 +configure:10722: result: yes +configure:10734: checking for in6addr_loopback declaration in netinet/in.h or ws2tcpip.h +configure:10758: gcc -c -g -O2 -fopenmp conftest.c >&5 +configure:10758: $? = 0 +configure:10765: result: yes +configure:10836: checking for getaddrinfo +configure:10836: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +configure:10836: $? = 0 +configure:10836: result: yes +configure:10836: checking for getnameinfo +configure:10836: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +configure:10836: $? = 0 +configure:10836: result: yes +configure:10836: checking for gai_strerror +configure:10836: gcc -o conftest -g -O2 -fopenmp conftest.c -lnsl >&5 +configure:10836: $? = 0 +configure:10836: result: yes +configure:10854: checking for IPv6 support +configure:10867: result: yes +configure:10872: checking for DOS style pathnames +configure:10885: result: no +configure:11051: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by ebu config.status 4.5-20200413, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on sagan-panda + +config.status:1154: creating Makefile +config.status:1154: creating ebu/Makefile +config.status:1154: creating libebutils/Makefile +config.status:1154: creating ebappendix/Makefile +config.status:1154: creating ebfont/Makefile +config.status:1154: creating ebinfo/Makefile +config.status:1154: creating ebrefile/Makefile +config.status:1154: creating ebstopcode/Makefile +config.status:1154: creating ebzip/Makefile +config.status:1154: creating doc/Makefile +config.status:1154: creating po-eb/Makefile +config.status:1154: creating po-ebutils/Makefile +config.status:1154: creating m4/Makefile +config.status:1154: creating samples/Makefile +config.status:1154: creating config.h +config.status:1383: executing depfiles commands +config.status:1383: executing libtool commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_decl_in6addr_any=yes +ac_cv_decl_in6addr_loopback=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_LT_SYS_LIBRARY_PATH_set= +ac_cv_env_LT_SYS_LIBRARY_PATH_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_func__atoi64=no +ac_cv_func__getdcwd=no +ac_cv_func_atoll=yes +ac_cv_func_gai_strerror=yes +ac_cv_func_getaddrinfo=yes +ac_cv_func_getnameinfo=yes +ac_cv_func_getopt_long=yes +ac_cv_func_iconv_open=yes +ac_cv_func_libiconv_open=no +ac_cv_func_locale_charset=no +ac_cv_func_nl_langinfo=yes +ac_cv_func_printf_i64=no +ac_cv_func_printf_ll=yes +ac_cv_func_setlocale=yes +ac_cv_func_strcasecmp=yes +ac_cv_header_direct_h=no +ac_cv_header_dlfcn_h=yes +ac_cv_header_getopt_h=yes +ac_cv_header_iconv_h=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_langinfo_h=yes +ac_cv_header_libcharset_h=no +ac_cv_header_locale_h=yes +ac_cv_header_mbstring_h=no +ac_cv_header_memory_h=yes +ac_cv_header_nl_types_h=yes +ac_cv_header_pthread_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_socket_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_header_ws2tcpip_h=no +ac_cv_host=x86_64-unknown-linux-gnu +ac_cv_lib_bind_res_query=no +ac_cv_lib_iconv_iconv_open=no +ac_cv_lib_iconv_libiconv_open=no +ac_cv_lib_nsl_gethostname=yes +ac_cv_lib_resolv_res_query=no +ac_cv_lib_socket_socket=no +ac_cv_objext=o +ac_cv_path_EGREP='/usr/bin/grep -E' +ac_cv_path_FGREP='/usr/bin/grep -F' +ac_cv_path_GREP=/usr/bin/grep +ac_cv_path_PERL=/usr/bin/perl +ac_cv_path_SED=/usr/bin/sed +ac_cv_path_install='/usr/bin/install -c' +ac_cv_path_lt_DD=/usr/bin/dd +ac_cv_path_mkdir=/usr/bin/mkdir +ac_cv_prog_AWK=gawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_AR=ar +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_MANIFEST_TOOL=mt +ac_cv_prog_ac_ct_OBJDUMP=objdump +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_ac_ct_STRIP=strip +ac_cv_prog_c_openmp=-fopenmp +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_make_make_set=yes +ac_cv_struct_in6_addr=yes +ac_cv_struct_sockaddr_in6=yes +ac_cv_struct_sockaddr_storage=yes +ac_cv_sys_file_offset_bits=no +ac_cv_sys_largefile_CC=no +ac_cv_type_in_port_t=yes +ac_cv_type_mode_t=yes +ac_cv_type_sa_family_t=yes +ac_cv_type_socklen_t=yes +ac_cv_type_ssize_t=yes +am_cv_CC_dependencies_compiler_type=gcc3 +am_cv_val_LC_MESSAGES=yes +lt_cv_ar_at_file=@ +lt_cv_archive_cmds_need_lc=no +lt_cv_deplibs_check_method=pass_all +lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_ld_reload_flag=-r +lt_cv_nm_interface='BSD nm' +lt_cv_objdir=.libs +lt_cv_path_LD=/usr/bin/ld +lt_cv_path_NM='/usr/bin/nm -B' +lt_cv_path_mainfest_tool=no +lt_cv_prog_compiler_c_o=yes +lt_cv_prog_compiler_pic='-fPIC -DPIC' +lt_cv_prog_compiler_pic_works=yes +lt_cv_prog_compiler_rtti_exceptions=no +lt_cv_prog_compiler_static_works=yes +lt_cv_prog_gnu_ld=yes +lt_cv_sharedlib_from_linklib_cmd='printf %s\n' +lt_cv_shlibpath_overrides_runpath=yes +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_import= +lt_cv_sys_max_cmd_len=1572864 +lt_cv_to_host_file_cmd=func_convert_file_noop +lt_cv_to_tool_file_cmd=func_convert_file_noop +lt_cv_truncate_bin='/usr/bin/dd bs=4096 count=1' + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar' +AR='ar' +AUTOCONF='${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf' +AUTOHEADER='${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader' +AUTOMAKE='${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10' +AWK='gawk' +CC='gcc' +CCDEPMODE='depmode=gcc3' +CFLAGS='-g -O2 -fopenmp' +CPP='gcc -E' +CPPFLAGS='' +CYGPATH_W='echo' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +DLLTOOL='false' +DSYMUTIL='' +DUMPBIN='' +EBCONF_EBINCS='-I$(includedir)' +EBCONF_EBLIBS='-L$(libdir) -lebu' +EBCONF_INTLINCS='' +EBCONF_INTLLIBS='' +EBCONF_ZLIBINCS='' +EBCONF_ZLIBLIBS='-lz' +EB_VERSION_MAJOR='4' +EB_VERSION_MINOR='5' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/usr/bin/grep -E' +ENABLE_EBNET='yes' +ENABLE_EBNET_FALSE='#' +ENABLE_EBNET_TRUE='' +ENABLE_LIBDEFLATE='no' +ENABLE_NLS='yes' +ENABLE_PTHREAD='no' +ENABLE_SAMPLES_FALSE='' +ENABLE_SAMPLES_TRUE='#' +ENABLE_WINSOCK2_FALSE='' +ENABLE_WINSOCK2_TRUE='#' +EXEEXT='' +EXEEXT_EXE_FALSE='' +EXEEXT_EXE_TRUE='#' +FGREP='/usr/bin/grep -F' +GREP='/usr/bin/grep' +HAVE_GETOPT_LONG_FALSE='' +HAVE_GETOPT_LONG_TRUE='#' +ICONVINCS='' +ICONVLIBS='' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' +INTLINCS='' +INTLLIBS='' +LD='/usr/bin/ld -m elf_x86_64' +LDFLAGS='' +LIBEB_VERSION_INFO='17:0:0' +LIBOBJS='' +LIBS='-lnsl ' +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +LIPO='' +LN_S='ln -s' +LTLIBOBJS='' +LT_SYS_LIBRARY_PATH='' +MAILING_ADDRESS='kzhr@d1.dion.ne.jp' +MAKEINFO='${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo' +MANIFEST_TOOL=':' +MKDIR_P='/usr/bin/mkdir -p' +MSGFMT=':' +MSGMERGE='msgmerge' +NM='/usr/bin/nm -B' +NMEDIT='' +OBJDUMP='objdump' +OBJEXT='o' +OPENMP_CFLAGS='-fopenmp' +OTOOL64='' +OTOOL='' +PACKAGE='ebu' +PACKAGE_BUGREPORT='' +PACKAGE_NAME='ebu' +PACKAGE_STRING='ebu 4.5-20200413' +PACKAGE_TARNAME='ebu' +PACKAGE_URL='' +PACKAGE_VERSION='4.5-20200413' +PATH_SEPARATOR=':' +PERL='/usr/bin/perl' +PTHREAD_CFLAGS='' +PTHREAD_CPPFLAGS='' +PTHREAD_LDFLAGS='' +RANLIB='ranlib' +SED='/usr/bin/sed' +SET_MAKE='' +SHELL='/bin/bash' +STRIP='strip' +VERSION='4.5-20200413' +XGETTEXT=':' +ZLIBDEPS='' +ZLIBINCS='' +ZLIBLIBS='-lz' +ac_ct_AR='ar' +ac_ct_CC='gcc' +ac_ct_DUMPBIN='' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__include='include' +am__isrc='' +am__leading_dot='.' +am__quote='' +am__tar='${AMTAR} chof - "$$tardir"' +am__untar='${AMTAR} xf -' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host='x86_64-unknown-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='unknown' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +install_sh='$(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='$(datadir)/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +mkdir_p='/usr/bin/mkdir -p' +oldincludedir='/usr/include' +pdfdir='${docdir}' +pkgdocdir='${datadir}/ebu/doc' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +runstatedir='${localstatedir}/run' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "ebu" +#define PACKAGE_TARNAME "ebu" +#define PACKAGE_VERSION "4.5-20200413" +#define PACKAGE_STRING "ebu 4.5-20200413" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_URL "" +#define PACKAGE "ebu" +#define VERSION "4.5-20200413" +#define MAILING_ADDRESS "kzhr@d1.dion.ne.jp" +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_DLFCN_H 1 +#define LT_OBJDIR ".libs/" +#define PRINTF_LL_MODIFIER 1 +#define HAVE_LOCALE_H 1 +#define HAVE_NL_TYPES_H 1 +#define HAVE_SETLOCALE 1 +#define HAVE_LC_MESSAGES 1 +#define HAVE_ICONV_OPEN 1 +#define HAVE_ICONV_H 1 +#define ENABLE_NLS 1 +#define HAVE_LANGINFO_H 1 +#define HAVE_PTHREAD_H 1 +#define HAVE_LIBNSL 1 +#define HAVE_NL_LANGINFO 1 +#define HAVE_ATOLL 1 +#define HAVE_STRCASECMP 1 +#define HAVE_SYS_SOCKET_H 1 +#define HAVE_GETOPT_H 1 +#define HAVE_GETOPT_LONG 1 +#define ENABLE_EBNET 1 +#define HAVE_STRUCT_IN6_ADDR 1 +#define HAVE_STRUCT_SOCKADDR_IN6 1 +#define HAVE_STRUCT_SOCKADDR_STORAGE 1 +#define IN6ADDR_ANY_DECLARED 1 +#define IN6ADDR_LOOPBACK_DECLARED 1 +#define HAVE_GETADDRINFO 1 +#define HAVE_GETNAMEINFO 1 +#define HAVE_GAI_STRERROR 1 +#define ENABLE_IPV6 1 + +configure: exit 0 diff --git a/lib/ebu/config.status b/lib/ebu/config.status new file mode 100644 index 0000000..a4d5a9b --- /dev/null +++ b/lib/ebu/config.status @@ -0,0 +1,2037 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/bash} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by ebu $as_me 4.5-20200413, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile ebu/Makefile libebutils/Makefile ebappendix/Makefile ebfont/Makefile ebinfo/Makefile ebrefile/Makefile ebstopcode/Makefile ebzip/Makefile doc/Makefile po-eb/Makefile po-ebutils/Makefile m4/Makefile samples/Makefile" +config_headers=" config.h" +config_commands=" depfiles libtool" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +ac_cs_config="" +ac_cs_version="\ +ebu config.status 4.5-20200413 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/mnt/d/files/projects/ebclient/lib/ebu' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/usr/bin/mkdir -p' +AWK='gawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/bash './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" ac_aux_dir="." + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +double_quote_subst='s/\(["`\\]\)/\\\1/g' +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +macro_version='2.4.6' +macro_revision='2.4.6' +enable_shared='yes' +enable_static='yes' +pic_mode='default' +enable_fast_install='needless' +shared_archive_member_spec='' +SHELL='/bin/bash' +ECHO='printf %s\n' +PATH_SEPARATOR=':' +host_alias='' +host='x86_64-unknown-linux-gnu' +host_os='linux-gnu' +build_alias='' +build='x86_64-unknown-linux-gnu' +build_os='linux-gnu' +SED='/usr/bin/sed' +Xsed='/usr/bin/sed -e 1s/^X//' +GREP='/usr/bin/grep' +EGREP='/usr/bin/grep -E' +FGREP='/usr/bin/grep -F' +LD='/usr/bin/ld -m elf_x86_64' +NM='/usr/bin/nm -B' +LN_S='ln -s' +max_cmd_len='1572864' +ac_objext='o' +exeext='' +lt_unset='unset' +lt_SP2NL='tr \040 \012' +lt_NL2SP='tr \015\012 \040\040' +lt_cv_to_host_file_cmd='func_convert_file_noop' +lt_cv_to_tool_file_cmd='func_convert_file_noop' +reload_flag=' -r' +reload_cmds='$LD$reload_flag -o $output$reload_objs' +OBJDUMP='objdump' +deplibs_check_method='pass_all' +file_magic_cmd='$MAGIC_CMD' +file_magic_glob='' +want_nocaseglob='no' +DLLTOOL='false' +sharedlib_from_linklib_cmd='printf %s\n' +AR='ar' +AR_FLAGS='cru' +archiver_list_spec='@' +STRIP='strip' +RANLIB='ranlib' +old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $tool_oldlib' +old_postuninstall_cmds='' +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' +lock_old_archive_extraction='no' +CC='gcc' +CFLAGS='-g -O2 -fopenmp' +compiler='gcc' +GCC='yes' +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_import='' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\''' +lt_cv_nm_interface='BSD nm' +nm_file_list_spec='@' +lt_sysroot='' +lt_cv_truncate_bin='/usr/bin/dd bs=4096 count=1' +objdir='.libs' +MAGIC_CMD='file' +lt_prog_compiler_no_builtin_flag=' -fno-builtin' +lt_prog_compiler_pic=' -fPIC -DPIC' +lt_prog_compiler_wl='-Wl,' +lt_prog_compiler_static='-static' +lt_cv_prog_compiler_c_o='yes' +need_locks='no' +MANIFEST_TOOL=':' +DSYMUTIL='' +NMEDIT='' +LIPO='' +OTOOL='' +OTOOL64='' +libext='a' +shrext_cmds='.so' +extract_expsyms_cmds='' +archive_cmds_need_lc='no' +enable_shared_with_static_runtimes='no' +export_dynamic_flag_spec='$wl--export-dynamic' +whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' +compiler_needs_object='no' +old_archive_from_new_cmds='' +old_archive_from_expsyms_cmds='' +archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' +archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' +module_cmds='' +module_expsym_cmds='' +with_gnu_ld='yes' +allow_undefined_flag='' +no_undefined_flag='' +hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' +hardcode_libdir_separator='' +hardcode_direct='no' +hardcode_direct_absolute='no' +hardcode_minus_L='no' +hardcode_shlibpath_var='unsupported' +hardcode_automatic='no' +inherit_rpath='no' +link_all_deplibs='unknown' +always_export_symbols='no' +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms='' +prelink_cmds='' +postlink_cmds='' +file_list_spec='' +variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' +need_lib_prefix='no' +need_version='no' +version_type='linux' +runpath_var='LD_RUN_PATH' +shlibpath_var='LD_LIBRARY_PATH' +shlibpath_overrides_runpath='yes' +libname_spec='lib$name' +library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' +soname_spec='$libname$release$shared_ext$major' +install_override_mode='' +postinstall_cmds='' +postuninstall_cmds='' +finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +finish_eval='' +hardcode_into_libs='yes' +sys_lib_search_path_spec='/usr/lib/gcc/x86_64-linux-gnu/9 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib ' +configure_time_dlsearch_path='/lib /usr/lib /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 /libx32 /usr/libx32 ' +configure_time_lt_sys_library_path='' +hardcode_action='immediate' +enable_dlopen='unknown' +enable_dlopen_self='unknown' +enable_dlopen_self_static='unknown' +old_striplib='strip --strip-debug' +striplib='strip --strip-unneeded' + +LTCC='gcc' +LTCFLAGS='-g -O2' +compiler='gcc' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL ECHO PATH_SEPARATOR SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd file_magic_glob want_nocaseglob DLLTOOL sharedlib_from_linklib_cmd AR AR_FLAGS archiver_list_spec STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_import lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix lt_cv_nm_interface nm_file_list_spec lt_cv_truncate_bin lt_prog_compiler_no_builtin_flag lt_prog_compiler_pic lt_prog_compiler_wl lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks MANIFEST_TOOL DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_separator exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec install_override_mode finish_eval old_striplib striplib; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED \"\$sed_quote_subst\"\`\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postlink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec configure_time_dlsearch_path configure_time_lt_sys_library_path; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +ac_aux_dir='.' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='ebu' + VERSION='4.5-20200413' + RM='rm -f' + ofile='libtool' + + + + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "ebu/Makefile") CONFIG_FILES="$CONFIG_FILES ebu/Makefile" ;; + "libebutils/Makefile") CONFIG_FILES="$CONFIG_FILES libebutils/Makefile" ;; + "ebappendix/Makefile") CONFIG_FILES="$CONFIG_FILES ebappendix/Makefile" ;; + "ebfont/Makefile") CONFIG_FILES="$CONFIG_FILES ebfont/Makefile" ;; + "ebinfo/Makefile") CONFIG_FILES="$CONFIG_FILES ebinfo/Makefile" ;; + "ebrefile/Makefile") CONFIG_FILES="$CONFIG_FILES ebrefile/Makefile" ;; + "ebstopcode/Makefile") CONFIG_FILES="$CONFIG_FILES ebstopcode/Makefile" ;; + "ebzip/Makefile") CONFIG_FILES="$CONFIG_FILES ebzip/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po-eb/Makefile") CONFIG_FILES="$CONFIG_FILES po-eb/Makefile" ;; + "po-ebutils/Makefile") CONFIG_FILES="$CONFIG_FILES po-ebutils/Makefile" ;; + "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; + "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["LTLIBOBJS"]="" +S["EBCONF_EBLIBS"]="-L$(libdir) -lebu" +S["EBCONF_EBINCS"]="-I$(includedir)" +S["EBCONF_INTLLIBS"]="" +S["EBCONF_INTLINCS"]="" +S["PTHREAD_LDFLAGS"]="" +S["PTHREAD_CFLAGS"]="" +S["PTHREAD_CPPFLAGS"]="" +S["ENABLE_PTHREAD"]="no" +S["EBCONF_ZLIBLIBS"]="-lz" +S["EBCONF_ZLIBINCS"]="" +S["ENABLE_LIBDEFLATE"]="no" +S["HAVE_GETOPT_LONG_FALSE"]="" +S["HAVE_GETOPT_LONG_TRUE"]="#" +S["ENABLE_WINSOCK2_FALSE"]="" +S["ENABLE_WINSOCK2_TRUE"]="#" +S["EXEEXT_EXE_FALSE"]="" +S["EXEEXT_EXE_TRUE"]="#" +S["LIBOBJS"]="" +S["ENABLE_EBNET_FALSE"]="#" +S["ENABLE_EBNET_TRUE"]="" +S["ENABLE_EBNET"]="yes" +S["ZLIBDEPS"]="" +S["ZLIBLIBS"]="-lz" +S["ZLIBINCS"]="" +S["pkgdocdir"]="${datadir}/ebu/doc" +S["ENABLE_SAMPLES_FALSE"]="" +S["ENABLE_SAMPLES_TRUE"]="#" +S["MSGMERGE"]="msgmerge" +S["XGETTEXT"]=":" +S["MSGFMT"]=":" +S["INTLLIBS"]="" +S["INTLINCS"]="" +S["ENABLE_NLS"]="yes" +S["ICONVLIBS"]="" +S["ICONVINCS"]="" +S["PERL"]="/usr/bin/perl" +S["OPENMP_CFLAGS"]="-fopenmp" +S["CPP"]="gcc -E" +S["LT_SYS_LIBRARY_PATH"]="" +S["OTOOL64"]="" +S["OTOOL"]="" +S["LIPO"]="" +S["NMEDIT"]="" +S["DSYMUTIL"]="" +S["MANIFEST_TOOL"]=":" +S["RANLIB"]="ranlib" +S["ac_ct_AR"]="ar" +S["AR"]="ar" +S["DLLTOOL"]="false" +S["OBJDUMP"]="objdump" +S["LN_S"]="ln -s" +S["NM"]="/usr/bin/nm -B" +S["ac_ct_DUMPBIN"]="" +S["DUMPBIN"]="" +S["LD"]="/usr/bin/ld -m elf_x86_64" +S["FGREP"]="/usr/bin/grep -F" +S["EGREP"]="/usr/bin/grep -E" +S["GREP"]="/usr/bin/grep" +S["SED"]="/usr/bin/sed" +S["host_os"]="linux-gnu" +S["host_vendor"]="unknown" +S["host_cpu"]="x86_64" +S["host"]="x86_64-unknown-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="unknown" +S["build_cpu"]="x86_64" +S["build"]="x86_64-unknown-linux-gnu" +S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__quote"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]="" +S["LDFLAGS"]="" +S["CFLAGS"]="-g -O2 -fopenmp" +S["CC"]="gcc" +S["MAILING_ADDRESS"]="kzhr@d1.dion.ne.jp" +S["EB_VERSION_MINOR"]="5" +S["EB_VERSION_MAJOR"]="4" +S["LIBEB_VERSION_INFO"]="17:0:0" +S["am__untar"]="${AMTAR} xf -" +S["am__tar"]="${AMTAR} chof - \"$$tardir\"" +S["AMTAR"]="${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="gawk" +S["mkdir_p"]="/usr/bin/mkdir -p" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="strip" +S["install_sh"]="$(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh" +S["MAKEINFO"]="${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo" +S["AUTOHEADER"]="${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader" +S["AUTOMAKE"]="${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10" +S["AUTOCONF"]="${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf" +S["ACLOCAL"]="${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10" +S["VERSION"]="4.5-20200413" +S["PACKAGE"]="ebu" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lnsl " +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="$(datadir)/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["runstatedir"]="${localstatedir}/run" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="" +S["PACKAGE_STRING"]="ebu 4.5-20200413" +S["PACKAGE_VERSION"]="4.5-20200413" +S["PACKAGE_TARNAME"]="ebu" +S["PACKAGE_NAME"]="ebu" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"ebu\"" +D["PACKAGE_TARNAME"]=" \"ebu\"" +D["PACKAGE_VERSION"]=" \"4.5-20200413\"" +D["PACKAGE_STRING"]=" \"ebu 4.5-20200413\"" +D["PACKAGE_BUGREPORT"]=" \"\"" +D["PACKAGE_URL"]=" \"\"" +D["PACKAGE"]=" \"ebu\"" +D["VERSION"]=" \"4.5-20200413\"" +D["MAILING_ADDRESS"]=" \"kzhr@d1.dion.ne.jp\"" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_DLFCN_H"]=" 1" +D["LT_OBJDIR"]=" \".libs/\"" +D["PRINTF_LL_MODIFIER"]=" 1" +D["HAVE_LOCALE_H"]=" 1" +D["HAVE_NL_TYPES_H"]=" 1" +D["HAVE_SETLOCALE"]=" 1" +D["HAVE_LC_MESSAGES"]=" 1" +D["HAVE_ICONV_OPEN"]=" 1" +D["HAVE_ICONV_H"]=" 1" +D["ENABLE_NLS"]=" 1" +D["HAVE_LANGINFO_H"]=" 1" +D["HAVE_PTHREAD_H"]=" 1" +D["HAVE_LIBNSL"]=" 1" +D["HAVE_NL_LANGINFO"]=" 1" +D["HAVE_ATOLL"]=" 1" +D["HAVE_STRCASECMP"]=" 1" +D["HAVE_SYS_SOCKET_H"]=" 1" +D["HAVE_GETOPT_H"]=" 1" +D["HAVE_GETOPT_LONG"]=" 1" +D["ENABLE_EBNET"]=" 1" +D["HAVE_STRUCT_IN6_ADDR"]=" 1" +D["HAVE_STRUCT_SOCKADDR_IN6"]=" 1" +D["HAVE_STRUCT_SOCKADDR_STORAGE"]=" 1" +D["IN6ADDR_ANY_DECLARED"]=" 1" +D["IN6ADDR_LOOPBACK_DECLARED"]=" 1" +D["HAVE_GETADDRINFO"]=" 1" +D["HAVE_GETNAMEINFO"]=" 1" +D["HAVE_GAI_STRERROR"]=" 1" +D["ENABLE_IPV6"]=" 1" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #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. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&$(datadir)/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/lib/ebu/config.sub b/lib/ebu/config.sub new file mode 100644 index 0000000..2a55a50 --- /dev/null +++ b/lib/ebu/config.sub @@ -0,0 +1,1705 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. + +timestamp='2009-11-20' + +# 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., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, 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. + + +# Please send patches to . Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# 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. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# 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. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +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 + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + 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 | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -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/'` + ;; + -sco5v6*) + # 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/'` + ;; + -udk*) + 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 + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +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. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-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*86 | x86_64) + 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. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + 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 | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + 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 + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-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 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + 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 + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + 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 + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-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/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + 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 + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + 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 + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + 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. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + 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. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -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* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -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|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -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 + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + 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 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-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 + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + 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 + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lib/ebu/configure b/lib/ebu/configure new file mode 100644 index 0000000..18c8682 --- /dev/null +++ b/lib/ebu/configure @@ -0,0 +1,16474 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for ebu 4.5-20200413. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='ebu' +PACKAGE_TARNAME='ebu' +PACKAGE_VERSION='4.5-20200413' +PACKAGE_STRING='ebu 4.5-20200413' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +ac_unique_file="ebu/eb.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +EBCONF_EBLIBS +EBCONF_EBINCS +EBCONF_INTLLIBS +EBCONF_INTLINCS +PTHREAD_LDFLAGS +PTHREAD_CFLAGS +PTHREAD_CPPFLAGS +ENABLE_PTHREAD +EBCONF_ZLIBLIBS +EBCONF_ZLIBINCS +ENABLE_LIBDEFLATE +HAVE_GETOPT_LONG_FALSE +HAVE_GETOPT_LONG_TRUE +ENABLE_WINSOCK2_FALSE +ENABLE_WINSOCK2_TRUE +EXEEXT_EXE_FALSE +EXEEXT_EXE_TRUE +LIBOBJS +ENABLE_EBNET_FALSE +ENABLE_EBNET_TRUE +ENABLE_EBNET +ZLIBDEPS +ZLIBLIBS +ZLIBINCS +pkgdocdir +ENABLE_SAMPLES_FALSE +ENABLE_SAMPLES_TRUE +MSGMERGE +XGETTEXT +MSGFMT +INTLLIBS +INTLINCS +ENABLE_NLS +ICONVLIBS +ICONVINCS +PERL +OPENMP_CFLAGS +CPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MAILING_ADDRESS +EB_VERSION_MINOR +EB_VERSION_MAJOR +LIBEB_VERSION_INFO +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_openmp +enable_largefile +enable_nls +with_gettext_includes +with_gettext_libraries +with_iconv_includes +with_iconv_libraries +enable_samples +enable_pthread +with_pthread_cppflags +with_pthread_cflags +with_pthread_ldflags +with_pkgdocdir +enable_libdeflate +with_libdeflate_includes +with_libdeflate_libraries +with_zlib_includes +with_zlib_libraries +enable_ebnet +enable_ipv6 +enable_winsock2 +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +LT_SYS_LIBRARY_PATH +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +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=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -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_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$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 ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$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 | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$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 ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + 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 | -n) + 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 ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -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_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=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 ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# 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 the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + 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 + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # 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 <<_ACEOF +\`configure' configures ebu 4.5-20200413 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/ebu] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --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 + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of ebu 4.5-20200413:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-openmp do not use OpenMP + --disable-largefile omit support for large files + --enable-nls Native Language Support [[yes]] + --enable-samples compile sample programs default=no + --enable-pthread build pthread safe libraries [[no]] + --enable-libdeflate build with libdeflate library [[no]] + --enable-ebnet EBNET support [[yes]] + --enable-ipv6 IPv6 support for EBNET [[yes]] (if the system + supports IPv6) + --enable-winsock2 Use Winsock2 for EBNET [[auto]] + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-gettext-includes=DIR + gettext include files are in DIR + --with-gettext-libraries=DIR + gettext library files are in DIR + --with-iconv-includes=DIR + iconv include files are in DIR + --with-iconv-libraries=DIR + iconv library files are in DIR + --with-pthread-cppflags=FLAGS + additional CPPFLAGS for pthread support + --with-pthread-cflags=FLAGS + additional CFLAGS for pthread support + --with-pthread-ldflags=FLAGS + additional LDFLAGS for pthread support + --with-pkgdocdir=DIR HTML documents in DIR [[default=DATADIR/ebu/doc]] + --with-libdeflate-includes=DIR + libdeflate include files are in DIR + --with-libdeflate-libraries=DIR + libdeflate library files are in DIR + --with-zlib-includes=DIR + zlib include files are in DIR + --with-zlib-libraries=DIR + zlib library files are in DIR + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +ebu configure 4.5-20200413 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* 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_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by ebu $as_me 4.5-20200413, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +am__api_version='1.10' + +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 + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# 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 +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +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. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&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_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='ebu' + VERSION='4.5-20200413' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + +LIBEB_VERSION_INFO=17:0:0 + + +EB_VERSION_MAJOR=4 +EB_VERSION_MINOR=5 + + + +MAILING_ADDRESS='kzhr@d1.dion.ne.jp' + + +cat >>confdefs.h <<_ACEOF +#define MAILING_ADDRESS "$MAILING_ADDRESS" +_ACEOF + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_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 $# != 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 + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#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)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + + + + + OPENMP_CFLAGS= + # Check whether --enable-openmp was given. +if test "${enable_openmp+set}" = set; then : + enableval=$enable_openmp; +fi + + if test "$enable_openmp" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5 +$as_echo_n "checking for $CC option to support OpenMP... " >&6; } +if ${ac_cv_prog_c_openmp+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENMP + choke me +#endif +#include +int main () { return omp_get_num_threads (); } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_prog_c_openmp='none needed' +else + ac_cv_prog_c_openmp='unsupported' + for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \ + -Popenmp --openmp; do + ac_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $ac_option" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef _OPENMP + choke me +#endif +#include +int main () { return omp_get_num_threads (); } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_prog_c_openmp=$ac_option +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS=$ac_save_CFLAGS + if test "$ac_cv_prog_c_openmp" != unsupported; then + break + fi + done +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_c_openmp" >&5 +$as_echo "$ac_cv_prog_c_openmp" >&6; } + case $ac_cv_prog_c_openmp in #( + "none needed" | unsupported) + ;; #( + *) + OPENMP_CFLAGS=$ac_cv_prog_c_openmp ;; + esac + fi + + +CFLAGS="$CFLAGS $OPENMP_CFLAGS" + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PERL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no" + ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +$as_echo "$PERL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "$PERL" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: perl not found" >&5 +$as_echo "$as_me: WARNING: perl not found" >&2;} + PERL=/usr/bin/perl +fi + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if ${ac_cv_sys_largefile_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if ${ac_cv_sys_large_files+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi + + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ll modifier of printf" >&5 +$as_echo_n "checking for ll modifier of printf... " >&6; } +if ${ac_cv_func_printf_ll+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + int main() { + char buffer[128]; + sprintf(buffer, "%llx", (unsigned long long) 1 << 32); + return (strcmp(buffer, "100000000") == 0) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_printf_ll=yes +else + ac_cv_func_printf_ll=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_printf_ll" >&5 +$as_echo "$ac_cv_func_printf_ll" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for I64 modifier of printf" >&5 +$as_echo_n "checking for I64 modifier of printf... " >&6; } +if ${ac_cv_func_printf_i64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + int main() { + char buffer[128]; + sprintf(buffer, "%I64x", (unsigned __int64) 1 << 32); + return (strcmp(buffer, "100000000") == 0) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_printf_i64=yes +else + ac_cv_func_printf_i64=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_printf_i64" >&5 +$as_echo "$ac_cv_func_printf_i64" >&6; } +if test "$ac_cv_func_printf_ll" = yes; then + +$as_echo "#define PRINTF_LL_MODIFIER 1" >>confdefs.h + +fi +if test "$ac_cv_func_printf_i64" = yes; then + +$as_echo "#define PRINTF_I64_MODIFIER 1" >>confdefs.h + +fi + + INTLINCS= + INTLDEPS= + INTLLIBS= + + + + + for ac_header in locale.h nl_types.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + for ac_func in setlocale +do : + ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" +if test "x$ac_cv_func_setlocale" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SETLOCALE 1 +_ACEOF + +fi +done + + + if test $ac_cv_header_locale_h = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 +$as_echo_n "checking for LC_MESSAGES... " >&6; } +if ${am_cv_val_LC_MESSAGES+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int +main() +{ + return LC_MESSAGES; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_val_LC_MESSAGES=yes +else + am_cv_val_LC_MESSAGES=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 +$as_echo "$am_cv_val_LC_MESSAGES" >&6; } + if test $am_cv_val_LC_MESSAGES = yes; then + +$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h + + fi + fi + + # Check whether --enable-nls was given. +if test "${enable_nls+set}" = set; then : + enableval=$enable_nls; ENABLE_NLS=$enableval +else + ENABLE_NLS=auto +fi + + + +# Check whether --with-gettext-includes was given. +if test "${with_gettext_includes+set}" = set; then : + withval=$with_gettext_includes; gettext_includes="-I${withval}" +else + gettext_includes='' +fi + + + +# Check whether --with-gettext-libraries was given. +if test "${with_gettext_libraries+set}" = set; then : + withval=$with_gettext_libraries; gettext_libraries="-L${withval}" +else + gettext_libraries='' +fi + + + +# Check whether --with-iconv-includes was given. +if test "${with_iconv_includes+set}" = set; then : + withval=$with_iconv_includes; iconv_includes="-I${withval}" +else + iconv_includes='' +fi + + + +# Check whether --with-iconv-libraries was given. +if test "${with_iconv_libraries+set}" = set; then : + withval=$with_iconv_libraries; iconv_libraries="-L${withval}" +else + iconv_libraries='' +fi + + + ICONVINCS= + ICONVLIBS= + save_CPPFLAGS=$CPPFLAGS + save_LIBS=$LIBS + CPPFLAGS="$save_CPPFLAGS $iconv_includes" + LIBS="$save_LIBS $iconv_libraries" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv_open in -liconv" >&5 +$as_echo_n "checking for iconv_open in -liconv... " >&6; } +if ${ac_cv_lib_iconv_iconv_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-liconv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char iconv_open (); +int +main () +{ +return iconv_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_iconv_iconv_open=yes +else + ac_cv_lib_iconv_iconv_open=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iconv_iconv_open" >&5 +$as_echo "$ac_cv_lib_iconv_iconv_open" >&6; } +if test "x$ac_cv_lib_iconv_iconv_open" = xyes; then : + ICONVLIBS="$iconv_libraries -liconv"; LIBS="$LIBS -liconv" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libiconv_open in -liconv" >&5 +$as_echo_n "checking for libiconv_open in -liconv... " >&6; } +if ${ac_cv_lib_iconv_libiconv_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-liconv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char libiconv_open (); +int +main () +{ +return libiconv_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_iconv_libiconv_open=yes +else + ac_cv_lib_iconv_libiconv_open=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iconv_libiconv_open" >&5 +$as_echo "$ac_cv_lib_iconv_libiconv_open" >&6; } +if test "x$ac_cv_lib_iconv_libiconv_open" = xyes; then : + ICONVLIBS="$iconv_libraries -liconv"; LIBS="$LIBS -liconv" +fi + +fi + + for ac_func in iconv_open libiconv_open locale_charset +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + for ac_header in iconv.h libcharset.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + if test $ac_cv_func_iconv_open != no; then + ICONVINCS="$iconv_includes" + fi + CPPFLAGS=$save_CPPFLAGS + LIBS=$save_LIBS + + + + INTLINCS= + INTLLIBS= + try_nls=no + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NLS support" >&5 +$as_echo_n "checking for NLS support... " >&6; } + + if test $ENABLE_NLS != no; then + save_CPPFLAGS=$CPPFLAGS + save_LIBS=$LIBS + + CPPFLAGS="$save_CPPFLAGS $gettext_includes" + LIBS="$save_LIBS $gettext_libraries -lintl $iconv_libraries -liconv" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_NLS +#undef ENABLE_NLS +#endif +#define ENABLE_NLS 1 +#ifdef HAVE_LOCALE_H +#include +#endif +#include + +int +main() +{ +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain("gttest", ".locale"); + textdomain("gttest"); + gettext("foo"); + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + try_nls=yes +else + try_nls=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "$try_nls" = yes; then + INTLINCS="$gettext_includes" + INTLLIBS="$gettext_libraries -lintl $iconv_libraries -liconv" + fi + + if test "$try_nls" = no; then + CPPFLAGS="$save_CPPFLAGS $gettext_includes" + LIBS="$save_LIBS $gettext_libraries -lintl" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_NLS +#undef ENABLE_NLS +#endif +#define ENABLE_NLS 1 +#ifdef HAVE_LOCALE_H +#include +#endif +#include + +int +main() +{ +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain("gttest", ".locale"); + textdomain("gttest"); + gettext("foo"); + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + try_nls=yes +else + try_nls=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "$try_nls" = yes; then + INTLINCS="$gettext_includes" + INTLLIBS="$gettext_libraries -lintl" + fi + fi + + if test "$try_nls" = no; then + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS $iconv_libraries -liconv" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_NLS +#undef ENABLE_NLS +#endif +#define ENABLE_NLS 1 +#ifdef HAVE_LOCALE_H +#include +#endif +#include + +int +main() +{ +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain("gttest", ".locale"); + textdomain("gttest"); + gettext("foo"); + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + try_nls=yes +else + try_nls=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "$try_nls" = yes; then + INTLINCS= + INTLLIBS="$iconv_libraries -liconv" + fi + fi + + if test "$try_nls" = no; then + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_NLS +#undef ENABLE_NLS +#endif +#define ENABLE_NLS 1 +#ifdef HAVE_LOCALE_H +#include +#endif +#include + +int +main() +{ +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain("gttest", ".locale"); + textdomain("gttest"); + gettext("foo"); + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + try_nls=yes +else + try_nls=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "$try_nls" = yes; then + INTLINCS= + INTLLIBS= + fi + fi + + CPPFLAGS=$save_CPPFLAGS + LIBS=$save_LIBS + fi + + if test $ENABLE_NLS = auto; then + ENABLE_NLS=$try_nls + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try_nls" >&5 +$as_echo "$try_nls" >&6; } + + if test $ENABLE_NLS = yes; then + if test $try_nls = no; then + as_fn_error $? "gettext not available" "$LINENO" 5 + fi + fi + + + + + localedir='$(datadir)/locale' + + if test $ENABLE_NLS = yes; then + +$as_echo "#define ENABLE_NLS 1" >>confdefs.h + + fi + + for ac_prog in gmsgfmt msgfmt +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MSGFMT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MSGFMT=$ac_cv_path_MSGFMT +if test -n "$MSGFMT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +$as_echo "$MSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$MSGFMT" && break +done +test -n "$MSGFMT" || MSGFMT=":" + + for ac_prog in gxgettext xgettext +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XGETTEXT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $XGETTEXT in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +XGETTEXT=$ac_cv_path_XGETTEXT +if test -n "$XGETTEXT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +$as_echo "$XGETTEXT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$XGETTEXT" && break +done +test -n "$XGETTEXT" || XGETTEXT=":" + + MSGMERGE=msgmerge + + + +# Check whether --enable-samples was given. +if test "${enable_samples+set}" = set; then : + enableval=$enable_samples; case "${enableval}" in + yes) samples=true ;; + no) samples=false ;; + *) as_fn_error $? "invalid argument to --enable-samples" "$LINENO" 5 ;; +esac +else + samples=false +fi + + if test ${samples} = true; then + ENABLE_SAMPLES_TRUE= + ENABLE_SAMPLES_FALSE='#' +else + ENABLE_SAMPLES_TRUE='#' + ENABLE_SAMPLES_FALSE= +fi + + +# Check whether --enable-pthread was given. +if test "${enable_pthread+set}" = set; then : + enableval=$enable_pthread; case "${enableval}" in + yes) ENABLE_PTHREAD=yes ;; + no) ENABLE_PTHREAD=no ;; + *) as_fn_error $? "invalid argument to --enable-pthread" "$LINENO" 5 ;; +esac +else + ENABLE_PTHREAD=no +fi + + + +# Check whether --with-pthread-cppflags was given. +if test "${with_pthread_cppflags+set}" = set; then : + withval=$with_pthread_cppflags; PTHREAD_CPPFLAGS="${withval}" +else + PTHREAD_CPPFLAGS='' +fi + + + +# Check whether --with-pthread-cflags was given. +if test "${with_pthread_cflags+set}" = set; then : + withval=$with_pthread_cflags; PTHREAD_CFLAGS="${withval}" +else + PTHREAD_CFLAGS='' +fi + + + +# Check whether --with-pthread-ldflags was given. +if test "${with_pthread_ldflags+set}" = set; then : + withval=$with_pthread_ldflags; PTHREAD_LDFLAGS="${withval}" +else + PTHREAD_LDFLAGS='' +fi + + + +# Check whether --with-pkgdocdir was given. +if test "${with_pkgdocdir+set}" = set; then : + withval=$with_pkgdocdir; pkgdocdir="${withval}" +else + pkgdocdir='${datadir}/ebu/doc' +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread" >&5 +$as_echo_n "checking for pthread... " >&6; } +if test $ENABLE_PTHREAD = no; then + try_pthread=no +else + save_CPPFLAGS=$CPPFLAGS + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + CPPFLAGS="$CPPFLAGS $PTHREAD_CPPFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static pthread_mutex_t m=PTHREAD_MUTEX_INITIALIZER; + +int +main() +{ + pthread_mutex_lock(&m); + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + try_pthread=yes +else + try_pthread=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS=$save_CPPFLAGS + CFLAGS=$save_CFLAGS + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $try_pthread" >&5 +$as_echo "$try_pthread" >&6; } +if test $ENABLE_PTHREAD = yes; then + if test $try_pthread = no; then + as_fn_error $? "pthread not available" "$LINENO" 5 + fi +fi + +if test $ENABLE_PTHREAD = yes; then + +$as_echo "#define ENABLE_PTHREAD 1" >>confdefs.h + + CPPFLAGS="$CPPFLAGS $PTHREAD_CPPFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS" +fi + +# Check whether --enable-libdeflate was given. +if test "${enable_libdeflate+set}" = set; then : + enableval=$enable_libdeflate; case "${enableval}" in + yes) ENABLE_LIBDEFLATE=yes ;; + no) ENABLE_LIBDEFLATE=no ;; + *) as_fn_error $? "invalid argument to --enable-libdeflate" "$LINENO" 5 ;; +esac +else + ENABLE_LIBDEFLATE=no +fi + + + +# Check whether --with-libdeflate-includes was given. +if test "${with_libdeflate_includes+set}" = set; then : + withval=$with_libdeflate_includes; libdeflate_includedir="${withval}" +else + libdeflate_includedir='' +fi + + +if test "X$libdeflate_includedir" != X; then + LIBDEFLATEINCS="-I$libdeflate_includedir" +else + LIBDEFLATEINCS='' +fi + + +# Check whether --with-libdeflate-libraries was given. +if test "${with_libdeflate_libraries+set}" = set; then : + withval=$with_libdeflate_libraries; libdeflate_libdir="${withval}" +else + libdeflate_libdir='' +fi + + +if test "X$libdeflate_libdir" != X; then + LIBDEFLATELIBS="-L$libdeflate_libdir -ldeflate" + LIBDEFLATEDEPS='' +else + LIBDEFLATELIBS='-ldeflate' + LIBDEFLATEDEPS='' +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libdeflate" >&5 +$as_echo_n "checking for libdeflate... " >&6; } +save_CPPFLAGS=$CPPFLAGS +save_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $LIBDEFLATEINCS" +LIBS="$LIBS $LIBDEFLATELIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main() +{ + struct libdeflate_compressor *c; c = libdeflate_alloc_compressor(12); + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + try_libdeflate=yes +else + try_libdeflate=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +CPPFLAGS=$save_CPPFLAGS +LIBS=$save_LIBS +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $try_libdeflate" >&5 +$as_echo "$try_libdeflate" >&6; } +if test $try_libdeflate = no; then + if test $ENABLE_LIBDEFLATE = yes; then + as_fn_error $? "libdeflate not found" "$LINENO" 5 + fi +fi +if test $ENABLE_LIBDEFLATE = yes; then + +$as_echo "#define ENABLE_LIBDEFLATE 1" >>confdefs.h + +fi + + +# Check whether --with-zlib-includes was given. +if test "${with_zlib_includes+set}" = set; then : + withval=$with_zlib_includes; z_includedir="${withval}" +else + z_includedir='' +fi + + +if test "X$z_includedir" != X; then + ZLIBINCS="-I$z_includedir" +else + ZLIBINCS='' +fi + + +# Check whether --with-zlib-libraries was given. +if test "${with_zlib_libraries+set}" = set; then : + withval=$with_zlib_libraries; z_libdir="${withval}" +else + z_libdir='' +fi + + +if test "X$z_libdir" != X; then + ZLIBLIBS="-L$z_libdir -lz" + ZLIBDEPS='' +else + ZLIBLIBS='-lz' + ZLIBDEPS='' +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlib" >&5 +$as_echo_n "checking for zlib... " >&6; } +save_CPPFLAGS=$CPPFLAGS +save_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ZLIBINCS" +LIBS="$LIBS $ZLIBLIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main() +{ + z_stream stream; inflate(&stream, Z_FINISH); + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + try_zlib=yes +else + try_zlib=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +CPPFLAGS=$save_CPPFLAGS +LIBS=$save_LIBS +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $try_zlib" >&5 +$as_echo "$try_zlib" >&6; } +if test $try_zlib = no; then + if test $try_libdeflate = no; then + as_fn_error $? "zlib not found" "$LINENO" 5 + fi +fi +if test $ENABLE_LIBDEFLATE = yes; then + ZLIBINCS=$LIBDEFLATEINCS + ZLIBLIBS=$LIBDEFLATELIBS + ZLIBDEPS=$LIBDEFLATEDEPS +fi + + + + +# Check whether --enable-ebnet was given. +if test "${enable_ebnet+set}" = set; then : + enableval=$enable_ebnet; ENABLE_EBNET="${enableval}" +else + ENABLE_EBNET='yes' +fi + + + if test X$ENABLE_EBNET = Xyes; then + ENABLE_EBNET_TRUE= + ENABLE_EBNET_FALSE='#' +else + ENABLE_EBNET_TRUE='#' + ENABLE_EBNET_FALSE= +fi + + +# Check whether --enable-ipv6 was given. +if test "${enable_ipv6+set}" = set; then : + enableval=$enable_ipv6; ENABLE_IPV6="${enableval}" +else + ENABLE_IPV6='auto' +fi + + +# Check whether --enable-winsock2 was given. +if test "${enable_winsock2+set}" = set; then : + enableval=$enable_winsock2; ENABLE_WINSOCK2="${enableval}" +else + ENABLE_WINSOCK2='auto' +fi + + + +for ac_header in direct.h langinfo.h mbstring.h pthread.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5 +$as_echo_n "checking for res_query in -lresolv... " >&6; } +if ${ac_cv_lib_resolv_res_query+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lresolv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char res_query (); +int +main () +{ +return res_query (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_resolv_res_query=yes +else + ac_cv_lib_resolv_res_query=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_query" >&5 +$as_echo "$ac_cv_lib_resolv_res_query" >&6; } +if test "x$ac_cv_lib_resolv_res_query" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBRESOLV 1 +_ACEOF + + LIBS="-lresolv $LIBS" + +fi + +if test "$ac_cv_lib_resolv_res_query" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lbind" >&5 +$as_echo_n "checking for res_query in -lbind... " >&6; } +if ${ac_cv_lib_bind_res_query+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbind $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char res_query (); +int +main () +{ +return res_query (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_bind_res_query=yes +else + ac_cv_lib_bind_res_query=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bind_res_query" >&5 +$as_echo "$ac_cv_lib_bind_res_query" >&6; } +if test "x$ac_cv_lib_bind_res_query" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBBIND 1 +_ACEOF + + LIBS="-lbind $LIBS" + +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +$as_echo_n "checking for gethostname in -lnsl... " >&6; } +if ${ac_cv_lib_nsl_gethostname+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (); +int +main () +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_gethostname=yes +else + ac_cv_lib_nsl_gethostname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +$as_echo "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +$as_echo_n "checking for socket in -lsocket... " >&6; } +if ${ac_cv_lib_socket_socket+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socket (); +int +main () +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_socket=yes +else + ac_cv_lib_socket_socket=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +$as_echo "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + + +for ac_func in nl_langinfo _getdcwd atoll _atoi64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes; then : + $as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strcasecmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strcasecmp.$ac_objext" + ;; +esac + +fi + + + +ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" +if test "x$ac_cv_type_mode_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define mode_t int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + + + + + if test X$ac_exeext = Xyes; then + EXEEXT_EXE_TRUE= + EXEEXT_EXE_FALSE='#' +else + EXEEXT_EXE_TRUE='#' + EXEEXT_EXE_FALSE= +fi + +if test X$ac_exeext = X.exe; then + +$as_echo "#define EXEEXT_EXE 1" >>confdefs.h + +fi + +if test "$ENABLE_EBNET" = yes; then + for ac_header in ws2tcpip.h sys/socket.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + if test "$ENABLE_WINSOCK2" = auto; then + if test "$ac_cv_header_ws2tcpip_h" = yes; then + if test "$ac_cv_header_sys_socket_h" = no; then + ENABLE_WINSOCK2=yes + else + ENABLE_WINSOCK2=no + fi + else + ENABLE_WINSOCK2=no + fi + fi + + if test "$ENABLE_WINSOCK2" = yes; then + if test "$ac_cv_header_ws2tcpip_h" = no; then + as_fn_error $? "Winsock2 not available" "$LINENO" 5 + fi + +$as_echo "#define ENABLE_WINSOCK2 1" >>confdefs.h + + fi +else + ENABLE_WINSOCK2=no +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Winsock2 support" >&5 +$as_echo_n "checking for Winsock2 support... " >&6; } + if test X$ENABLE_WINSOCK2 = Xyes; then + ENABLE_WINSOCK2_TRUE= + ENABLE_WINSOCK2_FALSE='#' +else + ENABLE_WINSOCK2_TRUE='#' + ENABLE_WINSOCK2_FALSE= +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENABLE_WINSOCK2" >&5 +$as_echo "$ENABLE_WINSOCK2" >&6; } + +for ac_header in getopt.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" +if test "x$ac_cv_header_getopt_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETOPT_H 1 +_ACEOF + +fi + +done + +for ac_func in getopt_long +do : + ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" +if test "x$ac_cv_func_getopt_long" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETOPT_LONG 1 +_ACEOF + +fi +done + + if test X$HAVE_GETOPT_LONG = Xyes; then + HAVE_GETOPT_LONG_TRUE= + HAVE_GETOPT_LONG_FALSE='#' +else + HAVE_GETOPT_LONG_TRUE='#' + HAVE_GETOPT_LONG_FALSE= +fi + + +if test "$ENABLE_EBNET" = yes; then + +$as_echo "#define ENABLE_EBNET 1" >>confdefs.h + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for in_port_t" >&5 +$as_echo_n "checking for in_port_t... " >&6; } +if ${ac_cv_type_in_port_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif +in_port_t in_port; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_in_port_t=yes +else + ac_cv_type_in_port_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_in_port_t" >&5 +$as_echo "$ac_cv_type_in_port_t" >&6; } +if test "$ac_cv_type_in_port_t" != yes; then + ac_cv_sin_port_size=unknown + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #include + #endif + int main() { + struct sockaddr_in addr; + return (sizeof(addr.sin_port) == sizeof(long)) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_sin_port_size=long +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #include + #endif + int main() { + struct sockaddr_in addr; + return (sizeof(addr.sin_port) == sizeof(int)) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_sin_port_size=int +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #include + #endif + int main() { + struct sockaddr_in addr; + return (sizeof(addr.sin_port) == sizeof(short)) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_sin_port_size=short +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #include + #endif + int main() { + struct sockaddr_in addr; + return (sizeof(addr.sin_port) == sizeof(char)) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_sin_port_size=char +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + if test "$ac_cv_sin_port_size" = unknown; then + as_fn_error $? "Failed to get size of sin_port in struct sockaddr_in." "$LINENO" 5 + fi + +cat >>confdefs.h <<_ACEOF +#define in_port_t unsigned $ac_cv_sin_port_size +_ACEOF + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sa_family_t" >&5 +$as_echo_n "checking for sa_family_t... " >&6; } +if ${ac_cv_type_sa_family_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#endif +sa_family_t sa_family; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_sa_family_t=yes +else + ac_cv_type_sa_family_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_sa_family_t" >&5 +$as_echo "$ac_cv_type_sa_family_t" >&6; } +if test "$ac_cv_type_sa_family_t" != yes; then + ac_cv_sa_family_size=unknown + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #endif + int main() { + struct sockaddr addr; + return (sizeof(addr.sa_family) == sizeof(long)) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_sa_family_size=long +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #endif + int main() { + struct sockaddr addr; + return (sizeof(addr.sa_family) == sizeof(int)) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_sa_family_size=int +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #endif + int main() { + struct sockaddr addr; + return (sizeof(addr.sa_family) == sizeof(short)) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_sa_family_size=short +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #endif + int main() { + struct sockaddr addr; + return (sizeof(addr.sa_family) == sizeof(char)) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_sa_family_size=char +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + if test "$ac_cv_sa_family_size" = unknown; then + as_fn_error $? "Failed to get size of sa_family in struct sockaddr." "$LINENO" 5 + fi + +cat >>confdefs.h <<_ACEOF +#define sa_family_t unsigned $ac_cv_sa_family_size +_ACEOF + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 +$as_echo_n "checking for socklen_t... " >&6; } +if ${ac_cv_type_socklen_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#endif +socklen_t socklen; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_socklen_t=yes +else + ac_cv_type_socklen_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_socklen_t" >&5 +$as_echo "$ac_cv_type_socklen_t" >&6; } +if test "$ac_cv_type_socklen_t" != yes; then + +$as_echo "#define socklen_t int" >>confdefs.h + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct in6_addr" >&5 +$as_echo_n "checking for struct in6_addr... " >&6; } +if ${ac_cv_struct_in6_addr+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif +struct in6_addr address; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_in6_addr=yes +else + ac_cv_struct_in6_addr=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_in6_addr" >&5 +$as_echo "$ac_cv_struct_in6_addr" >&6; } +if test "$ac_cv_struct_in6_addr" = yes; then + +$as_echo "#define HAVE_STRUCT_IN6_ADDR 1" >>confdefs.h + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_in6" >&5 +$as_echo_n "checking for struct sockaddr_in6... " >&6; } +if ${ac_cv_struct_sockaddr_in6+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif +struct sockaddr_in6 address; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_sockaddr_in6=yes +else + ac_cv_struct_sockaddr_in6=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_sockaddr_in6" >&5 +$as_echo "$ac_cv_struct_sockaddr_in6" >&6; } +if test "$ac_cv_struct_sockaddr_in6" = yes; then + +$as_echo "#define HAVE_STRUCT_SOCKADDR_IN6 1" >>confdefs.h + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_storage" >&5 +$as_echo_n "checking for struct sockaddr_storage... " >&6; } +if ${ac_cv_struct_sockaddr_storage+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif +struct sockaddr_storage address; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_sockaddr_storage=yes +else + ac_cv_struct_sockaddr_storage=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_sockaddr_storage" >&5 +$as_echo "$ac_cv_struct_sockaddr_storage" >&6; } +if test "$ac_cv_struct_sockaddr_storage" = yes; then + +$as_echo "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h + +fi + +if test $ac_cv_struct_in6_addr = no; then + ac_cv_decl_in6addr_any=no +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for in6addr_any declaration in netinet/in.h or ws2tcpip.h" >&5 +$as_echo_n "checking for in6addr_any declaration in netinet/in.h or ws2tcpip.h... " >&6; } +if ${ac_cv_decl_in6addr_any+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif + +void +testfunc() +{ + unsigned char *address; + address = (char *)&in6addr_any; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_decl_in6addr_any=yes +else + ac_cv_decl_in6addr_any=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_in6addr_any" >&5 +$as_echo "$ac_cv_decl_in6addr_any" >&6; } + if test "$ac_cv_decl_in6addr_any" = yes; then + +$as_echo "#define IN6ADDR_ANY_DECLARED 1" >>confdefs.h + + fi +fi + +if test $ac_cv_struct_in6_addr = no; then + ac_cv_decl_in6addr_loopback=no +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for in6addr_loopback declaration in netinet/in.h or ws2tcpip.h" >&5 +$as_echo_n "checking for in6addr_loopback declaration in netinet/in.h or ws2tcpip.h... " >&6; } +if ${ac_cv_decl_in6addr_loopback+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif + +int +testfunc() +{ + unsigned char *address; + address = (char *)&in6addr_loopback; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_decl_in6addr_loopback=yes +else + ac_cv_decl_in6addr_loopback=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_in6addr_loopback" >&5 +$as_echo "$ac_cv_decl_in6addr_loopback" >&6; } + if test "$ac_cv_decl_in6addr_loopback" = yes; then + +$as_echo "#define IN6ADDR_LOOPBACK_DECLARED 1" >>confdefs.h + + fi +fi + + if test "$ENABLE_WINSOCK2" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo in -lws2_32" >&5 +$as_echo_n "checking for getaddrinfo in -lws2_32... " >&6; } +if ${ac_cv_lib_ws2_32_getaddrinfo+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lws2_32 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char getaddrinfo (); +int +main () +{ +return getaddrinfo (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ws2_32_getaddrinfo=yes +else + ac_cv_lib_ws2_32_getaddrinfo=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ws2_32_getaddrinfo" >&5 +$as_echo "$ac_cv_lib_ws2_32_getaddrinfo" >&6; } +if test "x$ac_cv_lib_ws2_32_getaddrinfo" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBWS2_32 1 +_ACEOF + + LIBS="-lws2_32 $LIBS" + +fi + + for ac_func in getaddrinfo getnameinfo +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + else + for ac_func in getaddrinfo getnameinfo gai_strerror +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + fi + if test "$ENABLE_IPV6" = auto; then + if test "$ac_cv_struct_in6_addr$ac_cv_func_getaddrinfo" = yesyes; then + ENABLE_IPV6=yes + else + ENABLE_IPV6=no + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IPv6 support" >&5 +$as_echo_n "checking for IPv6 support... " >&6; } + if test "$ENABLE_IPV6" = yes; then + if test "$ac_cv_struct_in6_addr" = no; then + as_fn_error $? "IPv6 not available" "$LINENO" 5 + fi + if test "${ac_cv_func_getaddrinfo}" = no; then + as_fn_error $? "IPv6 not available" "$LINENO" 5 + fi + +$as_echo "#define ENABLE_IPV6 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENABLE_IPV6" >&5 +$as_echo "$ENABLE_IPV6" >&6; } +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DOS style pathnames" >&5 +$as_echo_n "checking for DOS style pathnames... " >&6; } + +dos_file_path="no" +case ${host_os} in + *djgpp | *mingw* | *emx*) dos_file_path="yes" ;; +esac + +if test "$dos_file_path" = yes; then + +$as_echo "#define DOS_FILE_PATH 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dos_file_path" >&5 +$as_echo "$dos_file_path" >&6; } + + +EBCONF_ZLIBINCS=$ZLIBINCS +EBCONF_ZLIBLIBS=$ZLIBLIBS + + + + + + + + +EBCONF_INTLINCS=$INTLINCS +EBCONF_INTLLIBS=$INTLLIBS + + + +EBCONF_EBINCS='-I$(includedir)' +if test "$ENABLE_WINSOCK2" = yes; then + EBCONF_EBLIBS='-L$(libdir) -lebu -lws2_32' +else + EBCONF_EBLIBS='-L$(libdir) -lebu' +fi + + + +ac_config_headers="$ac_config_headers config.h" + +ac_config_files="$ac_config_files Makefile ebu/Makefile libebutils/Makefile ebappendix/Makefile ebfont/Makefile ebinfo/Makefile ebrefile/Makefile ebstopcode/Makefile ebzip/Makefile doc/Makefile po-eb/Makefile po-ebutils/Makefile m4/Makefile samples/Makefile" + +cat >confcache <<\_ACEOF +# 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, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# 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. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_SAMPLES_TRUE}" && test -z "${ENABLE_SAMPLES_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_SAMPLES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_EBNET_TRUE}" && test -z "${ENABLE_EBNET_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_EBNET\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${EXEEXT_EXE_TRUE}" && test -z "${EXEEXT_EXE_FALSE}"; then + as_fn_error $? "conditional \"EXEEXT_EXE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_WINSOCK2_TRUE}" && test -z "${ENABLE_WINSOCK2_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_WINSOCK2\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GETOPT_LONG_TRUE}" && test -z "${HAVE_GETOPT_LONG_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GETOPT_LONG\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by ebu $as_me 4.5-20200413, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +ebu config.status 4.5-20200413 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "ebu/Makefile") CONFIG_FILES="$CONFIG_FILES ebu/Makefile" ;; + "libebutils/Makefile") CONFIG_FILES="$CONFIG_FILES libebutils/Makefile" ;; + "ebappendix/Makefile") CONFIG_FILES="$CONFIG_FILES ebappendix/Makefile" ;; + "ebfont/Makefile") CONFIG_FILES="$CONFIG_FILES ebfont/Makefile" ;; + "ebinfo/Makefile") CONFIG_FILES="$CONFIG_FILES ebinfo/Makefile" ;; + "ebrefile/Makefile") CONFIG_FILES="$CONFIG_FILES ebrefile/Makefile" ;; + "ebstopcode/Makefile") CONFIG_FILES="$CONFIG_FILES ebstopcode/Makefile" ;; + "ebzip/Makefile") CONFIG_FILES="$CONFIG_FILES ebzip/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po-eb/Makefile") CONFIG_FILES="$CONFIG_FILES po-eb/Makefile" ;; + "po-ebutils/Makefile") CONFIG_FILES="$CONFIG_FILES po-ebutils/Makefile" ;; + "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; + "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #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. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/lib/ebu/configure.ac b/lib/ebu/configure.ac new file mode 100644 index 0000000..e3b2f77 --- /dev/null +++ b/lib/ebu/configure.ac @@ -0,0 +1,488 @@ +dnl * +dnl * Process this file with autoconf to produce a configure script. +dnl * +AC_INIT(ebu, 4.5-20200413) +AC_CONFIG_SRCDIR(ebu/eb.c) +AC_PREREQ(2.54) +AM_INIT_AUTOMAKE + +dnl * +dnl * Library version info. +dnl * +LIBEB_VERSION_INFO=17:0:0 +AC_SUBST(LIBEB_VERSION_INFO) + +EB_VERSION_MAJOR=4 +EB_VERSION_MINOR=5 +AC_SUBST(EB_VERSION_MAJOR) +AC_SUBST(EB_VERSION_MINOR) + +dnl * +dnl * Set mailing address. +dnl * +MAILING_ADDRESS='kzhr@d1.dion.ne.jp' +AC_SUBST(MAILING_ADDRESS) +AC_DEFINE_UNQUOTED(MAILING_ADDRESS, "$MAILING_ADDRESS", [Mailing address]) + +dnl * +dnl * Programs +dnl * +AC_PROG_CC +AC_PROG_LIBTOOL +AC_PROG_LN_S +AC_PROG_INSTALL + +AC_OPENMP +CFLAGS="$CFLAGS $OPENMP_CFLAGS" + +AC_PATH_PROG(PERL, perl, no) +if test "$PERL" = no; then + AC_MSG_WARN(perl not found) + PERL=/usr/bin/perl +fi + +dnl * +dnl * large file support. +dnl * +eb_SYS_LARGEFILE + +dnl * +dnl * GNU gettext +dnl * +eb_GNU_GETTEXT(external) + +dnl * +dnl * --enable-samples option. +dnl * +AC_ARG_ENABLE(samples, +[ --enable-samples compile sample programs [default=no]], +[case "${enableval}" in + yes) samples=true ;; + no) samples=false ;; + *) AC_MSG_ERROR(invalid argument to --enable-samples) ;; +esac], samples=false) +AM_CONDITIONAL(ENABLE_SAMPLES, test ${samples} = true) + +dnl * +dnl * --enable-pthread option. +dnl * +AC_ARG_ENABLE(pthread, +AC_HELP_STRING([--enable-pthread], [build pthread safe libraries [[no]]]), +[case "${enableval}" in + yes) ENABLE_PTHREAD=yes ;; + no) ENABLE_PTHREAD=no ;; + *) AC_MSG_ERROR(invalid argument to --enable-pthread) ;; +esac], ENABLE_PTHREAD=no) + +dnl * +dnl * --with-pthread-cppflags option. +dnl * +AC_ARG_WITH(pthread-cppflags, +AC_HELP_STRING([--with-pthread-cppflags=FLAGS], + [additional CPPFLAGS for pthread support]), +[PTHREAD_CPPFLAGS="${withval}"], [PTHREAD_CPPFLAGS='']) + +dnl * +dnl * --with-pthread-cflags option. +dnl * +AC_ARG_WITH(pthread-cflags, +AC_HELP_STRING([--with-pthread-cflags=FLAGS], + [additional CFLAGS for pthread support]), +[PTHREAD_CFLAGS="${withval}"], [PTHREAD_CFLAGS='']) + +dnl * +dnl * --with-pthread-ldflags option. +dnl * +AC_ARG_WITH(pthread-ldflags, +AC_HELP_STRING([--with-pthread-ldflags=FLAGS], + [additional LDFLAGS for pthread support]), +[PTHREAD_LDFLAGS="${withval}"], [PTHREAD_LDFLAGS='']) + +dnl * +dnl * --with-pkgdocdir option. +dnl * +AC_ARG_WITH(pkgdocdir, +AC_HELP_STRING([--with-pkgdocdir=DIR], + [HTML documents in DIR [[default=DATADIR/ebu/doc]]]), +[pkgdocdir="${withval}"],[pkgdocdir='${datadir}/ebu/doc']) +AC_SUBST(pkgdocdir) + +dnl * +dnl * Check for pthread. +dnl * +AC_MSG_CHECKING(for pthread) +if test $ENABLE_PTHREAD = no; then + try_pthread=no +else + save_CPPFLAGS=$CPPFLAGS + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + CPPFLAGS="$CPPFLAGS $PTHREAD_CPPFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS" + AC_LINK_IFELSE([AC_LANG_SOURCE([ +#include +static pthread_mutex_t m=PTHREAD_MUTEX_INITIALIZER; + +int +main() +{ + pthread_mutex_lock(&m); + return 0; +} +])], + try_pthread=yes, try_pthread=no) + CPPFLAGS=$save_CPPFLAGS + CFLAGS=$save_CFLAGS + LDFLAGS=$save_LDFLAGS +fi +AC_MSG_RESULT($try_pthread) +if test $ENABLE_PTHREAD = yes; then + if test $try_pthread = no; then + AC_MSG_ERROR(pthread not available) + fi +fi + +if test $ENABLE_PTHREAD = yes; then + AC_DEFINE(ENABLE_PTHREAD, 1, [Define if pthread support is enabled.]) + CPPFLAGS="$CPPFLAGS $PTHREAD_CPPFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS" +fi + +dnl * +dnl * --enable-libdeflate option. +dnl * +AC_ARG_ENABLE(libdeflate, +AC_HELP_STRING([--enable-libdeflate], [build with libdeflate library [[no]]]), +[case "${enableval}" in + yes) ENABLE_LIBDEFLATE=yes ;; + no) ENABLE_LIBDEFLATE=no ;; + *) AC_MSG_ERROR(invalid argument to --enable-libdeflate) ;; +esac], ENABLE_LIBDEFLATE=no) + +dnl * +dnl * --with-libdeflate-includes option. +dnl * +AC_ARG_WITH(libdeflate-includes, +AC_HELP_STRING([--with-libdeflate-includes=DIR], [libdeflate include files are in DIR]), +[libdeflate_includedir="${withval}"], [libdeflate_includedir='']) + +if test "X$libdeflate_includedir" != X; then + LIBDEFLATEINCS="-I$libdeflate_includedir" +else + LIBDEFLATEINCS='' +fi + +dnl * +dnl * --with-libdeflate-libraries option. +dnl * +AC_ARG_WITH(libdeflate-libraries, +AC_HELP_STRING([--with-libdeflate-libraries=DIR], [libdeflate library files are in DIR]), +[libdeflate_libdir="${withval}"], [libdeflate_libdir='']) + +if test "X$libdeflate_libdir" != X; then + LIBDEFLATELIBS="-L$libdeflate_libdir -ldeflate" + LIBDEFLATEDEPS='' +else + LIBDEFLATELIBS='-ldeflate' + LIBDEFLATEDEPS='' +fi + +dnl * +dnl * Check for libdeflate. +dnl * +AC_MSG_CHECKING(for libdeflate) +save_CPPFLAGS=$CPPFLAGS +save_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $LIBDEFLATEINCS" +LIBS="$LIBS $LIBDEFLATELIBS" +AC_LINK_IFELSE([AC_LANG_SOURCE([ +#include + +int +main() +{ + struct libdeflate_compressor *c; c = libdeflate_alloc_compressor(12); + return 0; +} +])], + try_libdeflate=yes, try_libdeflate=no) +CPPFLAGS=$save_CPPFLAGS +LIBS=$save_LIBS +AC_MSG_RESULT($try_libdeflate) +if test $try_libdeflate = no; then + if test $ENABLE_LIBDEFLATE = yes; then + AC_MSG_ERROR(libdeflate not found) + fi +fi +if test $ENABLE_LIBDEFLATE = yes; then + AC_DEFINE(ENABLE_LIBDEFLATE, 1, [Define if libdeflate support is enabled.]) +fi + +dnl * +dnl * --with-zlib-includes option. +dnl * +AC_ARG_WITH(zlib-includes, +AC_HELP_STRING([--with-zlib-includes=DIR], [zlib include files are in DIR]), +[z_includedir="${withval}"], [z_includedir='']) + +if test "X$z_includedir" != X; then + ZLIBINCS="-I$z_includedir" +else + ZLIBINCS='' +fi + +dnl * +dnl * --with-zlib-libraries option. +dnl * +AC_ARG_WITH(zlib-libraries, +AC_HELP_STRING([--with-zlib-libraries=DIR], [zlib library files are in DIR]), + [z_libdir="${withval}"], [z_libdir='']) + +if test "X$z_libdir" != X; then + ZLIBLIBS="-L$z_libdir -lz" + ZLIBDEPS='' +else + ZLIBLIBS='-lz' + ZLIBDEPS='' +fi + +dnl * +dnl * Check for zlib. +dnl * +AC_MSG_CHECKING(for zlib) +save_CPPFLAGS=$CPPFLAGS +save_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ZLIBINCS" +LIBS="$LIBS $ZLIBLIBS" +AC_LINK_IFELSE([AC_LANG_SOURCE([ +#include + +int +main() +{ + z_stream stream; inflate(&stream, Z_FINISH); + return 0; +} +])], + try_zlib=yes, try_zlib=no) +CPPFLAGS=$save_CPPFLAGS +LIBS=$save_LIBS +AC_MSG_RESULT($try_zlib) +if test $try_zlib = no; then + if test $try_libdeflate = no; then + AC_MSG_ERROR(zlib not found) + fi +fi +if test $ENABLE_LIBDEFLATE = yes; then + ZLIBINCS=$LIBDEFLATEINCS + ZLIBLIBS=$LIBDEFLATELIBS + ZLIBDEPS=$LIBDEFLATEDEPS +fi +AC_SUBST(ZLIBINCS) +AC_SUBST(ZLIBLIBS) +AC_SUBST(ZLIBDEPS) + +dnl * +dnl * --enable-ebnet option. +dnl * +AC_ARG_ENABLE(ebnet, +AC_HELP_STRING([--enable-ebnet], [EBNET support [[yes]]]), +[ENABLE_EBNET="${enableval}"], [ENABLE_EBNET='yes']) +AC_SUBST(ENABLE_EBNET) +AM_CONDITIONAL(ENABLE_EBNET, test X$ENABLE_EBNET = Xyes) + +dnl * +dnl * --enable-ipv6 option. +dnl * +AC_ARG_ENABLE(ipv6, +AC_HELP_STRING([--enable-ipv6], + [IPv6 support for EBNET [[yes]] (if the system supports IPv6)]), +[ENABLE_IPV6="${enableval}"], [ENABLE_IPV6='auto']) + +dnl * +dnl * --enable-winsock option. +dnl * +AC_ARG_ENABLE(winsock2, +AC_HELP_STRING([--enable-winsock2], + [Use Winsock2 for EBNET [[auto]]]), +[ENABLE_WINSOCK2="${enableval}"], [ENABLE_WINSOCK2='auto']) + +dnl * +dnl * Compiler Characteristics. +dnl * + +dnl * +dnl * Header Files. +dnl * +AC_CHECK_HEADERS(direct.h langinfo.h mbstring.h pthread.h) + +dnl * +dnl * Structures. +dnl * + +dnl * +dnl * Libraries. +dnl * +AC_CHECK_LIB(resolv, res_query) +if test "$ac_cv_lib_resolv_res_query" = no; then + AC_CHECK_LIB(bind, res_query) +fi +AC_CHECK_LIB(nsl, gethostname) +AC_CHECK_LIB(socket, socket) + +dnl * +dnl * Library Functions. +dnl * +AC_CHECK_FUNCS(nl_langinfo _getdcwd atoll _atoi64) +AC_REPLACE_FUNCS(strcasecmp) + +dnl * +dnl * Typedefs. +dnl * +AC_TYPE_MODE_T +AC_CHECK_TYPE(ssize_t, int) + +dnl * +dnl * System services +dnl * +AC_EXEEXT +AC_OBJEXT +AM_CONDITIONAL(EXEEXT_EXE, test X$ac_exeext = Xyes) +if test X$ac_exeext = X.exe; then + AC_DEFINE(EXEEXT_EXE, 1, [Define if command names have the suffix \`.exe']) +fi + +dnl * +dnl * Check for Winsock2 +dnl * +if test "$ENABLE_EBNET" = yes; then + AC_CHECK_HEADERS(ws2tcpip.h sys/socket.h) + if test "$ENABLE_WINSOCK2" = auto; then + if test "$ac_cv_header_ws2tcpip_h" = yes; then + if test "$ac_cv_header_sys_socket_h" = no; then + ENABLE_WINSOCK2=yes + else + ENABLE_WINSOCK2=no + fi + else + ENABLE_WINSOCK2=no + fi + fi + + if test "$ENABLE_WINSOCK2" = yes; then + if test "$ac_cv_header_ws2tcpip_h" = no; then + AC_MSG_ERROR(Winsock2 not available) + fi + AC_DEFINE(ENABLE_WINSOCK2, 1, [Define if build with Winsock2]) + fi +else + ENABLE_WINSOCK2=no +fi +AC_MSG_CHECKING(for Winsock2 support) +AM_CONDITIONAL(ENABLE_WINSOCK2, test X$ENABLE_WINSOCK2 = Xyes) +AC_MSG_RESULT($ENABLE_WINSOCK2) + +dnl * +dnl * Check for getopt_long +dnl * +AC_CHECK_HEADERS(getopt.h) +AC_CHECK_FUNCS(getopt_long) +AM_CONDITIONAL(HAVE_GETOPT_LONG, test X$HAVE_GETOPT_LONG = Xyes) + +dnl * +dnl * ebnet support +dnl * +if test "$ENABLE_EBNET" = yes; then + AC_DEFINE(ENABLE_EBNET, 1, [Define if build with ebnet support]) + + AC_TYPE_IN_PORT_T + AC_TYPE_SA_FAMILY_T + AC_TYPE_SOCKLEN_T + AC_STRUCT_IN6_ADDR + AC_STRUCT_SOCKADDR_IN6 + AC_STRUCT_SOCKADDR_STORAGE + AC_DECL_IN6ADDR_ANY + AC_DECL_IN6ADDR_LOOPBACK + + if test "$ENABLE_WINSOCK2" = yes; then + AC_CHECK_LIB(ws2_32, getaddrinfo) + AC_CHECK_FUNCS(getaddrinfo getnameinfo) + else + AC_CHECK_FUNCS(getaddrinfo getnameinfo gai_strerror) + fi + if test "$ENABLE_IPV6" = auto; then + if test "$ac_cv_struct_in6_addr$ac_cv_func_getaddrinfo" = yesyes; then + ENABLE_IPV6=yes + else + ENABLE_IPV6=no + fi + fi + + AC_MSG_CHECKING(for IPv6 support) + if test "$ENABLE_IPV6" = yes; then + if test "$ac_cv_struct_in6_addr" = no; then + AC_MSG_ERROR(IPv6 not available) + fi + if test "${ac_cv_func_getaddrinfo}" = no; then + AC_MSG_ERROR(IPv6 not available) + fi + AC_DEFINE(ENABLE_IPV6, 1, [Define if build with IPv6 support]) + fi + AC_MSG_RESULT($ENABLE_IPV6) +fi + +dnl * +dnl * DOS style path support +dnl * +AC_CANONICAL_HOST +AC_MSG_CHECKING(for DOS style pathnames) + +dos_file_path="no" +case ${host_os} in + *djgpp | *mingw* | *emx*) dos_file_path="yes" ;; +esac + +if test "$dos_file_path" = yes; then + AC_DEFINE(DOS_FILE_PATH, 1, [Use DOS style pathnames]) +fi +AC_MSG_RESULT($dos_file_path) + +dnl * +dnl * Substitusion for eb.conf. +dnl * +AC_SUBST(ENABLE_LIBDEFLATE) +EBCONF_ZLIBINCS=$ZLIBINCS +EBCONF_ZLIBLIBS=$ZLIBLIBS +AC_SUBST(EBCONF_ZLIBINCS) +AC_SUBST(EBCONF_ZLIBLIBS) + +AC_SUBST(ENABLE_PTHREAD) +AC_SUBST(PTHREAD_CPPFLAGS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_LDFLAGS) + +EBCONF_INTLINCS=$INTLINCS +EBCONF_INTLLIBS=$INTLLIBS +AC_SUBST(EBCONF_INTLINCS) +AC_SUBST(EBCONF_INTLLIBS) + +EBCONF_EBINCS='-I$(includedir)' +if test "$ENABLE_WINSOCK2" = yes; then + EBCONF_EBLIBS='-L$(libdir) -lebu -lws2_32' +else + EBCONF_EBLIBS='-L$(libdir) -lebu' +fi +AC_SUBST(EBCONF_EBINCS) +AC_SUBST(EBCONF_EBLIBS) + +dnl * +dnl * Output Files. +dnl * +AC_CONFIG_HEADER(config.h) +AC_CONFIG_FILES([Makefile ebu/Makefile libebutils/Makefile ebappendix/Makefile + ebfont/Makefile ebinfo/Makefile ebrefile/Makefile ebstopcode/Makefile + ebzip/Makefile doc/Makefile po-eb/Makefile po-ebutils/Makefile + m4/Makefile samples/Makefile]) +AC_OUTPUT diff --git a/lib/ebu/depcomp b/lib/ebu/depcomp new file mode 100644 index 0000000..aeba4e8 --- /dev/null +++ b/lib/ebu/depcomp @@ -0,0 +1,632 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free +# Software Foundation, Inc. + +# This program 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, 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. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u="sed s,\\\\\\\\,/,g" + depmode=msvisualcpp +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> "$depfile" + echo >> "$depfile" + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/lib/ebu/doc/Makefile b/lib/ebu/doc/Makefile new file mode 100644 index 0000000..bae0679 --- /dev/null +++ b/lib/ebu/doc/Makefile @@ -0,0 +1,572 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# doc/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pkgdocdir)" +pkgdocDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkgdoc_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu/doc +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu/doc +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +pkgdoc_DATA = eb.html ebappendix.html ebfont.html ebinfo.html ebrefile.html \ + ebstopcode.html ebzip.html + +EXTRA_DIST = eb.html.in ebappendix.html.in ebfont.html.in ebinfo.html.in \ + ebrefile.html.in ebstopcode.html.in ebzip.html.in eb.css ebutils.css \ + c2html html-include html-index html-split html-toc + +CLEANFILES = *.html +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgdocDATA: $(pkgdoc_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgdocdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdocdir)" + @list='$(pkgdoc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdocdir)/$$f'"; \ + $(pkgdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdocdir)/$$f"; \ + done + +uninstall-pkgdocDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgdoc_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgdocdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgdocdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(pkgdocdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgdocDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgdocDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-hook + +.MAKE: install-am install-data-am install-strip uninstall-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-data-hook install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgdocDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am uninstall uninstall-am uninstall-hook \ + uninstall-pkgdocDATA + + +install-data-hook: + for i in $(pkgdoc_DATA); do \ + base="`echo $$i | sed -e 's/\.html//'`"; \ + for j in $$base-[0-9][0-9].html; do \ + test -r $$j || continue; \ + echo " $(INSTALL_DATA) '$$j' '$(DESTDIR)$(pkgdocdir)/$$j'"; \ + $(INSTALL_DATA) "$$j" "$(DESTDIR)$(pkgdocdir)/$$j"; \ + done; \ + done + +uninstall-hook: + for i in $(pkgdoc_DATA); do \ + base="`echo $$i | sed -e 's/\.html//'`"; \ + rm -f "$(DESTDIR)$(pkgdocdir)"/$$base-*.html; \ + done + +version.html: + rm -f $@ + echo $(VERSION) > version.html + +splitted: eb-splitted ebappendix-splitted ebfont-splitted ebinfo-splitted \ + ebrefile-splitted ebstopcode-splitted ebzip-splitted + +eb.html: eb-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p eb -w 2 eb-cat.html + +ebappendix.html: ebappendix-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebappendix -w 2 ebappendix-cat.html + +ebfont.html: ebfont-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebfont -w 2 ebfont-cat.html + +ebinfo.html: ebinfo-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebinfo -w 2 ebinfo-cat.html + +ebrefile.html: ebrefile-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebrefile -w 2 ebrefile-cat.html + +ebstopcode.html: ebstopcode-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebstopcode -w 2 ebstopcode-cat.html + +ebzip.html: ebzip-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebzip -w 2 ebzip-cat.html + +eb-cat.html: eb.html.in version.html eb-toc.html eb-sample-appendix.html \ + eb-sample-booklist.html eb-sample-disctype.html eb-sample-font.html \ + eb-sample-initexit.html eb-sample-subbook.html eb-sample-text.html \ + eb-sample-word.html eb-index-type.html eb-index-func.html \ + eb-index-const.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/eb.html.in + +ebappendix-cat.html: $(srcdir)/ebappendix.html.in version.html \ +ebappendix-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebappendix.html.in + +ebfont-cat.html: $(srcdir)/ebfont.html.in version.html ebfont-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebfont.html.in + +ebinfo-cat.html: $(srcdir)/ebinfo.html.in version.html ebinfo-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebinfo.html.in + +ebrefile-cat.html: $(srcdir)/ebrefile.html.in version.html ebrefile-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebrefile.html.in + +ebstopcode-cat.html: $(srcdir)/ebstopcode.html.in version.html \ +ebstopcode-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebstopcode.html.in + +ebzip-cat.html: $(srcdir)/ebzip.html.in version.html ebzip-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebzip.html.in + +eb-toc.html: $(srcdir)/eb.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/eb.html.in > $@ + +ebappendix-toc.html: $(srcdir)/ebappendix.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebappendix.html.in > $@ + +ebfont-toc.html: $(srcdir)/ebfont.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebfont.html.in > $@ + +ebinfo-toc.html: $(srcdir)/ebinfo.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebinfo.html.in > $@ + +ebrefile-toc.html: $(srcdir)/ebrefile.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebrefile.html.in > $@ + +ebstopcode-toc.html: $(srcdir)/ebstopcode.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebstopcode.html.in > $@ + +ebzip-toc.html: $(srcdir)/ebzip.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebzip.html.in > $@ + +eb-sample-appendix.html: $(top_srcdir)/samples/appendix.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/appendix.c > $@ + +eb-sample-booklist.html: $(top_srcdir)/samples/booklist.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/booklist.c > $@ + +eb-sample-disctype.html: $(top_srcdir)/samples/disctype.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/disctype.c > $@ + +eb-sample-font.html: $(top_srcdir)/samples/font.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/font.c > $@ + +eb-sample-initexit.html: $(top_srcdir)/samples/initexit.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/initexit.c > $@ + +eb-sample-subbook.html: $(top_srcdir)/samples/subbook.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/subbook.c > $@ + +eb-sample-text.html: $(top_srcdir)/samples/text.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/text.c > $@ + +eb-sample-word.html: $(top_srcdir)/samples/word.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/word.c > $@ + +eb-index-type.html eb-index-func.html eb-index-const.html: \ +$(srcdir)/eb.html.in + $(PERL) $(srcdir)/html-index -h -p eb-index $(srcdir)/eb.html.in +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/doc/Makefile.am b/lib/ebu/doc/Makefile.am new file mode 100644 index 0000000..4656b79 --- /dev/null +++ b/lib/ebu/doc/Makefile.am @@ -0,0 +1,160 @@ +pkgdoc_DATA = eb.html ebappendix.html ebfont.html ebinfo.html ebrefile.html \ + ebstopcode.html ebzip.html + +EXTRA_DIST = eb.html.in ebappendix.html.in ebfont.html.in ebinfo.html.in \ + ebrefile.html.in ebstopcode.html.in ebzip.html.in eb.css ebutils.css \ + c2html html-include html-index html-split html-toc + +CLEANFILES = *.html + +install-data-hook: + for i in $(pkgdoc_DATA); do \ + base="`echo $$i | sed -e 's/\.html//'`"; \ + for j in $$base-[0-9][0-9].html; do \ + test -r $$j || continue; \ + echo " $(INSTALL_DATA) '$$j' '$(DESTDIR)$(pkgdocdir)/$$j'"; \ + $(INSTALL_DATA) "$$j" "$(DESTDIR)$(pkgdocdir)/$$j"; \ + done; \ + done + +uninstall-hook: + for i in $(pkgdoc_DATA); do \ + base="`echo $$i | sed -e 's/\.html//'`"; \ + rm -f "$(DESTDIR)$(pkgdocdir)"/$$base-*.html; \ + done + +version.html: + rm -f $@ + echo $(VERSION) > version.html + +splitted: eb-splitted ebappendix-splitted ebfont-splitted ebinfo-splitted \ + ebrefile-splitted ebstopcode-splitted ebzip-splitted + +eb.html: eb-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p eb -w 2 eb-cat.html + +ebappendix.html: ebappendix-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebappendix -w 2 ebappendix-cat.html + +ebfont.html: ebfont-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebfont -w 2 ebfont-cat.html + +ebinfo.html: ebinfo-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebinfo -w 2 ebinfo-cat.html + +ebrefile.html: ebrefile-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebrefile -w 2 ebrefile-cat.html + +ebstopcode.html: ebstopcode-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebstopcode -w 2 ebstopcode-cat.html + +ebzip.html: ebzip-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebzip -w 2 ebzip-cat.html + + +eb-cat.html: eb.html.in version.html eb-toc.html eb-sample-appendix.html \ + eb-sample-booklist.html eb-sample-disctype.html eb-sample-font.html \ + eb-sample-initexit.html eb-sample-subbook.html eb-sample-text.html \ + eb-sample-word.html eb-index-type.html eb-index-func.html \ + eb-index-const.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/eb.html.in + +ebappendix-cat.html: $(srcdir)/ebappendix.html.in version.html \ +ebappendix-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebappendix.html.in + +ebfont-cat.html: $(srcdir)/ebfont.html.in version.html ebfont-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebfont.html.in + +ebinfo-cat.html: $(srcdir)/ebinfo.html.in version.html ebinfo-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebinfo.html.in + +ebrefile-cat.html: $(srcdir)/ebrefile.html.in version.html ebrefile-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebrefile.html.in + +ebstopcode-cat.html: $(srcdir)/ebstopcode.html.in version.html \ +ebstopcode-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebstopcode.html.in + +ebzip-cat.html: $(srcdir)/ebzip.html.in version.html ebzip-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebzip.html.in + + +eb-toc.html: $(srcdir)/eb.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/eb.html.in > $@ + +ebappendix-toc.html: $(srcdir)/ebappendix.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebappendix.html.in > $@ + +ebfont-toc.html: $(srcdir)/ebfont.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebfont.html.in > $@ + +ebinfo-toc.html: $(srcdir)/ebinfo.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebinfo.html.in > $@ + +ebrefile-toc.html: $(srcdir)/ebrefile.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebrefile.html.in > $@ + +ebstopcode-toc.html: $(srcdir)/ebstopcode.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebstopcode.html.in > $@ + +ebzip-toc.html: $(srcdir)/ebzip.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebzip.html.in > $@ + +eb-sample-appendix.html: $(top_srcdir)/samples/appendix.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/appendix.c > $@ + +eb-sample-booklist.html: $(top_srcdir)/samples/booklist.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/booklist.c > $@ + +eb-sample-disctype.html: $(top_srcdir)/samples/disctype.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/disctype.c > $@ + +eb-sample-font.html: $(top_srcdir)/samples/font.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/font.c > $@ + +eb-sample-initexit.html: $(top_srcdir)/samples/initexit.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/initexit.c > $@ + +eb-sample-subbook.html: $(top_srcdir)/samples/subbook.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/subbook.c > $@ + +eb-sample-text.html: $(top_srcdir)/samples/text.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/text.c > $@ + +eb-sample-word.html: $(top_srcdir)/samples/word.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/word.c > $@ + + +eb-index-type.html eb-index-func.html eb-index-const.html: \ +$(srcdir)/eb.html.in + $(PERL) $(srcdir)/html-index -h -p eb-index $(srcdir)/eb.html.in diff --git a/lib/ebu/doc/Makefile.in b/lib/ebu/doc/Makefile.in new file mode 100644 index 0000000..e9ace62 --- /dev/null +++ b/lib/ebu/doc/Makefile.in @@ -0,0 +1,572 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pkgdocdir)" +pkgdocDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkgdoc_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +pkgdoc_DATA = eb.html ebappendix.html ebfont.html ebinfo.html ebrefile.html \ + ebstopcode.html ebzip.html + +EXTRA_DIST = eb.html.in ebappendix.html.in ebfont.html.in ebinfo.html.in \ + ebrefile.html.in ebstopcode.html.in ebzip.html.in eb.css ebutils.css \ + c2html html-include html-index html-split html-toc + +CLEANFILES = *.html +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgdocDATA: $(pkgdoc_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgdocdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdocdir)" + @list='$(pkgdoc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdocdir)/$$f'"; \ + $(pkgdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdocdir)/$$f"; \ + done + +uninstall-pkgdocDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgdoc_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgdocdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgdocdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(pkgdocdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgdocDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-pkgdocDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-hook + +.MAKE: install-am install-data-am install-strip uninstall-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-data-hook install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgdocDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am uninstall uninstall-am uninstall-hook \ + uninstall-pkgdocDATA + + +install-data-hook: + for i in $(pkgdoc_DATA); do \ + base="`echo $$i | sed -e 's/\.html//'`"; \ + for j in $$base-[0-9][0-9].html; do \ + test -r $$j || continue; \ + echo " $(INSTALL_DATA) '$$j' '$(DESTDIR)$(pkgdocdir)/$$j'"; \ + $(INSTALL_DATA) "$$j" "$(DESTDIR)$(pkgdocdir)/$$j"; \ + done; \ + done + +uninstall-hook: + for i in $(pkgdoc_DATA); do \ + base="`echo $$i | sed -e 's/\.html//'`"; \ + rm -f "$(DESTDIR)$(pkgdocdir)"/$$base-*.html; \ + done + +version.html: + rm -f $@ + echo $(VERSION) > version.html + +splitted: eb-splitted ebappendix-splitted ebfont-splitted ebinfo-splitted \ + ebrefile-splitted ebstopcode-splitted ebzip-splitted + +eb.html: eb-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p eb -w 2 eb-cat.html + +ebappendix.html: ebappendix-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebappendix -w 2 ebappendix-cat.html + +ebfont.html: ebfont-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebfont -w 2 ebfont-cat.html + +ebinfo.html: ebinfo-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebinfo -w 2 ebinfo-cat.html + +ebrefile.html: ebrefile-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebrefile -w 2 ebrefile-cat.html + +ebstopcode.html: ebstopcode-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebstopcode -w 2 ebstopcode-cat.html + +ebzip.html: ebzip-cat.html + rm -f $@ + $(PERL) $(srcdir)/html-split -Z -p ebzip -w 2 ebzip-cat.html + +eb-cat.html: eb.html.in version.html eb-toc.html eb-sample-appendix.html \ + eb-sample-booklist.html eb-sample-disctype.html eb-sample-font.html \ + eb-sample-initexit.html eb-sample-subbook.html eb-sample-text.html \ + eb-sample-word.html eb-index-type.html eb-index-func.html \ + eb-index-const.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/eb.html.in + +ebappendix-cat.html: $(srcdir)/ebappendix.html.in version.html \ +ebappendix-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebappendix.html.in + +ebfont-cat.html: $(srcdir)/ebfont.html.in version.html ebfont-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebfont.html.in + +ebinfo-cat.html: $(srcdir)/ebinfo.html.in version.html ebinfo-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebinfo.html.in + +ebrefile-cat.html: $(srcdir)/ebrefile.html.in version.html ebrefile-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebrefile.html.in + +ebstopcode-cat.html: $(srcdir)/ebstopcode.html.in version.html \ +ebstopcode-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebstopcode.html.in + +ebzip-cat.html: $(srcdir)/ebzip.html.in version.html ebzip-toc.html + rm -f $@ + $(PERL) $(srcdir)/html-include -o $@ $(srcdir)/ebzip.html.in + +eb-toc.html: $(srcdir)/eb.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/eb.html.in > $@ + +ebappendix-toc.html: $(srcdir)/ebappendix.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebappendix.html.in > $@ + +ebfont-toc.html: $(srcdir)/ebfont.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebfont.html.in > $@ + +ebinfo-toc.html: $(srcdir)/ebinfo.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebinfo.html.in > $@ + +ebrefile-toc.html: $(srcdir)/ebrefile.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebrefile.html.in > $@ + +ebstopcode-toc.html: $(srcdir)/ebstopcode.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebstopcode.html.in > $@ + +ebzip-toc.html: $(srcdir)/ebzip.html.in + rm -f $@ + $(PERL) $(srcdir)/html-toc -m h2 -M h3 $(srcdir)/ebzip.html.in > $@ + +eb-sample-appendix.html: $(top_srcdir)/samples/appendix.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/appendix.c > $@ + +eb-sample-booklist.html: $(top_srcdir)/samples/booklist.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/booklist.c > $@ + +eb-sample-disctype.html: $(top_srcdir)/samples/disctype.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/disctype.c > $@ + +eb-sample-font.html: $(top_srcdir)/samples/font.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/font.c > $@ + +eb-sample-initexit.html: $(top_srcdir)/samples/initexit.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/initexit.c > $@ + +eb-sample-subbook.html: $(top_srcdir)/samples/subbook.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/subbook.c > $@ + +eb-sample-text.html: $(top_srcdir)/samples/text.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/text.c > $@ + +eb-sample-word.html: $(top_srcdir)/samples/word.c + rm -f $@ + $(PERL) $(srcdir)/c2html $(top_srcdir)/samples/word.c > $@ + +eb-index-type.html eb-index-func.html eb-index-const.html: \ +$(srcdir)/eb.html.in + $(PERL) $(srcdir)/html-index -h -p eb-index $(srcdir)/eb.html.in +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/doc/c2html b/lib/ebu/doc/c2html new file mode 100644 index 0000000..a11c5a4 --- /dev/null +++ b/lib/ebu/doc/c2html @@ -0,0 +1,51 @@ +#! /usr/bin/perl + +require 5.005; +use Getopt::Std; + +# +# Usage +# +my $usage = "Usage: $0 [-t tab-width] [input-file...]\n"; + +# +# Variables +# +my $tab_width = 8; +my $out_file_name = '-'; + +# +# Parse command line arguments. +# +getopts(':t:', \%options) or die $usage; +$tab_width = $options{t} if (defined($options{t})); + +# +# Convert C to HTML. +# +print "
\n"; +print "
\n";
+
+while (<>) {
+    s/^([ \t]*)//;
+    my $spaces = $1;
+
+    my $col = 0;
+    foreach my $c (unpack('C*', $spaces)) {
+	if ($c eq ord(' ')) {
+	    $col++;
+	} else {
+	    $col = ($col + $tab_width) - ($col % $tab_width);
+	}
+	
+    }
+    print ' ' x $col;
+
+    s|&|&|g;
+    s|<|<|g;
+    s|>|>|g;
+    print;
+}
+
+print "
\n"; +print "
\n"; diff --git a/lib/ebu/doc/eb-01.html b/lib/ebu/doc/eb-01.html new file mode 100644 index 0000000..5941b6a --- /dev/null +++ b/lib/ebu/doc/eb-01.html @@ -0,0 +1,132 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¤Ï¤¸¤á¤Ë

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î C ¤Î¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£ +UNIX ·Ï OS ¤ª¤è¤Ó Windows (2000°Ê¹ß) ¤Î¥·¥¹¥Æ¥à¾å¤ÇÆ°ºî¤µ¤»¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï EB, EBG, EBXA, EBXA-C, S-EBXA ¤ª¤è¤Ó EPWING ·Á¼°¤Î +CD-ROM ½ñÀÒ¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤Ï¡¢¼ç¤ËÆüËܤÇÈÎÇ䤵¤ì¤Æ¤¤¤ë¼­½ñ¤Ë»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¼«ÂÎ¤Ï ISO 9660 ·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Â¾¤Î ISO 9660 ·Á¼° +¤ÈƱ¤¸Í×ÎΤǥޥ¦¥ó¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+Ëܽñ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤òºîÀ®¤¹¤ë +³«È¯¼Ô¸þ¤±¤Ë¡¢¥é¥¤¥Ö¥é¥ê¤Î»ÅÍͤò²òÀ⤷¤¿Ê¸½ñ¤Ç¤¹¡£ +¤½¤·¤Æ¡¢¥é¥¤¥Ö¥é¥ê¤Î¸ø¼°¤Ê»²¾È¥Þ¥Ë¥å¥¢¥ë¤Ç¤â¤¢¤ê¤Þ¤¹¡£ +Æɤ߿ʤá¤ë¤Ë¤¢¤¿¤Ã¤Æ¡¢ÆÉ¼Ô¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ª¤è¤Ó CD-ROM ½ñÀÒ¤ÎÆâÉô¹½Â¤ +¤Ë¤Ä¤¤¤ÆÃΤäƤ¤¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¤¬¡¢ÅŻҥ֥寤« EPWING ¤òÍøÍѤ·¤Æ¡¢ +¼ÂºÝ¤Ë CD-ROM ½ñÀÒ¤¬¤É¤Î¤è¤¦¤Ê¤â¤Î¤«¤òÍý²ò¤·¤Æ¤ª¤¯¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢C ¸À¸ì¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Ï¡¢½½Ê¬¤ËÍý²ò¤·¤Æ¤¤¤ë¤³¤È¤òÁ°Äó +¤È¤·¤Þ¤¹¡£ +

+ +

+Ëܽñ¤ÎÆâÍƤ˱è¤Ã¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ò +ºîÀ®¤¹¤ë¤Ë¤Ï¡¢¤ª»ÈÍѤ¤¤Î¥·¥¹¥Æ¥à¤Ë EB ¥é¥¤¥Ö¥é¥ê¤È C ¥³¥ó¥Ñ¥¤¥é¤ò +¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¤¤Æ²¼¤µ¤¤¡£ +¤Ê¤ª¡¢Ëܽñ¤Ç¤Ï¼ç¤Ë UNIX ·Ï OS ¤ò»ÈÍѤ·¤¿¾ì¹ç¤Ë¤Ä¤¤¤Æ¡¢µ­½Ò¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¥½¡¼¥¹¥³¡¼¥É¤ª¤è¤Ó¥Ð¥¤¥Ê¥ê¤ò¡¢ +¤¤¤ï¤æ¤ë Modified BSD ¥é¥¤¥»¥ó¥¹¤Î²¼¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ +(¥Ð¡¼¥¸¥ç¥ó 4.1 ¤è¤ê¤âÁ°¤Î¤â¤Î¤Ï¡¢GPL ¤òºÎÍѤ·¤Æ¤¤¤Þ¤·¤¿¡£) +¾Ü¤·¤¯¤Ï¡¢¥½¡¼¥¹¥³¡¼¥É¤ËÉÕ°¤·¤Æ¤¤¤ë COPYING ¤È¤¤¤¦±Ñʸ¤Î¥Õ¥¡¥¤¥ë¤ò»²¾È +¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ÅŻҥ֥å¯¤È EPWING ¤Ë¤Ä¤¤¤Æ

+ +

+ÅŻҥ֥å¯¤È EPWING ¤Ï¡¢¤¤¤º¤ì¤â¼ç¤ËÆüËܤǻȤï¤ì¤Æ¤¤¤ëÅŻҽñÀҤΠ+¥Ç¡¼¥¿·Á¼°¤Î̾¾Î¤Ç¡¢CD-ROM ¤Ë¼ý¤á¤¿·Á¤Ç¿ô¡¹¤Î½ñÀÒ¤¬»ÔÈΤµ¤ì¤Æ¤¤¤Þ¤¹¡£ +CD-ROM ¤Ï ISO 9660 ·Á¼° ¤Ê¤Î¤Ç¡¢CD-ROM ¥É¥é¥¤¥Ö¤¬°·¤¨¤ë¥·¥¹¥Æ¥à¤Ç¤¢¤ì¤Ð¡¢ +Íưפ˥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +ÅŻҽñÀҤΥǡ¼¥¿·Á¼°¤È¤Ï¤¤¤Ã¤Æ¤â¡¢¼ÂºÝ¤Ï¼­½ñ¸þ¤±¤ËÆò½¤·¤¿¹½Â¤¤È¤Ê¤Ã¤Æ +¤ª¤ê¡¢»ÔÈΤµ¤ì¤Æ¤¤¤ë½ñÀҤ⼭½ñ¤ÎÎब°µÅÝŪ¤Ë¿¤¤¤è¤¦¤Ç¤¹¡£ +

+ +

+ÅŻҥ֥寡¢EPWING ¤È¤â¤Ë¡¢¥Ç¡¼¥¿·Á¼°¤Ë´Ø¤¹¤ëµ¬³Ê¤ÎÁ´ÍƤϰìÈ̸ø³«¤µ¤ì¤Æ +¤¤¤Þ¤»¤ó¤¬¡¢EPWING ¤Ä¤¤¤Æ¤Ïµ¬³Ê¤Î°ìÉô¤¬ÆüËܹ©¶Èµ¬³Ê JIS X 4081 +¡ÖÅŻҽÐÈǸ¡º÷¥Ç¡¼¥¿¹½Â¤¡×¤È¤·¤Æ¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¤µ¤é¤Ë¡¢EPWING ¤ÈÅŻҥ֥寤Υǡ¼¥¿·Á¼°¤Ï¡¢¹ó»÷¤·¤Æ¤¤¤ë¤³¤È¤¬ÃΤé¤ì¤Æ +¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î³«È¯¼Ô¤â¡¢ÅŻҥ֥寡¢EPWING µ¬³Ê¤ÎÁ´ÍƤÏÃΤê¤Þ¤»¤ó¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï JIS X 4081 ¤Îµ­½Ò¤ò¤â¤È¤Ë¡¢ÅŻҥ֥寡¢EPWING ¤òÆɤá¤ë +¤è¤¦¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£ +¤·¤«¤·¤Ê¤¬¤é¡¢µ¬³Ê¤ÎÁ´ÍƤ¬Ê¬¤«¤é¤Ê¤¤¾õÂ֤dz«È¯¤·¤Æ¤¤¤ë¤¿¤á¡¢»ÄÇ°¤Ê¤¬¤é +°ìÉô¤ËÀµ¤·¤¯Æɤá¤Ê¤¤½ñÀÒ¤¬Â¸ºß¤·¤Þ¤¹¡£ +

+ + +

Ëܽñ¤Î¹½À®¤Ë¤Ä¤¤¤Æ

+ +

+¼¡¾Ï¡ÖEB ¥é¥¤¥Ö¥é¥ê¤ÎÆÃħ¡×¤Ç¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬Âбþ¤·¤Æ¤¤¤ëµ¡Ç½¡¢Âбþ +¤·¤Æ¤¤¤Ê¤¤µ¡Ç½¤Ë¤Ä¤¤¤Æ¡¢´Êñ¤ËÀâÌÀ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢¥é¥¤¥Ö¥é¥ê¤Î³µÎ¬¤Ë´Ø¤·¤Æ¡¢ºÇ½é¤ËÃΤäƤª¤¤¤¿¤Û¤¦¤¬Îɤ¤¤È»×¤ï¤ì¤ë +»öÊÁ¤ò¤¤¤¯¤Ä¤«ÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤µ¤é¤Ë¼¡¤Î¾Ï¡Ö¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡¡×¤Ç¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤¿ +¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡¤òÀâÌÀ¤·¤Þ¤¹¡£ +Ëܽñ¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤ËɬÍפʾðÊó¤â¡¢¤³¤Î¾Ï¤Ë +µ­¤·¤Æ¤¢¤ê¤Þ¤¹¡£ +

+ +

+¤½¤·¤Æ¡¢¤½¤Î¼¡¤Î¾Ï¡Ö¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤È¸å»ÏËö¡×¤«¤é¤¬¡¢¼ÂºÝ¤Î +EB ¥é¥¤¥Ö¥é¥ê¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Î²òÀâ¤È¤Ê¤ê¤Þ¤¹¡£ +¤½¤ì¤¾¤ì¤Î¾Ï¤Ï¡¢¼¡¤Î¤è¤¦¤ÊÀᤫ¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢¾Ï¤Ë¤è¤Ã¤Æ¤Ï°ìÉô¤ÎÀ᤬¤Ê¤¤¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ +

+ +
+
²òÀâ
+
+¤½¤Î¾Ï¤Ç²òÀ⤹¤ëµ¡Ç½¤ä³µÇ°¤Ë¤Ä¤¤¤Æ¤Î´ðÁÃÃμ±¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î»ÅÍͤΠ+³µÍפˤĤ¤¤Æ²òÀ⤷¤Æ¤¤¤Þ¤¹¡£ + +
¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à
+
+¡Ö²òÀâ¡×¤Ç¤Ï¥×¥í¥°¥é¥à¤ÎÃÇÊÒ¤À¤±¤ò¼¨¤¹¤³¤È¤¬Â¿¤¤¤Î¤Ç¡¢Æ°ºî²Äǽ¤Ê +¥×¥í¥°¥é¥à¤Î¥µ¥ó¥×¥ë¤ò¤³¤³¤Ç¼¨¤·¤Þ¤¹¡£ + +
¥Ç¡¼¥¿·¿¤Î¾ÜºÙ
+
+¥Ç¡¼¥¿·¿¤ä´Ø¿ô¡¢Äê¿ôÃͤʤɤˤĤ¤¤Æ¤Î»²¾È¥Þ¥Ë¥å¥¢¥ë¤Ç¤¹¡£ +
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-02.html b/lib/ebu/doc/eb-02.html new file mode 100644 index 0000000..efb4429 --- /dev/null +++ b/lib/ebu/doc/eb-02.html @@ -0,0 +1,277 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

EB ¥é¥¤¥Ö¥é¥ê¤ÎÆÃħ

+ +

+Á°¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢ÅŻҥ֥å¯ (EB, EBG, EBXA, EBXA-C, S-EBXA) +¤È EPWING ·Á¼°¤Î CD-ROM ½ñÀÒ¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢¤³¤ì¤é¤Î CD-ROM ½ñÀÒ¤ËÂФ·¤Æ¡¢¼¡¤Î½èÍý¤ò¹Ô¤¦¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +
    +
  • Á°Êý°ìÃ׸¡º÷ +
  • ¸åÊý°ìÃ׸¡º÷ +
  • ´°Á´°ìÃ׸¡º÷ +
  • ¾ò·ï¸¡º÷ +
  • Ê£¹ç¸¡º÷ +
  • ¸«½Ð¤·¥Ç¡¼¥¿¤Î¼èÆÀ +
  • ËÜʸ¥Ç¡¼¥¿¤Î¼èÆÀ +
  • ¥á¥Ë¥å¡¼¤Î¼èÆÀ +
  • Ãøºî¸¢É½¼¨¤Î¼èÆÀ +
  • ¥«¥é¡¼¿ÞÈǥǡ¼¥¿¤Î¼èÆÀ (¤¿¤À¤· EPWING ¤Î¤ß) +
  • ¥â¥Î¥¯¥í¿ÞÈǥǡ¼¥¿¤Î¼èÆÀ +
  • ³°»ú¥Ç¡¼¥¿¤Î¼èÆÀ +
  • Æ°²è¥Ç¡¼¥¿¤Î¼èÆÀ +
+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î³µÍפ˴ؤ·¤Æ¡¢¤¢¤é¤«¤¸¤áÃΤäƤª¤¤¤Æ夤¤¿ +¤Û¤¦¤¬Îɤ¤¤È»×¤ï¤ì¤ë¤½¤Î¾¤Î»öÊÁ¤Ë¤Ä¤¤¤Æ¡¢²¿ÅÀ¤«ÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
appendix.h
+
+appendix (ÉÕÏ¿) ¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
binary.h
+
+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
eb.h
+
+EB ¥é¥¤¥Ö¥é¥ê¤Î´ðËܥإåÀ¥Õ¥¡¥¤¥ë¡£ +
error.h
+
+¥¨¥é¡¼¥³¡¼¥É¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
font.h
+
+³°»ú¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
text.h
+
+¥Æ¥­¥¹¥È¥Ç¡¼¥¿ (ËÜʸ¡¢¸«½Ð¤·¤Ê¤É) ¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
+ +

+¤³¤ì°Ê³°¤Ë¤â¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¤¬¡¢¾å¤Ëµó¤²¤¿ +¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤«¤éÆɤ߹þ¤Þ¤ì¤ë¤â¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬ +ľÀÜÆɤ߹þ¤àɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦ºÝ¤Ë¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë +¤ò¥Õ¥¡¥¤¥ë¤ÎÀèƬÉÕ¶á¤ÇÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ +
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+
+ +

+eb.h ¤Ç¤Ï¤Ê¤¯¡¢eb/eb.h ¤òÆɤ߹þ¤à¤è¤¦¤Ë¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ʸ»ú¥³¡¼¥É

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢CD-ROM ½ñÀÒÆâ¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤Ë¤·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó +¤ËÅϤ¹ºÝ¤Îʸ»ú¥³¡¼¥É¤òµ¬Äꤷ¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EBG (³¤³°¤ÎÅŻҥ֥å¯) ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤¬ ISO 8859-1 (¥é¥Æ¥óʸ»ú 1¡¢ +¤¿¤À¤·À©¸æʸ»ú¤ò½ü¤¯) ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¤¿¤á¡¢¥Ç¡¼¥¿¤Î¤ä¤ê¼è¤ê¤â ISO 8859-1 +¤Ç¹Ô¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢³°»ú¤À¤±¤Ï 2 ¥Ð¥¤¥È¤Çɽ¸½¤·¡¢0x0101 ¡Á 0x1efe ¤ÎÎΰè¤ò»ÈÍѤ·¤Þ¤¹¡£ +(³°»úÎΰè¤Î²¼°Ì 16 ¥Ó¥Ã¥È¤Ï 0x01 ¡Á 0xfe ¤ÎÈϰϤò»ÈÍѤ·¤Þ¤¹¡£) +

+ +

+EBG, EBXA-C ¤ò½ü¤¤¤¿ÅŻҥ֥寡¢¤ª¤è¤Ó EPWING ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤¬ +JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤Ç½ñ¤«¤ì¤Æ¤ª¤ê¡¢JIS X 0208 ¤ò 0x2121 ¡Á +0x7e7e ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤·¡¢0xa121 ¡Á 0xfe7e ¤ò³°»úÎΰè¤Ë¤·¤Æ¤¤¤Þ¤¹ (²¼¿Þ)¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¾å°Ì£¸¥Ó¥Ã¥È
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¡¡£²£±¡¡¡¡¡¡¡¡£·£å¡¡£á£±¡¡¡¡¡¡¡¡£æ£å
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¨£¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¤
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£²£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£Ê£É£Ó¡¡£Ø¨¢¡¡¡¡¨¢¡¡³°»ú¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£°£²£°£¸¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£·£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+²¼°Ì£¸¥Ó¥Ã¥È¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£á£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£æ£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¥
+
+
+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï JIS X 0208 Éôʬ¤òÆüËܸì EUC (EUC-JP) ¤Ë¥¨¥ó¥³¡¼¥É +¤·¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È¤Î¤ä¤ê¼è¤ê¤âÆüËܸì EUC ¤Ç¹Ô¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢JIS X 0208 Éôʬ¤Ï 0xa1a1 ¡Á 0xfefe ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤Þ¤¹¡£ +

+ +

+EBXA-C (ÃæÆü¡¦ÆüÃæ¼­½ñ¤ÎÅŻҥ֥å¯) ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤¬ JIS X 0208 +(ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤È GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ¤Ç½ñ¤«¤ì¤Æ¤ª¤ê¡¢ +JIS X 0208 ¤ò 0x2121 ¡Á 0x7e7e ¤Ë¥Þ¥Ã¥Ô¥ó¥°¡¢ +GB 2312 ¤ò 0x21a1 ¡Á 0x7efe ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤·¡¢ +0xa121 ¡Á 0xfe7e ¤ò³°»úÎΰè¤Ë¤·¤Æ¤¤¤Þ¤¹ (²¼¿Þ)¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¾å°Ì£¸¥Ó¥Ã¥È
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¡¡£²£±¡¡¡¡¡¡¡¡£·£å¡¡£á£±¡¡¡¡¡¡¡¡£æ£å
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¨£¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¤
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£²£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£Ê£É£Ó¡¡£Ø¨¢¡¡¡¡¨¢¡¡³°»ú¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£°£²£°£¸¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£·£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+²¼°Ì£¸¥Ó¥Ã¥È¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£á£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£Ç£Â¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£²£³£±£²¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£æ£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¥
+
+
+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È¤Î¤ä¤ê¼è¤ê¤Ë»È¤¦Ê¸»ú¥³¡¼¥É¤Ï¡¢ +ÆüËܸì EUC ¤ª¤è¤ÓÃæ¹ñ¸ì EUC (EUC-ZH) ¤Ç¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¤½¤Î¤Þ¤Þ¤Ç¤Ï JIS X 0208 ¤È GB 2312 ¤¬ 0xa1a1 ¡Á 0xfefe ¤Ë +¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¡¢¾×Æͤ·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +¤³¤ÎÌäÂê¤ò¤É¤¦²óÈò¤¹¤ë¤Î¤«¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤Ç·è¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¥Õ¥Ã¥¯¤Èʸ»ú¥³¡¼¥É¤Î´Ø·¸¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ÅŻҥ֥寡¢EPWING ¤È¤â¤Ë¡¢³°»ú¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤Ç¤É¤¦ +°·¤¦¤«¤ò·è¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +³°»ú¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯¤Ï ¡Ö³°»ú¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

°µ½Ì¤µ¤ì¤¿½ñÀҤˤĤ¤¤Æ

+ +

+EB ¥é¥¤¥Ö¥é¤Ï¡¢¥Ç¡¼¥¿¤ò°µ½Ì¤·¤Æ¼ýÏ¿¤·¤¿½ñÀÒ¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +º£¤Î¤È¤³¤í¡¢¼¡¤Î 4 ¼ïÎà¤Î°µ½ÌÊýË¡¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
ebzip °µ½Ì·Á¼°
+
+EB ¥é¥¤¥Ö¥é¥êÆȼ«¤Î°µ½Ì·Á¼°¤Ç¤¹¡£ +ÉÕ°¤Î ebzip ¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿½ñÀÒ¤òºî¤ì¤Þ¤¹¡£ + +
EPWING V4, V5 ·Á¼°
+
+»ÔÈΤΠEPWING V4, V5 ¤Î½ñÀҤΰìÉô¤Ë¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ + +
EPWING V6 ·Á¼°
+
+»ÔÈΤΠEPWING V6 ¤Î½ñÀҤΰìÉô¤Ë¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +EPWING V4, V5 ·Á¼°¤Î²þÎÉ·¿¤Ç¤¹¡£ + +
S-EBXA ·Á¼°
+
+»ÔÈΤΠS-EBXA ¤Î½ñÀҤΰìÉô¤Ë¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +
+ +

+¥Ç¡¼¥¿¤Î¿­Ä¹¤Ï EB ¥é¥¤¥Ö¥é¥ê¦¤Ç¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤ë¤¿¤á¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¡¢¥¢¥¯¥»¥¹¤·¤Æ¤¤¤ë½ñÀÒ¤¬°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤« +¤É¤¦¤«Ê¬¤«¤ê¤Þ¤»¤ó¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢½ñÀÒ¤¬°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ç½èÍý¤òÊѤ¨¤ë +ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ + +

±ó³Ö¥Û¥¹¥È¾å¤Î½ñÀҤˤĤ¤¤Æ

+ +

+¥Ð¡¼¥¸¥ç¥ó 4.0 ¤«¤é¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¾¤Î¥Û¥¹¥È¤Î½ñÀҤ˥¢¥¯¥»¥¹¤Ç¤­¤ë +¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£ +

+ +

+±ó³Ö¥¢¥¯¥»¥¹¤Î½èÍý¤Ï¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¦¤Ç¹Ô¤ï¤ì¤Þ¤¹¤Î¤Ç¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢½ñÀÒ¤¬¼«Ê¬¤Î¥Û¥¹¥È¾å¤Ë¤¢¤ë¤«¤É¤¦¤«¤Ç¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Î¸Æ¤Ó½Ð¤·¼ê½ç¤òÊѤ¨¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¤¿¤À¤·¡¢Â¾¤Î¥Û¥¹¥È¤«¤é¥¢¥¯¥»¥¹¤¹¤ë¤È¡¢½èÍý®ÅÙ¤ÏÈó¾ï¤ËÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£ +¤½¤Î¤¿¤á¡¢¸úΨÎɤ¯½èÍý¤Ç¤­¤ë¤è¤¦¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î½èÍýÊýË¡¤ò¹©Éפ¹¤Ù¤­ +¾õ¶·¤¬À¸¤¸¤ë¤³¤È¤Ï¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ + +

¥·¥¹¥Æ¥à¤ÎÍ×·ï

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ë¤ËÍѤ¤¤ë¥³¥ó¥Ñ¥¤¥é¤Ë¤Ï¡¢ +ANSI (ANSI X3.159-1989, ISO/IEC 9899-1990) Âбþ¤Î¤â¤Î¤òÂоݤȤ·¤Æ¤¤¤Þ¤¹¡£ +¤Þ¤¿¡¢¥·¥¹¥Æ¥à¤Ë¤Ï POSIX.1 (IEEE Std. 1003.2-1990, ISO/IEC 9945-1:1990) +½àµò¤Ê¤¤¤·¸ß´¹¤Î¤â¤Î¤òÂоݤȤ·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+±Ê¤é¤¯ EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¸Å¤¤¥³¥ó¥Ñ¥¤¥é¤ä UNIX ·Ï¥·¥¹¥Æ¥à¤Ø¤ÎÂбþ¤â +¤½¤ì¤Ê¤ê¤Ë¹Ô¤ï¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢¥Ð¡¼¥¸¥ç¥ó 4.1 ¤«¤é¤ÏÂбþ¤òÂǤÁÀڤäƤ¤¤Þ¤¹¡£ +ÆÃ¤Ë ANSI Âбþ¤Î¥³¥ó¥Ñ¥¤¥é¤Ïɬ¿Ü¤Ç¤¹¤Î¤Ç¡¢¤´Ãí°Õ¤¯¤À¤µ¤¤¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-03.html b/lib/ebu/doc/eb-03.html new file mode 100644 index 0000000..911d2a0 --- /dev/null +++ b/lib/ebu/doc/eb-03.html @@ -0,0 +1,322 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡

+ +

+ËܾϤǤϡ¢EB ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤¿¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ë¤Î»ÅÊý¤Ë¤Ä¤¤¤Æ¡¢ +2 Ä̤ê¤ÎÊýË¡¤òÀâÌÀ¤·¤Þ¤¹¡£ +

+ +

+°ì¤ÄÌܤϡ¢¤´¤¯»äŪ¤Ê¡¢¾®µ¬ÌÏ¤Î¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ëºÝ¤Ë¸þ¤¤¤Æ¤¤¤ë +¤Æ¤Ã¤È¤êÁ᤯¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤ÎÊýË¡¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î»È¤¤Êý¤ò³Ð¤¨¤ëÌÜŪ¤Ç´Êñ¤Ê¥×¥í¥°¥é¥à¤òÁȤàºÝ¤Ï¡¢¤³¤Á¤é +¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£ +

+ +

+Æó¤ÄÌܤϡ¢EB ¥é¥¤¥Ö¥é¥ê¤òÁȤ߹þ¤ó¤À¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢ +¤È¤·¤Æ¥ê¥ê¡¼¥¹¤¹¤ëºÝ¤Ë¸þ¤¤¤Æ¤¤¤ëÊýË¡¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢GNU Autoconf, Automake, Libtool ¤òÊ»ÍѤ¹¤ë»ÅÁȤߤò +ÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤é¤ò»È¤Ã¤¿¥³¥ó¥Ñ¥¤¥ëÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¤Æ¤Ã¤È¤êÁᤤ¥³¥ó¥Ñ¥¤¥ëÊýË¡

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ëºÝ¤Ï¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î +¥Ç¥£¥ì¥¯¥È¥ê°ÌÃÖ¤ò C ¥³¥ó¥Ñ¥¤¥é¤Ë¶µ¤¨¤Æ¤ä¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +°ìÈÌ¤Ë UNIX ¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¡¢-I ¥ª¥×¥·¥ç¥ó¤Ç°ÌÃÖ¤ò»ØÄê +¤·¤Þ¤¹¡£ +

+ +
+
+cc -I/usr/local/include -c sample.c
+
+
+ +

+/usr/local/include/eb ¤Ç¤Ï¤Ê¤¯¡¢¤½¤Î°ì¤Ä¾å¤ò»ØÄꤷ¤Þ¤¹ +(¡Ö¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+¼¡¤Ë¡¢¥ê¥ó¥¯¤·¤Æ¼Â¹Ô¥Ð¥¤¥Ê¥ê¤òÀ¸À®¤¹¤ë¹©Äø¤Ç¤¹¤¬¡¢ +°Ê²¼¤Ëµ­¤·¤¿¥é¥¤¥Ö¥é¥ê¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´Éô¤ò¥ê¥ó¥¯¤·¤Þ¤¹¡£ +³ç¸ÌÆâ¤Ï¡¢¥é¥¤¥Ö¥é¥ê¤Î¥Õ¥¡¥¤¥ë̾¤Ç¤¹ (¤¿¤À¤·¡¢.a ¤ä +.so ¤È¤¤¤Ã¤¿ÀÜÈø»Ò¤Ï¾Êά)¡£ +

+ +
+
EB ¥é¥¤¥Ö¥é¥ê (libeb)
+
+EB ¥é¥¤¥Ö¥é¥ê¤ÎËÜÂΤǤ¹¡£¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ïɬ¿Ü¤Ç¤¹¡£ + +
zlib (libz)
+
+°µ½Ì¤È¿­Ä¹¤ò¹Ô¤¦¥é¥¤¥Ö¥é¥ê¤Ç¤¹ +(¾Ü¤·¤¯¤Ï @url{http://www.gzip.org/zlib/})¡£ +ebzip ¥³¥Þ¥ó¥É¤Ç°µ½Ì¤·¤¿¼­½ñ¤ò°·¤¦¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£ +¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ïɬ¿Ü¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î¥½¡¼¥¹¥³¡¼¥É¤Ë¤Ï zlib ¤â¼ýÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¥·¥¹¥Æ¥à¤Ë zlib ¤¬ ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò +¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëºÝ¤Ë¡¢zlib ¤â¼«Æ°Åª¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£ + +
gettext ¥é¥¤¥Ö¥é¥ê (libintl)
+
+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤òÄ󶡤¹¤ë¥é¥¤¥Ö¥é¥ê¤Ç¤¹ +¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤ë +¾ì¹ç¤Ï¡¢É¬Íפˤʤ뤫¤âÃΤì¤Þ¤»¤ó¡£ +gettext ¤Î¼ÂÁõ¤Ï²¿¼ïÎफ¤¢¤ê¤Þ¤¹¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç»ÈÍѤǤ­¤ë¤Î¤Ï +¥á¥Ã¥»¡¼¥¸¥«¥¿¥í¥°¤Î·Á¼°¤¬ GNU gettext ¸ß´¹¤Î¤â¤Î¤À¤±¤Ç¤¹¡£ + +¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ¤¤¤ë¾ì¹ç¤Ç¤â¡¢OS ¤Îɸ½à C ¥é¥¤¥Ö¥é¥ê +¤È¤·¤Æ glibc ¤òºÎÍѤ·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ + +
iconv ¥é¥¤¥Ö¥é¥ê
+
+ʸ»ú¥³¡¼¥ÉÊÑ´¹¤Î¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£ +gettext ¥é¥¤¥Ö¥é¥ê¤ò¥ê¥ó¥¯¤¹¤ë¾ì¹ç¡¢°ì½ï¤ËɬÍפȤʤ뤫¤âÃΤì¤Þ¤»¤ó¡£ +iconv ¤Î¼ÂÁõ¤â²¿¼ïÎफ¤¢¤ê¡¢OS ¤Ë¤è¤Ã¤Æ¤ÏºÇ½é¤«¤éźÉÕ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +
+ +

+ɬÍפʥ饤¥Ö¥é¥ê¥Õ¥¡¥¤¥ë¤Î̾¾Î¤ò¡¢C ¥³¥ó¥Ñ¥¤¥é¤Ë»ØÄꤷ¤Æ¤ä¤ê¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢¥Õ¥¡¥¤¥ë¤ÎÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê°ÌÃÖ¤ò¡¢C ¥³¥ó¥Ñ¥¤¥é¤Ë¶µ¤¨¤ë +ɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +°ìÈÌ¤Ë UNIX ¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¡¢-L ¥ª¥×¥·¥ç¥ó¤Ç¥Ç¥£¥ì¥¯¥È¥ê +°ÌÃÖ¤ò»ØÄꤷ¡¢-l ¥ª¥×¥·¥ç¥ó¤Ç¥é¥¤¥Ö¥é¥ê¤Î¥Õ¥¡¥¤¥ë̾¤ò»ØÄê +¤·¤Þ¤¹¡£ +

+ +
+
+cc sample.o -L/usr/local/lib -leb -lz -lintl -liconv
+
+
+ +

+¤¿¤À¤·¡¢¶¦Í­¥é¥¤¥Ö¥é¥ê¤ò¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤Ï¡¢¼Â¹Ô»þ¤Ë¤ª¤±¤ë¥é¥¤¥Ö¥é¥ê¤Î +¸¡º÷¥Ñ¥¹¤â¹ç¤ï¤»¤Æ»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+cc sample.o -R/usr/local/lib -L/usr/local/lib -leb -lz -lintl -liconv
+
+
+ +

+C ¥³¥ó¥Ñ¥¤¥é¤Î»È¤¤Êý¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢C ¥³¥ó¥Ñ¥¤¥é¤Î¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È +¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

Autoconf ¤òÊ»ÍѤ·¤¿¥³¥ó¥Ñ¥¤¥ëÊýË¡

+ +

+ºî¶È¤ÎÁ°¤Ë¡¢Autoconf, Automake, Libtool ¤Ï¡¢¤¢¤é¤«¤¸¤á¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ +¤ª¤¤¤Æ²¼¤µ¤¤¡£ +Autoconf ¤Ï¥Ð¡¼¥¸¥ç¥ó 2.50 °Ê¹ß¤¬É¬ÍפǤ¹¡£ +

+ +

+¤Þ¤º¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î configure.ac +(¤â¤·¤¯¤Ï configure.in) ¤Ë¡¢¼¡¤Î¹Ô¤ò²Ã¤¨¤Þ¤¹¡£ +

+ +
+
+eb_LIB_EB4
+
+
+ +

+¥Þ¥¯¥í eb_LIB_EB4 ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î»ÈÍѤËɬÍפʰìÀڤΠ+¥Á¥§¥Ã¥¯¤ò¹Ô¤¤¡¢¤µ¤é¤Ë configure ¤Ë¼¡¤Î¥ª¥×¥·¥ç¥ó¤òÄɲà +¤·¤Þ¤¹¡£ +

+ +
+
+  --with-eb-conf=FILE     eb.conf file is FILE [SYSCONFDIR/eb.conf]
+
+
+ +

+eb.conf ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤È¤­¤Î¾ðÊó¤òµ­Ï¿ +¤·¤¿¥Õ¥¡¥¤¥ë¤Ç¡¢¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£ +eb_LIB_EB4 ¤Ï¤³¤Î¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç¡¢C ¥³¥ó¥Ñ¥¤¥é¤Ë +ÅϤµ¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤¥ª¥×¥·¥ç¥ó¤Ê¤É¤Î¾ðÊó¤òÆÀ¤Þ¤¹¡£ +--eb-conf-file ¤Ï¡¢eb.conf ¤Î¥Õ¥¡¥¤¥ë̾¤ò +ÌÀ¼¨Åª¤Ë»ØÄꤹ¤ë¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£ +

+ +

+¥Þ¥¯¥í eb_LIB_EB4 ¤Ï¡¢eb4.m4 ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ç +Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤ò /usr/local ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢¸Ä¡¹¤Î¥Õ¥¡¥¤¥ë +¤Î¥¤¥ó¥¹¥È¡¼¥ëÀè¤òÊѹ¹¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢/usr/local/share/aclocal +¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£ +¤³¤Î eb4.m4 ¤ò¥½¡¼¥¹¥³¡¼¥É¤ÎŬÅö¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼ (¤¿¤È¤¨¤Ð +m4) ¤Ë¥³¥Ô¡¼¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+aclocal ¥³¥Þ¥ó¥É¤Ç aclocal.m4 ¤òºÆÀ¸À®¤¹¤ëºÝ¤Ï¡¢ +-I ¥ª¥×¥·¥ç¥ó¤Ç¥Þ¥¯¥í¥Õ¥¡¥¤¥ë¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +
+
+aclocal -I m4
+
+
+ +

+²Ã¤¨¤Æ¡¢¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Î Makefile.am ¤ÎÃæ¤Ë¤â +aclocal ¤ØÅϤ¹¥ª¥×¥·¥ç¥ó¤ò½ñ¤¤¤Æ¤ª¤­¤Þ¤¹¡£ +

+ +
+
+ACLOCAL_AMFLAGS = -I m4
+
+
+ +

+¤Þ¤¿¡¢¥½¡¼¥¹¥³¡¼¥É¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë Libtool ¥Ñ¥Ã¥±¡¼¥¸¤¬¤Þ¤ÀÍÑ°Õ¤µ¤ì¤Æ +¤¤¤Ê¤±¤ì¤Ð¡¢ÍÑ°Õ¤·¤Þ¤¹¡£ +libtoolize ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ²¼¤µ¤¤¡£ +Libtool ¥Ñ¥Ã¥±¡¼¥¸¤¬¡¢¥½¡¼¥¹¥³¡¼¥É¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ +

+ +
+
+libtoolize
+
+
+ +

+ºÇ¸å¤Ë¡¢¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Î Makefile.am ¥Õ¥¡¥¤¥ë +¤Î _LDFLAGS ¤È INCLUDES ¤Ë¡¢¼¡¤Î¤è¤¦¤ÊÃͤòÄɲà +¤·¤Þ¤¹¡£ +

+ +
+
+program_LDFLAGS = $(EBCONF_EBLIBS) $(EBCONF_ZLIBLIBS) $(EBCONF_INTLLIBS)
+INCLUDES = $(EBCONF_EBINCS)
+
+
+ +

+(program_LDFLAGS ¤Î program ¤Î¤È¤³¤í¤Ï¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¼ÂºÝ¤Î¥³¥Þ¥ó¥É̾¤Ë¤·¤Þ¤¹¡£) +

+ + +

EB ¥é¥¤¥Ö¥é¥êËÜÂΤΥǥХå°

+ +

+¡Ö¼«Ê¬¤¬ºî¤Ã¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬Àµ¤·¤¯Æ°¤«¤Ê¤¤¤Î¤Ï¡¢¤Ò¤ç¤Ã¤È¤¹¤ë¤È +EB ¥é¥¤¥Ö¥é¥ê¤Î¥Ð¥°¤¬¸¶°ø¤Ç¤Ï¤Ê¤¤¤«?¡×¤È¤¤¤¦µ¿Ìä¤òÊú¤­¡¢EB ¥é¥¤¥Ö¥é¥ê +¤ÎµóÆ°¤ò³Îǧ¤·¤¿¤¤¤È»×¤¦¤³¤È¤¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +

+¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ï¡¢´Ä¶­ÊÑ¿ô EB_DEBUG ¤ò¥»¥Ã¥È¤·¤¿¾õÂÖ¤Ç +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ïɸ½à¥¨¥é¡¼½ÐÎϤˡ¢¼¡¤Î¤è¤¦¤Ê¥í¥°¤ò (¤«¤Ê¤êÂçÎ̤Ǥ¹¤¬) +½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+[EB] in: eb_set_font(book=0, font_code=0)
+[EB] in: eb_load_narrow_font(book=0)
+[EB] out: eb_load_narrow_font()
+[EB] in: eb_load_wide_font(book=0)
+[EB] out: eb_load_wide_font()
+[EB] out: eb_set_font() = EB_SUCCESS
+
+
+ +

+¤³¤ì¤é¤Î¥í¥°¤Ï¡¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·»þ¤Î°ú¿ôÎ󡢤ª¤è¤Ó´Ø¿ô¤«¤é¤ÎÌá¤êÃͤò +¼¨¤·¤Æ¤¤¤Þ¤¹¡£ +ebfixlog ¤È¤¤¤¦ Perl5 ¥¹¥¯¥ê¥×¥È¤ò»È¤¦¤È¡¢¥í¥°¤òÀ°·Á¤¹¤ë¤³¤È +¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¥¹¥¯¥ê¥×¥È¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¥½¡¼¥¹¥³¡¼¥É¤Î misc +¥Ç¥£¥ì¥¯¥È¥ê¤Ë¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+ebfixlog ¤Ï¡¢¥³¥Þ¥ó¥É¹Ô¤Î°ú¿ô¤È¤·¤ÆÍ¿¤¨¤é¤ì¤¿¥Õ¥¡¥¤¥ë +(°ú¿ô¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ðɸ½àÆþÎÏ) ¤«¤é¥á¥Ã¥»¡¼¥¸¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¡¢ +¼¡¤Î¤è¤¦¤Ë»ú²¼¤²¤·¤Æ½ÐÎϤ·¤Þ¤¹¡£ +

+ +
+
+[EB] in: eb_set_font(book=0, font_code=0)
+[EB]   in: eb_load_narrow_font(book=0)
+[EB]   out: eb_load_narrow_font()
+[EB]   in: eb_load_wide_font(book=0)
+[EB]   out: eb_load_wide_font()
+[EB] out: eb_set_font() = EB_SUCCESS
+
+
+ +

+Ä̾ï ebfixlog ¥¹¥¯¥ê¥×¥È¤Ï¡¢zio ¤ª¤è¤Ó ebnet ¤È¸Æ¤Ð¤ì¤ë¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¥Õ¥¡¥¤¥ëÆþ½ÐÎϤò¼õ¤±»ý¤Ä½èÍýÉô¤Î¥í¥°¤ÏÆɤ߼ΤƤë¤è¤¦¤Ë +¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤Ë¤è¤ê¡¢¥í¥°¤ÎÎ̤¬¤«¤Ê¤ê¸º¤ê¤Þ¤¹¡£ +

+ +

+zio ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ÎÄã¥ì¥Ù¥ëÆþ½ÐÎϤνèÍýÉô¤Ç¡¢ÉÑÈˤ˸ƤӽФµ¤ì¤Þ¤¹¡£ +ÌäÂê¤Î¸¶°ø¤òÄ´¤Ù¤ëºÝ¤â¡¢¤Þ¤º¤ÏÆɤ߼ΤƤ¿Êý¤¬¥é¥¤¥Ö¥é¥ê¤ÎÆâÉôÆ°ºî¤òÄÉÀ× +¤·¤ä¤¹¤¤¤Ç¤·¤ç¤¦¡£ +

+ +

+ebfixlog ¤Î -z ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢zio ¤Î +¥á¥Ã¥»¡¼¥¸¤òÆɤ߼ΤƤº¤Ë½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebnet ¤Ï±ó³Ö¥¢¥¯¥»¥¹¤ÎÆþ½ÐÎϤò½èÍý¤¹¤ëÉôʬ¤Ç¡¢zio ¤è¤ê¤â¤µ¤é¤Ë +²¼°Ì¥ì¥Ù¥ë¤Ë°ÌÃÖ¤·¤Þ¤¹¡£ +±ó³Ö¥¢¥¯¥»¥¹¤ÎµóÆ°¤òÄÉÀפ¹¤ë¤È¤­°Ê³°¤Ï¡¢Æɤ߼ΤƤ¿Êý¤¬Îɤ¤¤È»×¤¤¤Þ¤¹¡£ +

+ +

+ebfixlog ¤Î -n ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢ebnet, +zio ξÊý¤Î¥á¥Ã¥»¡¼¥¸¤òÆɤ߼ΤƤº¤Ë½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-04.html b/lib/ebu/doc/eb-04.html new file mode 100644 index 0000000..d17fe12 --- /dev/null +++ b/lib/ebu/doc/eb-04.html @@ -0,0 +1,190 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤È¸å»ÏËö

+ +

+¤³¤Î¾Ï¤«¤é¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Î²òÀâ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é EB ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ¹¤ë¤Ë¤Ï¡¢ +ºÇ½é¤Ë¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤ò¹Ô¤¦¤Ë¤Ï¡¢eb_initialize_library() +¤È¤¤¤¦´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_initialize_library() != EB_SUCCESS) {
+    printf("eb_initialize_library() failed\n");
+    exit(1);
+}
+
+
+ +

+ƱÍͤˡ¢¥é¥¤¥Ö¥é¥ê¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢eb_finalize_library() +¤È¤¤¤¦´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +

+ +
+
+eb_finalize_library();
+
+
+ + + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2001-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     initexit
+ * Îã:
+ *     initexit
+ * ÀâÌÀ:
+ *     EB ¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¡¢¸å»ÏËö¤ò¤·¤Æ¤ß¤Þ¤¹¡£
+ *     ¥×¥í¥°¥é¥à¤Î³°Â¦¤«¤é¸«¤ì¤Ð¡¢¤³¤ì¤Ï²¿¤Î°ÕÌ£¤â¤Ê¤¤Æ°ºî¤Ç¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¡£*/
+    error_code = eb_initialize_library();
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_library();
+    exit(0);
+}
+
+
+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤Î¹à¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢eb/eb.h ¤òÆɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Error_Code eb_initialize_library ()

+ +

+´Ø¿ô eb_initialize_library() ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¤·¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë¡¢É¬¤º +°ì²ó¤À¤±¤³¤Î´Ø¿ô¤ò¸Æ¤ÖɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë +¤·¤¿¾ì¹ç¡¢eb_initialize_library() ¤Ï bindtextdomain() ¤ò +¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬ setlocale() ¤ò +¸Æ¤Ó½Ð¤¹¤Î¤Ï¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¤»¤º¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï +̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤òºÑ¤Þ¤»¤¿¾õÂ֤ǡ¢ºÆÅÙ eb_initialize_library() +¤ò¸Æ¤ó¤Ç¤â¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

void eb_finalize_library ()

+ +

+´Ø¿ô eb_finalize_library() ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤¤½ª¤ï¤Ã¤¿ +ºÝ¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¦¤Ç»ÈÍѤ·¤¿ +EB_Book¡¢EB_Hookset¡¢EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤ò¸å»ÏËö¤¹¤ë¤Ë¤Ï¡¢¤½¤ì¤¾¤ìÀìÍѤδؿô +eb_finalize_book()¡¢eb_finalize_hookset()¡¢ +eb_finalize_appendix() ¤ò³Æ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤ÆÊÌÅÓ +¸Æ¤ó¤Ç¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¥é¥¤¥Ö¥é¥ê¤Î¸å»ÏËö¤ò¤·¤¿¸å¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¤¤¤«¤Ê¤ë´Ø¿ô¤â¸Æ¤ó¤Ç¤Ï +¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-05.html b/lib/ebu/doc/eb-05.html new file mode 100644 index 0000000..d1213bb --- /dev/null +++ b/lib/ebu/doc/eb-05.html @@ -0,0 +1,561 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢CD-ROM ½ñÀҤؤΥ¢¥¯¥»¥¹¤Ï¡¢¤¹¤Ù¤Æ EB_Book ·¿ +¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤Æ¹Ô¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¤Û¤È¤ó¤É¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢ËܾϤǵ­½Ò¤·¤Æ¤¤¤ë +½èÍý¤òɬÍפȤ¹¤ë¤Ï¤º¤Ç¤¹¡£ +

+ +

+ËÜ¾Ï¤Ç¤Ï EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½¡¢¸å»ÏËö¤È¤¤¤Ã¤¿´ðËÜŪ¤Ê +¼è¤ê°·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

EB_Book ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+CD-ROM ½ñÀҤإ¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢¤Þ¤º EB_Book ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò +ÍÑ°Õ¤·¤Þ¤¹¡£ +Ʊ»þ¤ËÊ£¿ô¤Î CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ë¤Ê¤é¡¢½ñÀÒ°ìºýËè¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò +ºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+EB_Book book;
+
+
+ +

+¤â¤Á¤í¤ó¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤Ï¡¢malloc() ¤Ç³ÎÊݤ·¤Æ¤â +¹½¤¤¤Þ¤»¤ó¡£ +

+ +
+
+EB_Book *book_pointer;
+
+book_pointer = (EB_Book *) malloc(sizeof(EB_Book));
+
+
+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÃæ¿È (ÊÑ¿ô book ¤ÎÃæ¿È +¤ª¤è¤Ó book_pointer ¤Î»Ø¤¹Îΰè) ¤Ï¤Þ¤À½é´ü²½¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢ +¼¡¤ÎÍ×ÎΤǥª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +

+ +
+
+eb_initialize_book(&book);
+eb_initialize_book(book_pointer);
+
+
+ +

+eb_initialize() ¤ØÅϤ¹°ú¿ô¤Ï EB_Book ¥ª¥Ö¥¸¥§¥¯¥È +¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤Ã¤Æ¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤½¤Î¤â¤Î¤Ç¤Ï +¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ +(EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤â¡¢¤¹¤Ù¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Ý¥¤¥ó¥¿¤ÇÅϤ·¤Þ¤¹¡£) +

+ +

+CD-ROM ½ñÀÒ¤ò»È¤¦¤Ë¤Ï¡¢Â³¤¤¤Æ EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò +CD-ROM ½ñÀҤμÂÂΤ˷ë¤ÓÉÕ¤±¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢´Ø¿ô eb_bind() ¤Ë¤è¤Ã¤Æ¹Ô¤¤¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Â£ï£ï£ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¥ª¥Ö¥¸¥§¥¯¥È¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨£¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¨¼¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¾¡¡¡¿£í£î£ô¡¿£ã£ä£ò£ï£í¡¡¨¢
+¨¦¨¡¨¡¨¡¨¥¡¡£å£â¡²£â£é£î£ä¡Ê¡Ë¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind(&book, "/mnt/cdrom") != EB_SUCCESS) {
+    printf("eb_bind() failed\n");
+    return;
+}
+
+
+ +

+eb_bind() ¤ËÅϤ¹½ñÀҤΥѥ¹ (¤³¤ÎÎã¤Ç¤Ï /mnt/cdrom) +¤Ï½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê catalog ¤Þ¤¿¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢ +eb_finalize_book() ¤ò¸Æ¤ó¤Ç¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤Ï½ñÀҤȤηë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂÖ¤ËÌá¤ê¡¢ÆâÉô¤Ç³ä¤êÅö¤Æ¤é¤ì¤¿ +¥á¥â¥ê¤Ï²òÊü¤µ¤ì¡¢³«¤¤¤Æ¤¤¤¿¥Õ¥¡¥¤¥ë¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +

+ +
+
+eb_finalize_book(&book);
+eb_finalize_book(book_pointer);
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò malloc() ¤Ç³ÎÊݤ·¤¿¾ì¹ç¤Ï¡¢ +eb_finalize_book() ¤ò¸Æ¤ó¤À¸å¤Ê¤é¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò +°ÂÁ´¤Ë²òÊü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+free(book_pointer);
+
+
+ + +

±ó³Ö¥Û¥¹¥È¤Ø¤Î eb_bind()

+ +

+Á°Àá¤ÇÀâÌÀ¤·¤¿ eb_bind() ¤òÍѤ¤¤Æ¡¢EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò±ó³Ö¥Û¥¹¥È¤Î½ñÀҤ˷ë¤Ó¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢½ñÀҤΥѥ¹¤ÎÂå¤ï¤ê¤Ë¡¢±ó³Ö¥¢¥¯¥»¥¹ÍѤμ±Ê̻Ҥò»ØÄꤷ¤Þ¤¹¡£ +¼±Ê̻Ҥϡ¢¼¡¤Î¤è¤¦¤Ê·Á¼°¤ò¤È¤ê¤Þ¤¹¡£ +

+ +
+
+ebnet://¥Û¥¹¥È:¥Ý¡¼¥È/½ñÀÒ̾
+
+
+ +

+¥Û¥¹¥È ¤Ï±ó³Ö¥Û¥¹¥È¤Î IP ¥¢¥É¥ì¥¹¤â¤·¤¯¤Ï¥Û¥¹¥È̾¤Ç¤¹¡£ +¤¿¤À¤·¡¢IPv6 ¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë¾ì¹ç¤Ï¡¢¥¢¥É¥ì¥¹¤ò [ ¤È +] ¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¥Ý¡¼¥È ¤Ï¡¢¤½¤Î¥Û¥¹¥È¤¬ÂÔ¤Á¼õ¤±¤Æ¤¤¤ë¥Ý¡¼¥È¤ÎÈÖ¹æ¤Ç¤¹¡£ +¥Û¥¹¥È¤¬ÂÔ¤Á¼õ¤±¤Æ¤¤¤ë¥Ý¡¼¥È¤¬É¸½à¤Î 22010 È֤Ǥ¢¤ì¤Ð¡¢:¥Ý¡¼¥È +¤ÎÉôʬ¤Ï¾Êά²Äǽ¤Ç¤¹¡£ +

+ +

+°Ê²¼¤Ë eb_bind() ¤Î¥³¡¼¥ÉÎã¤òµ­¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind(&book, "ebnet://localhost/cdrom") != EB_SUCCESS) {
+    printf("eb_bind() failed\n");
+    return;
+}
+
+
+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +

+¤³¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ç¤Ï¡¢CD-ROM ½ñÀҤμïÎà¤òÄ´¤Ù¤ë¤¿¤á¤Ë¡¢ +eb_disc_code() ¤È¤¤¤¦´Ø¿ô¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö´Ø¿ô¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     disctype <book-path>
+ * Îã:
+ *     disctype /cdrom
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤵ¤ì¤¿ CD-ROM ½ñÀҤμïÎब¡¢EB ¤« EPWING ¤«
+ *     ¤òÄ´¤Ù¤Æɽ¼¨¤·¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Disc_Code disc_code;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s book-path\n", argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    error_code = eb_initialize_library();
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+    eb_initialize_book(&book);
+
+    /* `book' ¤ò½ñÀҤ˷ë¤ÓÉÕ¤±¤ë¡£¼ºÇÔ¤·¤¿¤é½ªÎ»¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ½ñÀҤμïÎà¤òÄ´¤Ù¤Æɽ¼¨¡£*/
+    error_code = eb_disc_type(&book, &disc_code);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get disc type, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    if (disc_code == EB_DISC_EB) {
+        fputs("EB\n", stdout);
+    } else if (disc_code == EB_DISC_EPWING) {
+        fputs("EPWING\n", stdout);
+    } else {
+        fputs("unknown\n", stdout);
+    }
+
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Book ·¿

+ +

+EB_Book ·¿¤Ï¡¢°ìºý¤Î CD-ROM ½ñÀÒ¤òɽ¤·¤Þ¤¹¡£ +CD-ROM ½ñÀҤؤΥ¢¥¯¥»¥¹¤Ï¡¢¤¹¤Ù¤Æ¤³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤Æ¹Ô¤¤¤Þ¤¹¡£ +Ʊ»þ¤ËÊ£¿ô¤Î CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ëºÝ¤Ï¡¢½ñÀÒ°ìºýËè¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò +ºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ï¡¢¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¤¬ÍÑ°Õ +¤·¤Æ¤¤¤ë´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë +ÂФ·¤Æ eb_initialize_book() ¤ò¸Æ¤ó¤Ç½é´ü²½¤·¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +

+ + +

EB_Disc_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Disc_Code ¤Ï¡¢CD-ROM ½ñÀҤηÁ¼°¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢¼¡¤ÎÃͤ¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_DISC_EB
+
+ÅŻҥ֥å¯ (EB, EBG, EBXA, EBXA-C, S-EBXA) ¤Ç¤¢¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ + +
EB_DISC_EPWING
+
+EPWING ¤Ç¤¢¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ + +
EB_DISC_INVALID
+
+ÉÔÀµ¤Ê·Á¼°¥³¡¼¥ÉÃͤòɽ¤·¤Þ¤¹¡£ +
+ +

+¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

EB_Character_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Character_Code ¤Ï¡¢CD-ROM ½ñÀҤǻÈÍѤµ¤ì¤ë +ʸ»ú¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢¼¡¤ÎÃͤ¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_CHARCODE_ISO8859_1
+
+ISO 8859-1 (¥é¥Æ¥óʸ»ú 1) ¤ò»ÈÍѤ·¤Æ¤¤¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ +ÅŻҥ֥寤ΠEBG ¤Ï¤³¤ì¤Ç¤¹¡£ + +
EB_CHARCODE_JISX0208
+
+JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤ò»ÈÍѤ·¤Æ¤¤¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ +EBG, EBXA-C °Ê³°¤ÎÅŻҥ֥寡¢¤ª¤è¤Ó EPWING ¤Ï¤¹¤Ù¤Æ¤³¤ì¤Ç¤¹¡£ + +
EB_CHARCODE_JISX0208_GB2312
+
+JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤È GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ¤òÊ»ÍѤ·¤Æ¤¤¤ë +¤³¤È¤òɽ¤·¤Þ¤¹¡£ +ÅŻҥ֥寤ΠEBXA-C ¤Ï¤³¤ì¤Ç¤¹¡£ + +
EB_CHARCODE_INVALID
+
+ÉÔÀµ¤Êʸ»ú¥³¡¼¥ÉÃͤòɽ¤·¤Þ¤¹¡£ +
+ +

+¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

void eb_initialize_book (EB_Book *book)

+ +

+´Ø¿ô eb_initialize_book() ¤Ï¡¢book ¤Î»Ø¤¹ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë¡¢ +ɬ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ºÆÅÙ +eb_initialize_book() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_bind (EB_Book *book, const char *path)

+ +

+´Ø¿ô eb_bind() ¤Ï¡¢book ¤Î»Ø¤¹ EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢¥Ñ¥¹ path ¤Ë¤¢¤ë CD-ROM ½ñÀҤ˷ë¤ÓÉÕ¤±¤Þ¤¹¡£ +¥Ñ¥¹¤Ë¤Ï¡¢½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤«±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò»ØÄꤷ¤Þ¤¹¡£ +½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤È¤Ï¡¢catalog ¤¢¤ë¤¤¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤Î¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤·¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤Î½ñÀҤȤηë¤ÓÉÕ¤­¤ò +²ò¤¤¤Æ¤«¤é¡¢path ¤Ë¤¢¤ë½ñÀҤ˷ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢ÉûËܤÏ̤ÁªÂò¤Î¾õÂ֤ˤʤê¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò½ñÀҤȤηë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂ֤ˤ·¤Æ¡¢¸¶°ø +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ï¡¢EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¼ý¤Þ¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +¤µ¤é¤Ë¡¢path ¤¬ÁêÂХѥ¹¤Î¤È¤­¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤·¤¿·ë²Ì¤¬¤³¤ÎŤµ +¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì¤òĶ¤¨¤ë¤È¡¢EB_ERR_TOO_LONG_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_finalize_book (EB_Book *book)

+ +

+´Ø¿ô eb_finalize_book() ¤Ï¡¢book ¤¬»Ø¤¹ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¤¹¤Ù¤Æ²òÊü¤µ¤ì¡¢ +¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬½ñÀҤȷë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢·ë¤ÓÉÕ¤­¤¬²ò¤«¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_bind() ¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ +¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

int eb_is_bound (EB_Book *book)

+ +

+´Ø¿ô eb_is_bound() ¤Ï¡¢book ¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤« +¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +·ë¤ÓÉÕ¤¤¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_path (EB_Book *book const char *path)

+ +

+´Ø¿ô eb_path() ¤Ï¡¢book ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤ë½ñÀҤΥѥ¹ +¤â¤·¤¯¤Ï±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò¡¢path ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢path ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ë½ñ¤­¹þ¤à¥Ñ¥¹Ì¾¤Î¥Ð¥¤¥È¿ô¤Ï¡¢ºÇĹ¤Ç +EB_MAX_PATH_LENGTH ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ï¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤ò´Þ¤ß¤Þ¤»¤ó¡£ +´Ø¿ô¤¬ÊÖ¤¹¥Ñ¥¹¤ÏÀµµ¬²½¤µ¤ì¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢eb_bind() ¤Ë +ÅϤ·¤¿¤È¤­¤Î¤â¤Î¤ÈƱ¤¸¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢ÁêÂХѥ¹¤À¤Ã¤¿¾ì¹ç¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_disc_type (EB_Book *book, EB_Disc_Code *disc_code)

+ +

+´Ø¿ô eb_disc_type() ¤Ï¡¢book ¤Î¥Ç¥£¥¹¥¯¤Î·Á¼°¤ò +disc_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +½ñ¤­¹þ¤à¥Ç¥£¥¹¥¯¤Î·Á¼°¤ÎÃͤϡ¢EB_Disc_Code ·¿ +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î¤¤¤º¤ì¤«¤ÎÄê¿ôÃͤǤ¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢disc_code ¤Î»Ø¤¹Îΰè¤Ë EB_DISC_INVALID +¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_character_code (EB_Book *book, EB_Character_Code *character_code)

+ +

+´Ø¿ô eb_character_code() ¤Ï¡¢book ¤¬½ñ¤«¤ì¤Æ¤¤¤ë +ʸ»ú¥³¡¼¥É¤ò character_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +½ñ¤­¹þ¤àʸ»ú¥³¡¼¥É¤ÎÃͤϡ¢EB_Character_Code ·¿ +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î¤¤¤º¤ì¤«¤ÎÄê¿ôÃͤǤ¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢character_code ¤Î»Ø¤¹Îΰè¤Ë +EB_CHARCODE_INVALID ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-06.html b/lib/ebu/doc/eb-06.html new file mode 100644 index 0000000..7f68623 --- /dev/null +++ b/lib/ebu/doc/eb-06.html @@ -0,0 +1,787 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¥¨¥é¡¼½èÍý

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢¾ï¤ËÀ®¸ù¤¹¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò½ñÀҤ˷ë¤Ó¤Ä¤±¤ë´Ø¿ô +eb_bind() ¤Ë¤Ï¡¢°ú¿ô¤È¤·¤Æ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤òÅϤ·¤Þ¤¹¤¬¡¢ +¸ºß¤·¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤¿¾ì¹ç¡¢½èÍý¤Ï¼ºÇԤ˽ª¤ï¤ê¤Þ¤¹¡£ +

+ +

+°ìÈ̤ˤ³¤¦¤·¤¿»ö¾Ý¤Ï¡¢¥æ¡¼¥¶¤¬¸í¤Ã¤¿¥Ñ¥¹¤ò»ØÄꤷ¤¿¤È¤­¤Ëµ¯¤³¤ê¤Þ¤¹¤¬¡¢ +¥á¥â¥êÉÔ­¤Î¤è¤¦¤Ë¡¢¥æ¡¼¥¶¤Î¥ß¥¹¤¬¸¶°ø¤Ç¤Ï¤Ê¤¤¼ºÇԤⵯ¤³¤ê¤¨¤Þ¤¹¡£ +

+ +

+ËܾϤǤϡ¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤Î½èÍý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¥¨¥é¡¼¥³¡¼¥É¤È¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Î¿¤¯¤Ï¡¢Ìá¤êÃͤȤ·¤Æ EB_Error_Code +·¿¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£ +½èÍý¤¬À®¸ù¤·¤¿¤È¤­¤ËÊÖ¤¹ÃÍ¤Ï EB_SUCCESS ¤Ç¤¹¤¬¡¢¼ºÇÔ¤·¤¿¤È¤­¤Ï +¥¨¥é¡¼¤Î¸¶°ø¤Ë±þ¤¸¤ÆÍÍ¡¹¤ÊÃͤòÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤¿¤á¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¼¡¤Î¤è¤¦¤Ê EB_SUCCESS ¤È¤ÎÈæ³Ó½èÍý +¤¬¤è¤¯¹Ô¤ï¤ì¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code error_code;
+
+error_code = eb_bind(&book, "/mnt/cdrom");
+if (error_code != EB_SUCCESS) {
+    printf("eb_bind() failed\n");
+    return;
+}
+
+
+ +

+¥¨¥é¡¼¥³¡¼¥É¤ÎÃͤϡ¢´Ø¿ô eb_error_message() ¤Ë¤è¤Ã¤Æ +¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ËÊÑ´¹¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢¥¨¥é¡¼¤Î¸¶°ø¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥æ¡¼¥¶¤Ë +¤â¤¦¾¯¤·Ê¬¤«¤ê¤ä¤¹¤¯ÅÁ¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+error_code = eb_bind(&book, "/mnt/cdrom");
+if (error_code != EB_SUCCESS) {
+    printf("eb_bind() failed, %s\n",
+        eb_error_message(error_code));
+    return;
+}
+
+
+ +

+error_code ¤¬ EB_ERR_TOO_LONG_FILENAME ¤Ë +¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢¼¡¤Î¤è¤¦¤Ê¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ +

+ +
+
+too long filename
+
+
+ +

+¤¢¤ë¤¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆüËܸì¤Î¥á¥Ã¥»¡¼¥¸¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+¥Õ¥¡¥¤¥ë̾¤¬Ä¹¤¹¤®¤Þ¤¹
+
+
+ +

+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤ò̵¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë +¤·¤¿¾ì¹ç¤Ï¡¢¾ï¤Ë±Ñ¸ì¤Î¥á¥Ã¥»¡¼¥¸¤¬ÊÖ¤ê¤Þ¤¹¡£ +Í­¸ú¤Ë¤·¤¿¾ì¹ç¤Ï¡¢¥í¥±¡¼¥ë¤ÎÀßÄê¤Ë¤è¤Ã¤Æ¤É¤Á¤é¤Î¸À¸ì¤Î¥á¥Ã¥»¡¼¥¸¤¬ +Ê֤뤫¤¬·è¤Þ¤ê¤Þ¤¹¡£ +

+ +

+Ëܽñ¤Ç¤Ï¥×¥í¥°¥é¥à¤ò´Ê·é¤Ë¤¹¤ë¤¿¤á¤Ë¡¢¥¨¥é¡¼½èÍý¤ÏºÇÄã¸Â¤·¤«¹Ô¤Ã¤Æ +¤¤¤Þ¤»¤ó¡£ +¤±¤ì¤É¤â°ìÈ̤Υ¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ç¤Ï¡¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù +¤·¤¿¤«¤É¤¦¤«¤ò¾ï¤Ë¥Á¥§¥Ã¥¯¤·¡¢½èÍý¤¬¼ºÇÔ¤·¤¿ºÝ¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ +¤·¤Æ¡¢¥æ¡¼¥¶¤Ë¥¨¥é¡¼¤Î¸¶°ø¤òÅÁ¤¨¤ë¤Î¤¬Ë¾¤Þ¤·¤¤¤È¤¤¤¨¤Þ¤¹¡£ +

+ + +

¥¨¥é¡¼¤ËÂФ¹¤ë´²ÍƤµ

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¾õÂ֤˴ؤ¹¤ë¥Ñ¥é¥á¥¿¤ò¤¤¤¯¤Ä¤«»ý¤Ã¤Æ +¤¤¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬ CD-ROM ½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤«¤É¤¦¤«¤â¡¢¤³¤¦¤·¤¿¥Ñ¥é¥á¥¿ +¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹¡£ +

+ +

+°ú¿ô¤Ë EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò¼è¤ë´Ø¿ô¤Ë¤Ï¡¢ +¤¢¤é¤«¤¸¤á¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆÃÄê¤Î¥Ñ¥é¥á¥¿¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤³¤È¤òÁ°Äó¤È +¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢eb_path() ¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤³¤È +¤òÁ°Äó¤È¤·¤Æ¤¤¤Þ¤¹¡£ +¤Ç¤Ï¡¢¤â¤·¤â½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ò eb_path() ¤Ë +ÅϤ·¤¿¤é¤É¤¦¤Ê¤ë¤Ç¤·¤ç¤¦¤«¡£ +

+ +
+
+EB_Book book;
+EB_Error_Code error_code;
+char path[EB_MAX_PATH_LENGTH + 1];
+
+eb_initialize_library();
+eb_initialize(&book);
+error_code = eb_path(&book, path);    /* ¤É¤¦¤Ê¤ë? */
+
+
+ +

+¤³¤Î¾ì¹ç¡¢eb_path() ¤Ï EB_ERR_UNBOUND_BOOK ¤ò +ÊÖ¤·¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢É¬Íפʥѥé¥á¥¿¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ò +¸¡ÃΤ·¤ÆµñÀ䤷¤Þ¤¹¡£ +

+ +

+¤·¤«¤·¤Ê¤¬¤é¡¢»²¾È¥Þ¥Ë¥å¥¢¥ë¤ÇÌÀ¼¨¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤ò½ü¤¤¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Î´Ø¿ô¤Ï¡¢Í¿¤¨¤é¤ì¤¿¥Ý¥¤¥ó¥¿¤¬ NULL ¤«¤É¤¦¤«¤Þ¤Ç¤ÏÄ´¤Ù¤Þ¤»¤ó¡£ +¼¡¤Î¤è¤¦¤Ê¤³¤È¤ò¤¹¤ë¤È¡¢¥×¥í¥°¥é¥à¤ò°Û¾ï½ªÎ»¤µ¤»¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +

+ +
+
+eb_bind(NULL, "/mnt/cdrom");    /* °Û¾ï½ªÎ»! */
+eb_bind(&book, NULL);           /* ¤³¤ì¤â°Û¾ï½ªÎ»! */
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/error.h>
+
+
+ + +

EB_Error_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Error_Code ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¥¨¥é¡¼¥³¡¼¥É¤ò +ɽ¤·¤Þ¤¹¡£ +¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Á´Éô¤Ç EB_NUMBER_OF_ERRORS ¸Ä¤Î +¥Õ¥Ã¥¯¥³¡¼¥É¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +¥¨¥é¡¼¥³¡¼¥É¤Î°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¼¡¤ÎÀá (¡Ö¥¨¥é¡¼¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È) +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

¥¨¥é¡¼¥³¡¼¥É¤Î°ìÍ÷

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥¨¥é¡¼¥³¡¼¥É¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/error.h>
+
+
+ + +

Äê¿ô EB_SUCCESS

+ +

+À®¸ù¡£ +¥¨¥é¡¼¤Ïµ¯¤­¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_MEMORY_EXHAUSTED

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬ malloc() ¤ò¸Æ¤Ó½Ð¤·¤¿¤¬¡¢NULL +¤¬Ê֤äƤ­¤¿¡£ +

+ + +

Äê¿ô EB_ERR_TOO_LONG_FILE_NAME

+ +

+Í¿¤¨¤é¤ì¤¿½ñÀҤΥѥ¹Ì¾¤¬Ä¹¤¹¤®¤ë¡£ +

+ + +

Äê¿ô EB_ERR_BAD_FILE_NAME

+ +

+½ñÀҤΥѥ¹Ì¾¤¬ÉÔÀµ¤Ç¤¢¤ë¡£ +

+ + +

Äê¿ô EB_ERR_BAD_DIR_NAME

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤¬ÉÔÀµ¤Ç¤¢¤ë¡£ +(EB ¥é¥¤¥Ö¥é¥ê¤ÎÆâÉô½èÍýÍѤʤΤǡ¢ +¤³¤Î¥¨¥é¡¼¥³¡¼¥É¤¬¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ËÊ֤뤳¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£) +

+ + +

Äê¿ô EB_ERR_TOO_LONG_WORD

+ +

+Í¿¤¨¤é¤ì¤¿¸¡º÷¸ì¤ÏŤ¹¤®¤ë¡£ +

+ + +

Äê¿ô EB_ERR_BAD_WORD

+ +

+Í¿¤¨¤é¤ì¤¿¸¡º÷¸ì¤ËÉÔÀµ¤Êʸ»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£ +

+ + +

Äê¿ô EB_ERR_EMPTY_WORD

+ +

+Í¿¤¨¤é¤ì¤¿¸¡º÷¸ì¤Ï¶õ¤Ç¤¢¤ë¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_GETCWD

+ +

+getcwd() ¤â¤·¤¯¤Ï getwd() ¤¬¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ë¤òÆɤळ¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥á¥¤¥ó¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥХ¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥á¥¤¥ó¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥХ¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢´üÂԤȤϰۤʤë¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥á¥¤¥ó¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥХ¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNBOUND_BOOK

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿ EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤¿ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ï +½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNBOUND_APP

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿ EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿ +¥ª¥Ö¥¸¥§¥¯¥È¤Ï appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUB

+ +

+½ñÀÒ¤ÏÉûËܤò°ì¤Ä¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_APPSUB

+ +

+appendix ¤ÏÉûËܤò°ì¤Ä¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_FONT

+ +

+ÁªÂòÃæ¤ÎÉûËܤϡ¢³°»ú¤ò°ì¼ïÎà¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_TEXT

+ +

+ÁªÂòÃæ¤ÎÉûËܤϡ¢ËÜʸ¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_SUB

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤È¤·¤Æ¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤ÏÁªÂò¤µ¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_APPSUB

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë EB_Appendix +¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤ÏÁªÂò¤µ¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_FONT

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢³°»ú¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤ÏÁªÂò¤µ¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_BINARY

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ßÍ×µá¤ò¥»¥Ã¥È¤·¤Æ¤¤¤ë +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï +¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_SUB

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÉûËÜ¥³¡¼¥É¤¬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë½ñÀҤϡ¢¤½¤Î +ÉûËÜ¥³¡¼¥É¤Ë°ìÃפ¹¤ëÉûËܤò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_APPSUB

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÉûËÜ¥³¡¼¥É¤¬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë appendix ¤Ï¡¢ +¤½¤ÎÉûËÜ¥³¡¼¥É¤Ë°ìÃפ¹¤ëÉûËܤò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_FONT

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤È³°»ú¤Î½Ä¤Î¥µ¥¤¥º¤¬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤Ó¤Ä¤±¤é¤ì¤Æ¤¤¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢ +¤½¤Î¥µ¥¤¥º¤Î³°»ú¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_CHAR_BMP

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Èʸ»úÈֹ椬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢ +¤½¤ÎÈÖ¹æ¤Î³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_CHAR_TEXT

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Èʸ»úÈֹ椬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë appendix ¤Ç +ÁªÂòÃæ¤ÎÉûËܤϡ¢¤½¤ÎÈÖ¹æ¤Î³°»ú¤ÎÂåÂØʸ»úÎó¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_SEARCH

+ +

+ÁªÂòÃæ¤ÎÉûËܤϡ¢»ØÄꤵ¤ì¤¿¸¡º÷¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢¸¡º÷¤Ï¹Ô¤¨¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_HOOK

+ +

+ÉÔÀµ¤Ê¥Õ¥Ã¥¯¥³¡¼¥É¤¬´Ø¿ô¤ËÅϤµ¤ì¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_BINARY

+ +

+»ØÄꤵ¤ì¤¿°ÌÃ֤ˡ¢»ØÄꤵ¤ì¤¿·Á¼°¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï¸ºß¤·¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_DIFF_CONTENT

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤òÍ׵ᤵ¤ì¤¿¤¬¡¢»ØÄê +¤µ¤ì¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎब¡¢Á°²ó¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¤È¤­¤È°ìÃפ·¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_PREV_SEARCH

+ +

+eb_hit_list() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¤¬¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à +¤«¤éÁ°¤â¤Ã¤Æ¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤¬¤Ê¤µ¤ì¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_MULTI_ID

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÊ£¹ç¸¡º÷¥³¡¼¥É¤¬´Ø¿ô¤ËÅϤµ¤ì¤¿¤¬¡¢ +·ë¤ÓÉÕ¤±¤é¤ì¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢¤½¤Î¥³¡¼¥É¤Ë°ìÃפ¹¤ëÊ£¹ç¸¡º÷¤ò»ý¤Ã¤Æ +¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_ENTRY_ID

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÊ£¹ç¸¡º÷¥¨¥ó¥È¥ê¥³¡¼¥É¤¬´Ø¿ô¤Ë +ÅϤµ¤ì¤¿¤¬¡¢·ë¤ÓÉÕ¤±¤é¤ì¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢¤½¤Î¥¨¥ó¥È¥ê¥³¡¼¥É¤Ë +°ìÃפ¹¤ëÊ£¹ç¸¡º÷¥¨¥ó¥È¥ê¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_TOO_MANY_WORDS

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¾ò·ï¸¡º÷¤â¤·¤¯¤ÏÊ£¹ç¸¡º÷¤Î¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È +¤µ¤ì¤¿¤¬¡¢¸¡º÷¸ì¤Î¸Ä¿ô¤¬Â¿¤¹¤®¤ë¡£ +

+ + +

Äê¿ô EB_ERR_NO_WORD

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¾ò·ï¸¡º÷¤â¤·¤¯¤ÏÊ£¹ç¸¡º÷¤Î¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È +¤µ¤ì¤¿¤¬¡¢¸¡º÷¸ì¤¬¤¹¤Ù¤Æ¶õ¤Ç¤¢¤ë¡£ +

+ + +

Äê¿ô EB_ERR_NO_CANDIDATES

+ +

+eb_multi_entry_candidates() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¤¬¡¢ +»ØÄꤵ¤ì¤¿Ê£¹ç¸¡º÷¥¨¥ó¥È¥ê¤Ï¡¢¸¡º÷¸ì¤Î¸õÊä°ìÍ÷¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_END_OF_CONTENT

+ +

+eb_forward_text() ¤¢¤ë¤¤¤Ï eb_backward_text() +¤ÇËÜʸ¤ÎƬ½Ð¤·¤ò¹Ô¤ª¤¦¤È¤·¤¿¤¬¡¢¤¹¤Ç¤ËËÜʸ¤ÎËöÈø¤Ê¤¤¤·ÀèƬ¤Ë㤷¤Æ¤¤¤Æ¡¢ +¤½¤ì°Ê¾åÀè¤Ë¿Ê¤à¤³¤È¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_PREV_SEEK

+ +

+¤¢¤é¤«¤¸¤á eb_seek_text() ¤Ç¥·¡¼¥¯¤ò¹Ô¤Ã¤Æ¤¤¤Ê¤¤¾õÂ֤ǡ¢ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤äƬ½Ð¤·¤ò¹Ô¤ª¤¦¤È¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_UNSUPPORTED

+ +

+¤³¤Î EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢±ó³Ö¥Û¥¹¥È¤Ø¤Î¥¢¥¯¥»¥¹¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_FAIL_CONNECT

+ +

+±ó³Ö¥Û¥¹¥È¤Ø¤Î¥¢¥¯¥»¥¹¤ò»î¤ß¤¿¤¬¡¢¥µ¡¼¥Ð (EBNETD) ¤ËÀܳ¤Ç¤­¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_SERVER_BUSY

+ +

+±ó³Ö¥Û¥¹¥È¤Ø¤ÎÀܳ¤ò¹Ô¤Ã¤¿¤¬¡¢½ñÀҤ˥¢¥¯¥»¥¹¤·¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È¤Î¿ô¤¬ +¤¹¤Ç¤Ë¾å¸Â¤Ë㤷¤Æ¤¤¤ë¤¿¤á¡¢¤½¤Î½ñÀÒ¤òÍøÍѤǤ­¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_NO_PERMISSION

+ +

+±ó³Ö¥Û¥¹¥È¤Ø¤ÎÀܳ¤ò¹Ô¤Ã¤¿¤¬¡¢¤½¤Î½ñÀҤؤÎÍøÍѸ¢¸Â¤¬¤Ê¤¤¤¿¤á¡¢¥µ¡¼¥Ð +¤«¤é¥¢¥¯¥»¥¹¤òµñÈݤµ¤ì¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNBOUND_BOOKLIST

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿ EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢±ó³Ö¥Û¥¹¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È +¤Ï±ó³Ö¥Û¥¹¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_BOOK

+ +

+EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤È½ñÀÒ¤ÎÍ×ÁÇÈÖ¹æ¤ò´Ø¿ô¤ËÅϤµ¤ì¤¿¤¬¡¢ +EB_BookList ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿±ó³Ö¥Û¥¹¥È¾å¤Ë¤Ï¡¢¤½¤ÎÍ×ÁÇÈÖ¹æ¤Ë +³ºÅö¤¹¤ë½ñÀҤϸºß¤·¤Ê¤¤¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/error.h>
+
+
+ + +

const char *eb_error_string (EB_Error_Code error_code)

+ +

+´Ø¿ô eb_error_string() ¤Ï¡¢¥¨¥é¡¼¥³¡¼¥É error_code +¤òʸ»úÎó¤ËÊÑ´¹¤·¤¿¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£ +ʸ»úÎó¤Îʸ»ú¥³¡¼¥É¤Ï¡¢ASCII ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¥¨¥é¡¼¥³¡¼¥ÉÃÍ EB_SUCCESS ¤òÅϤ¹¤Èʸ»úÎó +"EB_SUCCESS" ¤òÊÖ¤·¤Þ¤¹¡£ +̤ÃΤΥ¨¥é¡¼¥³¡¼¥É¤òÅϤ·¤¿¤È¤­¤Ï¡¢"EB_ERR_UNKNOWN" ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

const char *eb_error_message (EB_Error_Code error_code)

+ +

+´Ø¿ô eb_error_message() ¤Ï¡¢¥¨¥é¡¼¥³¡¼¥É error_code +¤ËÂбþ¤·¤¿¥á¥Ã¥»¡¼¥¸¤òʸ»úÎó¤Ë¤·¤ÆÊÖ¤·¤Þ¤¹¡£ +´Ø¿ô¤ÎÊÖ¤¹¥á¥Ã¥»¡¼¥¸¤Ï¡¢±Ñ¸ì¤«ÆüËܸì¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¹ñºÝ²½µ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¾ï¤Ë +±Ñ¸ì¤Î¥á¥Ã¥»¡¼¥¸¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¤Î¥á¥Ã¥»¡¼¥¸¤Îʸ»ú¥³¡¼¥É¤Ï¡¢ASCII ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë +¤·¤¿¾ì¹ç¤Ï¡¢¥í¥±¡¼¥ë¤ÎÀßÄê¤Ë±þ¤¸¤Æ¤É¤Á¤é¤Î¸À¸ì¤Î¥á¥Ã¥»¡¼¥¸¤òÊÖ¤¹¤Î¤« +¤¬·è¤Þ¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢GNU gettext ¥Ð¡¼¥¸¥ç¥ó 0.36 °Ê¹ß¤Ç¤Ï iconv() ¤ÈÏ¢·È¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢ +¥á¥Ã¥»¡¼¥¸¤Îʸ»ú¥³¡¼¥É¤â¥í¥±¡¼¥ë¤Ë±þ¤¸¤ÆÊѲ½¤·¤Þ¤¹¡£ +gettext ¤¬ iconv() ¤È¤ÎÏ¢·È¤ò¹Ô¤ï¤Ê¤±¤ì¤Ð¡¢±Ñ¸ì¤Î¥á¥Ã¥»¡¼¥¸¤Ï ASCII¡¢ +ÆüËܸì¤Î¥á¥Ã¥»¡¼¥¸¤ÏÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¡¢gettext ¤Î¥Æ¥­¥¹¥È¥É¥á¥¤¥ó¤ÎÀßÄê¤ÏÊѲ½ +¤·¤Þ¤»¤ó¡£ +

+ +

+̤ÃΤΥ¨¥é¡¼¥³¡¼¥É¤òÅϤ·¤¿¤È¤­¤ËÊÖ¤¹¥á¥Ã¥»¡¼¥¸¤Ï¡¢±Ñ¸ì¤Ç¤Ï +"unknown error"¡¢ÆüËܸì¤Ç¤Ï "̤ÃΤΥ¨¥é¡¼¤Ç¤¹" +¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-07.html b/lib/ebu/doc/eb-07.html new file mode 100644 index 0000000..562101f --- /dev/null +++ b/lib/ebu/doc/eb-07.html @@ -0,0 +1,550 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

ÉûËÜ

+ +

+»æ¤Ë°õºþ¤µ¤ì¤¿ËܤǤÏÊÌ¡¹¤Î½ñÀҤˤʤäƤ¤¤ë¤â¤Î¤Ç¤â¡¢ÅŻҥ֥寤ä EPWING +¤Ç¤Ï 1 Ëç¤Î CD-ROM ¤Ë¤Þ¤È¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢¤¢¤ë CD-ROM ½ñÀҤϡ¢¹ñ¸ì¼­½ñ¡¢±Ñ¡¹¼­Åµ¡¢É´²Ê»öŵ¤È¤¤¤¦ 3 ¤Ä +¤Î (°õºþ¤µ¤ì¤¿ËܤǸÀ¤¦¤È¤³¤í¤Î) ¡Ö½ñÀҡפò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤â¤¢¤êÆÀ¤Þ¤¹¡£ +ʶ¤é¤ï¤·¤µ¤òÈò¤±¤ë¤¿¤á¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¤³¤³¤Ç¸À¤¦¡Ö½ñÀҡפΤ³¤È¤ò +ÉûËÜ (subbook) ¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢¡¡ÉûËÜ£°¡§¡¡¡Î¹ñ¸ì¼­Åµ¡Ï¡¡¨¢
+¨¢¡¡ÉûËÜ£±¡§¡¡¡Î±Ñ¡¹¼­Åµ¡Ï¡¡¨¢
+¨¢¡¡ÉûËÜ£²¡§¡¡¡ÎÉ´²Ê»öŵ¡Ï¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+CD-ROM ½ñÀҤǤϡ¢¤½¤ì¤¾¤ì¤ÎÉûËܤϤ½¤ì¼«ÂΤ¬ÆÈΩ¤·¤¿½ñÀҤˤʤäƤ¤¤Þ¤¹¡£ +¤Þ¤¿¡¢ÉûËܤΥǡ¼¥¿¤â¡¢ÉûËÜËè¤ËÊÌ¡¹¤Î¥Õ¥¡¥¤¥ë¤Ë¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤â¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¼çÍפʽèÍý +¤Ç¤¢¤ëñ¸ì¤Î¸¡º÷¤äËÜʸ¥Ç¡¼¥¿¤Î¼èÆÀ¤Ê¤É¤Ï¡¢¤¹¤Ù¤ÆÉûËÜñ°Ì¤Ç¹Ô¤¦¤è¤¦¤Ë +¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+ËܾϤǤϡ¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤ÎÉûËܤΰ·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

ÉûËÜ¥³¡¼¥É

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¤½¤ì¤¾¤ì¤ÎÉûËܤËÂФ·¤Æ ÉûËÜ¥³¡¼¥É (subbook code) +¤ò³ä¤êÅö¤Æ¤Þ¤¹¡£ +¤³¤Î¥³¡¼¥É¤Ï EB ¥é¥¤¥Ö¥é¥ê¤¬ÉûËܤò¼±Ê̤¹¤ë¤¿¤á¤ËÍѤ¤¤Þ¤¹¤Î¤Ç¡¢¸Ä¡¹¤Î +ÉûËÜ¥³¡¼¥É¤Ï¡¢½ñÀÒÆâ¤ÇƱ¤¸¤â¤Î¤¬¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Î¥½¡¼¥¹¥³¡¼¥É¤Ï¡¢eb_subbook_list() ¤È¤¤¤¦´Ø¿ô¤Î +»ÈÍÑÎã¤Ç¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤ÎÉûËܤÎÉûËÜ¥³¡¼¥É¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Subbook_Code sub_codes[EB_MAX_SUBBOOKS];
+int sub_count;
+
+if (eb_subbook_list(&book, sub_codes, &sub_count)
+    != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+eb_subbook_list() ¤¬À®¸ù¤¹¤ë¤È¡¢½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤ÎÉûËÜ¥³¡¼¥É¤¬ +ÇÛÎó sub_codes[] ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +ÇÛÎó¤ÎÀèƬ¤ÎÉûËÜ¥³¡¼¥É¤Ï sub_codes[0] ¤Èɽ¤µ¤ì¡¢¼¡¤Î +¥³¡¼¥É¤Ï sub_codes[1]¡¢¤È¤¤¤¦¶ñ¹ç¤Ë¤Ê¤ê¤Þ¤¹¡£ +ÉûËܤθĿô¤Ï¡¢sub_count ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +

+ +

+¸Ä¡¹¤ÎÉûËܤˤϡ¢É¬¤ºÂê̾¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +ÀèƬ¤ÎÉûËÜ (sub_codes[0]) ¤ÎÂê̾¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ +ÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+char title[EB_MAX_TITLE_LENGTH + 1];
+
+if (eb_subbook_title2(&book, sub_codes[0], title)
+    != EB_SUCCESS) {
+    printf("eb_subbook_title2() failed\n");
+    return;
+}
+
+
+ +

+eb_subbook_title2() ¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù¤¹¤ë¤È¡¢ +title ¤ËÂê̾¤òɽ¤¹Ê¸»úÎ󤬳ÊǼ¤µ¤ì¤Þ¤¹¡£ +

+ +

+¼Ø­¤Ç¤¹¤¬¡¢(ÉûËܤǤϤʤ¯) CD-ROM ¤ÎÂê̾¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤Ê¤¼¤Ê¤é¡¢Âê̾¤ò¼¨¤¹¥Ç¡¼¥¿¤¬ CD-ROM ¤ÎÃæ¤Ë¤Ï²¿½è¤Ë¤â¤Ê¤¤¤«¤é¤Ç¤¹¡£ +

+ + +

ÁªÂòÃæ¤ÎÉûËÜ

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢·ë¤Ó¤Ä¤±¤é¤ì¤¿ CD-ROM ½ñÀÒ¤ÎÃæ¤Î +Ǥ°Õ¤ÎÉûËܤ«¤é°ì¤ÄÁª¤ó¤Ç¡¢ÁªÂòÃæ¤ÎÉûËÜ (current subbook) +¤È¤·¤Æ»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ê£¿ô¤ÎÉûËܤò¡¢Æ±»þ¤ËÁªÂò¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +ñ¸ì¤Î¸¡º÷¤ä¡¢ËÜʸ¥Ç¡¼¥¿¤Î¼èÆÀ¤Ê¤É¡¢¤Û¤È¤ó¤É¤ÎÁàºî¤Ï¡¢ÁªÂòÃæ¤ÎÉûËÜ¤Ë +ÂФ·¤Æ¤À¤±¹Ô¤¨¤Þ¤¹¡£ +

+ +

+eb_bind() ¤Ç EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò½ñÀÒ¤Ë +·ë¤ÓÉÕ¤±¤¿Ä¾¸å¤Ï¡¢¤¤¤º¤ì¤ÎÉûËܤâÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂ֤ˤʤäƤ¤¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Â£ï£ï£ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¥ª¥Ö¥¸¥§¥¯¥È
+¨£¨¡¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢ÁªÂòÃæ¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£°¡§¡¡¡Î¹ñ¸ì¼­Åµ¡Ï¡¡¨¢
+¨¢¤ÎÉûËÜ¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£±¡§¡¡¡Î±Ñ¡¹¼­Åµ¡Ï¡¡¨¢
+¨¢¡ã¤Ê¤·¡ä¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£²¡§¡¡¡ÎÉ´²Ê»öŵ¡Ï¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+ÉûËܤÎÁªÂò¤ò¹Ô¤¦¤Ë¤Ï¡¢´Ø¿ô eb_set_subbook() ¤ò»ÈÍѤ·¤Þ¤¹¡£ +eb_set_subbook() ¤Ï¡¢°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤¿ÉûËÜ¥³¡¼¥É¤Ë +¤·¤¿¤¬¤Ã¤ÆÉûËܤòÁªÂò¤·¤Þ¤¹¡£ +°Ê²¼¤Ï¡¢ÀèƬ¤ÎÉûËÜ (sub_codes[0]) ¤òÁªÂò¤¹¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Subbook_Code sub_codes[EB_MAX_SUBBOOKS];
+int sub_count;
+
+if (eb_subbook_list(&book, sub_codes, &sub_count)
+    != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+if (eb_set_subbook(&book, sub_codes[0]) != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+À®¸ù¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤ËÉûËܤ¬ÁªÂò¤µ¤ì¤¿¾õÂ֤ˤʤê¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Â£ï£ï£ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¥ª¥Ö¥¸¥§¥¯¥È
+¨£¨¡¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢ÁªÂòÃæ¡¡¨¢¡¡¡¡¨®¨¬¨¬¨¬¨¬¨»¨¬ÉûËÜ£°¡§¡¡¡Î¹ñ¸ì¼­Åµ¡Ï¡¡¨¢
+¨¢¤ÎÉûËÜ¡¡¨¢¡¡¡¡¨­¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£±¡§¡¡¡Î±Ñ¡¹¼­Åµ¡Ï¡¡¨¢
+¨¢¡¡¡ö¨¬¨¬¨»¨¬¨¬¨°¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£²¡§¡¡¡ÎÉ´²Ê»öŵ¡Ï¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     subbook <book-path>
+ * Îã:
+ *     subbook /cdrom
+ * ÀâÌÀ:
+ *     <boook-path> ¤Ç»ØÄꤵ¤ì CD-ROM ½ñÀҤ˴ޤޤì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎÉûËܤÎ
+ *     Âê̾¤òɽ¼¨¤·¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    char title[EB_MAX_TITLE_LENGTH + 1];
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s book-path\n", argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    error_code = eb_initialize_library();
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ½ñÀҤ˴ޤޤì¤Æ¤¤¤ëÉûËܤÎÂê̾¤ò½ÐÎÏ¡£*/
+    for (i = 0; i < subbook_count; i++) {
+        error_code = eb_subbook_title2(&book, subbook_list[i], title);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get the title, %s\n",
+                argv[0], eb_error_message(error_code));
+            continue;
+        }
+        printf("%d: %s\n", i, title);
+    }
+
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Subbook_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Subbook_Code ¤ÏÉûËÜ¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +°ìºý¤Î½ñÀÒ¤ÎÃæ¤ÎÉûËܤϡ¢¤½¤ì¤¾¤ì°ì°Õ¤ÎÉûËÜ¥³¡¼¥É¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢ÉÔÀµ¤ÊÉûËÜ¥³¡¼¥ÉÃͤòɽ¤¹ EB_SUBBOOK_INVALID ¤È¤¤¤¦ +ÆÃÊ̤ÊÉûËÜ¥³¡¼¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +ÍøÍѲÄǽ¤ÊÉûËܤËÂФ·¤Æ¡¢¤³¤ÎÉûËÜ¥³¡¼¥É¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Error_Code eb_load_all_subbooks (EB_Book *book)

+ +

+´Ø¿ô eb_load_all_subbooks() ¤Ï¡¢book Æâ¤Î¤¹¤Ù¤Æ¤Î +ÉûËܤò½é´ü²½¤·¤Þ¤¹¡£ +Ä̾ÉûËܤνé´ü²½¤Ï¡¢¤½¤ÎÉûËܤ¬½é¤á¤ÆÁªÂò¤µ¤ì¤¿¤È¤­¤Ë¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤Þ¤¹¤¬¡¢ +¤³¤Î´Ø¿ô¤Ï½é´ü²½¤òÁ°Åݤ·¤Ç¹Ô¤¤¤Þ¤¹¡£ +½é´ü²½¤ÎÂоݤȤʤë¤Î¤Ï¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿»þÅÀ¤Ç¤Þ¤À½é´ü²½¤·¤Æ¤¤¤Ê¤¤ +¤¹¤Ù¤Æ¤ÎÉûËܤǤ¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¥¹¥¿¥ó¥É¥¢¥í¥ó¤ÇÆ°ºî¤¹¤ë¥µ¡¼¥Ð¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ê¤É¤ÇÍ­¸ú¤Ç¤¹¡£ +¥¯¥é¥¤¥¢¥ó¥È¤«¤é¤ÎÀܳ¤ò¼õ¤±¤ëÁ°¤Ë¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ÉûËܤνé´ü²½¤Î +¤¿¤á¤Ë¥¯¥é¥¤¥¢¥ó¥È¤òÂÔ¤¿¤»¤Ê¤¯¤ÆºÑ¤ß¤Þ¤¹¡£ +

+ +

+½é´ü²½¤ÎÂоݤȤʤ俤¹¤Ù¤Æ¤ÎÉûËܤνé´ü²½¤ËÀ®¸ù¤¹¤ì¤Ð¡¢´Ø¿ô¤Ï +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +°ìºý¤Ç¤â½é´ü²½¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢»Ä¤ê¤ÎÉûËܤνé´ü²½¤òÄü¤á¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢book ¤Ï¡¢ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾õÂ֤ˤʤê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_list (EB_Book *book, EB_Subbook_Code *subbook_list, int *subbook_count)

+ +

+´Ø¿ô eb_subbook_list() ¤Ï¡¢book Æâ¤Î¤¹¤Ù¤ÆÉûËܤΠ+ÉûËÜ¥³¡¼¥É¤ò EB_Subbook_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢ +subbook_list ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_SUBBOOKS ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢½ñÀÒ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤθĿô¤ò subbook_count ¤Î»Ø¤¹ +Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook (EB_Book *book, EB_Subbook_Code *subbook_code)

+ +

+´Ø¿ô eb_subbook() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËܤΠ+ÉûËÜ¥³¡¼¥É¤ò subbook_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_code ¤Î»Ø¤¹Îΰè¤Ë +EB_SUBBOOK_INVALID ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_title (EB_Book *book, char *title)

+ +

+´Ø¿ô eb_subbook_title() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËܤΠ+Âê̾¤ò title ¤Î»Ø¤¹Îΰè¤Ëʸ»úÎó¤È¤·¤Æ½ñ¤­¹þ¤ß¤Þ¤¹¡£ +Âê̾¤Îʸ»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç EB_MAX_TITLE_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +¤³¤ÎŤµ¤Ï¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤ò´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢Âê̾¤òɽ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ê¤éÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢title ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_title2 (EB_Book *book, EB_Subbook_Code subbook_code, char *title)

+ +

+eb_subbook_title() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢ +°ú¿ô subbook_code ¤Ç»ØÄꤵ¤ì¤¿ÉûËܤÎÂê̾¤ò½ñ¤­¹þ¤àÅÀ¤¬ +°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢¤¢¤é¤«¤¸¤á½ñÀÒ +¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_directory (EB_Book *book, char *directory)

+ +

+´Ø¿ô eb_subbook_directory() ¤Ï¡¢book Æâ¤Ç¸½ºß +ÁªÂòÃæ¤ÎÉûËܤΥǡ¼¥¿¥Õ¥¡¥¤¥ë¤ò¼ý¤á¤¿¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¡¢directory +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤Îʸ»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç +EB_MAX_DIRECTORY_NAME_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï ASCII ¤Î¿ô»ú¡¢±Ñ¾®Ê¸»ú¡¢¥¢¥ó¥À¡¼¥¹¥³¥¢¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢directory ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤Ë +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_directory2 (EB_Book *book, EB_Subbook_Code subbook_code, char *directory)

+ +

+eb_subbook_directory() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢ +°ú¿ô subbook_code ¤Ç»ØÄꤵ¤ì¤¿ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò½ñ¤­¹þ¤àÅÀ +¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢¤¢¤é¤«¤¸¤á +½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_subbook (EB_Book *book, EB_Subbook_Code code)

+ +

+´Ø¿ô eb_set_subbook() ¤Ï¡¢book ¤ÎÉûËÜ +code ¤òÁªÂò¤·¤Þ¤¹¡£ +¤¹¤Ç¤ËÉûËܤòÁªÂò¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¤«¤éÉûËÜ +subbook_code ¤òÁªÂò¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢³°»ú¤Ï̤ÁªÂò¤Î¾õÂ֤Ȥʤꡢ¸¡º÷¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¡¢ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë¤Ä¤¤¤Æ¤Î¾õÂÖµ­Ï¿¤Ï¡¢¤¹¤Ù¤Æ¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢ÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_unset_subbook (EB_Book *book)

+ +

+´Ø¿ô eb_unset_subbook() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ë +ÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Þ¤¹¡£ +book ¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¤«¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +²¿¤â¤·¤Þ¤»¤ó¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-08.html b/lib/ebu/doc/eb-08.html new file mode 100644 index 0000000..f8ddc4c --- /dev/null +++ b/lib/ebu/doc/eb-08.html @@ -0,0 +1,1218 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¸¡º÷

+ +

+CD-ROM ½ñÀҤˤª¤¤¤Æ¡¢¸¡º÷¤ÏÈó¾ï¤Ë½ÅÍפʵ¡Ç½¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѤǤ­¤Þ¤¹¡£ +

+ +
    +
  • Á°Êý°ìÃ׸¡º÷ (word search) +
  • ¸åÊý°ìÃ׸¡º÷ (end-word search) +
  • ´°Á´°ìÃ׸¡º÷ (exact-word search) +
  • ¾ò·ï¸¡º÷ (keyword search) +
  • ¥¯¥í¥¹¸¡º÷ (cross search) +
  • Ê£¹ç¸¡º÷ (multi search) +
+ +

+¤¿¤À¤·¡¢¤¹¤Ù¤Æ¤Î CD-ROM ½ñÀÒ¡¢¤¹¤Ù¤Æ¤ÎÉûËܤǡ¢¤³¤³¤Ëµó¤²¤¿¤¹¤Ù¤Æ¤Î +¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤Ê¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +ÉûËܤÎÃæ¤Ë¤Ï¡¢¤¤¤º¤ì¤Î¸¡º÷¥á¥½¥Ã¥É¤âÄ󶡤·¤Ê¤¤¤â¤Î¤â¸ºß¤·¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¸¡º÷¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¤Î¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤËÂФ·¤Æ +¤À¤±¤Ç¤¹¡£ +

+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢¤½¤ì¤¾¤ì¤Î¸¡º÷¥á¥½¥Ã¥É¤Î´Êñ¤ÊÀâÌÀ¤È¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Î +°·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷

+ +

+Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷¤Ï¡¢¤¤¤º¤ì¤â°ì¸Ä¤ÎÆþÎϸì¤Ë°ìÃפ¹¤ë +¥¨¥ó¥È¥ê¤òõ¤·½Ð¤¹¸¡º÷¥á¥½¥Ã¥É¤Ç¤¹¡£ +

+ +

+Á°Êý°ìÃ׸¡º÷¤Ï¡¢ÆþÎϸì¤ÈÀèƬÉôʬ¤¬°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¡Ö¹¾¸Í¡×¤È¤¤¤¦¸ì¤Ï¡¢¡Ö¹¾¸Í¡×¡Ö¹¾¸Í»þÂå¡×¡Ö¹¾¸Í¤Ã»Ò¡×¤È¤¤¤Ã¤¿ +¥¨¥ó¥È¥ê¤Ë°ìÃפ·¤Þ¤¹¡£ +

+ +

+¸åÊý°ìÃ׸¡º÷¤Ï¡¢ÆþÎϸì¤ÈËöÈø¤¬°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢`bye' ¤È¤¤¤¦¸ì¤Ï¡¢`bye'¡¢`good bye'¡¢`bye bye' ¤È¤¤¤Ã¤¿ +¥¨¥ó¥È¥ê¤Ë°ìÃפ·¤Þ¤¹¡£ +

+ +

+´°Á´°ìÃ׸¡º÷¤Ï¡¢°ì¸Ä¤Î¸¡º÷¸ì¤È´°Á´¤Ë°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤À¤±¤ò¸¡º÷¤·¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢Á°Êý°ìÃ׸¡º÷¤Î¥×¥í¥°¥é¥à¤ÎÎã¤Ç¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤÎÃ椫¤é¡¢ÀèƬ¤¬ librar ¤Ç»Ï¤Þ¤ë¥¨¥ó¥È¥ê¤òõ¤·¤Æ +¤¤¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+#define MAX_HITS 50
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_search_word(&book, "librar") != EB_SUCCESS) {
+    printf("eb_search_word() failed\n");
+    return;
+}
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    printf("eb_hit_list() failed\n");
+    return;
+}
+
+
+ +

+eb_search_word() ¤ÏÁ°Êý°ìÃ׸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë´Ø¿ô¤Ç¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢librar ¤È¤¤¤¦¸¡º÷ʸ»úÎó¤òÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤Î´Ø¿ô¤Ï°ìÃפ·¤¿¥¨¥ó¥È¥ê¤òÊÖ¤¹¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +

+ +

+°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï¡¢Â³¤¯ eb_hit_list() ´Ø¿ô¤ò +¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë¹Ô¤ï¤ì¤Þ¤¹¡£ +eb_hit_list() ¤Ï°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î°ìÍ÷¤òÇÛÎó +hits[] ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¡¢¸«¤Ä¤«¤Ã¤¿°ìÃ×¥¨¥ó¥È¥ê¤Î¸Ä¿ô +¤ò &hit_count ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢eb_hit_list() ¤ÏºÇÂç¤Ç MAX_HITS +(= 50) ¸Ä ¤Î¥¨¥ó¥È¥ê¤òõ¤·¤Þ¤¹¡£ +(¤Ä¤Þ¤ê¡¢50 ¸Ä¸«¤Ä¤«¤Ã¤¿¤é¸¡º÷¤ò»ß¤á¤Þ¤¹¡£) +

+ +

+¤â¤·¡¢ÁªÂòÃæ¤ÎÉûËܤ¬±Ñ¡¹¼­Åµ¤À¤È¤¹¤ë¤È¡¢¾¯¤Ê¤¯¤È¤â library +¤È librarian ¤È¤¤¤¦ 2 ¤Ä¤Î¥¨¥ó¥È¥ê¤Ë´Ø¤¹¤ë¾ðÊó¤¬ÆÀ¤é¤ì¤ë +¤Ç¤·¤ç¤¦¡£ +¤³¤Î¤È¤­¡¢ÇÛÎó hits[] ¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +(¤¿¤À¤·¡¢library ¤È librarian ¥¨¥ó¥È¥ê¤Î +½ç½ø¤Ï¡¢²¼¤Î³¨¤È¤Ï°Û¤Ê¤Ã¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£) +

+ +
+
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¨¨¡
+¨¢¡¡£ì£é£â£ò£á£ò£é£á£î¡¡¨¢¡¡¡¡£ì£é£â£ò£á£ò£ù¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨ª¨¡
+¡¡¡¡¡¡£è£é£ô£ó¡Î£°¡Ï¡¡¡¡¡¡¡¡¡¡£è£é£ô£ó¡Î£±¡Ï
+
+
+ +

+hits[] ¤ÎÃæ¿È¤Ë¤Ä¤¤¤Æ¤Ï¡¢ËܾϤθå¤í¤ÎÀá¤Ç¤â¤¦¾¯¤·¾Ü¤·¤¯ +ÀâÌÀ¤·¤Þ¤¹¡£ +

+ +

+¤³¤³¤Þ¤Ç¤ÏÁ°Êý°ìÃ׸¡º÷¤òÎã¤Ë¤È¤ê¤Þ¤·¤¿¤¬¡¢¸åÊý°ìÃפξì¹ç¤Ï +eb_search_word() ¤ÎÂå¤ï¤ê¤Ë eb_search_endword() +¤ò¸Æ¤Ö¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¾¤Ï¤¹¤Ù¤ÆƱ¤¸¤Ç¤¹¡£ +

+ +
+
+if (eb_search_endword(&book, "nalization") != EB_SUCCESS) {
+    printf("eb_search_endword() failed\n");
+    return;
+}
+
+
+ +

+´°Á´°ìÃפξì¹ç¤âƱÍͤǤ¹¡£ +eb_search_exactword() ¤ò¸Æ¤Ö¤è¤¦¤Ë¤¹¤ë°Ê³°¤Ï¡¢¤¹¤Ù¤ÆƱ¤¸ +¤Ç¤¹¡£ +

+ +
+
+if (eb_search_exactword(&book, "library") != EB_SUCCESS) {
+    printf("eb_search_exactword() failed\n");
+    return;
+}
+
+
+ + +

¾ò·ï¸¡º÷

+ +

+¾ò·ï¸¡º÷¤Ï¡¢Ê£¿ô¸Ä¤ÎÆþÎϸì¤Ë¤¹¤Ù¤Æ°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢±Ñ¡¹¼­Åµ¤Î¾ò·ï¸¡º÷¤Ç¤Ï¡¢ÆþÎϸì¤ò¤¹¤Ù¤Æ´Þ¤ó¤ÀÎãʸ¤ò¸¡º÷¤¹¤ë +¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +

+°Ê²¼¤Ï¡¢¾ò·ï¸¡º÷¤Ç make, with ¤È¤¤¤¦¸ì¤ÎÁÐÊý¤È +°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¡¢ÁªÂòÃæ¤ÎÉûËܤÎÃ椫¤éõ¤·½Ð¤¹¥×¥í¥°¥é¥à¤ÎÃÇÊҤǤ¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+static const char *keywords[3] = {"make", "with", NULL};
+
+if (eb_search_word(&book, keywords) != EB_SUCCESS) {
+    printf("eb_search_word() failed\n");
+    return;
+}
+
+
+ +

+¾ò·ï¸¡º÷¤ò¹Ô¤¦´Ø¿ô¤Ï¡¢eb_search_keyword() ¤Ç¤¹¡£ +Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷¤Î´Ø¿ô¤È´ðËÜŪ¤Ë°·¤¤Êý¤Ï°ì½ï¤Ç¤¹¤¬¡¢ +Ê£¿ô¤ÎÆþÎϸì¤ò¼õ¤±ÉÕ¤±¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ë¤Ï¡¢ÆþÎϸì¤Îʸ»úÎó (¤Ø¤Î¥Ý¥¤¥ó¥¿) ¤òÇÛÎó¤Ë¤·¤¿¤â¤Î¤òÅϤ·¤Þ¤¹¡£ +ÇÛÎó¤ÎºÇ¸å¤Ë¤Ï NULL ¤òÃÖ¤­¡¢ÇÛÎó¤Î½ªÃ¼¤òÌÀ¼¨¤¹¤ëɬÍפ¬ +¤¢¤ëÅÀ¤ËÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷¤ÈƱÍͤˡ¢eb_search_keyword() +¤â¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤ò¹Ô¤¦¤À¤±¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ë¤Ï¡¢¤ä¤Ï¤êƱÍÍ¤Ë eb_hit_list() ´Ø¿ô¤ò +»È¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    printf("eb_hit_list() failed\n");
+    return;
+}
+
+
+ + +

¥¯¥í¥¹¸¡º÷

+ +

+¥¯¥í¥¹¸¡º÷¤Ï¡¢¾ò·ï¸¡º÷¤Î°¡¼ï¤È¤â¸À¤¦¤Ù¤­¸¡º÷¥á¥½¥Ã¥É¤Ç¤¹¡£ +EPWING ¤äÅŻҥ֥寤ò¤ß¤Æ¤â¡¢¤É¤¦¤¤¤¦¥ë¡¼¥ë¤Ç»È¤¤Ê¬¤±¤¬¤Ê¤µ¤ì¤Æ¤¤¤ë¤Î¤« +ʬ¤«¤é¤Ê¤¤Äø¡¢Î¾¼Ô¤Ï¼Â¤Ë¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¥¯¥í¥¹¸¡º÷¤ò¹Ô¤¦´Ø¿ô¤Ï eb_search_cross() +¤Ç¤¹¤¬¡¢»È¤¤Êý¤Ï¾ò·ï¸¡º÷¤Î´Ø¿ô eb_search_keyword() ¤È +¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£ +»È¤¤Êý¤Î¾ÜºÙ¤Ï¡¢¡Ö¾ò·ï¸¡º÷¡× ¤ò¤´Í÷²¼¤µ¤¤¡£ +

+ + +

Ê£¹ç¸¡º÷

+ +

+Ê£¹ç¸¡º÷¤Ï¡¢¾ò·ï¸¡º÷¤ÈƱ¤¸¤¯¡¢Ê£¿ô¸Ä¤ÎÆþÎϸì¤Ë¤¹¤Ù¤Æ°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò +¸¡º÷¤·¤Þ¤¹¤¬¡¢¸Ä¡¹¤ÎÆþÎϸì¤Ë¤¢¤é¤«¤¸¤áÂêÌܤ¬ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃס¢¾ò·ï¸¡º÷¤Ï¤¹¤Ù¤Æ¡¢³ÆÉûËܤˤĤ­ +°ì¼ïÎष¤«¤¢¤ê¤Þ¤»¤ó¤¬¡¢Ê£¹ç¸¡º÷¤À¤±¤Ï°ì¤Ä¤ÎÉûËܤÎÃæ¤ÇÊ£¿ô¤Î¼ïÎबÍÑ°Õ +¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¤¢¤ëÀ¤³¦¿Í̾»öŵ¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¿Í̾¸¡º÷ÍѤÈÉѽÐÍѸì¤Î¸¡º÷ÍÑ +¤Î 2 ¼ïÎà¤ÎÊ£¹ç¸¡º÷¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+(Ê£¹ç¸¡º÷¤½¤Î 1: ¿Í̾¤ò¸¡º÷¤¹¤ë)
+    ÆþÎϸì 0: ¹ñ¡¦ÃÏ°è
+    ÆþÎϸì 1: »þÂå
+    ÆþÎϸì 2: À­ÊÌ
+    ÆþÎϸì 3: ¥­¡¼¥ï¡¼¥É
+    ÆþÎϸì 4: ¥­¡¼¥ï¡¼¥É
+
+
+ +
+
+(Ê£¹ç¸¡º÷¤½¤Î 2: ÉѽÐÍѸì¤ò¸¡º÷¤¹¤ë)
+    ÆþÎϸì 0: ÍѸì
+    ÆþÎϸì 1: ¥­¡¼¥ï¡¼¥É
+    ÆþÎϸì 2: ¥­¡¼¥ï¡¼¥É
+
+
+ +

+¤³¤ÎÎã¤Î¤è¤¦¤Ë¡¢¸Ä¡¹¤ÎÊ£¹ç¸¡º÷¤Ï¡¢ÆþÎϸì¤ÎÂêÌܤÀ¤±¤Ç¤Ê¤¯¡¢ÆþÎϸì¤Î¿ô¤â +¤Þ¤Á¤Þ¤Á¤Ç¤¹¡£ +¤Þ¤¿¡¢¸¡º÷¤¹¤ëºÝ¤Ï¤¹¤Ù¤Æ¤ÎÆþÎϸì¤òËä¤á¤ëɬÍפϤʤ¯¡¢¾¯¤Ê¤¯¤È¤â°ì¸Ä¤Î +ÆþÎϸ줬¶õ¤Ç¤Ê¤±¤ì¤Ð¡¢¸¡º÷¤ÏÀ®¸ù¤·¤Þ¤¹¡£ +

+ +

+ÉûËÜÆâ¤ÎÊ£¹ç¸¡º÷¤Ï¡¢¼ïÎàËè¤Ë Ê£¹ç¸¡º÷¥³¡¼¥É (multi search code) +¤Ë¤è¤Ã¤Æ¼±Ê̤µ¤ì¤Þ¤¹¡£ +´Ø¿ô eb_multi_search_list() ¤ò»È¤¦¤È¡¢ÁªÂòÃæ¤ÎÉûËܤÇÍøÍѲÄǽ +¤ÊÊ£¹ç¸¡º÷¤Î°ìÍ÷¤¬ÆÀ¤é¤ì¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Multi_Search_Code multi_codes[EB_MAX_MULTI_SEARCHES];
+int multi_count;
+
+if (eb_multi_search_list(&book, multi_codes, &multi_count)
+    != EB_SUCCESS) {
+    printf("eb_multi_search_list() failed\n");
+    return;
+}
+
+
+ +

+¤³¤ÎÊ£¹ç¸¡º÷¥³¡¼¥É¤Ï¡¢Ê£¹ç¸¡º÷¤Î¤¿¤á¤Î´Ø¿ô¤ÇɬÍפȤʤê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢eb_multi_title() ¤Ï¡¢»ØÄꤷ¤¿Ê£¹ç¸¡º÷¤ÎÂê̾ +(Îã:¡Ö¿Í̾¸¡º÷¡×¡ÖÉѽÐÍѸ측º÷¡×) ¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤Ç¤¹¤¬¡¢¤³¤Î¤È¤­¤Î +Ê£¹ç¸¡º÷¤Î»ØÄê¤Ë¤Ï¡¢Ê£¹ç¸¡º÷¥³¡¼¥É¤òÍѤ¤¤Þ¤¹¡£ +°Ê²¼¤ÎÎã¤Ç¤Ï¡¢°ìÍ÷¤ÎÀèƬ¤ËºÜ¤Ã¤Æ¤¤¤ëÊ£¹ç¸¡º÷ (multi_codes[0]) +¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+char title[EB_MAX_MULTI_TITLE_LENGTH + 1];
+
+if (eb_multi_title(&book, multi_codes[0], title)
+    != EB_SUCCESS) {
+    printf("eb_multi_title() failed\n");
+    return;
+}
+
+
+ +

+¤µ¤é¤Ë´Ø¿ô¤Ë¤è¤Ã¤Æ¤Ï¡¢Ê£¹ç¸¡º÷¥³¡¼¥É¤Ë²Ã¤¨¤Æ¡¢²¿ÈÖÌܤÎÆþÎϸ줫¤â»ØÄê +¤·¤Æ¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ÆÃÄê¤ÎÆþÎϸì¤ÎÂêÌܤòÆÀ¤ë´Ø¿ô eb_multi_entry_label() +¤¬¡¢¤³¤ì¤Ë³ºÅö¤·¤Þ¤¹¡£ +0 ÈÖÌܤÎÆþÎϸì (¤Ä¤Þ¤êÀèƬ¤ÎÆþÎϸì) ¤ÎÂêÌܤò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë +¤·¤Þ¤¹¡£ +

+ +
+
+char label[EB_MAX_MULTI_LABEL_LENGTH + 1];
+
+if (eb_multi_entry_label(&book, multi_code[0], 0, label)
+    != EB_SUCCESS) {
+    printf("eb_multi_entry_label() failed\n");
+    return;
+}
+
+
+ +

+Ê£¹ç¸¡º÷¤ò¹Ô¤¦´Ø¿ô¤Ï¡¢eb_search_multi() ¤Ç¤¹¡£ +»È¤¤Êý¤Ï¾ò·ï¸¡º÷¤È¤Û¤ÜƱ¤¸¤Ç¡¢ÆþÎϸì¤Îʸ»úÎó¤òÇÛÎó¤Ë¤·¤¿¤â¤Î¤ò°ú¿ô +¤È¤·¤ÆÅϤ·¡¢ÇÛÎó¤ÎºÇ¸å¤Ë¤Ï NULL ¤òÃÖ¤¤¤Æ²¼¤µ¤¤¡£ +Ëä¤á¤é¤ì¤Æ¤¤¤Ê¤¤ÆþÎϸì¤Î¤È¤³¤í¤Ë¤Ï¡¢¶õʸ»úÎó¤òÃÖ¤­¤Þ¤¹¡£ +

+ +

+eb_search_multi() ¤â¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤ò¹Ô¤¦¤À¤±¤Ç¡¢°ìÃפ·¤¿ +¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +¼èÆÀ¤¹¤ë¤Ë¤Ï eb_hit_list() ¤ò»È¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¤Ê¤ª¡¢Ê£¹ç¸¡º÷¤ÎÆþÎϸì¤Ë¤è¤Ã¤Æ¤Ï +¸õÊä°ìÍ÷ (candidates) ¤¬¤¢¤é¤¸¤áÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤ò¤¢¤é¤«¤¸¤áÎóµó¤·¤Æ¤ª¤­¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥æ¡¼¥¶¤ËÁªÂò¤µ¤»¤ë»ÅÁȤߤǤ¹¡£ +¸õÊä°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤³¤Î¾Ï¤Ç¤Ï¤Ê¤¯¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡×¤Î¾Ï¤ÇÀâÌÀ¤·¤Þ¤¹ +(¡ÖÊ£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ + +

°ìÃ×¥¨¥ó¥È¥ê¤Î¾ðÊó

+ +

+eb_hit_list() ¤Ï¡¢¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¸¡º÷ (Á°Êý°ìÃס¢¸åÊý°ìÃס¢ +´°Á´°ìÃס¢¾ò·ï¡¢Ê£¹ç) ¤Ë°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤È¸«¤Ä¤«¤Ã¤¿¥¨¥ó¥È¥ê¤Î +¸Ä¿ô¤ò¡¢¤½¤ì¤¾¤ì EB_Hit ·¿¤ÎÇÛÎóÎΰ褪¤è¤Ó int ·¿¤Î +Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤±
+ * ¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+EB_Hit ÇÛÎó¤Î¸Ä¡¹¤ÎÍ×ÁǤˤϡ¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î +¸«½Ð¤· (heading) ¤È ËÜʸ (text) ¤Î³«»Ï°ÌÃÖ¤¬ +½ñ¤­¹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¸«½Ð¤·
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¡¡£Å£Â¡²£È£é£ô¡¡¡¡¡¡¨®¨¬¨»£ì£é£â£ò£á£ò£é£á£î¡¡£î¡¥¨¢
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤¡¡¨­¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+¨¢£è£å£á£ä£é£î£ç¨»¨¬¨°¡¡¡¡ËÜʸ
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢¡¡¡¡¡¡£ô£å£ø£ô¨»¨¬¨¬¨¬¨»£ì£é£â£ò£á£ò£é£á£î¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥¡¡¡¡¡¡¨¢£î¡¥¡Ê£±¡Ë£Á¡¡£ð£å£ò£ó£ï£î¡¡£÷£è£ï¡¡£é£ó¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢£á¡¡£ó£ð£å£ã£é£á£ì£é£ó£ô¡¡£é£î¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢£ì£é£â£ò£á£ò£ù¡¡£÷£ï£ò£ë¡¥¡Ê£²¡Ë¡¥¡¥¡¥¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¸«½Ð¤·¤ÈËÜʸ¤Ë¤Ä¤¤¤Æ¤Î¤è¤ê¾Ü¤·¤¤²òÀâ¤È¼èÆÀÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

»Ä¤Ã¤Æ¤¤¤ë¥¨¥ó¥È¥ê¤Î¼èÆÀ

+ +

+Á°¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢eb_hit_list() ¤ò¸Æ¤Ó½Ð¤¹¤È¤­¤Ï¡¢°ìÃפ¹¤ë +¥¨¥ó¥È¥ê¤òºÇÂç¤Ç²¿¸Ä¤Þ¤Çõ¤¹¤Î¤«¤ò°ú¿ô¤Ç»ØÄꤷ¤Þ¤¹¡£ +¤Þ¤¿¡¢eb_hit_list() ¤Ï½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢¼ÂºÝ¤Ë¸«¤Ä¤«¤Ã¤¿ +¥¨¥ó¥È¥ê¤Î¿ô¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ë¶µ¤¨¤Þ¤¹¡£ +

+ +
+
+error_code = eb_hit_list(&book, MAX_HITS, hits, &hit_count);
+if (error_code == EB_SUCCESS)
+    printf("%d entries found\n", hit_count);
+
+
+ +

+»ØÄꤷ¤¿ºÇÂç¸Ä¿ô¤è¤ê¤â¿¤¯¤Î°ìÃ×¥¨¥ó¥È¥ê¤¬ÉûËܤ˸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ +eb_hit_list() ¤ò·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢»Ä¤ê¤Î¥¨¥ó¥È¥ê¤ò +¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+for (;;) {
+    if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+        != EB_SUCCESS) {
+        fprintf(stderr, "an error occurs.\n");
+        return;
+    }
+    if (hit_count == 0)
+        break;
+    /* ¼èÆÀ¤·¤¿°ìÃ×¥¨¥ó¥È¥ê¤Î½èÍý */
+}
+
+
+ +

+°ìÃ×¥¨¥ó¥È¥ê¤¬¤â¤¦»Ä¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢eb_hit_list() ¤Ï +&hit_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ó¤Ç¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢ÅÓÃæ¤Ç eb_hit_list() ¤¬¼ºÇÔ¤¹¤ë¤È +(EB_SUCCESS °Ê³°¤ÎÃͤòÊÖ¤¹¤È)¡¢¸¡º÷¥ê¥¯¥¨¥¹¥È¤Ë´Ø¤¹¤ë +¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È¤µ¤ì¤ë¤¿¤á¡¢°ìÃ×¥¨¥ó¥È¥ê¤Î¼èÆÀ¤ò¤½¤ì°Ê¾å³¤±¤ë¤³¤È¤Ï +¤Ç¤­¤Þ¤»¤ó¡£ +

+ + +

½ÅÊ£¥¨¥ó¥È¥ê¤Îºï½ü

+ +

+eb_hit_list() ¤òÍѤ¤¤Æ°ìÃפ·¤¿¥¨¥ó¥È¥ê¤ò¼èÆÀ¤¹¤ë¤È¡¢Ãæ¿È¤¬ +¼Â¼ÁŪ¤ËÊѤï¤é¤Ê¤¤¥¨¥ó¥È¥ê¤¬Ê£¿ô´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢¤³¤¦¤·¤¿½ÅÊ£¥¨¥ó¥È¥ê¤Îºï½ü¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +ɬÍפʤ顢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤Ç¹Ô¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+½ÅÊ£¤ò´°àú¤Ë¼è¤ê½ü¤¯¤Ê¤é¡¢°Ê²¼¤Î¤¹¤Ù¤Æ¤Î¾ò·ï¤Ë°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò +½ÅÊ£¥¨¥ó¥È¥ê¤È¤ß¤Ê¤·¡¢ÆóÅÙÌܰʹߤ˽и½¤·¤¿¥¨¥ó¥È¥ê¤òºï½ü¤·¤Þ¤¹¡£ +

+ +
    +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹ËÜʸ¤Î°ÌÃÖ¤¬Æ±¤¸ +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹¸«½Ð¤·¤Îʸ»úÎó (°ÌÃ֤ǤϤʤ¯Ê¸»úÎ󤽤Τâ¤Î) ¤¬Æ±¤¸ +
+ +

+(¸«½Ð¤·Ê¸»úÎó¤Î¼èÆÀÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+½ÅÊ£¤Ï¡¢Ä¾Á°¤Î¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¤Î¤ßµ¯¤³¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢eb_hit_list() ¤Ç°ìÃ×¥¨¥ó¥È¥ê¤¬ 50 ¸ÄÆÀ¤é¤ì¤¿¾ì¹ç¡¢ +ºÇ¸å¤Î 50 ¸ÄÌܤÏÁ°Êý¤Î 49 ¸Ä¤È½ÅÊ£¸¡ºº¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢Á´ÂΤǤϥ¨¥ó¥È¥êƱ»Î¤ÎÈæ³Ó¤ò 1 + 2 + ... + 49 = 1225 ²ó +¹Ô¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+½ñÀҤˤè¤Ã¤Æ¤Ï½ÅÊ£¥¨¥ó¥È¥ê¤¬¼è¤ê¤­¤ì¤Ê¤¤²ÄǽÀ­¤â¤¢¤ê¤Þ¤¹¤¬¡¢¤â¤¦¾¯¤· +´Êñ¤ÊÊýË¡¤â¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£ +½èÍý¤ò´Êñ¤Ë¤¹¤ëÂè°ì¤ÎÊýË¡¤Ï¡¢½ÅÊ£¥¨¥ó¥È¥ê¤ÎȽÄê¾ò·ï¤ò¼¡¤Î¤è¤¦¤ËÊѤ¨¤ë +¤³¤È¤Ç¤¹¡£ +

+ +
    +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹ËÜʸ¤Î°ÌÃÖ¤¬Æ±¤¸ +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹¸«½Ð¤·¤Îʸ»úÎó¤Î°ÌÃÖ¤¬Æ±¤¸ +
+ +

+¤µ¤é¤Ë½èÍý¤ò´Êñ¤Ë¤¹¤ë¤Ë¤Ï¡¢Ä¾Á°¤Î 1¸Ä¤Î¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¤À¤±½ÅÊ£¸¡ºº¤ò +¹Ô¤¦¤È¤¤¤¦ÊýË¡¤â¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ê¤é¡¢50 ¸Ä¤Î°ìÃ×¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¡¢Èæ³Ó¤Ï 49 ²ó¤ÇºÑ¤ß¤Þ¤¹¡£ +¤¿¤À¤·¤³¤ÎÊýË¡¤Ï¡¢½ñÀҤˤè¤Ã¤Æ¤Ï¤Þ¤Ã¤¿¤¯¸ú²Ì¤¬¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     word <book-path> <subbook-index> <word>
+ * Îã:
+ *     word /cdrom 0 apple
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤ÎÆÃÄê¤ÎÉûËܤÎÃ椫¤é <word>
+ *     ¤È¤¤¤¦Ã±¸ì¤ò´°Á´°ìÃ׸¡º÷¤Çõ¤·¡¢¥Ò¥Ã¥È¤·¤¿¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤Î
+ *     ¸«½Ð¤·¤òɽ¼¨¤·¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/text.h>
+
+#define MAX_HITS 50
+#define MAXLEN_HEADING 127
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    EB_Hit hits[MAX_HITS];
+    char heading[MAXLEN_HEADING + 1];
+    int subbook_count;
+    int subbook_index;
+    int hit_count;
+    ssize_t heading_length;
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 4) {
+        fprintf(stderr, "Usage: %s book-path subbook-index word\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    error_code = eb_set_subbook(&book, subbook_list[subbook_index]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ñ¸ì¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤òÁ÷½Ð¡£*/
+    error_code = eb_search_exactword(&book, argv[3]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to search for the word, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[3]);
+        goto die;
+    }
+
+    for (;;) {
+        /* »Ä¤Ã¤Æ¤¤¤ë¥Ò¥Ã¥È¥¨¥ó¥È¥ê¤ò¼èÆÀ¡£*/
+        error_code = eb_hit_list(&book, MAX_HITS, hits, &hit_count);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get hit entries, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+        if (hit_count == 0)
+            break;
+
+        for (i = 0; i < hit_count; i++) {
+            /* ¸«½Ð¤·¤Î°ÌÃ֤ذÜÆ°¡£*/
+            error_code = eb_seek_text(&book, &(hits[i].heading));
+            if (error_code != EB_SUCCESS) {
+                fprintf(stderr, "%s: failed to seek the subbook, %s\n",
+                    argv[0], eb_error_message(error_code));
+                goto die;
+            }
+
+            /* ¸«½Ð¤·¤ò¼èÆÀ¤·¤Æɽ¼¨¡£*/
+            error_code = eb_read_heading(&book, NULL, NULL, NULL,
+                MAXLEN_HEADING, heading, &heading_length);
+            if (error_code != EB_SUCCESS) {
+                fprintf(stderr, "%s: failed to read the subbook, %s\n",
+                    argv[0], eb_error_message(error_code));
+                goto die;
+            }
+            printf("%s\n", heading);
+        }
+    }
+        
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Hit ·¿

+ +

+EB_Hit ¤Ï¡¢¸¡º÷¤Ë°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤ò³ÊǼ¤¹¤ë¤¿¤á¤Î +¥Ç¡¼¥¿·¿¤Ç¤¹¡£ +ÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Hit_Struct EB_Hit;
+
+struct EB_Hit_Struct {
+    EB_Position heading;  /* ¸«½Ð¤·¤Î°ÌÃÖ */
+    EB_Position text;     /* ËÜʸ¤Î°ÌÃÖ   */
+};
+
+
+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Hit ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ + +

EB_Position ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Position ¤Ï¡¢ÉûËܤΥǡ¼¥¿¤Î°ÌÃÖ¤òɽ¤·¤Þ¤¹¡£ +ÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Position_Struct EB_Position;
+
+struct EB_Position_Struct {
+    int page;     /* ¥Ú¡¼¥¸ÈÖ¹æ */
+    int offset;   /* ¥Ú¡¼¥¸Æâ¤Î¥ª¥Õ¥»¥Ã¥È */
+};
+
+
+ +

+¥Ú¡¼¥¸ÈÖ¹æ¤Ï 1 ¤«¤é»Ï¤Þ¤ê¡¢¥Ú¡¼¥¸Æâ¤Î¥ª¥Õ¥»¥Ã¥È¤Ï 0 ¡Á 2047 ¤ÎÈÏ°Ï¤È +¤Ê¤ê¤Þ¤¹¡£ +¤¿¤À¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤òºîÀ®¤¹¤ë¾å¤Ç¡¢¤³¤Î¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¯ +ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +¤Î¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ + +

EB_Multi_Search_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Multi_Search_Code ¤ÏÊ£¹ç¸¡º÷¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷¤Ï¡¢¤½¤ì¤¾¤ì°ì°Õ¤ÎÊ£¹ç¸¡º÷¥³¡¼¥É¤ò +»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢ÉÔÀµ¤ÊÊ£¹ç¸¡º÷¥³¡¼¥ÉÃͤòɽ¤¹ EB_MULTI_INVALID ¤È¤¤¤¦ +ÆÃÊ̤ÊÉûËÜ¥³¡¼¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +ÍøÍѲÄǽ¤ÊÊ£¹ç¸¡º÷¤ËÂФ·¤Æ¡¢¤³¤ÎÊ£¹ç¸¡º÷¥³¡¼¥É¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¤³¤È¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

int eb_have_word_search (EB_Book *book)

+ +

int eb_have_endword_search (EB_Book *book)

+ +

int eb_have_exactword_search (EB_Book *book)

+ +

+´Ø¿ô eb_have_word_search() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤÇÁ°Êý°ìÃ׸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍÍ¤Ë eb_have_endword_search() ¤Ï¸åÊý°ìÃ׸¡º÷¥á¥½¥Ã¥É¤Ë +¤Ä¤¤¤Æ¡¢eb_have_exactword_search() ¤Ï´°Á´°ìÃ׸¡º÷¥á¥½¥Ã¥É¤Ë +¤Ä¤¤¤ÆÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÍøÍѲÄǽ¤Ê¤é 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_keyword_search (EB_Book *book)

+ +

+´Ø¿ô eb_have_keyword_search() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤǾò·ï¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÍøÍѲÄǽ¤Ê¤é 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_multi_search (EB_Book *book)

+ +

+´Ø¿ô eb_have_multi_search() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤÇÊ£¹ç¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ºÇÄã 1 ¼ïÎà¤Ç¤âÍøÍѲÄǽ¤Ê¤é 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_search_list (EB_Book *book, EB_Multi_Search_Code *multi_list, int *multi_count)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷¤òÄ´¤Ù¡¢Ê£¹ç¸¡º÷¥³¡¼¥É¤Î°ìÍ÷¤ò +EB_Multi_Search_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢multi_list +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_MULTI_SEARCHES ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢Ê£¹ç¸¡º÷¤Î¼ïÎà¿ô¤ò multi_count ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_entry_count (EB_Book *book, EB_Multi_Search_Code multi_id, int *entry_count)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ÆþÎϸì¤Î +¸Ä¿ô¤ò entry_count ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­½ñ¤­¹þ¤Þ¤ì¤ëÆþÎϸì¤Î¸Ä¿ô¤Ï¡¢1 °Ê¾å EB_MAX_MULTI_ENTRIES +°Ê²¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢entry_count ¤Î»Ø¤¹Îΰè¤Ë¤Ï 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_title (EB_Book *book, EB_Multi_Search_Code multi_id, char *title)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤ÎÂê̾¤ò title +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÂêÌܤϺÇĹ¤Ç EB_MAX_MULTI_TITLE_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢ÂêÌܤòɽ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ê¤éÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+½ñÀҤˤè¤Ã¤Æ¤Ï¡¢Ê£¹ç¸¡º÷¤ÏÍÑ°Õ¤·¤Æ¤¤¤Æ¤â¡¢Ê£¹ç¸¡º÷¤ÎÂê̾¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ +¤¤¤Ê¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤½¤Î¾ì¹ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬Âå¤ï¤ê¤ËÉÕ¤±¤¿Âê̾¤¬ title ¤Ë +½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤¬ÉÕ¤±¤ëÂê̾¤Ï¡¢"Multi Search 1", "Multi Search 2", ... +¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ç¤¢¤ì¤Ð¡¢Âê̾¤ÏÆüËܸì EUC ¤Ç½ñ¤«¤ì¤¿¡ÖÊ£¹ç¸¡º÷ 1¡× +¡ÖÊ£¹ç¸¡º÷ 2¡×... ¤È¤¤¤¦Ê¸»úÎó¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢label ¤Î»Ø¤¹Îΰè¤Ë¤Ï¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_entry_label (EB_Book *book, EB_Multi_Search_Code multi_id, int entry_index, char *label)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ +entry_index ÈÖÌܤθ¡º÷¸ì¤ÎÂêÌܤò label ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +entry_index ¤Ï¡¢ÀèƬ¤Î¸¡º÷¸ì¤ò 0 ÈÖÌܤȿô¤¨¤Þ¤¹¡£ +ÂêÌܤϺÇĹ¤Ç EB_MAX_MULTI_LABEL_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢ÂêÌܤòɽ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ê¤éÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢label ¤Î»Ø¤¹Îΰè¤Ë¤Ï¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_multi_entry_have_candidates (EB_Book *book, EB_Multi_Search_Code multi_id, int entry_index)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ +entry_index ÈÖÌܤθ¡º÷¸ì¤¬¸õÊä°ìÍ÷¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤Þ¤¹¡£ +entry_index ¤Ï¡¢ÀèƬ¤Î¸¡º÷¸ì¤ò 0 ÈÖÌܤȿô¤¨¤Þ¤¹¡£ +

+ +

+»ý¤Ã¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¤Þ¤¹¡£ +»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤¢¤ë¤¤¤Ï +multi_id, ¤ä entry_index ¤¬ÉÔÀµ¤ÊÃͤÀ¤Ã¤¿¾ì¹ç¤Ï +0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_entry_candidates (EB_Book *book, EB_Multi_Search_Code multi_id, int entry_index, EB_Position *position)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ +entry_index ÈÖÌܤθ¡º÷¸ì¤Î¸õÊä°ìÍ÷¤Î°ÌÃÖ¤ò position +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÀèƬ¤Î¸¡º÷¸ì¤¬ 0 ÈÖÌܤˤʤê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢positin ¤Î»Ø¤¹Îΰè¤Ë¤Ï eb_seek_text() +¤¬É¬¤º¼ºÇÔ¤¹¤ë°ÌÃÖ¾ðÊó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_search_word (EB_Book *book, const char *input_word)

+ +

EB_Error_Code eb_search_endword (EB_Book *book, const char *input_word)

+ +

EB_Error_Code eb_search_exactword (EB_Book *book, const char *input_word)

+ +

+´Ø¿ô eb_search_word() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËÜ¤Ë +ÂФ¹¤ëÁ°Êý°ìÃ׸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +ƱÍÍ¤Ë eb_search_endword() ¤Ï¸åÊý°ìÃ׸¡º÷¤ò¡¢ +eb_search_exactword() ¤Ï´°Á´°ìÃ׸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +

+ +

+¸¡º÷¤¹¤ë¸ì¤Ï¡¢°ú¿ô input_word ¤Ç»ØÄꤷ¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë¤À¤±¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î +¾ðÊó¤òÊÖ¤¹¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ë¤Ï eb_hit_list() ¤ò»È¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤¿¸¡º÷¤Î¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È +¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤½¤Î¾õÂÖ¤Î¤Þ¤Þ eb_hit_list() ¤ò¸Æ¤Ó½Ð¤·¤Æ¤â¡¢ +¤ä¤Ï¤ê¼ºÇԤ˽ª¤ï¤ê¤Þ¤¹¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢´Ø¿ô¤ËÅϤ¹¸¡º÷¸ì¤Ï ISO 8859-1 +¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¾ì¹ç¤Ï¡¢ÆüËܸì EUC ¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÉÔÀµ¤Êʸ»úÈÖ¹æ¤ò´Þ¤ó¤Ç¤¤¤¿¾ì¹ç¡¢´Ø¿ô¤Ï EB_ERR_BAD_WORD ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+²Ã¤¨¤Æ¡¢¸¡º÷¸ì¤Ï 1 ¥Ð¥¤¥È°Ê¾å¡¢EB_MAX_WORD_LENGTH (= 255) +¥Ð¥¤¥È°Ê²¼¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +Ť¹¤®¤ë¾ì¹ç¤Ï¡¢EB_ERR_TOO_LONG_WORD ¤ò¡¢ +Ťµ¤¬ 0 (¶õʸ»úÎó) ¤Î¾ì¹ç¤Ï EB_ERR_EMPTY_WORD ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Ê¤ª¡¢°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤¬ºÇÄã 1 ¸Ä¤¢¤ë¤«¤É¤¦¤«¤Ï¡¢Ìá¤êÃͤˤϱƶÁ¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_search_keyword (EB_Book *book, const char * const input_words[])

+ +

EB_Error_Code eb_search_cross (EB_Book *book, const char * const input_words[])

+ +

EB_Error_Code eb_search_multi (EB_Book *book, EB_Multi_Search_Code multi_id, const char * const input_words[])

+ +

+´Ø¿ô eb_search_keyword() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÂФ¹¤ë¾ò·ï¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +ƱÍÍ¤Ë eb_search_cross() ¤Ï¥¯¥í¥¹¸¡º÷¤ò¡¢ +eb_search_multi() ¤ÏÊ£¹ç¸¡º÷¤ò¤½¤ì¤¾¤ì¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +

+ +

+¸¡º÷¤¹¤ë¸ì¤Ï¡¢°ú¿ô input_words ¤Ç»ØÄꤷ¤Þ¤¹¡£ +¾ò·ï¸¡º÷¤ÈÊ£¹ç¸¡º÷¤Ï¤¤¤º¤ì¤âÊ£¿ô¸Ä¤Î¸¡º÷¸ì¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¤Î¤Ç¡¢¸¡º÷¸ì¤ò +ÇÛÎó¤Ë¤·¤ÆÅϤ·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢ÇÛÎó¤ÎËöÈø¤ÎÍ×ÁÇ¤Ë¤Ï NULL ¤òÃÖ¤­¡¢ÇÛÎó¤Î½ªÃ¼¤ò +ÌÀ¼¨¤·¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë¤À¤±¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤ò +ÊÖ¤¹¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ë¤Ï eb_hit_list() ¤ò»È¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤¿¸¡º÷¤Î¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È +¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤½¤Î¾õÂÖ¤Î¤Þ¤Þ eb_hit_list() ¤ò¸Æ¤Ó½Ð¤·¤Æ¤â¡¢ +¤ä¤Ï¤ê¼ºÇԤ˽ª¤ï¤ê¤Þ¤¹¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢´Ø¿ô¤ËÅϤ¹¸¡º÷¸ì¤Ï ISO 8859-1 +¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¾ì¹ç¤Ï¡¢ÆüËܸì EUC ¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÉÔÀµ¤Êʸ»úÈÖ¹æ¤ò´Þ¤ó¤Ç¤¤¤¿¾ì¹ç¡¢´Ø¿ô¤Ï EB_ERR_BAD_WORD ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+²Ã¤¨¤Æ¡¢¸Ä¡¹¤Î¸¡º÷¸ì¤Ï EB_MAX_WORD_LENGTH (= 255) ¥Ð¥¤¥È°Ê²¼ +¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +Ť¹¤®¤ë¾ì¹ç¤Ï¡¢EB_ERR_TOO_LONG_WORD ¤òÊÖ¤·¤Þ¤¹¡£ +Ťµ¤¬ 0 ¥Ð¥¤¥È¤Î¸¡º÷¸ì¤Ï̵»ë¤µ¤ì¤Þ¤¹¤¬¡¢¾¯¤Ê¤¯¤È¤â 1 ¸Ä¤Î¸¡º÷¸ì¤ÏŤµ +¤¬ 1 °Ê¾å¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£ +Ťµ¤¬ 1 °Ê¾å¤Î¸¡º÷¸ì¤¬ 1 ¤Ä¤â¤Ê¤¤¤È¤­¤Ï¡¢EB_ERR_NO_WORD ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+ËöÈø¤Î NULL ¤ò½ü¤¤¤¿ÇÛÎó¤ÎÍ×ÁÇ¿ô¤Ï¡¢¾ò·ï¸¡º÷¤Ç¤Ï EB_MAX_KEYWORDS +°Ê²¼¡¢¥¯¥í¥¹¸¡º÷¤Ç¤Ï EB_MAX_CROSS_ENTRIES °Ê²¼¡¢ +Ê£¹ç¸¡º÷¤Ç¤Ï EB_MAX_MULTI_ENTRIES °Ê²¼¤Ç¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +¸Ä¿ô¤¬Â¿¤¹¤®¤ë¤È EB_ERRO_TOO_MANY_WORDS ¤òÊÖ¤·¤Þ¤¹¡£ +¶õʸ»úÎó¤ÎÍ×ÁǤòº¹¤·°ú¤¤¤¿¸Ä¿ô¤Ç¤Ï¤Ê¤¯¡¢Ã±½ã¤ËÅϤµ¤ì¤¿Í×ÁÇ¿ô¤¬¾å¸Â¤ò +Ķ¤¨¤Æ¤¤¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤¬É¬ÍפǤ¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Ê¤ª¡¢°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤¬ºÇÄã 1 ¸Ä¤¢¤ë¤«¤É¤¦¤«¤Ï¡¢Ìá¤êÃͤˤϱƶÁ¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_hit_list (EB_Book *book, int max_hit_count, EB_Hit *hit_list, int *hit_count)

+ +

+´Ø¿ô eb_hit_list() ¤Ï¡¢¤¢¤é¤«¤¸¤á°Ê²¼¤Î¤¤¤º¤ì¤«¤Î´Ø¿ô¤Ç +¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¸¡º÷¤ò¼Â¹Ô¤·¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +
    +
  • eb_search_word() (Á°Êý°ìÃ׸¡º÷) +
  • eb_search_endword() (¸åÊý°ìÃ׸¡º÷) +
  • eb_search_exactword() (´°Á´°ìÃ׸¡º÷) +
  • eb_search_keyword() (¾ò·ï¸¡º÷) +
  • eb_search_cross() (¥¯¥í¥¹¸¡º÷) +
  • eb_search_multi() (Ê£¹ç¸¡º÷) +
+ +

+¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë¡¢¾åµ­¤Î¤¤¤º¤ì¤«¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤ËÀ®¸ù¤·¤Æ +¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +

+ +

+eb_hit_list() ¤ÏºÇÂç¤Ç max_hit_count ¸Ä¤Î +°ìÃ×¥¨¥ó¥È¥ê¤ò hit_list ¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤½¤·¤Æ¡¢½ñ¤­¹þ¤ó¤À°ìÃ×¥¨¥ó¥È¥ê¤Î¿ô¤ò hit_count ¤¬»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤½¤ì°Ê¾å¤Î¸Ä¿ô¤Î°ìÃ×¥¨¥ó¥È¥ê¤¬Â¸ºß¤¹¤ë¾ì¹ç¡¢»Ä¤Ã¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤Ï¡¢ +¤³¤Î´Ø¿ô¤ò·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤ÇÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢°Ê²¼¤Ëµó¤²¤¿´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¥ê¥¯¥¨¥¹¥È¤·¤¿¸¡º÷¤Ë´Ø¤¹¤ë¾õÂÖµ­Ï¿ +¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï·Ñ³¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +
    +
  • eb_set_subbook() +
  • eb_unset_subbook() +
  • eb_load_all_subbooks() +
  • eb_bind() +
  • eb_finalize_book() +
  • eb_search_word() +
  • eb_search_endword() +
  • eb_search_exactword() +
  • eb_search_keyword() +
  • eb_search_cross() +
  • eb_search_multi() +
+ +

+·«¤êÊÖ¤·¸Æ¤ó¤À¾ì¹ç¤â¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤Ï¤½¤ÎÅÔÅÙ hit_list +¤ÎÀèƬ¤«¤é½ñ¤­¹þ¤ß¡¢hit_count ¤¬»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤àÃͤ⡢¤½¤Î²ó +¤Î eb_hit_list() ¤Î¸Æ¤Ó½Ð¤·¤Ç½ñ¤­¹þ¤ó¤À°ìÃ×¥¨¥ó¥È¥ê¤Î¿ô¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤¿¤È¤¨°ìÃפ·¤¿¥¨¥ó¥È¥ê¤¬¤Ê¤¯¤Æ¤â¡¢½èÍý¤¬Àµ¾ï¤Ë½ªÎ»¤¹¤ì¤Ð¡¢´Ø¿ô¤Ï +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¼ºÇÔ¤¹¤ë¤È¡¢hit_count ¤¬»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤¿¸¡º÷¤Î¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢ +¤³¤ì°Ê¾å eb_hit_list() ¤ò¸Æ¤ó¤Ç¡¢»Ä¤Ã¤¿°ìÃ×¥¨¥ó¥È¥ê¤ò¼èÆÀ +¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢Àè¤Ëµó¤²¤¿¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤¬À®¸ù¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥ³¤Î´Ø¿ô¤ò¸Æ¤Ö¤È¡¢ +EB_ERR_NO_PREV_SEARCH ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-09.html b/lib/ebu/doc/eb-09.html new file mode 100644 index 0000000..9fe39b7 --- /dev/null +++ b/lib/ebu/doc/eb-09.html @@ -0,0 +1,3001 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¥Æ¥­¥¹¥È¥Ç¡¼¥¿

+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤Ï¡¢¸¡º÷¤ÈʤֽÅÍפʵ¡Ç½¤Ç¤¹¡£ +

+ +

+¤³¤³¤Ç¸À¤¦ ¥Æ¥­¥¹¥È¥Ç¡¼¥¿ (text data) ¤Ï¡¢ +ËÜʸ (text body) ¤È¤¤¤¦°ÕÌ£¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +CD-ROM ½ñÀҤˤϳΤ«¤ËËÜʸ¤â¸ºß¤·¤Þ¤¹¤¬¡¢ËÜʸ¤ÈƱ¤¸¥Ç¡¼¥¿·Á¼°¤òÍѤ¤¤Æ +½ñ¤«¤ì¤¿¥Ç¡¼¥¿¤¬¿ô¼ïÎढ¤ê¤Þ¤¹¡£ +Ëܽñ¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥Ç¡¼¥¿¤ò¤Þ¤È¤á¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤¬°·¤¨¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤Ï¡¢¼¡¤Î¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
    +
  • ¸«½Ð¤· +
  • ËÜʸ +
  • ¥á¥Ë¥å¡¼ +
  • Ãøºî¸¢É½¼¨ +
  • Ê£¹ç¸¡º÷¤ÎÆþÎϸì¤Î¸õÊä°ìÍ÷ +
+ +

+ËܾϤǤϡ¢¤³¤ì¤é¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤È²Ã¹©ÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥·¡¼¥¯¤ÈÆɤ߹þ¤ß

+ +

+UNIX ¤Ç¥×¥í¥°¥é¥à¤òÁȤó¤À·Ð¸³¤Î¤¢¤ëÊý¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤òÆɤ߹þ¤à +ºÝ¤ËÍѤ¤¤ë lseek(), read() ¤È¤¤¤¦¥·¥¹¥Æ¥à¥³¡¼¥ë +¤ò¤´Â¸¤¸¤ÎÊý¤â¿¤¤¤Ç¤·¤ç¤¦¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤â¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤Ë¤Ï¡¢¥·¡¼¥¯ (seek) ¤È +Æɤ߹þ¤ß (read) ¤È¤¤¤¦ 2 ¤Ä¤ÎÁàºî¤Ç¹Ô¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤ä¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï¤Ê¤¯¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤òÄ̤¸¤Æ¥·¡¼¥¯¤äÆɤ߹þ¤ß¤ÎÁàºî¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢¥·¡¼¥¯»þ¤Ë»ØÄꤹ¤ë°ÌÃÖ¤â off_t ·¿¤Ç¤Ï¤Ê¤¯¡¢ +EB_Position ·¿ (¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÍѤ¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ËÜʸ¤ÎÀèƬ°ÌÃ֤ϡ¢eb_text() ¤È¤¤¤¦´Ø¿ô¤ò»È¤Ã¤Æ +¼¡¤Î¤è¤¦¤Ë¼èÆÀ¤Ç¤­¤Þ¤¹¤¬¡¢¤³¤Î¤È¤­¤â°ÌÃ֥ǡ¼¥¿¤Ï EB_Position +·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +
+
+EB_Position position;
+
+/* ´Ø¿ô¤Î½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢position ¤ËËÜʸ¤Î³«»Ï°ÌÃÖ¤¬
+ * ½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ */
+if (eb_text(&book, &position) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+»²¹Í¤Þ¤Ç¤Ë¡¢EB_Position ·¿¤ÎÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Position_Struct EB_Position;
+
+struct EB_Position_Struct {
+    int page;     /* ¥Ú¡¼¥¸ÈÖ¹æ */
+    int offset;   /* ¥Ú¡¼¥¸Æâ¤Î¥ª¥Õ¥»¥Ã¥È */
+};
+
+
+ +

+¸¡º÷¤·¤Æ¸«¤Ä¤«¤Ã¤¿°ìÃ×¥¨¥ó¥È¥ê¤Î¸«½Ð¤·¤äËÜʸ¤òÆɤ߹þ¤àºÝ¤Ë¤â¡¢°ÌÃÖ¾ðÊó +¤Î»ØÄê¤Ë¤Ï EB_Position ·¿¤¬»È¤ï¤ì¤Þ¤¹¡£ +°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤Ï¡¢´Ø¿ô eb_hit_list() ¤Ë¤è¤Ã¤Æ +EB_Hit ¤È¤¤¤¦·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¤¬¡¢ +EB_Hit ·¿¤Ï¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +
+
+typedef struct {
+    EB_Position heading;   /* ¸«½Ð¤·¤Î°ÌÃÖ */
+    EB_Position text;      /* ËÜʸ¤Î°ÌÃÖ   */
+} EB_Hit;
+
+
+ +

+¤Ä¤Þ¤ê¡¢¤³¤Î¤È¤­¤Î¸«½Ð¤·¤ÈËÜʸ¤Î°ÌÃ֤⡢EB_Position ·¿¤Ç +ɽ¸½¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¹¡£ +

+ +

+¤Ç¤Ï¡¢¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤òÎã¤Ë¤·¤Æ¡¢¥·¡¼¥¯¤ÈÆɤ߹þ¤ß¤ò¹Ô¤Ã¤Æ¤ß¤Þ¤¹¡£ +¤Þ¤º¤Ï¡¢¥·¡¼¥¯¤«¤é¤Ç¤¹¡£ +¤³¤ì¤Ë¤Ï´Ø¿ô eb_seek_text() ¤òÍѤ¤¤Þ¤¹¡£ +¤³¤³¤Ç¤â¤ä¤Ï¤ê¡¢°ÌÃÖ¤Ï EB_Position ·¿¤ÇÅϤ·¤Þ¤¹¡£ +

+ +
+
+if (eb_seek_text(&book, &position) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¥Ç¡¼¥¿¤Î¼ïÎà (¸«½Ð¤·¡¢ËÜʸ ...) ¤Ë¤è¤é¤º¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥·¡¼¥¯¤Ï +¤¹¤Ù¤Æ eb_seek_text() ¤Ç¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎàÊÌ¤Ë +Æɤ߹þ¤ß°ÌÃÖ¤ò³Ð¤¨¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¯¡¢Á´¼ïÎà¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ç¶¦Í­¤¹¤ë +°ÌÃÖ¾ðÊó¤ò°ì¤Ä³Ð¤¨¤Æ¤¤¤ë¤À¤±¤Ç¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ËÜʸ¤òÆɤ߹þ¤ó¤À¸å¤Ç¡¢Ê̤ΰÌÃ֤˥·¡¼¥¯¤·¤Æ¸«½Ð¤·¤òÆɤ߹þ¤à¤È¡¢ +EB_Book ¤ÏËÜʸ¤ÎÆɤ߹þ¤ß°ÌÃ֤Τ³¤È¤Ï˺¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +

+ +

+¤µ¤Æ¡¢¥·¡¼¥¯¤¬½ª¤ï¤Ã¤¿¤é¡¢¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +Æɤ߹þ¤â¤¦¤È¤¹¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¡¢»ÈÍѤ¹¤ë´Ø¿ô¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +¸«½Ð¤·¤À¤±¤Ï eb_read_heading() ¤ò»È¤¤¤Þ¤¹¤¬¡¢¤½¤ì°Ê³°¤Ç¤Ï +eb_read_text() ¤ò»È¤¤¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢eb_read_text() ¤Î»ÈÍÑÎã¤Ç¤¹¡£ +

+ +
+
+#define MAX_LENGTH 1000
+char buffer[MAX_LENGTH + 1];
+ssize_t text_length;
+
+if (eb_read_text(&book, NULL, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+À®¸ù¤¹¤ë¤È¡¢text ¤Ë¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬¡¢ +text_length ¤Ë¤Ï¼ÂºÝ¤ËÆɤ߹þ¤ó¤À¥Ð¥¤¥È¿ô¤¬½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¤ÏºÇÂç¤Ç MAX_LENGTH ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¤µ¤é¤Ë¥Ê¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢buffer ¤Ë¤Ï +¤â¤¦ 1 ¥Ð¥¤¥Èʬ¤ÎÎΰ褬ɬÍפˤʤê¤Þ¤¹¡£ +

+ +

+eb_read_heading() ¤Î¸Æ¤Ó½Ð¤·Êý¤â¡¢eb_read_text() +¤È¤Þ¤Ã¤¿¤¯ÊѤï¤ê¤Þ¤»¤ó¡£ +

+ +
+
+if (eb_read_heading(&book, NULL, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+eb_read_text() ¤ä eb_read_heading() ¤ÇÆɤ߹þ¤ó¤À +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ïʿʸ¤Î¥Æ¥­¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¥Ê¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+printf("%s\n", text);   /* ½ÐÎϤ·¤Æ¤ß¤ë */
+
+
+ +

+Æɤ߹þ¤ß¤¿¤¤¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬Ä¹¤¹¤®¤Æ¡¢eb_read_text() +¤¢¤ë¤¤¤Ï eb_read_heading() ¤ò°ì²ó¸Æ¤Ó½Ð¤·¤¿¤À¤±¤Ç¤ÏÁ´Éô +Æɤ߹þ¤á¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢ºÆÅٸƤӽФ¹¤³¤È¤Ç³¤­¤Î¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉô·Á¼°

+ +

+Á°Àá¤ÎÎã¤Ç¤Ï¡¢Æɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢Ê¿Ê¸¥Æ¥­¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£ +¤±¤ì¤É¤â¡¢CD-ROM ½ñÀÒÆâ¤Ëʿʸ¥Æ¥­¥¹¥È¤Î¥Ç¡¼¥¿¤¬¡¢¤½¤Î¤Þ¤Þ¼ýÏ¿¤µ¤ì¤Æ¤¤¤ë +¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¼ÂºÝ¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÎã¤ò¡¢°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£ +º¸Â¦¤Î¥Ö¥í¥Ã¥¯¤Ï 16 ¿Ê¿ô¤Ç¥À¥ó¥×¤·¤¿ÍͻҤǡ¢±¦Â¦¤Ï¤½¤ì¤ò´ð¤Ë JIS X 0208 +(ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤Îʸ»ú¤òɽ¤·¤Æ¤¤¤ëÉôʬ¤ò [¡¡] ¤È¤¤¤¦·Á¤Ë +ľ¤·¤¿¤â¤Î¤Ç¤¹¡£ +

+ +
+
+     (16¿Ê¿ô¤Ë¤è¤ë¥À¥ó¥×)            (²Äǽ¤ÊÉôʬ¤ò¤«¤Ê´Á»ú¤ËÊÑ´¹)
+1f0900011f41010026321f611f042121   1f0900011f410100[¦²]1f611f04[¡¡]
+212721211f053e704a734a541f0a1f04   [¡§][¡¡]1f05[¾ð][Êó][ÊÔ]1f0a1f04
+214e1f0525372530255e1f04214f2121   [¡Î]1f05[¥·][¥°][¥Þ]1f04[¡Ï][¡¡]
+214a237323692367236d236121212370   [¡Ê][£ó][£é][£ç][£í][£á][¡¡][£ð]
+2372236f236a236523632374214b1f05   [£ò][£ï][£ê][£å][£ã][£ô][¡Ë]1f05
+
+
+ +

+±¦Â¦¤Î¥Ö¥í¥Ã¥¯¤ò¸«¤ë¤È¡¢¤ª¤ª¤è¤½Ê¿Ê¸¤Ë¶á¤¤·Á¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬¼ý¤á¤é¤ì¤Æ +¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¤¬¡¢¤È¤³¤í¤É¤³¤í¤Ë¡Öʸ»ú¡×¤Ç¤Ï¤Ê¤¤¥Ç¡¼¥¿¤â´Þ¤Þ¤ì¤Æ +¤¤¤Þ¤¹¡£ +

+ +

+ʸ»ú¤Ç¤Ï¤Ê¤¤Éôʬ¤Ï¡¢¤¹¤Ù¤Æ¡Ö¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¡×¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¤¹¡£ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤È¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò½ÐÎϤ¹¤ëºÝ¤Ë¡¢²þ¹Ô¤Î¶Ø»ß¤ä +¶¯Ä´½¤¾þ¤È¤¤¤Ã¤¿À©¸æ¾ðÊó¤òÅÁ¤¨¤ë¤¿¤á¤Î»ÅÁȤߤǤ¹¡£ +16 ¿Ê¿ô¤Î 1f ¤¬¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î³«»Ï¤ò°ÕÌ£¤·¤Þ¤¹¡£ +

+ +

+»²¹Í¤Þ¤Ç¤Ë¡¢¾å¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ç»È¤ï¤ì¤Æ¤¤¤ë¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ò +¤¹¤Ù¤ÆÎóµó¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
1f09 0001
+
+»ú²¼¤² (¥¤¥ó¥Ç¥ó¥È) ¤ÎÎ̤ò»ØÄê¡£ +(°ú¿ô¤¬ 0001 ¤Ê¤Î¤Ç¡¢»ú²¼¤²ÎÌ¤Ï 1¡£) +
1f41 0100
+
+¸¡º÷¥­¡¼¤Î³«»Ï¡£ +(°ú¿ô 0100 ¤Î°ÕÌ£¤Ë¤Ä¤¤¤Æ¤Ï¡¢JIS X 4081 ¤Ëµ­½Ò¤¬¤Ê¤¤¤¿¤áÉÔÌÀ¡£) +
1f61
+
+¸¡º÷¥­¡¼¤Î½ªÎ»¡£ +
1f04
+
+Ⱦ³Ñɽ¼¨¤Î³«»Ï¡£ +
1f05
+
+Ⱦ³Ñɽ¼¨¤Î½ªÎ»¡£ +
1f0a
+
+²þ¹Ô +
+ +

+Á°Àá¤Î¥×¥í¥°¥é¥à¤Ç¡¢Æɤ߹þ¤ó¤À¥Ç¡¼¥¿¤¬Ê¿Ê¸¥Æ¥­¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤Î¤Ï¡¢ +¼Â¤Ï EB ¥é¥¤¥Ö¥é¥ê¤¬²Ã¹©½èÍý¤ò¤·¤¿¤«¤é¤Ç¤¹¡£ +¤Ä¤Þ¤ê¡¢¡Ö²þ¹Ô¡×¤Î¤è¤¦¤Ëʿʸ¥Æ¥­¥¹¥È¤Ç¤âɽ¸½²Äǽ¤Ê¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹ +¤Ë¤Ä¤¤¤Æ¤Ï½èÍý¤·¡¢¡Ö¸¡º÷¥­¡¼¤Î³«»Ï¡×¤Î¤è¤¦¤Ëɽ¸½¤Ç¤­¤Ê¤¤¤â¤Î¤Ë¤Ä¤¤¤Æ¤Ï +̵»ë¤¹¤ë¤è¤¦¤Ë¤·¤Æ¡¢Ê¿Ê¸¥Æ¥­¥¹¥È¤Ë¤Ê¤ë¤è¤¦¤Ë²Ã¹©¤·¤Æ¤¤¤¿¤Î¤Ç¤¹¡£ +

+ +

+¤·¤«¤·¡¢Ê¿Ê¸¥Æ¥­¥¹¥È¤Ïɽ¸½ÎϤ¬Ë³¤·¤¤¤Î¤Ç¡¢¸µ¤Î¥Ç¡¼¥¿¤Ë¤Ï´Þ¤Þ¤ì¤Æ¤¤¤ë +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¿¤¯¤ò̵»ë¤¹¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +HTML ¤Î¤è¤¦¤Ë¡¢¤â¤Ã¤Èɽ¸½ÎϤΤ¢¤ë·Á¼°¤Ç½ÐÎϤ¹¤ë¤Ê¤é¡¢Ìµ»ë¤»¤º¤ËºÑ¤à +¥·¡¼¥±¥ó¥¹¤òÁý¤ä¤»¤½¤¦¤Ç¤¹¡£ +¤Ç¤Ï¡¢HTML ·Á¼°¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤¬ EB ¥é¥¤¥Ö¥é¥ê¤ËÍÑ°Õ¤µ¤ì¤Æ +¤¤¤ë¤«¤È¤¤¤¦¤È¡¢»ÄÇ°¤Ê¤¬¤é¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¤½¤ÎÂå¤ï¤ê¤Ë¡¢¤«¤Ê¤ê¼ê´Ö¤Ï¤«¤«¤ê¤Þ¤¹¤¬¡¢¼«Í³¤Ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò²Ã¹©¤Ç¤­¤ë +¤¿¤á¤Î»ÅÁȤߤ¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¤½¤ì¤¬¡¢¼¡¤ÎÀá¤ÇÀâÌÀ¤¹¤ë ¥Õ¥Ã¥¯ (hook) ¤Ç¤¹¡£ +¥Õ¥Ã¥¯¤ò»È¤¦¤³¤È¤Ç¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò½ÀÆð¤Ë²Ã¹©¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

¥Õ¥Ã¥¯

+ +

+Æä˲¿¤â»ØÄꤷ¤Ê¤±¤ì¤Ð¡¢eb_read_text(), +eb_read_heading() ¤¬ÊÖ¤¹¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î²Ã¹©¤Ï¡¢¤¢¤é¤«¤¸¤á +·è¤á¤é¤ì¤¿Ä̤ê¤ÎÊýË¡¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¡Ö²þ¹Ô¡×¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¤Ï¡¢\n ¤ò +½ñ¤­¹þ¤à¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ (hook) ¤ò»È¤¦¤È¡¢¤³¤¦¤·¤¿²Ã¹©ÊýË¡¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¥Õ¥Ã¥¯¤Ï¡¢¤¢¤é¤«¤¸¤á·è¤á¤é¤ì¤¿¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤ËÂФ·¤Æ¡¢¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿ +¤¹¤ë¤³¤È¤ÇÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ +¥Õ¥Ã¥¯´Ø¿ô¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤È¡¢eb_read_text() ¤ä +eb_read_heading() ¤Ï¡¢¤¢¤é¤«¤¸¤á·è¤Þ¤Ã¤¿¤ä¤êÊý¤Ç¥Ç¡¼¥¿¤ò +½ñ¤­¹þ¤àÂå¤ï¤ê¤Ë¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +¸Æ¤Ó½Ð¤µ¤ì¤¿¥Õ¥Ã¥¯´Ø¿ô¤¬¥Ç¡¼¥¿¤Î½ñ¤­¹þ¤ß½èÍý¤ò¹Ô¤¦¤³¤È¤Ç¡¢ +eb_read_text() ¤ä eb_read_heading() ¤«¤éÊÖ¤ë +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬ÊѲ½¤¹¤ë¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢Â¿¿ô¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +³Æ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¤Ï¡¢¤½¤ì¤¾¤ìÀìÍѤ˥ե寤¬ÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¡¢ +¤½¤ì°Ê³°¤Ë¤âʸ»ú¤Î¤¿¤á¤Î¥Õ¥Ã¥¯¤¬Â¸ºß¤·¤Þ¤¹¡£ +(¤É¤Î¤è¤¦¤Ê¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤¬¤¢¤ë¤«¡¢¾Ü¤·¤¯¤Ï +¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+¤½¤ì¤¾¤ì¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃ֤ϡ¢¥Õ¥Ã¥¯¥³¡¼¥É (hook code) ¤È +¸Æ¤Ð¤ì¤ë¥³¡¼¥ÉÃͤǼ±Ê̤µ¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢Á°½Ò¤Î¡Ö²þ¹Ô¡×¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂбþ¤¹¤ë¥Õ¥Ã¥¯¥³¡¼¥É +¤Ï EB_HOOK_NEWLINE ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¥Õ¥Ã¥¯¤ò°·¤¦¤Ë¤Ï¡¢¥Õ¥Ã¥¯¤Î½¸¹ç¤Ç¤¢¤ë +¥Õ¥Ã¥¯¥»¥Ã¥È (hook set) ¤òÍÑ°Õ¤·¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ÇÍøÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤ËÂФ·¤Æ¡¢¤É¤Î +¥Õ¥Ã¥¯´Ø¿ô¤ò»È¤¦¤Î¤«¤òµ­Ï¿¤¹¤ë¤¿¤á¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£ +

+ +

+¤Ç¤Ï¡¢¼ÂºÝ¤Ë¤É¤¦¤ä¤Ã¤Æ¥Õ¥Ã¥¯¥»¥Ã¥È¤ò°·¤¦¤Î¤«¡¢ÀâÌÀ¤·¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£ +¥Õ¥Ã¥¯¥»¥Ã¥È¤Ï EB_Hookset ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Çɽ¤·¤Þ¤¹¤Î¤Ç¡¢ +¤Þ¤º EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤·¤Þ¤¹¡£ +

+ +
+
+EB_Hookset hookset;
+
+
+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È +¤ÈƱÍͤˡ¢»ÈÍÑÁ°¤Ëɬ¤º½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+eb_initialize_hookset(&hookset);
+
+
+ +

+¼ÂºÝ¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç eb_write_text_string() ¤È¤¤¤¦ +´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢<br> ¤È¤¤¤¦Ê¸»úÎó¤ò¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤È¤·¤Æ½ñ¤­¹þ¤ó¤Ç¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code
+hook_newline(EB_Book *book, EB_Appendix *appendix, void *container,
+    EB_Hook_Code code, int argc, const unsigned int *argv) {
+    eb_write_text_string(book, "<br>");
+    return 0;
+}
+
+
+ +

+´Ø¿ô eb_set_hook() ¤òÍѤ¤¤ë¤³¤È¤Ç¡¢¤³¤Î¥Õ¥Ã¥¯´Ø¿ô¤ò +¥Õ¥Ã¥¯¥»¥Ã¥È¤ËÅÐÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤Þ¤º EB_Hook ¤È¤¤¤¦·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¤¤Ã¤¿¤ó +¥Õ¥Ã¥¯¥³¡¼¥É¤È¥Õ¥Ã¥¯´Ø¿ô¤òÀßÄꤷ¡¢¤½¤ì¤ò eb_set_hook() ¤ò +ÅϤ·¤Æ¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¤³¤³¤Ç¤Ï¡¢¡Ö²þ¹Ô¡×¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¡¢¾åµ­¤Î¥Õ¥Ã¥¯´Ø¿ô +¤òÅÐÏ¿¤·¤Æ¤ß¤Þ¤¹¡£ +

+ +
+
+EB_Hook hook;
+
+hook.code = EB_HOOK_NEWLINE;   # ¥Õ¥Ã¥¯¥³¡¼¥É¤ò¥»¥Ã¥È
+hook.function = hook_newline;  # ¥Õ¥Ã¥¯´Ø¿ô¤ò¥»¥Ã¥È
+eb_set_hook(&hookset, &hook);
+
+
+ +

+¤Ê¤ª¡¢Æ±¤¸¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ (¥Õ¥Ã¥¯¥³¡¼¥É) ¤ËÊ£¿ô²ó¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤â¡¢ +Í­¸ú¤Ë¤Ê¤ë¤Î¤ÏºÇ¸å¤ËÅÐÏ¿¤·¤¿¤â¤Î¤À¤±¤Ç¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ NULL ¤ò»ØÄꤹ¤ë¤È¡¢ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥Õ¥Ã¥¯¤¬ +²ò½ü¤µ¤ì¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_set_hooks() (ºÇ¸å¤Ë s ¤¬ÉÕ¤¯) ¤ò»È¤¨¤Ð¡¢ +Ê£¿ô¤Î¥Õ¥Ã¥¯´Ø¿ô¤ò°ìÅÙ¤ËÅÐÏ¿¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+static const EB_Hook hooks[] = {
+    {EB_HOOK_NEWLINE,        hook_newline},
+    {EB_HOOK_SET_INDENT,     hook_set_indent},
+    {EB_HOOK_WIDE_JISX0208,  hook_set_jisx0208},
+    {EB_HOOK_NULL,           NULL}
+};
+
+eb_set_hooks(&hookset, &hooks);
+
+
+ +

+ÇÛÎó¤ÎËöÈø¤òÌÀ¼¨¤¹¤ë¤¿¤á¤Ë¡¢EB_HOOK_NULL ¤È¤¤¤¦Æüì¤Ê +¥Õ¥Ã¥¯¥³¡¼¥É¤òÃÖ¤­¤Þ¤¹¡£ +¤³¤ÎÅÀ¤âÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¤³¤¦¤·¤Æ¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤¿¥Õ¥Ã¥¯¥»¥Ã¥È¤ò¡¢eb_raed_text(), +eb_raed_heading() ¤Ø¤Î°ú¿ô¤È¤·¤ÆÅϤ·¤Þ¤¹¡£ +Á°Àá¤Þ¤Ç¤ÎÎã¤Ç¤Ï¡¢NULL ¤òÅϤ·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢Âå¤ï¤ê¤Ë +&hookset ¤òÅϤ·¤Æ¤ß¤Þ¤¹¡£ +

+ +
+
+if (eb_read_text(&book, NULL, &hookset, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¤³¤ì¤Ë¤è¤Ã¤Æ¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë²þ¹Ô¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬¤¢¤ë¤È¡¢ +\n ¤ÎÂå¤ï¤ê¤Ë <br> ¤È¤¤¤¦Ê¸»úÎó¤¬ +½ñ¤­¹þ¤Þ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢ +eb_finalize_hookset() ¤ò¸Æ¤ó¤Ç¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +

+ +
+
+eb_finalize_hookset(&hookset);
+
+
+ + +

¥Õ¥Ã¥¯¤Èʸ»ú¥³¡¼¥É¤Î´Ø·¸

+ +

+Á°Àá¤Ç¤Ï¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤òÎã¤Ë¤È¤ê¤Þ¤·¤¿¤¬¡¢¤³¤Î¾ +¤Ë¤â¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ïʸ»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_HOOK_ISO8859_1
+
+ISO 8859-1 (¥é¥Æ¥óʸ»ú 1) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£¤¿¤À¤·À©¸æʸ»ú¤ò½ü¤­¤Þ¤¹¡£ +°ú¿ô¤È¤·¤Æ¡¢ISO 8859-1 ¤Îʸ»úÈֹ椬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_NARROW_JISX0208
+
+Ⱦ³Ñ¤Î JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢ÆüËܸì EUC ¤Çɽ¸½¤·¤¿¾ì¹ç¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_WIDE_JISX0208
+
+Á´³Ñ¤Î JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢ÆüËܸì EUC ¤Çɽ¸½¤·¤¿¾ì¹ç¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_GB2312
+
+GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢Ãæ¹ñ¸ì EUC ¤Çɽ¸½¤·¤¿¾ì¹ç¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_NARROW_FONT
+
+Ⱦ³Ñ¤Î³°»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢³°»ú¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_WIDE_FONT
+
+Ⱦ³Ñ¤Î³°»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢³°»ú¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ +
+ +

+¤¤¤º¤ì¤â¡¢¤½¤Îʸ»ú¤¬¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë¸½¤ì¤ëÅ٤ˡ¢¥Õ¥Ã¥¯´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì +¤Þ¤¹¡£ +

+ +

+¾å¤Îµ­½Ò¤ò¸«¤Æ¤âʬ¤«¤ë¤è¤¦¤Ë¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤ëʸ»úÈÖ¹æ¤Ï¡¢½ñÀÒ¤Îʸ»ú +¥³¡¼¥É¤Ë±þ¤¸¤Æ¡¢ISO 8859-1, ÆüËܸì EUC¡¢Ãæ¹ñ¸ì EUC ¤Î¤¤¤º¤ì¤«¤Îʸ»ú¥³¡¼¥É +¤Çɽ¸½¤µ¤ì¤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Ê¤±¤ì¤Ð¡¢¤½¤Îʸ»úÈֹ椬¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ¤½¤Î¤Þ¤Þ +½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤â¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê¤ÎÆâÉô¥³¡¼¥É¤È¤Ï°Û¤Ê¤ë +ʸ»ú¥³¡¼¥É¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Î¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¡¢ +¥³¡¼¥ÉÊÑ´¹½èÍý¤ò¤¹¤ë¤Î¤â¼ê¤Ç¤¹¡£ +¤¿¤À¤·¡¢°ìʸ»úËè¤Ë¥Õ¥Ã¥¯´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¤Î¤Ç¡¢Áê±þ¤ÎÉé²Ù¤¬¤«¤«¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢EBXA-C ¤ò°·¤¦¤Ë¤Ï¡¢ÆÃÊ̤ʽèÍý¤¬É¬ÍפǤ¹¡£ +EBXA-C ¤Ç¤Ï¡¢Ê¸»ú¥³¡¼¥É¤È¤·¤Æ GB 2312 ¤È JIS X 0208 ¤¬»È¤ï¤ì¤Þ¤¹¤¬ +(¡Öʸ»ú¥³¡¼¥É¡× ¤ò»²¾È¤Î¤³¤È)¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë¤è¤ëɸ½à¤Î½èÍý +¤Ç¤Ï¡¢¤É¤Á¤é¤â 0xa1a1 ¡Á 0xfefe ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤Æ¾×Æͤ¹¤ë¤¿¤á¡¢ºÇÄã +¤Ç¤â¤É¤Á¤é¤«°ìÊý¤ò¥Õ¥Ã¥¯¤·¤Æʸ»ú¤Îɽ¸½ÊýË¡¤òÊѤ¨¤Ê¤¤¤È¡¢Àµ¤·¤¯½ÐÎÏ +¤Ç¤­¤Þ¤»¤ó¡£ +

+ + +

¥¯¥í¥¹¸¡º÷¤Î¸¡º÷·ë²Ì

+ +

+¤¹¤Ç¤Ë ¡Ö¸¡º÷¡× ¤Î¾Ï¤Ç½Ò¤Ù¤¿¤è¤¦¤Ë¡¢CD-ROM ½ñÀÒ +¤Ë¤ÏÁ°Êý°ìÃ׸¡º÷¡¢¸åÊý°ìÃ׸¡º÷¤È¤¤¤Ã¤¿Ê£¿ô¤Î¸¡º÷¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¸¡º÷¤ò¹Ô¤¦¤È¡¢¤É¤Î¸¡º÷¥á¥½¥Ã¥É¤Ç¤â¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î +¾ðÊó¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê EB_Hit ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ +¼õ¤±¼è¤ê¤Þ¤¹¡£ +

+ +
+
+typedef struct {
+    EB_Position heading;   /* ¸«½Ð¤·¤Î°ÌÃÖ */
+    EB_Position text;      /* ËÜʸ¤Î°ÌÃÖ   */
+} EB_Hit;
+
+
+ +

+¤·¤«¤·¥¯¥í¥¹¸¡º÷¤Ç¤Ï¡¢EB_Hit ¤Î¸«½Ð¤·¤ÈËÜʸ¤Î°ÌÃÖ¤Ï +¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¸«½Ð¤·¤ÈËÜʸ¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤Ë¤Ï¡¢Â¾¤Î¸¡º÷¥á¥½¥Ã¥É +¤Î¤è¤¦¤Ë¤½¤ì¤¾¤ì¤Î°ÌÃ֤˥·¡¼¥¯¤·¤ÆÆɤ߹þ¤à¤È¤¤¤¦¤ä¤êÊý¤Ç¤Ï¤¦¤Þ¤¯ +¤¤¤­¤Þ¤»¤ó¡£ +

+ +

+°Ê²¼¤Ë¡¢¥¯¥í¥¹¸¡º÷¤Î¸«½Ð¤·¤ÈËÜʸ¤òÆɤ߹þ¤à¥×¥í¥°¥é¥àÎã¤ò¼¨¤·¤Þ¤¹¡£ +

+ +
+
+/* ¸«½Ð¤·°ÌÃ֤ؤΥ·¡¼¥¯¤ò¹Ô¤¦ */
+if (eb_seek_text(&book, &hits[0].heading) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+/* ¸«½Ð¤·¤ÎÆɤ߹þ¤ß¤ò¹Ô¤¦ */
+if (eb_read_heading(&book, NULL, NULL, NULL, MAX_LENGTH,
+    heading, &heading_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+/* Àè¤Û¤ÉÆɤ߹þ¤ó¤À¸«½Ð¤·¤Î¡¢¼¡¤ÎÉôʬ¤ØÈô¤Ö */
+if (eb_forward_heading(&book) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+/* ËÜʸ¤ÎÆɤ߹þ¤ß¤ò¹Ô¤¦ */
+if (eb_read_heading(&book, NULL, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¥¯¥í¥¹¸¡º÷¤Ç¤â¡¢¸«½Ð¤·¤ÎÆâÍƤòÆɤ߹þ¤àÊýË¡¤Ï¾¤Î¸¡º÷¥á¥½¥Ã¥É¤ÈÊѤï¤ê +¤Ï¤Ê¤¯¡¢eb_read_heading() ¤ò»È¤¤¤Þ¤¹¡£ +ÊѤï¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ËÜʸ¤ÎÆɤ߹þ¤ß¤Ç¤¹¡£ +eb_read_text() ¤Ç¤Ï¤Ê¤¯¡¢eb_read_heading() +¤ò»È¤¤¤Þ¤¹¡£ +¸«½Ð¤·¤òÆɤ߹þ¤à¤¿¤á¤Î´Ø¿ô eb_read_heading() ¤ò¡¢ËÜʸ¤ò +Æɤ߹þ¤à¤¿¤á¤Ë¸Æ¤Ö¤È¤¤¤¦¤Î¤Ï´ñ̯¤ÊÏäǤ¹¤¬¡¢¤³¤ì¤Ï¥¯¥í¥¹¸¡º÷¤ÎËÜʸ¤¬ +¸«½Ð¤·¤ÈƱ¤¸·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¤Ç¤¹¡£ +Ä̾¸«½Ð¤·¤Ï°ì¹ÔÄøÅÙ¤·¤«½ñ¤«¤ì¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¼ÂºÝ¤Î¤È¤³¤í¥¯¥í¥¹¸¡º÷ +¤ÎËÜʸ¤â°ì¹ÔÄøÅÙ¤·¤«¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¤Þ¤¿¡¢ËÜʸ¤Ï¸«½Ð¤·¤Î¤¹¤°¸å¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤¿¤á¡¢¾åµ­¤Î¤è¤¦¤Ë¸«½Ð¤·¤ò +Æɤ߹þ¤ó¤À¸å¤Ç eb_forward_heading() ¤È¤¤¤¦´Ø¿ô¤ò¸Æ¤Ó¡¢ +¤½¤Î¸å¤ÇËÜʸ¤òÆɤ߹þ¤à¤¿¤á¤Ë¤â¤¦°ìÅÙ eb_read_heading() ¤ò +¸Æ¤Ö¤È¤¤¤¦ÊѤï¤Ã¤¿¼ê½ç¤òƧ¤ß¤Þ¤¹¡£ +

+ +

+ËÜʸ¤À¤±¤¬É¬ÍפǸ«½Ð¤·¤¬Íפé¤Ê¤±¤ì¤Ð¡¢¥·¡¼¥¯Ä¾¸å¤Ë +eb_forward_heading() ¤ò¸Æ¤Ö¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¤½¤Î¸å¤Ç eb_read_heading() ¤ò¸Æ¤Ö¤È¡¢ËÜʸ¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ + +

Ãøºî¸¢É½¼¨

+ +

+Àè¤Ëµ­¤·¤¿¤è¤¦¤Ë¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤Ï²¿¼ïÎफ¤¢¤ê¡¢¤½¤ÎÃæ¤Ë +Ãøºî¸¢É½¼¨ (copyright notice) ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +̾Á°¤ÎÄ̤ꡢÃøºî¸¢É½¼¨¤Ë´Ø¤¹¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò¼ý¤á¤¿¤â¤Î¤Ç¤¹¡£ +

+ +

+°ìÈ̤ˡ¢Ãøºî¸¢É½¼¨¤ÏËÜʸ¤È¤Ï¤Þ¤Ã¤¿¤¯ÆÈΩ¤·¤¿¥Ç¡¼¥¿¤È¤·¤ÆÍÑ°Õ¤µ¤ì¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢ËÜʸ¤òÀèƬ¤«¤éËöÈø¤Þ¤ÇÆɤó¤Ç¤ß¤Æ¤â¡¢Ãøºî¸¢É½¼¨¤Ï¤É¤³¤Ë¤â +¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£ +

+ +

+ÁªÂòÃæ¤ÎÉûËܤˤĤ¤¤Æ¡¢Ãøºî¸¢É½¼¨¤Î³«»Ï°ÌÃÖ¤òÃΤë¤Ë¤Ï +eb_copyright() ¤ò»È¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ÉûËܤ¬Ãøºî¸¢É½¼¨¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð +EB_ERR_NO_SUCH_SEARCH ¤òÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢Ãøºî¸¢É½¼¨¤Î̵ͭ¤â +Ʊ»þ¤Ëʬ¤«¤ê¤Þ¤¹¡£ +(³«»Ï°ÌÃ֤ϼèÆÀ¤»¤º¤Ë¡¢Í­Ìµ¤À¤±¤òÄ´¤Ù¤¿¤¤¤È¤­¤Ï¡¢ +eb_have_copyright() ¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£) +

+ +
+
+EB_Position position;
+EB_Error_Code err;
+
+err = eb_copyright(&book, &position);
+if (err == EB_ERR_NO_SUCH_SEARCH) {
+    /* Ãøºî¸¢É½¼¨¤Ï¤Ê¤¤ */
+} else if (err != EB_SUCCESS) {
+    /* ¤½¤ì°Ê³°¤Î¥¨¥é¡¼ */
+   return;
+}
+
+
+ +

+¸å¤Ï¡¢ÆÀ¤é¤ì¤¿°ÌÃÖ (position) ¤Ë¥·¡¼¥¯¤·¤Æ¡¢ +eb_read_text() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ + +

¥á¥Ë¥å¡¼

+ +

+ËÜʸ¤È¤ÏÆÈΩ¤·¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ¤Ï¡¢Ãøºî¸¢É½¼¨¤Î¾¤Ë +¥á¥Ë¥å¡¼ (menu) ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +¥á¥Ë¥å¡¼¤Ï¡¢¼ç¤ËËÜʸ¤ÎÊä½õ¤È¤Ê¤ë¥Ç¡¼¥¿¤ò¼ýÏ¿¤·¤Æ¤¤¤Þ¤¹¡£ +ÂåɽŪ¤Ê¤â¤Î¤Ç¤Ï¡¢¡ÖÁ°½ñ¤­ (½ø)¡×¡ÖËÞÎã¡×¤È¤¤¤Ã¤¿¤â¤Î¤¬µó¤²¤é¤ì¤Þ¤¹¡£ +

+ +

+¥á¥Ë¥å¡¼¤Ç¤Ï¡ÖÊ̹àÌÜ»²¾È¡×¤È¤¤¤¦¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ò¿ÍѤ·¤Æ¡¢³¬ÁØŪ +¤Ê¹½Â¤¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤¬°ìÈÌŪ¤Ç¤¹¡£ +¤³¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¤Ï¡¢»²¾ÈÀè¤Î¥Æ¥­¥¹¥È¤Î°ÌÃÖ¤¬µ­Ï¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢¤¢¤ë CD-ROM ½ñÀҤΥá¥Ë¥å¡¼¤¬¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤È¤·¤Þ¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢¥á¥Ë¥å¡¼¤Ë¤Ï 3 ¤Ä¤Î¹àÌܤ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+ * ½øʸ
+ * ɽµ­¤Ë¤Ä¤¤¤Æ
+ * ±üÉÕ
+
+
+ +

+¥á¥Ë¥å¡¼¤Î¤½¤ì¤¾¤ì¤Î¹àÌܤˤϡ¢»²¾ÈÀ褬¤¢¤ê¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉôɽ¸½¤Ç¤Ï¡¢¡Ö½øʸ¡×¡Öɽµ­¤Ë¤Ä¤¤¤Æ¡×¡Ö±üÉաפΠ+¤½¤ì¤¾¤ì¤Îʸ»úÎó¤ÎÁ°¸å¤ËÊ̹àÌÜ»²¾È³«»Ï¤ª¤è¤Ó½ªÎ»¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬ +ÉÕ¤¤¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +»ë³ÐŪ¤Ëʬ¤«¤ë¤è¤¦¤Ëµ­¤¹¤È¡¢¼¡¤Î¤è¤¦¤Ê·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+ * <Ê̹àÌÜ»²¾È³«»Ï¥·¡¼¥±¥ó¥¹> "½øʸ" <Ê̹àÌÜ»²¾È½ªÎ»¥·¡¼¥±¥ó¥¹>
+ * <Ê̹àÌÜ»²¾È³«»Ï¥·¡¼¥±¥ó¥¹> "ɽµ­" <Ê̹àÌÜ»²¾È½ªÎ»¥·¡¼¥±¥ó¥¹>
+ * <Ê̹àÌÜ»²¾È³«»Ï¥·¡¼¥±¥ó¥¹> "±üÉÕ" <Ê̹àÌÜ»²¾È½ªÎ»¥·¡¼¥±¥ó¥¹>
+
+
+ +

+HTML ¤Î½ñ¤­Êý¤òÃΤäƤ¤¤ë¤Ê¤é¡¢a ¥¿¥°¤È¸À¤¨¤Ðʬ¤«¤ë¤Î¤Ç¤Ï +¤Ê¤¤¤«¤È»×¤¤¤Þ¤¹¡£ +

+ +
+
+<a href="./index.html">EB ¥é¥¤¥Ö¥é¥ê¤Î¥Û¡¼¥à¥Ú¡¼¥¸</a>
+
+
+ +

+¤¿¤À¤·¡¢»²¾ÈÀè¤Î°ÌÃÖ¾ðÊó¤Ï½ªÎ»¥·¡¼¥±¥ó¥¹Â¦¤Ëµ­ºÜ¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎÅÀ¤Ï +HTML ¤È¤ÏµÕ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¼Ø­¤Ç¤¹¤¬¡¢ÊÌ°ÌÃÖ»²¾È¤Ï¥á¥Ë¥å¡¼¤À¤±¤Ç¤Ê¤¯¡¢ËÜʸ¤Ç¤â°ìÈÌŪ¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ +

+ +

+Ê̹àÌÜ»²¾È³«»Ï¤ª¤è¤Ó½ªÎ»¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¡¢¤½¤ì¤¾¤ì¥Õ¥Ã¥¯ +EB_HOOK_BEGIN_REFERENCE ¤È EB_HOOK_END_REFERENCE +¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +»²¾ÈÀè¤Î°ÌÃÖ¾ðÊó¤Ï¡¢½ªÎ»¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯´Ø¿ô¤ËÂФ·¤Æ¡¢°ú¿ô¤È¤·¤Æ +ÅϤµ¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢EB_HOOK_END_REFERENCE ¤Ø¤Î¥Õ¥Ã¥¯´Ø¿ô¤ÎËÁƬ¤Ç¤Ï¡¢ +¼¡¤Î¤è¤¦¤Ë¤¹¤ë¤ÈÎɤ¤¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+EB_Error_Code
+hook_end_ref(EB_Book *book, EB_Appendix *appendix, void *container,
+    EB_Hook_Code code, int argc, const unsigned int *argv)
+{
+    EB_Position position;
+
+    position.page = argv[1];    # »²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ
+    position.offset = argv[2];  # »²¾ÈÀè¤Î¥ª¥Õ¥»¥Ã¥È
+
+
+ +

+»²¾ÈÀè¤Ï¡¢¥á¥Ë¥å¡¼¤ÎÂè 2 ÁؤȤʤê¤Þ¤¹¡£ +¤³¤Î½ñÀҤΡֱüÉաפλ²¾ÈÀè¤òé¤Ã¤¿¤é¡¢¼¡¤Î¤è¤¦¤Êɽµ­¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£ +

+ +
+
+¡û¡ûƲ½ÐÈÇ¼Ò ¿·¹ñ¸ì¼­Åµ Âè 2 ÈÇ (EPWING ÈÇ)
+Âè 1 ÈÇ È¯¹Ô 1988ǯ 2·î
+Âè 2 ÈÇ È¯¹Ô 1999ǯ 11·î
+Âè 2 ÈÇ (EPWING ÈÇ) ȯ¹Ô 2000ǯ 2·î
+
+
+ +

+ƱÍͤˡֽøʸ¡×¡Öɽµ­¤ËÉÕ¤¤¤Æ¡×¤Î»²¾ÈÀè¤Ë¤Ä¤¤¤Æ¤â¡¢¤³¤¦¤·¤¿Ê¸¾Ï¥Ç¡¼¥¿ +¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¡£ +¿Þ¼¨¤¹¤ë¤È¡¢¥á¥Ë¥å¡¼¤Î³¬Áؤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¤
+Â裱ÁØ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨½¨¡¨¡¨¥
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨®¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¶¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¯
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­
+¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¿¨¡¨¡¨¤¡¡¨£¨¡¨¡¨¿¨¡¨¡¨¤¡¡¨£¨¡¨¡¨¿¨¡¨¡¨¤
+Â裲ÁØ¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢
+¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¥¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¥¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¤³¤Î¼­½ñ¤ÎÎã¤Ç¤Ï¡¢¥á¥Ë¥å¡¼¤Ï¤³¤³¤Ç½ª¤ï¤ê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢½ñÀҤˤè¤Ã¤Æ¤Ï +¤µ¤é¤ËÂè 3 ÁØ¡¢Âè 4 Áؤȳ¤¯¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢¥á¥Ë¥å¡¼Á´ÂΤ¬¶Ñ°ì¤Î³¬ÁØ¿ô¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¥á¥Ë¥å¡¼¤Î»²¾ÈÀ褬ËÜʸ¤äÃøºî¸¢É½¼¨¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ +

+ +

+ÁªÂòÃæ¤ÎÉûËܤˤĤ¤¤Æ¡¢(Âè 1 ÁؤÎ) ¥á¥Ë¥å¡¼¤Î³«»Ï°ÌÃÖ ¤òÃΤë¤Ë¤Ï +eb_menu() ¤ò»È¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ÉûËܤ¬¥á¥Ë¥å¡¼¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð +EB_ERR_NO_SUCH_SEARCH ¤òÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢¥á¥Ë¥å¡¼¤Î̵ͭ¤âƱ»þ¤Ë +ʬ¤«¤ê¤Þ¤¹¡£ +(³«»Ï°ÌÃ֤ϼèÆÀ¤»¤º¤Ë¡¢Í­Ìµ¤À¤±¤òÄ´¤Ù¤¿¤¤¤È¤­¤Ï¡¢ +eb_have_menu() ¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£) +

+ +
+
+EB_Position position;
+EB_Error_Code err;
+
+err = eb_menu(&book, &position);
+if (err == EB_ERR_NO_SUCH_SEARCH) {
+    /* ¥á¥Ë¥å¡¼¤Ï¤Ê¤¤ */
+} else if (err != EB_SUCCESS) {
+    /* ¤½¤ì°Ê³°¤Î¥¨¥é¡¼ */
+   return;
+}
+
+
+ +

+¸å¤Ï¡¢ÆÀ¤é¤ì¤¿°ÌÃÖ (position) ¤Ë¥·¡¼¥¯¤·¤Æ¡¢ +eb_read_text() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ + +

Ê£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷

+ +

+¡ÖÊ£¹ç¸¡º÷¡×(¡ÖÊ£¹ç¸¡º÷¡× ¤ò»²¾È¤Î¤³¤È) ¤Î¤È¤³¤í¤Ç½Ò¤Ù¤¿¤è¤¦¤Ë¡¢ +Ê£¹ç¸¡º÷¤Ç¤Ï¡¢ÆþÎϸì¤Ë ¸õÊä°ìÍ÷ (candidates) ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë +¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤ò¤¢¤é¤«¤¸¤áÎóµó¤·¤Æ¤ª¤­¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥æ¡¼¥¶¤ËÁªÂò¤µ¤»¤ë»ÅÁȤߤǤ¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢¿Í̾¤ò¸¡º÷¤¹¤ë¤Î¤¿¤á¤Ë¡¢¼¡¤Î¤è¤¦¤ÊÊ£¹ç¸¡º÷¤¬¤¢¤Ã¤¿¤È¤·¤Þ¤¹¡£ +

+ +
+
+ÆþÎϸì 0: ¹ñ¡¦ÃÏ°è
+ÆþÎϸì 1: »þÂå
+ÆþÎϸì 2: À­ÊÌ
+ÆþÎϸì 3: ¥­¡¼¥ï¡¼¥É
+ÆþÎϸì 4: ¥­¡¼¥ï¡¼¥É
+
+
+ +

+¤³¤Î¤¦¤Á¡¢ÆþÎϸì 3 ¤Î¡ÖÀ­Ê̡פˤϡ¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤Ï¡ÖÃˡפȡֽ÷¡× +¤Î 2 ¤Ä¤·¤«¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +¤³¤Î¤è¤¦¤Ë¡¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤¬¸Â¤é¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢¸õÊä°ìÍ÷¤¬ÍÑ°Õ +¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¸õÊä°ìÍ÷¤Ï¸¡º÷¤Î¤¿¤á¤Î¥Ç¡¼¥¿¤Ç¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢ÆâÉô¹½Â¤¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤½¤Î¤â¤Î¤Ç¤¹¡£ +¥æ¡¼¥¶¤ËÂФ·¤Æ¸õÊä¤òÎóµ­¤·¤¿¼¨¤·¤¿¥Æ¥­¥¹¥È¤ò¼¨¤·¡¢¤½¤ÎÃæ¤Î°ì¤Ä¤òÁªÂò +¤·¤Æ¤â¤é¤¦¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤·¤«¤â¡¢¸õÊä°ìÍ÷¤Î¥Ç¡¼¥¿¹½Â¤¤Ï¥á¥Ë¥å¡¼¤ÈÈó¾ï¤Ë»÷¤Æ¤ª¤ê¡¢¥á¥Ë¥å¡¼¤Î +¤è¤¦¤Ê³¬Áع½Â¤¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹ +(¡Ö¥á¥Ë¥å¡¼¡× ¤ò»²¾È¤Î¤³¤È)¡£ +¤¿¤È¤¨¤Ð¡¢¾å¤ÎÊ£¹ç¸¡º÷¤ÎÆþÎϸì 2 ¡Ö¹ñ¡¦ÃÏ°è¡×¤Ë¤â¸õÊä¤Î°ìÍ÷¤òÀߤ±¤ë¤È +¤·¤¿¤é¡¢ºÇ½é¤Î³¬Áؤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+* ÆüËÜ (¢ªÁªÂò)
+* ÆüËܰʳ°¤Î¥¢¥¸¥¢ (¢ª¾ÜºÙ)
+* ¥è¡¼¥í¥Ã¥Ñ (¢ª¾ÜºÙ)
+* ËÌ¥¢¥á¥ê¥« (¢ª¾ÜºÙ)
+* ¤½¤Î¾ (¢ª¾ÜºÙ)
+
+
+ +

+¡ÖÆüËܡפòÁª¤Ö¤È¡¢¤½¤³¤ÇÆþÎϸ줬·èÄꤵ¤ì¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢ +¤½¤ì°Ê³°¤Î¹àÌܤˤĤ¤¤Æ¤Ï¤µ¤é¤ËºÙ¤«¤¯Ê¬Îव¤ì¤¿ÁªÂò»è¤¬ÍÑ°Õ¤µ¤ì¤Æ +¤¤¤Þ¤¹¡£ +¤³¤³¤Ç¤Ï¡¢¡ÖËÌ¥¢¥á¥ê¥«¡×¤òÁª¤ó¤Ç¤ß¤Þ¤·¤ç¤¦¡£ +¤¹¤ë¤È¡¢¤µ¤é¤Ë¼¡¤Î¤è¤¦¤Ê¸õÊä°ìÍ÷¤Î¥Ç¡¼¥¿¤¬Ä󼨤µ¤ì¤Þ¤¹¡£ +

+ +
+
+* ¥¢¥á¥ê¥« (¢ªÁªÂò)
+* ¥«¥Ê¥À (¢ªÁªÂò)
+
+
+ +

+¤³¤³¤Ç¡¢¡Ö¥¢¥á¥ê¥«¡×¡Ö¥«¥Ê¥À¡×¤òÁª¤Ö¤È¡¢ÆþÎϸ줬·èÄꤵ¤ì¤Þ¤¹¡£ +

+ +

+¼¡¤Ë¼ÂºÝ¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ¤³¤¦¤·¤¿¸õÊä°ìÍ÷¤ò°·¤¦ÊýË¡¤Ë¤Ä¤¤¤Æ +ÀâÌÀ¤·¤Þ¤¹¡£ +¤Þ¤º¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ê£¹ç¸¡º÷¤ÎÆþÎϸ줬¸õÊä°ìÍ÷¤ò»ý¤Ã¤Æ +¤¤¤ë¤«¤É¤¦¤«¤ò¡¢³Îǧ¤¹¤ëɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£ +eb_multi_entry_candidates() ¤ò»È¤¦¤È¡¢¸õÊä°ìÍ÷¥Ç¡¼¥¿¤Î³«»Ï°ÌÃÖ +¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¸õÊä°ìÍ÷¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð EB_ERR_NO_CANDIDATES ¤ò +ÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢¸õÊä°ìÍ÷¤Î̵ͭ¤âʬ¤«¤ê¤Þ¤¹¡£ +(³«»Ï°ÌÃ֤ϼèÆÀ¤»¤º¤Ë¡¢Í­Ìµ¤À¤±¤òÄ´¤Ù¤¿¤¤¤È¤­¤Ï¡¢ +eb_multi_entry_have_candidates() ¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£) +

+ +
+
+EB_Position position;
+EB_Error_Code err;
+
+/* mulit_id, entry_id ¤Ç¡¢¤É¤ÎÊ£¹ç¸¡º÷¤Î
+ * ²¿ÈÖÌܤÎÆþÎϸì¤Ë¤Ä¤¤¤Æ³Îǧ¤¹¤ë¤Î¤«¤ò»ØÄꤷ¤Þ¤¹¡£*/
+err = eb_multi_entry_candidates(&book, multi_id, entry_id, &position);
+if (err == EB_ERR_NO_CANDIDATES) {
+    /* ¤³¤ÎÆþÎϸì¤Ë¤Ï¡¢¸õÊä°ìÍ÷¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Ê¤¤ */
+   return;
+} else if (err != EB_SUCCESS) {
+    /* ¤½¤ì°Ê³°¤Î¥¨¥é¡¼ */
+   return;
+}
+
+
+ +

+¸å¤Ï¡¢ÆÀ¤é¤ì¤¿°ÌÃÖ (position) ¤Ë¥·¡¼¥¯¤·¤Æ¡¢ +eb_read_text() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +Æɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¤Ç¤Ï¡¢¸õÊä¤È¤Ê¤ë¸ì¤Î¤½¤ì¤¾¤ì¤¬¸õÊ䳫»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¶´¤Þ¤ì¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "ÆüËÜ" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "ÆüËܰʳ°¤Î¥¢¥¸¥¢" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "¥è¡¼¥í¥Ã¥Ñ" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "ËÌ¥¢¥á¥ê¥«" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "¤½¤Î¾" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+
+
+ +

+¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¤Ï¡¢¥Õ¥Ã¥¯¤È¤·¤Æ +EB_HOOK_BEGIN_CANDIDATE ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +½ªÎ»¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ï 2 ¼ïÎढ¤Ã¤Æ¡¢¤µ¤é¤Ë¼¡¤Î³¬Áؤس¤¯¾ì¹ç +¤Ë¸Æ¤Ð¤ì¤ë EB_HOOK_END_CANDIDATE_GROUP ¤È¡¢¤½¤Î¸ì¤¬¤½¤Î¤Þ¤Þ +ÆþÎϸì¤Î¸õÊä¤È¤Ê¤ë¾ì¹ç¤Ë¸Æ¤Ð¤ì¤ë EB_HOOK_END_GROUP_LEAF ¤Ë +ʬ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¼¡¤Î³¬ÁؤΥǡ¼¥¿¤Î³«»Ï°ÌÃ֤ϡ¢½ªÎ»¥·¡¼¥±¥ó¥¹¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ë¡¢°ú¿ô¤È¤·¤Æ +ÅϤäƤ­¤Þ¤¹¡£ +(¤³¤ÎÅÀ¤â¥á¥Ë¥å¡¼¤ÈƱÍͤʤΤǡ¢¥á¥Ë¥å¡¼¤Î²òÀâ¤ò»²¹Í¤Ë¤·¤Æ²¼¤µ¤¤¡£) +

+ +

+½ªÎ»¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç¤Ï¡¢eb_current_candidate() +¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢³«»Ï¥·¡¼¥±¥ó¥¹¤È½ªÎ»¥·¡¼¥±¥ó¥¹¤Î´Ö¤Ë¶´¤Þ¤ì¤¿¡Ö¸õÊä¡×¤Îʸ»úÎó +(¥Ý¥¤¥ó¥¿) ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +
+
+const char *candidate;
+
+candidate = eb_current_candidate(book);
+
+
+ + +

¶èÀڤꥳ¡¼¥É¤ÎÌäÂê

+ +

+ËÜʸ¤Ï¡¢ÀèƬ¤«¤éËöÈø¤Þ¤Ç°ìËܤηҤ¬¤Ã¤¿¥Ç¡¼¥¿Îó¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +±Ñ¸ì¼­Åµ¤Ê¤é¡¢ºÇ½é¤Îñ¸ì `A' ¤«¤éºÇ¸å¤Î `zzz' ¤Þ¤Ç¤ÎÀâÌÀ¤¬¡¢¤¹¤Ù¤Æ°ì¤Ä¤Î +¡ÖËÜʸ¡×¤ÎÃæ¤Ë½ñ¤«¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+°ìÈ̤ˡ¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¤¢¤ëñ¸ì¤ò¸¡º÷¤·¤¿ºÝ¤Ï¡¢ËÜʸ¤ÎÃ椫¤é +¤½¤Îñ¸ì¤òÀâÌÀ¤·¤¿Éôʬ¤À¤±¤òÈ´¤­½Ð¤·¤Æ½ÐÎϤ¹¤ë¤³¤È¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£ +¤¿¤È¤¨¤Ð¡¢`dictionary' ¤È¤¤¤¦Ã±¸ì¤ò°ú¤¤¤¿¾ì¹ç¡¢¼¡¤Î¤è¤¦¤Êʸ¾Ï¤¬½ÐÎϤµ¤ì¤ë +»ö¤¬´üÂÔ¤µ¤ì¤Þ¤¹¡£ +¤½¤Î¼¡¤ä¡¢¼¡¤Î¼¡¤Îñ¸ì¤ÎÀâÌÀ¤Þ¤Ç±ä¡¹¤Èɽ¼¨¤µ¤ì¤ë¤³¤È¤ò¡¢¤ª¤½¤é¤¯ÂçȾ¤Î +¥æ¡¼¥¶¤Ï˾¤Þ¤Ê¤¤È¦¤Ç¤¹¡£ +

+ +
+
+dictionary [̾] (ʣ: dictionaries)
+¼­Åµ¡¢»öŵ
+[ÎàµÁ] lexicon, glossary (ÍѸ켭ŵ), encyclopedia (É´²Ê»öŵ)
+
+
+ +

+¤·¤«¤·¡¢º¤¤Ã¤¿¤³¤È¤Ë CD-ROM ½ñÀҤˤϡ¢Ã±¸ì¤ÎÀâÌÀ¤Î½ª¤ï¤ê¤ò¼¨¤¹°õ +(¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹) ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +¤Ä¤Þ¤ê¡¢¤¢¤ë¸ì¤ÎÀâÌÀÉôʬ¤òÀµ³Î¤ËÈ´¤­½Ð¤¹¤³¤È¤Ï¡¢ÅŻҥ֥寤ä EPWING ¤Ç¤Ï +ÉÔ²Äǽ¤Ê¤Î¤Ç¤¹¡£ +

+ +

+¤·¤«¤·¤Ê¤¬¤é¡¢¹¬¤¤¤Ë¤â»ÔÈΤνñÀҤο¤¯¤Ë¤Ï¡¢Ã±¸ì¤ÎÀâÌÀ¤Î½ªÎ»°ÌÃ֤ˤÀ¤± +½Ð¸½¤¹¤ë¡¢ÆÃÍ­¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬Â¸ºß¤·¤Þ¤¹¡£ +¤â¤Á¤í¤ó¡¢¤³¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ÏËÜÍè¡Öñ¸ì¤ÎÀâÌÀ¤Î½ªÎ»¡×¤ò¼¨¤¹¤â¤Î +¤Ç¤Ï¤Ê¤¯Ê̤ÎÍÑÅӤȤ·¤ÆÍѤ¤¤ë¤Î¤Ç¤¹¤¬¡¢¡Ö½ªÎ»°ÌÃ֡פȤ·¤ÆÂåÍѤǤ­¤ë +¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¤³¤Î¡Ö½ªÎ»°ÌÃ֡פΰõ¤Ë»È¤¨¤ë¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î +¤³¤È¤ò¡¢¶èÀڤꥳ¡¼¥É (stop code) ¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ï¶èÀڤꥳ¡¼¥É¤ò¼«Æ°È½Äꤹ¤ëµ¡Ç½¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢È½Äê¤Ï +´°àú¤Ç¤Ï¤Ê¤¤¤Î¤Ç³°¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ +³°¤ì¤ë¤ÈËÜʸ¤¬ÅÓÃæ¤ÇÅÓÀڤ줿¤ê¡¢ËÜʸ¤Î³¤­¤¬±ä¡¹¤È½ÐÎϤµ¤ì¤¿¤ê¤·¤Þ¤¹¡£ +

+ +

+¤½¤Î¾ì¹ç¤Ï¡¢ÌÀ¼¨Åª¤Ë appendix +(¾Ü¤·¤¯¤Ï ebappendix ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öappendix (ÉÕÏ¿) ¤È¤Ï¡×¤ò»²¾È¤Î¤³¤È) +¤Ç¶èÀڤꥳ¡¼¥É¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ²óÈò¤Ç¤­¤ë½ñÀҤ⤢¤ê¤Þ¤¹¤¬¡¢ +»ÄÇ°¤Ê¤¬¤é¶èÀڤꥳ¡¼¥É¤¬¤Þ¤Ã¤¿¤¯Â¸ºß¤·¤Ê¤¤½ñÀҤ⾯¿ô¤Ê¤¬¤é¸ºß¤·¤Þ¤¹¡£ +¶èÀڤꥳ¡¼¥É¤ò»ý¤¿¤Ê¤¤½ñÀÒ¤ËÂФ·¤Æ¡¢Í­¸ú¤ÊÂнèÊýË¡¤Ïº£¤Î¤È¤³¤í¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+eb_read_text() ¤Ë¤è¤ëËÜʸ¤Î¼èÆÀ¤Ç¤Ï¡¢¶èÀڤꥳ¡¼¥É¤¬¸¡½Ð¤µ¤ì¤¿ +»þÅÀ¤ÇÆɤ߹þ¤ß¤ò»ß¤á¤Þ¤¹¡£ +¤µ¤é¤Ë·«¤êÊÖ¤· eb_read_text() ¤ò¸Æ¤ó¤Ç¤â¡¢¶èÀڤꥳ¡¼¥É¤è¤êÀè¤Î +ËÜʸ¤ÏÆɤ߹þ¤á¤Þ¤»¤ó¡£ +

+ +

+¶èÀڤꥳ¡¼¥É¤ò¸¡½Ð¤·¤¿¤«¤É¤¦¤«¤ÎȽÄê¤Ë¤Ï¡¢eb_is_text_stopped() +¤ò»È¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ºÇ¸å¤ËÆɤ߹þ¤ß¤ò¹Ô¤Ã¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÃæ¤Ë¡¢¶èÀڤꥳ¡¼¥É¤ò +¸¡½Ð¤·¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ËÜʸ°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤â¶èÀڤꥳ¡¼¥É¤Î³µÇ°¤Ï¸ºß¤·¤Þ¤¹¤Î¤Ç¡¢ +eb_is_text_stopped() ¤ò»È¤Ã¤Æ¶èÀڤꥳ¡¼¥É¤ò¸¡½Ð¤Ç¤­¤Þ¤¹¡£ +¤·¤«¤·¡¢ËÜʸ°Ê³°¤Ç¤Ï EB ¥é¥¤¥Ö¥é¥ê¤¬³Î¼Â¤Ë¶èÀÚ¤ê¤òȽÊ̤Ǥ­¤Þ¤¹¤Î¤Ç¡¢ +¸íȽÄê¤ÎÌäÂê¤Ïµ¯¤­¤Þ¤»¤ó¡£ +

+ +

+¸«½Ð¤·¤Ë¤ª¤±¤ë¶èÀÚ¤ê¤Ï¡¢¤½¤ì¤¾¤ì¤Îñ¸ì¤Î¸«½Ð¤·¤Î½ªÎ»°ÌÃ֤Ȥʤê¤Þ¤¹¡£ +¥á¥Ë¥å¡¼¤ª¤è¤ÓÊ£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷¤Ç¤Ï¡¢³¬Áز½¤µ¤ì¤¿¸Ä¡¹¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿ +¤Î½ªÎ»°ÌÃ֤ǶèÀÚ¤ê¤ÈȽÄꤵ¤ì¤Þ¤¹¡£ +(Ʊ°ì³¬ÁؤËÊ£¿ô¸Ä¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿¤¬¤¢¤Ã¤Æ¤â¡¢¸Ä¡¹¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿¤Ç +¶èÀÚ¤é¤ì¤Þ¤¹¡£) +Ãøºî¸¢É½¼¨¤Ç¤Ï¡¢Á´Ê¸¤Î½ªÎ»°ÌÃ֤ǶèÀÚ¤ê¤ÈȽÄꤵ¤ì¤Þ¤¹¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     text <book-path> <subbook-index> <number>
+ * Îã:
+ *     text /cdrom 0 10
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢ËÜʸ
+ *     ¤ÎÀèƬ¤«¤é <number> ¸Äʬ¤Îñ¸ì¤ÎÀâÌÀ¤ò½ÐÎϤ·¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/text.h>
+
+#define MAXLEN_TEXT 1023
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    int subbook_index;
+    EB_Position text_position;
+    char text[MAXLEN_TEXT + 1];
+    ssize_t text_length;
+    int text_count;
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 4) {
+        fprintf(stderr, "Usage: %s book-path subbook-index number\n",
+            argv[0]);
+        exit(1);
+    }
+    text_count = atoi(argv[3]);
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    error_code = eb_set_subbook(&book, subbook_list[subbook_index]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ¥Æ¥­¥¹¥È¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/
+    error_code = eb_text(&book, &text_position);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get text information, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ¥Æ¥­¥¹¥È¤ò¥·¡¼¥¯¡£*/
+    error_code = eb_seek_text(&book, &text_position);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to seek text, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    i = 0;
+    while (i < text_count) {
+        /* ¥Æ¥­¥¹¥È¤ò¼èÆÀ¡£*/
+        error_code = eb_read_text(&book, NULL, NULL, NULL, MAXLEN_TEXT,
+            text, &text_length);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to read text, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+        fputs(text, stdout);
+
+        if (!eb_is_text_stopped(&book))
+            continue;
+
+        fputs("\n----------------------------------------\n", stdout);
+
+        /* ¼¡¤Îñ¸ì¤ÎÀâÌÀ¤Ø°ÜÆ°¡£*/
+        error_code = eb_forward_text(&book, NULL);
+        if (error_code == EB_ERR_END_OF_CONTENT)
+            fputs("\n[END]\n", stdout);
+        else if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to read text, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+        i++;
+    }
+        
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Hook_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Hook_Hook ¤Ï¡¢¥Õ¥Ã¥¯¤ÎÀßÄê°ÌÃÖ¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Á´Éô¤Ç EB_NUMBER_OF_HOOKS ¸Ä¤Î¥Õ¥Ã¥¯¥³¡¼¥É +¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +ÄêµÁ¤µ¤ì¤Æ¤¤¤ëÀßÄê°ÌÃÖ¥³¡¼¥É¤Î°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¼¡¤ÎÀá (¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È) +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

EB_Hook ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Hook ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É¤È¤½¤ì¤ËÂбþ¤¹¤ë¥Õ¥Ã¥¯´Ø¿ô +¤ÎÁȤòɽ¤·¤Þ¤¹¡£ +ÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Hook_Struct EB_Hook;
+
+struct EB_Hook_Struct {
+    EB_Hook_Code code;
+    EB_Error_Code (*FUNC)(EB_Book *, EB_Appendix *, void *,
+        EB_Hook_Code, int, const unsigned int *);
+};
+
+
+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ + +

EB_Hookset ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Hookset ¤Ï¡¢¥Õ¥Ã¥¯°ì¼°¤òɽ¤·¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤ÇÍøÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤ËÂФ·¤Æ¡¢¤É¤Î¤è¤¦¤Ê +¥Õ¥Ã¥¯´Ø¿ô¤ò»ØÄꤹ¤ë¤Î¤«¤òµ­Ï¿¤¹¤ë¤¿¤á¤Î·¿¤Ç¤¹¡£ +

+ +

+EB_Hookiset ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ï¡¢¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¤¬ÍÑ°Õ +¤·¤Æ¤¤¤ë´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë +ÂФ·¤Æ eb_initialize_hookset() ¤ò¸Æ¤ó¤Ç½é´ü²½¤·¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +

+ + +

¥Õ¥Ã¥¯´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤Ç¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î»ÅÍͤˤĤ¤¤Æµ­¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ eb_read_text() ¤ª¤è¤Ó +eb_read_heading() ¤Î¥×¥í¥È¥¿¥¤¥×¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code
+eb_read_text(EB_Book *book, EB_Appendix *appendix,
+    EB_Hookset *hookset, void *container, size_t text_max_length,
+    char *text, ssize_t *text_length)
+
+
+ +

+°ìÊý¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code
+hook_function(EB_Book *book, EB_Appendix *appendix, void *container,
+    EB_Hook_Code code, int argc, const unsigned int *argv);
+
+
+ +

+°ú¿ô book, appendix, container ¤Ï¡¢ +eb_read_text() ¤¢¤ë¤¤¤Ï eb_read_heading() ¤Ë +ÅϤµ¤ì¤¿Ãͤ¬¤½¤Î¤Þ¤Þ¥Õ¥Ã¥¯´Ø¿ô¤Ë¤âÅϤäƤ­¤Þ¤¹¡£ +

+ +

+appendix ¤È¤¤¤¦¤Î¤Ï¡¢½ñÀÒ¤ËÂФ¹¤ëÊä½õ¥Ç¡¼¥¿¤òÄ󶡤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È +¤Ç¤¹ +(appendix (ÉÕÏ¿) ¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯¤Ï +ebappendix ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öappendix (ÉÕÏ¿) ¤È¤Ï¡×¤ò»²¾È¤Î¤³¤È)¡£ + +

+°ú¿ô container ¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¥Õ¥Ã¥¯´Ø¿ô¤Ë +²¿¤«¥Ç¡¼¥¿¤òÅϤ·¤¿¤¤¤È¤­¤Ë»È¤¤¤Þ¤¹¡£ +

+ +

+ºÇ¸å¤Î argc ¤È argv ¤Ë¤Ï¡¢²Ã¹©Á°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬ +ÅϤµ¤ì¤Þ¤¹¡£ +ʸ»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤Ï¡¢Ê¸»ú¥³¡¼¥ÉÈֹ椬ÅϤäƤ­¤Þ¤¹¡£ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤Ï¡¢¤½¤Î¥·¡¼¥±¥ó¥¹¼«ÂΤΥ³¡¼¥É +(1f ¤Ç»Ï¤Þ¤ë¥³¡¼¥É) ¤È¡¢¤â¤·¤¢¤ì¤Ð¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î +°ú¿ô¤ò¤¬ÅϤäƤ­¤Þ¤¹¡£ +¸Ä¡¹¤Î¥Õ¥Ã¥¯¤Ë¤ª¤¤¤Æ¡¢argc ¤È argv ¤Ë¤É¤¦¤è¤¦¤ÊÃͤ¬ +ÅϤäƤ¯¤ë¤Î¤«¡¢¾Ü¤·¤¯¤Ï ¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤ÎÃ椫¤é¼¡¤Ëµó¤²¤ë´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ø¤Î +½ñ¤­¹þ¤ß¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
    +
  • eb_write_text() +
  • eb_write_text_string() +
  • eb_write_text_byte1() +
  • eb_write_text_byte2() +
+ +

+¤³¤ì¤é¤Î´Ø¿ô¤Î»ÅÍͤ˴ؤ·¤Æ¾Ü¤·¤¯¤Ï +¡Ö[¥Æ¥­¥¹¥È¥Ç¡¼¥¿] ´Ø¿ô¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤¬ EB_SUCCESS °Ê³°¤ÎÃͤòÊÖ¤¹¤È¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò +¸Æ¤Ó½Ð¤·¤¿ eb_read_text(), eb_read_heading() +¤Ï¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤â¤Î¤È¸«¤Ê¤·¡¢¤½¤Î¥¨¥é¡¼¥³¡¼¥É¤ò¤½¤Î¤Þ¤Þ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ËÊÖ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç¤Ï¡¢book ¤ËÂФ·¤Æ°Ê²¼¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤Ï +¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÎÆ°ºî¤Ï¡¢Ì¤ÄêµÁ¤Ç¤¹¡£ +

+ +
    +
  • eb_seek_text() +
  • eb_read_text() +
  • eb_read_heading() +
  • eb_read_rawtext() +
  • eb_forward_text() +
  • eb_backward_text() +
  • eb_set_subbook() +
  • eb_unset_subbook() +
  • eb_load_all_subbook() +
  • eb_bind() +
  • eb_finalize_book() +
  • eb_finalize_library() +
+ + +

¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Õ¥Ã¥¯¥³¡¼¥É¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ + +

Äê¿ô EB_HOOK_NULL

+ +

+EB_HOOK_NULL ¤Ï¸·Ì©¤Ë¤Ï¥Õ¥Ã¥¯¤Ç¤Ï¤Ê¤¯¡¢ +eb_set_hooks() ¤ÇÊ£¿ô¤Î¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤¹¤ëºÝ¤Ë¡¢ +EB_Hook ÇÛÎó¤ÎËöÈø¤ÎÍ×ÁǤò¼¨¤¹¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +¤³¤Î¥Õ¥Ã¥¯¥³¡¼¥É¤ËÂФ·¤Æ¡¢¥Õ¥Ã¥¯´Ø¿ô¤ÏÅÐÏ¿¤Ç¤­¤Þ¤»¤ó¡£ +

+ +

+¾Ü¤·¤¯¤Ï¡¢¡Ö[¥Æ¥­¥¹¥È¥Ç¡¼¥¿] ¥Õ¥Ã¥¯´Ø¿ô¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

Äê¿ô EB_HOOK_INITIALIZE

+ +

+EB_HOOK_INITIALIZE ¤Ï¡¢eb_seek_text() ¤ò +¸Æ¤Ó½Ð¤·¤¿Ä¾¸å¤ÎºÇ½é¤Î eb_read_text(), +eb_read_heading() ¤Î¸Æ¤Ó½Ð¤·»þ¤Ë½èÍý¤µ¤ì¤Þ¤¹¡£ +²¿¤«½é´ü²½½èÍý¤ò¤·¤¿¤¤¤È¤­¤Ë¡¢»È¤¦¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 0 ¤Ç¤¹¡£ +¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_NARROW

+ +

Äê¿ô EB_HOOK_END_NARROW

+ +

+EB_HOOK_BEGIN_NARROW ¤ª¤è¤Ó EB_HOOK_END_NARROW +¤Ï¡¢È¾³Ñɽ¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_NARROW ¤Ê¤é 0x1f04¡¢ +EB_HOOK_END_NARROW ¤Ê¤é 0x1f05 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_SUBSCRIPT

+ +

Äê¿ô EB_HOOK_END_SUBSCRIPT

+ +

+EB_HOOK_BEGIN_SUBSCRIPT ¤ª¤è¤Ó +EB_HOOK_END_SUBSCRIPT ¤Ï¡¢²¼ÉÕ¤­É½¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤ÎÃͤϥ¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_SUBSCRIPT ¤Ê¤é 0x1f06¡¢ +EB_HOOK_END_SUBSCRIPT ¤Ê¤é 0x1f07 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë +²¿¤â½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_SET_INDENT

+ +

+EB_HOOK_SET_INDENT ¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¹ÔƬ¤Î»ú²¼¤²»ØÄê¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f09 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤¬¡¢»ú²¼¤²¤ÎÎ̤òɽ¤·¤Þ¤¹¡£ +

+ +

+»ú²¼¤²¤ÎÎ̤Îñ°Ì¤¬¡¢²¿¤Ç¤¢¤ë¤Î¤«¤ÏÉÔÌÀ¤Ç¤¹¡£ +¤Þ¤¿¡¢»ú²¼¤²Î̤κǾ®Ãͤϡ¢0 ¤Î¾ì¹ç¤È 1 ¤Î¾ì¹ç¤ÎÆóÄ̤꤬¤¢¤ê¤Þ¤¹¡£ +¤¤¤º¤ì¤Ë¤·¤í¡¢»ú²¼¤²¤Ï 1 ¤º¤ÄÁý¤¨¤¿¤ê¸º¤Ã¤¿¤ê¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_NEWLINE

+ +

+EB_HOOK_SET_NEWLINE ¤Ï¡¢²þ¹Ô¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë +ÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤¿¤À¤·¡¢eb_read_heading() (¸«½Ð¤·¤ÎÆɤ߹þ¤ß) ¤Ë¤è¤ë½èÍý¤Ç¤Ï¡¢ +²þ¹Ô¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ï¶èÀڤꥳ¡¼¥É¤È¤·¤Æ¤â°·¤ï¤ì¤Þ¤¹¡£ +¤½¤Î¤¿¤á¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬¸«¤Ä¤«¤Ã¤Æ¤â¤³¤Î¥Õ¥Ã¥¯¤Î½èÍý¤Ï¹Ô¤ï¤ì¤º¡¢ +¤¿¤À¤Á¤ËÆɤ߹þ¤ß½èÍý¤Ï½ªÎ»¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f0a ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¤¬¡¢eb_initialize_hookset() ¤Ç +EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ë¤È¡¢¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ +eb_hook_newline() ¤¬¼«Æ°Åª¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_SUPERSCRIPT

+ +

Äê¿ô EB_HOOK_END_SUPERSCRIPT

+ +

+EB_HOOK_BEGIN_SUPERSCRIPT ¤ª¤è¤Ó +EB_HOOK_END_SUPERSCRIPT ¤Ï¡¢¾åÉÕ¤­É½¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_SUPERSCRIPT ¤Ê¤é 0x1f0e¡¢ +EB_HOOK_END_SUPERSCRIPT ¤Ê¤é 0x1f0f ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_NO_NEWLINE

+ +

Äê¿ô EB_HOOK_END_NO_NEWLINE

+ +

+EB_HOOK_BEGIN_NO_NEWLINE ¤ª¤è¤Ó +EB_HOOK_END_NO_NEWLINE ¤Ï¡¢²þ¹Ô¶Ø»ß¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_NO_NEWLINE ¤Ê¤é 0x1f10¡¢ +EB_HOOK_END_NO_NEWLINE ¤Ê¤é 0x1f11 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_EMPHASIS

+ +

Äê¿ô EB_HOOK_END_EMPHASIS

+ +

+EB_HOOK_BEGIN_EMPHASIS ¤ª¤è¤Ó EB_HOOK_END_EMPHASIS +¤Ï¡¢¶¯Ä´É½¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_EMPHASIS ¤Ê¤é 0x1f12¡¢ +EB_HOOK_END_EMPHASIS ¤Ê¤é 0x1f13 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_CANDIDATE

+ +

Äê¿ô EB_HOOK_END_CANDIDATE_LEAF

+ +

Äê¿ô EB_HOOK_END_CANDIDATE_GROUP

+ +

+EB_HOOK_BEGIN_CANDIDATE ¤Ï¡¢Ê£¹ç¸¡º÷¤Î¸õÊä¤È¤Ê¤ë¸ì¤Î³«»Ï¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤½¤ì¤ËÂФ·¤Æ¡¢½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ï 2 ¼ïÎà +¤¢¤ê¤Þ¤¹¡£ +°ì¤Ä¤Ï EB_HOOK_END_CANDIDATE_LEAF ¤Ç¡¢¸õÊä¤È¤Ê¤ë¸ì¤¬¼ÂºÝ¤Ë +¸¡º÷¤ÎÆþÎϸì¤È¤·¤Æ»È¤¨¤ë¤â¤Î¤Ç¤¢¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +¤â¤¦°ì¤Ä¤Ï EB_HOOK_END_CANDIDATE_GROUP ¤Ç¡¢¸õÊä¤È¤Ê¤ë¸ì¤Ï +¤µ¤é¤ËºÙ¤«¤¤ÁªÂò»è¤Ëʬ¤«¤ì¤Æ¤¤¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +(¤·¤¿¤¬¤Ã¤Æ¡¢¸õÊä¤È¤Ê¤ë¸ì¤ò¸¡º÷¤ÎÆþÎϸì¤È¤·¤Æ»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£) +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_CANDIDATES ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f43 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_END_CANDIDATE_LEAF ¤ª¤è¤Ó +EB_HOOK_END_CANDIDATE_GROUP ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É +¤½¤Î¤â¤Î¤Ç¡¢0x1f63 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¥Õ¥Ã¥¯ EB_HOOK_END_CANDIDATE_GROUP ¤Î argv[1] +¤È argv[2] ¤Ï¡¢¼¡¤Î³¬ÁؤθõÊä°ìÍ÷¥Ç¡¼¥¿¤Î³«»Ï¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +¥Õ¥Ã¥¯ EB_HOOK_END_CANDIDATE_LEAF ¤Ç¤Ï¡¢argv[1], +argv[2] ¤Ï 2 ¤Ä¤È¤â 0 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_REFERENCE

+ +

Äê¿ô EB_HOOK_END_REFERENCE

+ +

+EB_HOOK_BEGIN_REFERENCE ¤ª¤è¤Ó +EB_HOOK_END_REFERENCE ¤Ï¡¢ÊÌ°ÌÃ֤Υƥ­¥¹¥È¥Ç¡¼¥¿¤Î»²¾È³«»Ï¤È +½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_REFERENCE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f42 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_REFERENCE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc +¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f62 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢»²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_KEYWORD

+ +

Äê¿ô EB_HOOK_END_KEYWORD

+ +

+EB_HOOK_BEGIN_KEYWORD ¤ª¤è¤Ó EB_HOOK_END_KEYWORD ¤Ï¡¢ +¸¡º÷¥­¡¼¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_KEYWORD ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f41 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_KEYWORD ¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Ë 1 ¸Ä¤Î°ú¿ô¤òÅϤ·¤Þ¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f61 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_DECORATION

+ +

Äê¿ô EB_HOOK_END_DECORATION

+ +

+EB_HOOK_BEGIN_DECORATION ¤ª¤è¤Ó +EB_HOOK_END_DECORATION ¤Ï¡¢Ê¸»ú½¤¾þ¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_DECORATION ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1fe0 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_KEYWORD ¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Ë 1 ¸Ä¤Î°ú¿ô¤òÅϤ·¤Þ¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1fe1 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_NARROW_FONT

+ +

Äê¿ô EB_HOOK_WIDE_FONT

+ +

+EB_HOOK_NARROW_FONT ¤ª¤è¤Ó EB_HOOK_WIDE_FONT ¤Ï¡¢ +¤½¤ì¤¾¤ìȾ³Ñ³°»ú¤ÈÁ´³Ñ³°»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢³°»ú¤Îʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¤¬¡¢eb_initialize_hookset() ¤Ç +EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ë¤È¡¢¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ +eb_hook_narrow_character_text() ¤ª¤è¤Ó +eb_hook_wide_character_text() ¤¬¼«Æ°Åª¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_ISO8859_1

+ +

+EB_HOOK_ISO8859_1 ¤Ï¡¢ISO 8859-1 (¥é¥Æ¥óʸ»ú 1) ʸ»ú¤ËÂФ¹¤ë +¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢ISO 8859-1 ¤Îʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢argv[0] ¤ÎÃͤò¤½¤Î¤Þ¤Þ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ê¸»ú¤Ï¤½¤Î¤Þ¤Þ ISO 8859-1 ¤È¤·¤Æ¡¢1 ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬ÍøÍѤµ¤ì¤ë¤Î¤Ï¡¢½èÍýÃæ¤Î½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ +EB_CHARCODE_ISO8859_1 ¤Î¾ì¹ç¤À¤±¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_NARROW_JISX0208

+ +

Äê¿ô EB_HOOK_WIDE_JISX0208

+ +

+EB_HOOK_NARROW_JISX0208 ¤È EB_HOOK_WIDE_JISX0208 +¤Ï¡¢È¾³Ñ¤ª¤è¤ÓÁ´³Ñ¤Î JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ʸ»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢JIS X 0208 ¤Îʸ»ú¤òÆüËܸì EUC ¤Çɽ¸½¤·¤¿¤È¤­¤Î +ʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢argv[0] ¤ÎÃͤò¤½¤Î¤Þ¤Þ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ê¸»ú¤Ï¤½¤Î¤Þ¤ÞÆüËܸì EUC ¤È¤·¤Æ¡¢2 ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬ÍøÍѤµ¤ì¤ë¤Î¤Ï¡¢ +½èÍýÃæ¤Î½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ EB_CHARCODE_JISX0208 ¤« +EB_CHARCODE_JISX0208_GB2312 ¤Î¾ì¹ç¤À¤±¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_GB2312

+ +

+EB_HOOK_GB2312 ¤Ï¡¢GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ʸ»ú¤ËÂФ¹¤ë +¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢GB 2312 ¤Îʸ»ú¤òÃæ¹ñ¸ì EUC ¤Çɽ¸½¤·¤¿¤È¤­¤Î +ʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢argv[0] ¤ÎÃͤò¤½¤Î¤Þ¤Þ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ê¸»ú¤Ï¤½¤Î¤Þ¤ÞÃæ¹ñ¸ì EUC ¤È¤·¤Æ¡¢2 ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬ÍøÍѤµ¤ì¤ë¤Î¤Ï¡¢½èÍýÃæ¤Î½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ +EB_CHARCODE_JISX0208_GB2312 ¤Î¾ì¹ç¤À¤±¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_MONO_GRAPHIC

+ +

Äê¿ô EB_HOOK_END_MONO_GRAPHIC

+ +

+EB_HOOK_BEGIN_MONO_GRAPHIC ¤ª¤è¤Ó +EB_HOOK_END_MONO_GRAPIHC ¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤγ«»Ï¤È½ªÎ»¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MONO_GRAPHIC ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 4 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f32 ¤« 0x1f44 ¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï¡¢¿ÞÈǤι⤵¤ÈÉý +(¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +¤¿¤À¤·¡¢ÅŻҥ֥寤Υâ¥Î¥¯¥í¿ÞÈÇ (ºÇ½é¤Î°ú¿ô¤¬ 0x1f32 ¤Î +¾ì¹ç) ¤Ë¤Ï¡¢¿ÞÈǤι⤵¤ÈÉý¤Î¾ðÊ󤬷礱¤Æ¤¤¤ë¤Î¤Ç¡¢ÃͤϤɤÁ¤é¤â 0 ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_MONO_GRAPHIC ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¤¹¡£ +EB_HOOK_BEGIN_MONO_GRAPHIC ¤Î argv[0] ¤¬ +0x1f32 ¤Ê¤é¡¢EB_HOOK_END_MONO_GRAPHIC ¤Î +argv[0] ¤Ï 0x1f52 ¤Ë¤Ê¤ê¡¢0x1f44 +¤Ê¤é 0x1f64 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¿ÞÈǥǡ¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_GRAY_GRAPHIC

+ +

Äê¿ô EB_HOOK_END_GRAY_GRAPHIC

+ +

+¤³¤ì¤é¤Î¥Õ¥Ã¥¯Ì¾¾Î¤Ï¡¢¥°¥ì¡¼¥¹¥±¡¼¥ë¿ÞÈǤΤ¿¤á¤ËͽÌ󤵤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ +ËܥС¼¥¸¥ç¥ó¤Î EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¤Þ¤ÀÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_COLOR_BMP

+ +

Äê¿ô EB_HOOK_BEGIN_COLOR_JPEG

+ +

Äê¿ô EB_HOOK_END_COLOR_GRAPHIC

+ +

+EB_HOOK_BEGIN_COLOR_BMP ¤È EB_HOOK_COLOR_JPEG +¤Ï¡¢¤½¤ì¤¾¤ì BMP ·Á¼°¤È JPEG ·Á¼°¤Î¥«¥é¡¼¿ÞÈǤγ«»Ï¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +³«»Ï¤Î¥Õ¥Ã¥¯¤Ï BMP ¤È JPEG ¤È¤Ç¥Õ¥Ã¥¯¤¬Ê¬¤«¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢½ªÎ»¤Î +¥Õ¥Ã¥¯¤Ï¶¦Ä̤ǡ¢EB_HOOK_END_COLOR_GRAPIHC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_COLOR_BMP ¤È +EB_HOOK_COLOR_JPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï +4 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f4d ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï¡¢¿ÞÈǤÎÉý¤È¹â¤µ +(¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_END_COLOR_BMP ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f6d ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¿ÞÈǥǡ¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥«¥é¡¼¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_IN_COLOR_BMP

+ +

Äê¿ô EB_HOOK_BEGIN_IN_COLOR_JPEG

+ +

Äê¿ô EB_HOOK_END_IN_COLOR_GRAPHIC

+ +

+EB_HOOK_BEGIN_IN_COLOR_BMP ¤È EB_HOOK_IN_COLOR_JPEG ¤Ï¡¢ +¤½¤ì¤¾¤ì BMP ·Á¼°¤È JPEG ·Á¼°¤Î¥¤¥ó¥é¥¤¥ó¥«¥é¡¼¿ÞÈǤγ«»Ï¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +³«»Ï¤Î¥Õ¥Ã¥¯¤Ï BMP ¤È JPEG ¤È¤Ç¥Õ¥Ã¥¯¤¬Ê¬¤«¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢½ªÎ»¤Î +¥Õ¥Ã¥¯¤Ï¶¦Ä̤ǡ¢EB_HOOK_END_IN_COLOR_GRAPIHC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_IN_COLOR_BMP ¤È +EB_HOOK_IN_COLOR_JPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc +¤Ï 4 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f3c ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï¡¢¿ÞÈǤÎÉý¤È¹â¤µ +(¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_END_IN_COLOR_BMP ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f5c ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¿ÞÈǥǡ¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥«¥é¡¼¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_CLICKABLE_AREA

+ +

Äê¿ô EB_HOOK_END_CLICKABLE_AREA

+ +

+EB_HOOK_BEGIN_CLICKABLE_AREA ¤Ï¡¢¥«¥é¡¼¿ÞÈǤª¤è¤Ó¥¤¥ó¥é¥¤¥ó¥«¥é¡¼¿ÞÈÇÆâ¤ÎÆÃÄê¶ë·ÁÎΰè¤ËÂФ·¤Æ¡¢»²¾ÈÀè¾ðÊó¤òɽ¸½¤·¤¿³«»Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +ƱÍͤˡ¢EB_HOOK_END_CLICKABLE_AREA ¤Ï½ªÎ»¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_CLICKABLE_AREA ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 7 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f4f ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¤½¤ì¤¾¤ì¶ë·ÁÎΰè¤Î³«»Ï +x, y ºÂɸ¤òɽ¤·¤Þ¤¹¡£ +¤½¤ì¤¾¤ì¶ë·ÁÎΰè¤Î³«»Ï x, y ºÂɸ¤òɽ¤·¤Þ¤¹¡£ +¥«¥é¡¼¿ÞÈǤκ¸¾å¤ÎºÂɸ¤¬ (0, 0) ¤Ç¤¹¡£ +ƱÍͤˡ¢argv[3] ¤È argv[4] ¤¬¿ÞÈǤα¦Êý¸þ¤Ø¤Î +Éý¤È¡¢²¼Êý¸þ¤Ø¤Î¹â¤µ¤òɽ¤·¤Þ¤¹¡£ +ºÇ¸å¤Î argv[5] ¤È argv[6] ¤¬»²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈÇ
+¡Ê£°¡¤£°¡Ë
+¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡Ê£ø¡¤£ù¡Ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¹â¤µ¢¬¡¡¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¶ë·ÁÎΰ衡¡¡¡¡¡¡¡¡¨¢¡¡¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡Éý¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¢«¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨«¢ª¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢­¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+EB_HOOK_END_CLICKABLE_AREA ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f6f ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+»²¾ÈÀè¾ðÊó¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_WAVE

+ +

Äê¿ô EB_HOOK_END_WAVE

+ +

+EB_HOOK_BEGIN_WAVE ¤ª¤è¤Ó EB_HOOK_END_WAVE ¤Ï¡¢ +WAVE (PCM) ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë +¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_WAVE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 6 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f4a ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï²»À¼¥Ç¡¼¥¿¤Î³«»Ï°ÌÃ֤Π+¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¡¢argv[4] ¤È argv[5] ¤Ï +½ªÎ»°ÌÃ֤Υڡ¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤ò¤½¤ì¤¾¤ìɽ¤·¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_WAVE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï +1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f6a ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+²»À¼¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖWAVE ²»À¼¡× +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_MPEG

+ +

Äê¿ô EB_HOOK_END_MPEG

+ +

+EB_HOOK_BEGIN_MPEG ¤ª¤è¤Ó EB_HOOK_END_MPEG ¤Ï¡¢ +MPEG ·Á¼°¤ÎÆ°²è¥Ç¡¼¥¿¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯ +¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 6 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f39 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¡Á argv[5] ¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾¤ò +¥¨¥ó¥³¡¼¥É¤·¤¿¿ôÃÍÎó¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_MPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï +1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f59 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+Æ°²è¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖMPEG Æ°²è¡× +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

¥Õ¥Ã¥¯¥»¥Ã¥ÈÁàºî´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ + +

void eb_initialize_hookset (EB_Hookset *hookset)

+ +

+´Ø¿ô initialize_hookset() ¤Ï¡¢hookset ¤Î»Ø¤¹ +EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_Hookiset ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò +¸Æ¤ÖÁ°¤Ë¡¢ +ɬ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ºÆÅÙ +eb_initialize_hookset() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢³Æ¥Õ¥Ã¥¯¤Î½é´üÃͤò¼¡¤Î¤è¤¦¤Ë¥»¥Ã¥È¤·¤Þ¤¹¡£ +

+ + + + + + + + + + + + + + +
¥Õ¥Ã¥¯ + ¥Õ¥Ã¥¯´Ø¿ô +
EB_HOOK_NARROW_JISX0208 + eb_hook_euc_to_ascii() +
EB_HOOK_NARROW_FONT + eb_hook_narrow_character_text() +
EB_HOOK_WIDE_FONT + eb_hook_wide_character_text() +
EB_HOOK_NEWLINE + eb_hook_newline() +
¾åµ­°Ê³°¤Î¥Õ¥Ã¥¯ + NULL (¥Õ¥Ã¥¯´Ø¿ô¤Ê¤·) +
+ + +

EB_Error_Code eb_finalize_hookset (EB_Hookset *hookset)

+ +

+´Ø¿ô eb_finalize_hookset() ¤Ï¡¢hookset ¤¬»Ø¤¹ +EB_Hooksest ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¡¢¤¹¤Ù¤Æ²òÊü¤µ¤ì¤Þ¤¹¡£ +¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯¤Ë¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ NULL ¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_set_hook(), eb_set_hooks() +¤ò¸Æ¤Ö¤³¤È¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_hook (EB_Hookset *hookset, const EB_Hook *hook)

+ +

+´Ø¿ô eb_set_hook() ¤Ï¡¢hookset ¤¬»Ø¤¹ EB_Hooksest +¥ª¥Ö¥¸¥§¥¯¥È¤Ë¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò°ì¤ÄÅÐÏ¿¤·¤Þ¤¹¡£ +ÅÐÏ¿¤¹¤ë¥Õ¥Ã¥¯¤Î¼ïÎà¤È¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢hook ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+Ʊ¤¸¥Õ¥Ã¥¯¥³¡¼¥É¤ËÊ£¿ô²ó¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤â¡¢Í­¸ú¤Ë¤Ê¤ë¤Î¤ÏºÇ¸å¤Ë +ÅÐÏ¿¤·¤¿¤â¤Î¤À¤±¤Ç¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ NULL ¤ò»ØÄꤹ¤ë¤È¡¢ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥Õ¥Ã¥¯¤¬ +²ò½ü¤µ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_hooks (EB_Hookset *hookset, const EB_Hook *hooks)

+ +

+¤³¤Î´Ø¿ô¤Ï eb_set_hook() ¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢Ç¤°Õ¤Î¸Ä¿ô¤Î +¥Õ¥Ã¥¯´Ø¿ô¤ò°ìÅÙ¤ËÅÐÏ¿¤Ç¤­¤ëÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ÅÐÏ¿¤¹¤ë¥Õ¥Ã¥¯¤Î¼ïÎà¤È¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢hooks ¤Ç»ØÄꤷ¤Þ¤¹¡£ +hooks ¤Ï EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇÛÎó (¤ÎÀèƬ) ¤ò +»Ø¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤Þ¤¿¡¢¤³¤ÎÇÛÎó¤ÎËöÈø¤Ë¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É EB_HOOK_NULL ¤ò¥»¥Ã¥È +¤·¤¿ EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤òÇÛÎóÍ×ÁǤȤ·¤ÆÃÖ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+eb_set_hooks() ¤Ï¡¢ÇÛÎó¤ÎÀèƬ¤«¤é½çÈ֤ˡ¢»ØÄꤵ¤ì¤¿¥Õ¥Ã¥¯¥³¡¼¥É +¤ËÂФ·¤Æ¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤­¤Þ¤¹¡£ +¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤È¡¢»Ä¤ê¤Î¥Õ¥Ã¥¯¤ÎÅÐÏ¿¤Ï¤»¤º¤Ë¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤ò¤¿¤À¤Á¤ËÊÖ¤·¤Þ¤¹¡£ +¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯´Ø¿ô¤ÎÅÐÏ¿¤ËÀ®¸ù¤¹¤ë¤È¡¢EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

ÁȤ߹þ¤ß¥Õ¥Ã¥¯´Ø¿ô¤Î¾ÜºÙ

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢´ðËÜŪ¤Ê¥Õ¥Ã¥¯´Ø¿ô¤ò¤¤¤¯¤Ä¤«ÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£ +ËÜÀá¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Î»ÅÍͤò²òÀ⤷¤Þ¤¹¡£ +

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ +

+¤¤¤º¤ì¤Î¥Õ¥Ã¥¯´Ø¿ô¤â¡¢°ú¿ô appendix ¤È container ¤Ë +NULL ¤òÅϤµ¤ì¤Æ¤â¡¢Æ°ºî¤Ë»Ù¾ã¤Ï¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_euc_to_ascii (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_euc_to_ascii() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_NARROW_JISX0208 (Ⱦ³Ñ JIS X 0208 ʸ»ú) ¤Î¤¿¤á¤Î +¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò´Ø¿ô +eb_initialiez_hookset() ¤Ç½é´ü²½¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤¬¼«Æ°Åª¤Ë +ÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢argv[0] ¤È¤·¤ÆÅϤµ¤ì¤¿ JIS X 0208 ¤Îʸ»ú +(¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÏÆüËܸì EUC) ¤òÄ´¤Ù¡¢Âбþ¤¹¤ë ASCII ʸ»ú¤¬Â¸ºß¤¹¤ì¤Ð +¤½¤Î ASCII ʸ»ú¤ò¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ½ñ¤­¹þ¤ß¡¢¤Ê¤±¤ì¤Ð JIS X 0208 ¤Î +ʸ»ú¤ò¤½¤Î¤Þ¤Þ½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_narrow_character_text (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

EB_Error_Code eb_hook_wide_character_text (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_narrow_character_text() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_NARROW_FONT (Ⱦ³Ñ³°»ú) ¤Î¤¿¤á¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +ƱÍÍ¤Ë eb_hook_wide_character_text() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_WIDE_FONT (Á´³Ñ³°»ú) ¤Î¤¿¤á¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò´Ø¿ô +eb_initialiez_hookset() ¤Ç½é´ü²½¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤¬¼«Æ°Åª +¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢appendix ¤ÎÁªÂòÃ椷¤Æ¤¤¤ëÉûËܤ¬¡¢ +argv[0] ¤È¤·¤ÆÅϤµ¤ì¤¿³°»ú¤ÎÂåÂØʸ»úÎó¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤« +Ä´¤Ù¤Þ¤¹¡£ +»ý¤Ã¤Æ¤¤¤ì¤Ð¤½¤Îʸ»úÎó¤ò¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ½ñ¤­¹þ¤ß¡¢»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð +<?> ¤È¤¤¤¦Ê¸»úÎó¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+appendix ¤¬ NULL ¤Î¾ì¹ç¤ä¡¢ÉÕÏ¿¤¬ÉûËܤòÁªÂòÃæ¤Ç +¤Ê¤¤¾ì¹ç¤â¡¢ÂåÂØʸ»úÎó¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤â¤Î¤È¤·¤Æ°·¤¤¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_newline (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_narrow_newline() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_NEWLINE (²þ¹Ô) ¤Î¤¿¤á¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò´Ø¿ô +eb_initialiez_hookset() ¤Ç½é´ü²½¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤¬¼«Æ°Åª +¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë \n ¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_empty (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_empty() ¤Ï¡¢²¿¤â¤·¤Ê¤¤¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿Áàºî´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ + +

int eb_have_text (EB_Book *book)

+ +

int eb_have_menu (EB_Book *book)

+ +

int eb_have_copyright (EB_Book *book)

+ +

+´Ø¿ô eb_have_text() ¤Ï¡¢book ¤ÎÁªÂò¤·¤Æ¤¤¤ëÉûËܤ¬¡¢ +ËÜʸ¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍͤˡ¢eb_have_menu() ¤Ï¥á¥Ë¥å¡¼¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¡¢ +eb_have_copyright() ¤ÏÃøºî¸¢É½¼¨¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¡¢»ý¤Ã¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_text (EB_Book *book, EB_Position *position)

+ +

EB_Error_Code eb_menu (EB_Book *book, EB_Position *position)

+ +

EB_Error_Code eb_copyright (EB_Book *book, EB_Position *position)

+ +

+´Ø¿ô eb_text() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤÎËÜʸ +¤Î³«»Ï°ÌÃÖ¤ò position ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ƱÍͤˡ¢eb_menu() ¤Ï¥á¥Ë¥å¡¼¤Î³«»Ï°ÌÃÖ¤ò¡¢ +eb_have_copyright() ¤ÏÃøºî¸¢É½¼¨¤Î³«»Ï°ÌÃÖ¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢position ¤Ëɬ¤º¥·¡¼¥¯¤¬¼ºÇÔ¤¹¤ë°ÌÃÖ¤ò½ñ¤­¹þ¤ó¤Ç¡¢ +¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤ¬¡¢ÂоݤȤʤë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ +EB_ERR_NO_SUCH_SEARCH ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_seek_text (EB_Book *book, const EB_Position *position)

+ +

+´Ø¿ô eb_seek_text() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤΠ+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ò¥·¡¼¥¯¤·¤Þ¤¹¡£ +¥·¡¼¥¯°ÌÃÖ¤Ï position ¤Ç»ØÄꤷ¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢position ¤Ï¾ï¤Ë¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é¤Î°ÌÃ֤Ȥ·¤Æ²ò¼á +¤µ¤ì¤Þ¤¹¡£ +(ÁêÂаÌÃ֤ؤΥ·¡¼¥¯µ¡Ç½¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¤¢¤ê¤Þ¤»¤ó¡£) +

+ +

+¥·¡¼¥¯¤ò¹Ô¤¦¤È¡¢¤½¤ì¤Þ¤Ç¤Ë¹Ô¤Ã¤¿Æɤ߹þ¤ß¤Î¾õÂÖµ­Ï¿¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +eb_read_text(), eb_read_heading(), +eb_read_rawtext() ¤òÍѤ¤¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤Ë¤Ï¡¢ +Á°¤â¤Ã¤Æ¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤ˥ƥ­¥¹¥È¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Ê¤¤¤È¤­¤Ï¡¢EB_ERR_NO_TEXT +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢½ñÀҤˤè¤Ã¤Æ¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò¼ý¤á¤¿¥Õ¥¡¥¤¥ë¤Ë¤Ï¾¤Î¥Ç¡¼¥¿¤â +°ì½ï¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¥Æ¥­¥¹¥È°Ê³°¤Î¥Ç¡¼¥¿¤Ë¥¢¥¯¥»¥¹ +¤·¤Æ¤â¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¸½ºß°ÌÃÖ¡¢Æɤ߹þ¤ß¤Ë´Ø¤¹¤ë¾õÂÖµ­Ï¿¤ÏÊѲ½¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_tell_text (EB_Book *book, EB_Position *position)

+ +

+´Ø¿ô eb_seek_text() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤΠ+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢position ¤Î»Ø¤¹Îΰè¤Ë¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤ò½ñ¤­¹þ¤ß¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥·¡¼¥¯¤¬É¬¤º¼ºÇÔ¤¹¤ë°ÌÃÖ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤ˥ƥ­¥¹¥È¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Ê¤¤¤È¤­¤Ï¡¢EB_ERR_NO_TEXT +¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_read_text (EB_Book *book, EB_Appendix *appendix, EB_Hookset *hookset, void *container, size_t text_max_length, char *text, ssize_t *text_length)

+ +

EB_Error_Code eb_read_heading (EB_Book *book, EB_Appendix *appendix, EB_Hookset *hookset, void *container, size_t text_max_length, char *text, ssize_t *text_length)

+ +

+´Ø¿ô eb_read_text() ¤È eb_read_heading() ¤Ï¡¢ +book +¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤΥƥ­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤«¤é¥Ç¡¼¥¿ +¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +eb_read_heading() ¤Ï¸«½Ð¤·¤ÎÆɤ߹þ¤ß¤ËÍѤ¤¡¢ +eb_read_text() ¤Ï¤½¤ì°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤ËÍѤ¤¤Þ¤¹¡£ +

+ +

+Æɤ߹þ¤Þ¤ì¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢É¬Íפ˱þ¤¸¤Æʸ»ú¥³¡¼¥É¤ÎÊÑ´¹ +(¡Öʸ»ú¥³¡¼¥É¡× ¤ò»²¾È¤Î¤³¤È) ¤¬¹Ô¤ï¤ì¤¿¸å¤Ë¡¢hookset +¤Î»Ø¤¹¥Õ¥Ã¥¯¥»¥Ã¥È¤Ë¤·¤¿¤¬¤Ã¤Æ²Ã¹©¤µ¤ì¤Þ¤¹¡£ +hookset ¤¬ NULL ¤Î¤È¤­¤Ï¡¢Âå¤ï¤ê¤Ë EB ¥é¥¤¥Ö¥é¥ê¦ +¤ÇÍÑ°Õ¤·¤Æ¤¤¤ë ɸ½à¤Î¥Õ¥Ã¥¯¥»¥Ã¥È (default hookset) ¤¬ +ÍѤ¤¤é¤ì¤Þ¤¹¡£ +¤³¤Î¥Õ¥Ã¥¯¥»¥Ã¥È¤Ï¡¢eb_initialize_hookset() ¤Ë¤è¤Ã¤Æ +½é´ü²½¤·¤¿¤À¤±¤Î¥Õ¥Ã¥¯¥»¥Ã¥È¤ÈÅù²Á¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯¥»¥Ã¥È¤Ë¤è¤Ã¤Æ²Ã¹©¤µ¤ì¤¿¸å¤Ë¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï text ¤Î +»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¡¢½ñ¤­¹þ¤ó¤À¥Ð¥¤¥È¿ô¤¬ text_length ¤Î»Ø¤¹ +Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +text ¤Ï¥Ê¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤Þ¤¹¤¬¡¢text_length ¤Ë¤Ï +¥Ê¥ëʸ»ú¤Îʬ¤Ï´ªÄê¤ËÆþ¤ì¤Þ¤»¤ó¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢text_max_length ¤Ç»ØÄꤵ¤ì¤¿¥Ð¥¤¥È¿ô¤òĶ¤¨¤Æ +½ñ¤­¹þ¤à¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢text_max_length ¤Ë¤â¥Ê¥ëʸ»ú¤Îʬ¤Ï´ªÄê¤ËÆþ¤Ã¤Æ¤¤¤Þ¤»¤ó +¤Î¤Ç¡¢text ¤Ï text_max_length + 1 ¥Ð¥¤¥Èʬ¤Î¥Ç¡¼¥¿ +¤ò³ÊǼ¤Ç¤­¤ëÂ礭¤µ¤¬É¬ÍפǤ¹¡£ +

+ +

+¤É¤Á¤é¤Î´Ø¿ô¤â¡¢À®¸ù¤¹¤ì¤Ð EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ì¤Ð +text_length ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ó¤Ç¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢eb_read_text() ¤È eb_read_heading() ¤ò +¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢ +¤¢¤é¤«¤¸¤á eb_seek_text() ¤Î¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤¬¥»¥Ã¥È¤µ¤ì¤¿¾õÂ֤ˤ·¤Æ¤ª¤«¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¥·¡¼¥¯¤ò¤»¤º¤Ë¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+µÕ¤Ë°ìÅÙ¥·¡¼¥¯¤¹¤ì¤Ð¡¢¶èÀڤꥳ¡¼¥É¤¬¸¡½Ð¤µ¤ì¤ë¤Þ¤Ç¤Î´Ö¤Ê¤é¡¢´Ø¿ô¤ò +·«¤êÊÖ¤·¸Æ¤Ö¤³¤È¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î³¤­¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¶èÀڤꥳ¡¼¥É¤¬¸¡½Ð¤µ¤ì¤ë¤È¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤âÆɤ߹þ¤ß¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£ +¤½¤Î¾ì¹ç¤Ç¤â¡¢Â¾¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Ê¤±¤ì¤Ð EB_SUCCESS ¤¬Ê֤ꡢ +text ¤Ë¤Ï¶õʸ»úÎ󤬽ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢°ìÅÙ eb_read_text() ¤ò¸Æ¤Ó½Ð¤·¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò +Æɤ߹þ¤ß»Ï¤á¤¿¤é¡¢·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹ºÝ¤â¡¢eb_read_text() ¤ò +»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÅÓÃ椫¤é eb_read_heading() ¤ª¤è¤Ó¸å½Ò¤Î +eb_read_rawtext() ¤ËÀÚ¤êÂؤ¨¤Æ¸Æ¤Ó½Ð¤¹¤È +EB_ERR_DIFF_CONTENT ¥¨¥é¡¼¤¬ÊÖ¤ê¤Þ¤¹¡£ +´Ø¿ô eb_read_heading() ¤Ë¤Ä¤¤¤Æ¤âƱÍͤǤ¹¡£ +¤³¤ÎÀ©¸Â¤Ï¡¢ºÆÅÙ eb_seek_text() ¤ò¸Æ¤Ó½Ð¤¹¤«¡¢ +eb_set_subbook() ¤ÇÉûËܤòÁªÂò¤·Ä¾¤¹¤Þ¤Ç³¤­¤Þ¤¹¡£ +

+ +

+ÅϤµ¤ì¤¿ appendix ¤¬¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò»ý¤Ã¤¿ÉûËܤòÁªÂòÃæ +¤Ç¤¢¤ì¤Ð¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤È¤·¤Æ¤½¤ÎÃͤò»ÈÍѤ·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢eb_read_text() ¤¬¶èÀڤꥳ¡¼¥É¤ò¼«Æ°È½Ê̤ò +»î¤ß¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎȽÄê¤Ï´°àú¤Ê¤â¤Î¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢½ñÀҤˤè¤Ã¤Æ¤ÏÊѤʰÌÃÖ¤ÇËÜʸ +¤¬ÀÚ¤ì¤Æ¤·¤Þ¤¦¤«¤âÃΤì¤Þ¤»¤ó¡£ +(ËÜʸ°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë´Ø¤·¤Æ¤Ï¡¢¤³¤Î¤è¤¦¤ÊÌäÂê¤Ïµ¯¤­¤Þ¤»¤ó¡£) +

+ +

+°ú¿ô container ¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¥Õ¥Ã¥¯´Ø¿ô¤Ë +¥Ç¡¼¥¿¤òÅϤ¹¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£ +eb_read_text(), eb_read_heading() ¤Ç¤Ï¡¢Ä¾ÀÜ +¤³¤Î°ú¿ô¤ÎÃͤò»²¾È¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+°ú¿ô appendix, container ¤Ï¡¢¤½¤Î¤Þ¤Þ¥Õ¥Ã¥¯´Ø¿ô¤Ë +ÅϤµ¤ì¤Þ¤¹¡£ +¤³¤ì¤é¤Î°ú¿ô¤Ï NULL ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ +(¸Æ¤Ó½Ð¤µ¤ì¤ë¥Õ¥Ã¥¯´Ø¿ô¤Ç»Ù¾ã¤¬¤Ê¤±¤ì¤Ð¡£) +

+ +

+¤Ê¤ª¡¢¥Õ¥Ã¥¯´Ø¿ô¤ä eb_read_text(), eb_read_heading() +¼«¿È¤¬Ê¸»ú¤Ê¤¤¤·¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹°ì¸Äʬ¤ËÂФ¹¤ë¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤â¤¦¤È +¤·¤¿¤È¤­¤Ë¡¢text ¤Ë½½Ê¬¤Ê¶õ¤­Îΰ褬¤Ê¤¤¤È¤¤¤¦¤³¤È¤¬µ¯¤³¤ê +ÆÀ¤Þ¤¹¡£ +¤½¤Î¾ì¹ç¡¢´Ø¿ô¤ÏÅÓÃæ¤Þ¤Ç text ¤Ë½ñ¤­¹þ¤à¤³¤È¤Ï¤»¤º¤Ë¡¢ +¤¤¤Ã¤¿¤ó½èÍý¤ò½ª¤¨¤ÆÌá¤ê¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤Î¥Ç¡¼¥¿¤¬ÅÓÃæ¤ÇÀڤ줿¤ê¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿Ê¬¤Ï¡¢ÅöÁ³¤Ê¤¬¤é text_length ¤Î´ªÄê¤Ë¤Ï +Æþ¤ê¤Þ¤»¤ó¡£ +½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿¤Ï book ÆâÉô¤ËÊݸ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ +¤â¤¦°ìÅÙ eb_read_text(), eb_read_heading() ¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢Á°²ó¤Î¸Æ¤Ó½Ð¤·¤Ç½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿¤¬¤Þ¤º text +¤ÎÀèƬ¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +½ñ¤­¹þ¤ó¤À¥Ç¡¼¥¿¤Ï text_length ¤Î´ªÄê¤ËÆþ¤ê¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢book ¤¬Êݸ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿¤ÎŤµ¤¬ +text_max_length ¤òĶ¤¨¤Æ¤¤¤ë¤È¡¢²¿¤â½ñ¤­¹þ¤Þ¤º¤Ë´Ø¿ô¤Ï½ªÎ» +¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿¤Ï°ú¤­Â³¤­Êݸ¤µ¤ì¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢text_max_length ¤¬¤¢¤Þ¤ê¤Ë¾®¤µ¤¯¡¢¤«¤ÄÊÝ»ý¤·¤Æ¤¤¤ë +¥Ç¡¼¥¿¤Î¤Û¤¦¤¬Ä¹¤¤¤È¡¢²¿ÅٸƤӽФ·¤Æ¤â text ¤Ø¤Î½ñ¤­¹þ¤ß¤¬ +¿Ê¤ß¤Þ¤»¤ó¤Î¤Ç¡¢Ãí°Õ¤¬É¬ÍפǤ¹¡£ +

+ +

+eb_seek_text() ¤ò¸Æ¤Ó½Ð¤¹¤«¡¢eb_set_subbook() +¤ÇÉûËܤòÁªÂò¤·Ä¾¤¹¤È¡¢Êݸ¤·¤Æ¤¤¤¿¥Ç¡¼¥¿¤ÏÇË´þ¤µ¤ì¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_read_rawtext (EB_Book *book, size_t text_max_length, char *text, ssize_t *text_length)

+ +

+´Ø¿ô eb_read_rawtext() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ë +ÉûËܤΥƥ­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤«¤é¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ +

+eb_read_text() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤Î´Ø¿ô¤Ï¥Õ¥Ã¥¯¥»¥Ã¥È¤Ë¤è¤ë +¥Ç¡¼¥¿¤Î²Ã¹©¤äʸ»ú¥³¡¼¥É¤ÎÊÑ´¹¤ò°ìÀڹԤ鷺¡¢¥Ç¡¼¥¿¤òÆâÉôɽ¸½¤Î¤Þ¤ÞÊÖ¤·¤Þ¤¹¡£ +Æɤ߹þ¤à¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎà¤Ï¡¢²¿¤Ç¤¢¤Ã¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ +

+Æɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï text ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¡¢ +½ñ¤­¹þ¤ó¤À¥Ð¥¤¥È¿ô¤¬ text_length ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢text_max_length ¤Ç»ØÄꤵ¤ì¤¿¥Ð¥¤¥È¿ô¤òĶ¤¨¤Æ +½ñ¤­¹þ¤à¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢eb_read_text() ¤È°Û¤Ê¤ê¡¢text ¤Ï¥Ê¥ëʸ»ú +¤Ç½ªÃ¼¤µ¤ì¤Þ¤»¤ó¡£ +¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤ä¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ÎÅÓÃæ¤Ç text ¤Î»Ä¤êÎΰè +¤¬Â­¤ê¤Ê¤¯¤Ê¤Ã¤¿¾ì¹ç¤â¡¢ÅÓÃæ¤Þ¤Ç¤Ï½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+½èÍý¤¬À®¸ù¤¹¤ì¤Ð EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ì¤Ð +text_length ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ó¤Ç¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢¤¢¤é¤«¤¸¤á eb_seek_text() ¤Î +¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤¬¥»¥Ã¥È¤µ¤ì¤¿¾õÂ֤ˤ·¤Æ +¤ª¤«¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¥·¡¼¥¯¤ò¤»¤º¤Ë¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢Á°²óÆɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î³¤­ +¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤¿¤À¤·¡¢¶èÀڤꥳ¡¼¥É¤Î¸¡½Ð¤ò¹Ô¤¤¤Þ¤»¤ó¤Î¤Ç¡¢¤Ò¤¿¤¹¤é¸Æ¤Ó½Ð¤·¤ò³¤±¤ë¤È¡¢ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ÎËöÈø¤Þ¤Ç¹Ô¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +

+ +

+°ìÅÙ eb_read_rawtext() ¤ò¸Æ¤Ó½Ð¤·¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß +»Ï¤á¤¿¤é¡¢·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹ºÝ¤â¡¢eb_read_rawtext() ¤ò +»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÅÓÃ椫¤é¡¢eb_read_text() ¤ä eb_read_heading() ¤Ë +ÀÚ¤êÂؤ¨¤ë¤È¡¢ +EB_ERR_DIFF_CONTENT ¥¨¥é¡¼¤¬ÊÖ¤ê¤Þ¤¹¡£ +¤³¤ÎÀ©¸Â¤Ï¡¢ºÆÅÙ eb_seek_text() ¤ò¸Æ¤Ó½Ð¤¹¤«¡¢ +eb_set_subbook() ¤ÇÉûËܤòÁªÂò¤·Ä¾¤¹¤Þ¤Ç³¤­¤Þ¤¹¡£ +

+ + +

int eb_is_text_stopped (EB_Book *book)

+ +

+´Ø¿ô eb_is_text_stopped() ¤Ï¡¢ºÇ¸å¤ËÆɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤¬ËöÈø¤Ë㤷¤¿¤«¤É¤¦¤«¤òȽÄꤷ¤Þ¤¹¡£ +

+ +

+book ¤¬ÁªÂòÃæ¤ÎÉûËܤǡ¢ºÇ¸å¤Ë eb_read_text() +¤Þ¤¿¤Ï eb_read_heading() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤ÀºÝ¤Ë¡¢ +¶èÀڤꥳ¡¼¥É¤ò¸¡½Ð¤·¤¿¤«¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿Á´ÂΤΰìÈÖ¸å¤í¤Î°ÌÃÖ¤Ë㤷¤Æ +Æɤ߹þ¤ß¤ò½ª¤¨¤Æ¤¤¤ì¤Ð¡¢¤³¤Î´Ø¿ô¤Ï 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¤È¤­¤Ï¡¢0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤ä¡¢ÁªÂòÃæ¤ÎÉûËܤ˥ƥ­¥¹¥È¥Ç¡¼¥¿ +¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤â 0 ¤¬ÊÖ¤ê¤Þ¤¹¡£ +

+ +

+eb_read_text() ¤Þ¤¿¤Ï eb_read_heading() ¤Ç +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤Ç¤¤¤Ê¤¤¾ì¹ç¤â¡¢Æ±ÍÍ¤Ë 0 ¤¬ÊÖ¤ê¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤À¸å¤Ç¤¢¤Ã¤Æ¤â¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë´Ø¤¹¤ë +¾õÂÖµ­Ï¿¤ò¥ê¥»¥Ã¥È¤¹¤ë´Ø¿ô (eb_read_text() ¤Î¹à¤ò»²¾È) ¤ò¸Æ¤ó¤Ç¤·¤Þ¤¦¤È¡¢ +Æɤ߹þ¤ó¤Ç¤¤¤Ê¤¤¤È¸«¤Ê¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+Ä̾ï¤Ï¤³¤Î´Ø¿ô¤ò»È¤ï¤Ê¤¯¤Æ¤â¡¢eb_read_text() ¤ä +eb_read_heading() ¤¬ 0 ¤òÊÖ¤·¤¿¤é¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎËöÈø¤Ë +㤷¤¿¤È¤ß¤Ê¤·¤Æº¹¤·»Ù¤¨¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +¤¿¤À¤·¤½¤ÎºÝ¤Ï¡¢°ú¿ô text_max_length ¤ÎÃͤò½½Ê¬Â礭¤¯¼è¤Ã¤Æ +²¼¤µ¤¤¡£ +

+ + + +

EB_Error_Code eb_write_text_byte1 (EB_Book *book, int byte1)

+ +

EB_Error_Code eb_write_text_byte2 (EB_Book *book, int byte1, int byte2)

+ +

EB_Error_Code eb_write_text_string (EB_Book *book, const char *string)

+ +

EB_Error_Code eb_write_text (EB_Book *book, const char *stream, size_t stream_length)

+ +

+¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢¤¤¤º¤ì¤â¥Õ¥Ã¥¯´Ø¿ô¤ÎÃ椫¤é¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤à +¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +½ñ¤­¹þ¤à¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¡¢»È¤¤Ê¬¤±¤Æ²¼¤µ¤¤¡£ +

+ +

+eb_write_text_byte1() ¤Ï¡¢byte1 ¤Ç»ØÄꤷ¤¿ +1 ¥Ð¥¤¥È¤ÎÃͤò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +eb_write_text_byte2() ¤Ï¡¢byte1, byte2 +¤Ç»ØÄꤷ¤¿ 2 ¥Ð¥¤¥È¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +eb_write_text_string() ¤Ï¡¢string ¤Ç»ØÄꤷ¤¿ +ʸ»úÎó¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +eb_write_text() ¤Ï¡¢stream ¤«¤é»Ï¤Þ¤ëŤµ +stream_length ¥Ð¥¤¥È¤Î¥Ð¥¤¥ÈÎó¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¤É¤Î´Ø¿ô¤â¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ºÇ½ªÅª¤Ë¡¢½ñ¤­¹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¸µ¤Ç¤¢¤ë +eb_read_text(), eb_read_heading() ¤«¤é +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ËÅϤµ¤ì¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤­¤Ë¡¢¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿¾ì¹ç +¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

const char *eb_current_candidate (EB_Book *book)

+ +

+´Ø¿ô eb_current_candidate() ¤Ï¡¢¥¢¥¯¥»¥¹Ãæ¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î +¸½ºß°ÌÃ֤˽ñ¤«¤ì¤Æ¤¤¤ë¡¢Ê£¹ç¸¡º÷¤Î¸õÊä¤È¤Ê¤ë¸ì¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ÊÖ¤¹Ê¸»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç EB_MAX_WORD_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎŤµ¤Ë¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+¤³¤Î´Ø¿ô¤ÏÈó¾ï¤ËÆüì¤Ç¡¢Ê£¹ç¸¡º÷¤Î¸õÊä¤È¤Ê¤ë¸ì¤Î½ªÎ»¤ò°ÕÌ£¤¹¤ë +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯¤Ç¤¢¤ë EB_HOOK_END_CANDIDATE_LEAF +¤ª¤è¤Ó EB_HOOK_END_CANDIDATE_GROUP ¤ËÂФ¹¤ë¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç +¤Î¤ß¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì½ê¤Ç¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÎÆ°ºî¤Ï¡¢Ì¤ÄêµÁ¤Ç¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·Êý¤Ç¤¹¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤäƤ­¤¿ EB_Book +¥ª¥Ö¥¸¥§¥¯¥È (¤Ø¤Î¥Ý¥¤¥ó¥¿) ¤ò¡¢¤½¤Î¤Þ¤Þ¤³¤Î´Ø¿ô¤Ë°ú¿ô¤È¤·¤ÆÅϤ·¤Æ +¤ä¤ê¤Þ¤¹¡£ +

+ +

+book ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢´Ø¿ô¤ÎÊÖ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¾ì¹ç¤ÏÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +´Ø¿ô¤ÎÊÖ¤¹Ê¸»úÎó¤Ï¡¢Â¾¤Î¥Õ¥Ã¥¯¤Ë¤è¤ë²Ã¹©½èÍý¤Î±Æ¶Á¤ò¼õ¤±¤Þ¤»¤ó¡£ +ʸ»ú¥³¡¼¥É¤ÎÊÑ´¹¤ò¹Ô¤¦°Ê³°¤Ï¡¢ÆâÉô¥Ç¡¼¥¿¤ò¤½¤Î¤Þ¤ÞÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢¤³¤Î´Ø¿ô¤¬ÊÖ¤·¤¿Ê¸»úÎó¤ò»²¾È¤Ç¤­¤ë¤Î¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤«¤éÌá¤ë¤Þ¤Ç¤Î +´Ö¤À¤±¤Ç¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

EB_Error_Code eb_forward_text (EB_Book *book, EB_Appendix *appendix)

+ +

EB_Error_Code eb_backward_text (EB_Book *book, EB_Appendix *appendix)

+ +

+´Ø¿ô eb_forward_text() ¤È eb_backward_text() ¤Ï¡¢ +book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤÎËÜʸ¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤òÁ°¸å¤Ë°ÜÆ°¤µ¤»¡¢ +ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤òñ°Ì¤È¤·¤¿Æ¬½Ð¤·¤ò¹Ô¤¤¤Þ¤¹¡£ +¤Á¤ç¤¦¤É¡¢²»³Ú CD ¤Î¶Ê¤ÎƬ½Ð¤·¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+eb_forward_text() ¤ÏËÜʸ¤ÎËöÈøÊý¸þ¤Ë¸þ¤«¤Ã¤Æ¥¢¥¯¥»¥¹°ÌÃÖ¤ò +¿Ê¤á¡¢eb_backward_text() ¤ÏÀèƬÊý¸þ¤Ë¸þ¤«¤Ã¤Æ¥¢¥¯¥»¥¹°ÌÃÖ¤ò +Ìᤷ¤Þ¤¹¡£ +

+ +

+eb_forward_text() ¤Î¸Æ¤Ó½Ð¤·¤Ç¤Ï¡¢¥¢¥¯¥»¥¹°ÌÃÖ¤Ïɬ¤º¼¡¤Î¸ì¤Î +ÀâÌÀ¤Î³«»Ï°ÌÃ֤ޤǰÜÆ°¤·¤Þ¤¹¡£ +¤½¤ì¤ËÂФ·¤Æ eb_backward_text() ¤Î¸Æ¤Ó½Ð¤·¤Ç¤Ï¡¢°ÜÆ°À褬¾õÂÖ +¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£ +¤â¤·¡¢¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤¬¤½¤Îñ¸ì¤ÎÀâÌÀ¤ÎÀèƬ¤Ë¤¢¤ë¤È¤­¤Ï¡¢ +eb_backward_text() ¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¡¢°ì¤ÄÁ°¤Îñ¸ì¤ÎÀâÌÀ¤Î +ÀèƬ¤Ë¥¢¥¯¥»¥¹°ÌÃÖ¤¬°ÜÆ°¤·¤Þ¤¹¡£ +¥¢¥¯¥»¥¹°ÌÃÖ¤¬Ã±¸ì¤ÎÀâÌÀ¤ÎÅÓÃæ¤äËöÈø¤Ë¤¢¤ë¤È¤­¤Ï¡¢¤½¤Îñ¸ì¤ÎÀâÌÀ¤Î +ÀèƬ¤Ë°ÜÆ°¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+²Ã¤¨¤Æ¡¢¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢¤¢¤é¤«¤¸¤á eb_seek_text() +¤« eb_read_text() ¤ò¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤Æ¤¤¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£ +(eb_read_text() ¤Î¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¤ë¤Ë¤Ï¡¢¤µ¤é¤ËÁ°¤â¤Ã¤Æ +eb_seek_text() ¤Î¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¤ë¤³¤È¤¬¾ò·ï¤È¤Ê¤ê¤Þ¤¹¡£) +

+ +

+eb_read_text() ¤Ç¤Ï¤Ê¤¯¡¢eb_read_heading() ¤ä +eb_read_rawtext() ¤Î¸Æ¤Ó½Ð¤·¤ËÀ®¸ù¤·¤¿¸å¤Ç¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_DIFF_CONTENT ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢Á°¤â¤Ã¤Æ eb_seek_text() ¤Ç¥·¡¼¥¯¤»¤º¤Ë¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ËÜʸ¥Ç¡¼¥¿¤ÎËöÈø¤äÀèƬ¤Ë㤷¤Æ¤·¤Þ¤Ã¤Æ¡¢¤½¤ÎÊý¸þ¤Ë¤â¤¦ËÜʸ¤¬¤Ê¤¤¤È¤­¤Ï¡¢ +EB_ERR_END_OF_CONTENT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+appendix ¤¬ NULL ¤Ç¤Ï¤Ê¤¯¡¢¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò +»ý¤Ã¤¿ÉûËܤòÁªÂòÃæ¤Ç¤¢¤ì¤Ð¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤È¤·¤Æ¤½¤ÎÃͤò»ÈÍѤ·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢eb_read_text() ¤ÈƱ¤¸ÊýË¡¤Ç¶èÀڤꥳ¡¼¥É¤Î +¼«Æ°È½Ê̤ò»î¤ß¤Þ¤¹¡£ +

+ +

+¥¢¥¯¥»¥¹°ÌÃÖ¾å¤Ë¤¢¤ë¤Î¤¬¥á¥Ë¥å¡¼¤äÃøºî¸¢É½¼¨¤Î¤è¤¦¤Ë¡¢ËÜʸ°Ê³°¤Î +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ç¤¢¤Ã¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢ËÜʸ°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉô¤Ë¤Ï¡¢Æ¬½Ð¤·°ÌÃÖ¤¬¥Ç¡¼¥¿¤Î +ÀèƬ°ÌÃ֤ˤ·¤«¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¤³¤Î´Ø¿ô¤¬Ìò¤ËΩ¤Ä¾õ¶·¤Ï¤Û¤È¤ó¤É +¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+(¥á¥Ë¥å¡¼¤Ç¤Ï¡¢¸Ä¡¹¤Î³¬ÁؤΥá¥Ë¥å¡¼¥Ç¡¼¥¿¤¬¡¢¤½¤ì¤¾¤ìÆÈΩ¤·¤¿ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢Æ¬½Ð¤·¤ò¹Ô¤Ã¤Æ¤âÁ°¸å¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿¤Ø¤Ï +°ÜÆ°¤Ç¤­¤Þ¤»¤ó¡£ +Ê£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷¤âƱÍͤǤ¹¡£) +

+ + +

EB_Error_Code eb_forward_heading (EB_Book *book)

+ +

+´Ø¿ô eb_forward_heading() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ë +ÉûËܤθ«½Ð¤·¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤ò¸å¤Ë°ÜÆ°¤µ¤»¡¢¸«½Ð¤·¤Î¶èÀÚ¤ê¤òñ°Ì¤È¤·¤¿Æ¬½Ð¤· +¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+ËÜʸ¤ÎƬ½Ð¤·¤ò¹Ô¤¦´Ø¿ô eb_forward_text() ¤Î¸«½Ð¤·ÈǤǤ¹¡£ +¤¿¤À¤·¡¢¸«½Ð¤·¤ÇƬ½Ð¤·¤ò¹Ô¤¦µ¡²ñ¤Ï¡¢¥¯¥í¥¹¸¡º÷¤ÎËÜʸ¼èÆÀ¤Ë¸Â¤é¤ì¤ë¤¿¤á¡¢ +eb_backward_heading() ¤È¤¤¤¦´Ø¿ô¤ÏÍÑ°Õ¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤È¡¢¥¢¥¯¥»¥¹°ÌÃÖ¤¬¼¡¤Î¸«½Ð¤·¤Î³«»Ï°ÌÃ֤ޤǰÜÆ°¤·¤Þ¤¹¡£ +(¥¯¥í¥¹¸¡º÷¤Ç¤Ï¡¢¸«½Ð¤·Îΰè¤ÎÃæ¤Ë¡Ö¸«½Ð¤·¡×¤È¡ÖËÜʸ¡×¤¬¸ò¸ß¤Ë½ñ¤«¤ì¤Æ +¤¤¤Þ¤¹¤¬¡¢¥Ç¡¼¥¿¹½Â¤¾å¡ÖËÜʸ¡×¤È¡Ö¸«½Ð¤·¡×¤Ï¶èÊ̤¬ÉÕ¤­¤Þ¤»¤ó¡£ +¥¢¥¯¥»¥¹°ÌÃÖ¤¬¥¯¥í¥¹¸¡º÷¤Î¸«½Ð¤·ÎΰèÆâ¤Î¾ì¹ç¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤ÈºÇ¤â¶á¤¤ +¡Ö¸«½Ð¤·¡×¤â¤·¤¯¤Ï¡ÖËÜʸ¡×¤Î³«»Ï°ÌÃ֤ޤǰÜÆ°¤·¤Þ¤¹¡£) +

+ +

+eb_read_heading() ¤Ç¤Ï¤Ê¤¯¡¢eb_read_text() ¤ä +eb_read_rawtext() ¤Î¸Æ¤Ó½Ð¤·¤ËÀ®¸ù¤·¤¿¸å¤Ç¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_DIFF_CONTENT ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢Á°¤â¤Ã¤Æ eb_seek_text() ¤Ç¥·¡¼¥¯¤»¤º¤Ë¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¥¯¥í¥¹¸¡º÷°Ê³°¤Î¸¡º÷¥á¥½¥Ã¥É¤Î¸«½Ð¤·¤Î³ÊǼ°ÌÃÖ¤ËÂФ·¤Æ¡¢¤³¤Î´Ø¿ô¤ò +¸Æ¤Ö¤³¤È¤â²Äǽ¤Ç¤¹¤¬¡¢¤½¤Î¤è¤¦¤ÊɬÍפËÇ÷¤é¤ì¤ëµ¡²ñ¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-10.html b/lib/ebu/doc/eb-10.html new file mode 100644 index 0000000..770fa99 --- /dev/null +++ b/lib/ebu/doc/eb-10.html @@ -0,0 +1,1328 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

³°»ú

+ +

+ʸ»ú¥³¡¼¥É¤Ë¼ýÏ¿¤µ¤ì¤Æ¤¤¤Ê¤¤¡¢»äŪ¤ËÄêµÁ¤·¤¿Ê¸»ú¤Î¤³¤È¤ò¡¢Â¯¤Ë¡Ö³°»ú¡× +¤È¸À¤¤¤Þ¤¹¡£ +³°»ú¤È¤·¤ÆÄêµÁ¤·¤¿¸Ä¡¹¤Îʸ»ú¤ò¼±Ê̤¹¤ë¤¿¤á¤Ë¡¢Ê¸»ú¥³¡¼¥É¤Ë¼ýÏ¿¤µ¤ì¤¿ +ʸ»ú¤È¤Ï½ÅÊ£¤·¤Ê¤¤°ÌÃ֤ˡ¢³Æʸ»ú¤Îʸ»úÈÖ¹æ¤Ë³ä¤ê¿¶¤ë¤Î¤¬ÉáÄ̤Ǥ¹¡£ +(³ä¤êÅö¤Æ¤ëʸ»úÈÖ¹æ¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Öʸ»ú¥³¡¼¥É¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+»ÔÈΤÎÅŻҥ֥寡¢EPWING ¤Ç¤â¡¢¤Û¤È¤ó¤É¤¬³°»ú¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ +³°»ú¤ÎÄêµÁ¾õ¶·¤Ï½ñÀÒƱ»Î¤Ç¥Ð¥é¥Ð¥é¤Ç¡¢¤Þ¤Ã¤¿¤¯Åý°ì´¶¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤Ä¤Þ¤ê¡¢Æ±¤¸Ê¸»úÈÖ¹æ¤ò»È¤Ã¤Æ¤¤¤Æ¤â¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë³°»ú¤Ï½ñÀҤˤè¤Ã¤Æ +°ã¤¤¤Þ¤¹¡£ +³°»ú¤ÏÉûËÜËè¤ËÄêµÁ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¤¬¡¢°ì¤Ä¤Î CD-ROM ½ñÀÒÆâ¤Ç¤âÉûËÜ¤Ë +¤è¤Ã¤ÆÄêµÁ¤¬°Û¤Ê¤ë¤³¤È¤âÄÁ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +ÉûËܤˤè¤Ã¤Æ¤Ï¡¢¿ôÉ´¤«¤é¿ôÀé¤Î³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀҤǤϡ¢ÄêµÁ¤·¤¿³°»ú¤Î»ú·Á¥Ç¡¼¥¿ (¤Ä¤Þ¤ê¥Õ¥©¥ó¥È) ¤òÍÑ°Õ¤·¤Æ +¤¤¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Ç¤¢¤ê¡¢½ñÀҤˤè¤Ã¤Æ¤ÏÂ礭¤µ¤Î°Û¤Ê¤ë¿ô¼ïÎà +¤Î¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+µÕ¤Ë¸À¤¨¤Ð¡¢³°»ú¤ËÂФ·¤ÆÄ󶡤µ¤ì¤ë¥Ç¡¼¥¿¤Ï¡¢¥Õ¥©¥ó¥È¤À¤±¤Ç¤¹¡£ +¤¢¤ëʸ»úÈÖ¹æ¤ò³ä¤êÅö¤Æ¤é¤ì¤¿³°»ú¤¬¡¢´Á»ú¤Ê¤Î¤«¡¢È¯²»µ­¹æ¤Ê¤Î¤«¡¢ +¤½¤¦¤¤¤Ã¤¿Êä½õŪ¤Ê¾ðÊó¤ÏÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬³°»ú¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë¤Ï¡¢³°»ú¤Î¥Õ¥©¥ó¥È +¤ò¤½¤Î¤Þ¤Þɽ¼¨¤¹¤ë°Ê³°¤ËÊýË¡¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +

+ + + +

Ⱦ³Ñ³°»ú¤ÈÁ´³Ñ³°»ú

+ +

+CD-ROM ½ñÀҤˤª¤±¤ë³°»ú¤Ë¤Ï¡¢¡ÖÁ´³Ñ³°»ú¡×¡ÖȾ³Ñ³°»ú¡×¤ÎÆó¼ïÎब¤¢¤ê¤Þ¤¹¡£ +Á´³Ñ³°»ú¤ÏÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤Î²£¤È½Ä¤ÎŤµ¤¬¤ª¤è¤½ 1:1 ¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢ +Ⱦ³Ñ³°»ú¤Ç¤Ï 1:2 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡Á´³Ñ³°»ú¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡È¾³Ñ³°»ú¡¡¡¡
+¡¡¡¡¡¡¡¡¡Ê£±£¶¡ß£±£¶¡Ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ê£¸¡ß£±£¶¡Ë
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢£¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢£¢£¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢¢¢£¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢£¢£¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢
+
+
+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤Ï¡¢È¾³Ñɽ¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬ +¤¢¤ê (¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉô·Á¼°¡× ¤ò»²¾È¤Î¤³¤È)¡¢ +³«»Ï¤È½ªÎ»¤Î´Ö¤ËÃÖ¤«¤ì¤¿¤â¤Î¤ÏȾ³Ñ³°»ú¡¢¤½¤ì°Ê³°¤Î¤È¤³¤í¤Ê¤éÁ´³Ñ³°»ú¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ʸ»úÈÖ¹æ¤ÏƱ¤¸¤Ç¤â¡¢»ú·Á¤¬Á´³Ñ¤ÈȾ³Ñ¤Ç¤Ï¤Þ¤Ã¤¿¤¯°Û¤Ê¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹ +¤Î¤Ç¡¢³°»ú¤Îʸ»úÈÖ¹æ¤À¤±¤«¤é¡¢Á´³Ñ¤ÈȾ³Ñ¤Î¤É¤Á¤é¤«¤òȽÃǤ¹¤ë¤³¤È¤Ï +¤Ç¤­¤Þ¤»¤ó¡£ +¤«¤Ê¤é¤º¡¢Á°Êý¤ËȾ³Ñ³«»Ï¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬½Ð¸½¤·¤Æ¤¤¤¿¤«¤É¤¦¤« +¤È¤¤¤¦¾ðÊó¤Ë´ð¤Å¤¤¤ÆȽÃǤ·¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£ +

+ +

+¤¿¤À¤·¡¢Á´³Ñ¤«È¾³Ñ¤«¤ÎȽÄê¤Ï EB ¥é¥¤¥Ö¥é¥ê¦¤Ç¹Ô¤¤¤Þ¤¹¤Î¤Ç¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬Ê¸Ì®¤Î²òÀϤò¹Ô¤¦É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+CD-ROM ½ñÀÒ¤ÎÉûËܤˤϡ¢È¾³Ñ³°»ú¤¢¤ë¤¤¤ÏÁ´³Ñ³°»ú¤Î¤É¤Á¤é¤«°ìÊý¤À¤±¤ò +ÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¤·¡¢Î¾Êý¤È¤âÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£ +

+ + +

³°»ú¤ÎÂ礭¤µ¤È³°»ú¥³¡¼¥É

+ +

+³ÆÉûËܤˤϡ¢ÄêµÁ¤·¤Æ¤¤¤ë³°»ú¤Î¥Õ¥©¥ó¥È¤¬¥Ó¥Ã¥È¥Þ¥Ã¥×·Á¼°¤Ç¼ýÏ¿¤µ¤ì¤Æ +¤¤¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤ÎÂ礭¤µ¤Ï¡¢½Ä¤Î¥Ô¥¯¥»¥ë¿ô¤ò´ð½à¤Ë¤¹¤ë¤È 16, 24, 30, 48 ¤Î +4 ¼ïÎब¤¢¤ê¡¢Á´³Ñ³°»ú¡¢È¾³Ñ³°»ú¤½¤ì¤¾¤ì¤Î¥Õ¥©¥ó¥È¤ÎÂ礭¤µ +(²£¤Î¥Ô¥¯¥»¥ë¿ô¡ß½Ä¤Î¥Ô¥¯¥»¥ë¿ô) ¤Ï¼¡¤ÎÄ̤ê¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ + + + + + + +
½Ä¤Î¥Ô¥¯¥»¥ë¿ô Á´³ÑÁ´³Ñ Ⱦ³Ñ³°»ú
16 16x16 8x16
24 24x24 16x24
30 32x30 16x30
48 48x48 24x48
+ +

+¤¿¤À¤·¡¢¤¹¤Ù¤Æ¤ÎÉûËܤǤ³¤ì¤é 4 ¼ïÎà¤Î¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +½Ä¤¬ 16 ¥Ô¥¯¥»¥ë¤Î¤â¤Î¤Ïɬ¤ºÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¤½¤ì°Ê³°¤Ï¤Ê¤¤¤³¤È¤â +ÄÁ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +(³°»ú¤¬¤Þ¤Ã¤¿¤¯ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤âÍÑ°Õ¤µ¤ì +¤Þ¤»¤ó¡£) +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¤³¤Î¤è¤¦¤Ë½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô¡¢¤Ä¤Þ¤ê +¥Õ¥©¥ó¥È¤Î¹â¤µ (font height) ¤ò´ð½à¤Ë¡¢³°»ú¥Õ¥©¥ó¥È¤ÎÂ礭¤µ¤ò +¶èÊ̤·¤Æ¤¤¤Þ¤¹¡£ +¤½¤·¤Æ¡¢¤½¤ì¤¾¤ì¤Î¥Õ¥©¥ó¥È¤Î¹â¤µ (16, 24, 30, 48) ¤ËÂФ·¤Æ¡¢ +³°»ú¥³¡¼¥É (font code) ¤È¤¤¤¦¤â¤Î¤ò³ä¤êÅö¤Æ¤Æ¤¤¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤Î¹â¤µ¤ò»ØÄꤹ¤ëºÝ¤Ï¡¢É¬¤º¤³¤Î³°»ú¥³¡¼¥É¤ò»È¤¤¤Þ¤¹¡£ +

+ + + + + + + +
½Ä¤Î¥Ô¥¯¥»¥ë¿ô ³°»ú¥³¡¼¥É
16 EB_FONT_16
24 EB_FONT_24
30 EB_FONT_30
48 EB_FONT_48
+ + +

ÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÇÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë³°»ú¥Õ¥©¥ó¥È +¤Î¹â¤µ¤ÎÃ椫¤é°ì¤ÄÁª¤ó¤Ç¡¢ +ÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ (current font height) ¤È¤·¤Æ»ØÄꤹ¤ë +¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç³°»ú¤Î¥Õ¥©¥ó¥È¥Ç¡¼¥¿ (¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿) ¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢ +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤ò¤¢¤é¤«¤¸¤áÁªÂò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+ÁªÂò¤¹¤ë¤Ë¤Ï¡¢´Ø¿ô eb_set_font() ¤ò»È¤¤¤Þ¤¹¡£ +°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¡¢¹â¤µ 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤òÁªÂò¤¹¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+if (eb_set_font(&book, EB_FONT_24) != EB_SUCCESS) {
+    printf("eb_set_font_() failed\n");
+    return;
+}
+
+
+ +

+¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¹â¤µ 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤òÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ +¤¤¤ë¤â¤Î¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¤¬¡¢¼ÂºÝ¤Ë¤ÏÍÑ°Õ¤·¤Æ¤¤¤Ê¤¤ÉûËܤâÄÁ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +¤â¤·¡¢ÉûËܤ¬¹â¤µ 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ +eb_set_font() ¤Ï EB_ERR_NO_SUCH_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤·¤«¤·¡¢³°»ú¤òÁªÂò¤¹¤ëÁ°¤Ë¡¢Á°¤â¤Ã¤Æ¤½¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤ò +ÃΤꤿ¤¤¤È¤­¤â¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢2 Ä̤ê¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤º 1 ¤ÄÌܤϡ¢ÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤Î¹â¤µ¤Î°ìÍ÷¤ò +eb_font_list() ¤Ç¼èÆÀ¤¹¤ëÊýË¡¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢ÉûËÜ¥³¡¼¥É¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë eb_subbook_list() ¤È +»È¤¤Êý¤¬Îɤ¯»÷¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Font_Code font_list[EB_MAX_FONTS];
+int font_count;
+int i;
+
+if (eb_font_list(&book, font_list, &font_count) != EB_SUCCESS) {
+    printf("eb_font_list() failed\n");
+    return;
+}
+
+for (i = 0; i < font_count; i++) {
+    if (font_list[i] == EB_FONT_24)
+        printf("this subbook has EB_FONT_24\n");
+}
+
+
+ +

+2 ¤ÄÌܤϡ¢eb_have_font() ¤ò»È¤¦¤ä¤êÊý¤Ç¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ÆÃÄê¤Î¹â¤µ¤Î¥Õ¥©¥ó¥È¤ò¡¢ÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë¤«¤É¤¦¤« +Ä´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+if (eb_have_font(&book, EB_FONT_24)) {
+    printf("this subbook has EB_FONT_24\n");
+}
+
+
+ +

+¤Þ¤¿¡¢ÁªÂòÃæ¤ÎÉûËܤ¬È¾³Ñ³°»ú¡¢Á´³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ï¡¢¤½¤ì¤¾¤ì +eb_have_narrow_font(), eb_have_wide_font() +¤ò»È¤Ã¤ÆÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+if (eb_have_narrow_font(&book))
+    printf("this subbook has narrow font\n");
+if (eb_have_wide_font(&book))
+    printf("this subbook has wide font\n");
+
+
+ +

+¤Ê¤ª¡¢¤¢¤é¤«¤¸¤áÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤¤¤È¡¢³°»ú¤Î¹â¤µ¤ÏÁªÂò¤Ç¤­¤Ê¤¤¤Î¤Ç +Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +eb_set_subbook() ¤ÇÁªÂòÃæ¤ÎÉûËܤòÀÚ¤êÂؤ¨¤ë¤È¡¢³°»ú¥Õ¥©¥ó¥È +¤Î¹â¤µ¤Ï¾ï¤Ë̤ÁªÂò¤Î¾õÂÖ¤ËÌá¤ê¤Þ¤¹¡£ +

+ + +

³°»ú¥Õ¥©¥ó¥È¤Î¼è¤ê½Ð¤·

+ +

+³°»ú¤Î¹â¤µ¤òÁªÂò¤·¤¿¾õÂ֤Ǥ¢¤ì¤Ð¡¢³°»ú¤Î¥Õ¥©¥ó¥È¥Ç¡¼¥¿ +(¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿) ¤ò¼è¤ê½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹´Ø¿ô¤Ï¡¢ +Á´³Ñ³°»ú¤Ê¤é eb_wide_font_character_bitmap()¡¢ +Ⱦ³Ñ³°»ú¤Ê¤é eb_narrow_font_character_bitmap() ¤Ç¤¹¡£ +

+ +

+Á´³Ñ³°»ú 0xa121 ¤Î¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¥×¥í¥°¥é¥à¤Ï¡¢ +¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +Ⱦ³Ñ³°»ú¤Î¾ì¹ç¤Ï¡¢¸Æ¤Ó½Ð¤¹´Ø¿ô̾¤¬ÊѤï¤ë¤À¤±¤Ç¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤȳ°»ú¤Î¹â¤µ¤òÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+char bitmap[EB_SIZE_WIDE_FONT_48];
+
+if (eb_wide_font_character_bitmap(book, 0xa121, bitmap)
+    != EB_SUCCESS) {
+    return;
+}
+
+
+ +

+¤³¤³¤Ç¤Ï¡¢bitmap ¤Ë¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤ò³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£ +bitmap ¤ÎÎΰè¤È¤·¤Æ EB_SIZE_WIDE_FONT_48 +¥Ð¥¤¥È¤ò³ÎÊݤ·¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤ì¤Ï¹â¤µ 48 ¥Ô¥¯¥»¥ë¤Î³°»ú¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë +¤¿¤á¤ËɬÍפʥµ¥¤¥º¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤Î¥µ¥¤¥º¤Ï¡¢³°»ú¤Î¹â¤µ¤Ë±þ¤¸¤Æ°ìÄê¤Ç¤¹¡£ +¹â¤µ 48 ¥Ô¥¯¥»¥ë¤Ï³°»ú¤ÎÃæ¤Ç¤âºÇÂç¤Î¥µ¥¤¥º¤Ê¤Î¤Ç¡¢¤³¤Î¥µ¥¤¥º¤ÎÎΰè¤ò +ÍÑ°Õ¤¹¤ì¤Ð¡¢¤É¤Î¹â¤µ¤Î³°»ú¤Ç¤â³ÊǼ¤Ç¤­¤Þ¤¹¡£ +

+ +

+³°»ú¥Ç¡¼¥¿¤Ï¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×·Á¼°¤Î¥Ç¡¼¥¿¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +ÇØ·Ê¿§¤ò¥Ó¥Ã¥ÈÃÍ 0, Á°·Ê¿§¤ò¥Ó¥Ã¥ÈÃÍ 1 ¤È¤·¤Æ¡¢³Æ¥Ô¥¯¥»¥ë¤ÎÃͤòÊÂ¤Ù¤Æ +¤¢¤ê¤Þ¤¹¡£ +ʤÓÊý¤Ç¤¹¤¬¡¢º¸¾å¤«¤é¤Þ¤º¤Ï±¦¤Ë¸þ¤«¤Ã¤Æ¥Ô¥¯¥»¥ë¤ò½¦¤Ã¤Æ¤¤¤­¡¢º¸Ã¼¤Þ¤Ç +Í褿¤é°ì¤Ä²¼¤ÎÃʤ˹ߤê¤Æ¡¢¤Þ¤¿±¦Êý¸þ¤Ë¥Ô¥¯¥»¥ë¤ò½¦¤¤¤Þ¤¹¡£ +°Ê²¼¡¢°ìÈÖ²¼¤ÎÃʤޤǤ³¤ì¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢¥Ð¥¤¥ÈÆâ¤Ç¤Ï¡¢128, 64, 32, ...1 ¤Î·å¤Î½ç¤Ë¥Ó¥Ã¥ÈÃͤò³ÊǼ¤·¤Æ +¤¤¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢128 ¤Î·å¤Ï°ìÈÖº¸¤Î¥Ô¥¯¥»¥ë¡¢1 ¤Î·å¤Ï°ìÈÖ±¦¤Î¥Ô¥¯¥»¥ë¤ËÂбþ +¤·¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ë¡¢16x16 ¤ÎÁ´³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ÎÎã¤È¡¢¤½¤Î¥Ð¥¤¥ÈÎó¤òµ­¤·¤Þ¤¹¡£ +ÇØ·Ê¿§¤¬¢¢¡¢Á°·Ê¿§¤¬¢£¤Ç¤¹¡£ +

+ +
+
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x1f, 0x88,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x00, 0xc8,
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x09, 0x28,
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡0x09, 0xf8,
+¢¢¢¢¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x3e, 0x28,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x00, 0x28,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x10, 0x08,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x10, 0x08,
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡0x1f, 0xf8,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x18, 0x08,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x18, 0x08,
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡0x1f, 0xf8,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+
+
+ + +

³°»ú¥Õ¥©¥ó¥È¤ÎÊÑ´¹

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò XBM, XPM, GIF, BMP, PNG +¤Î³Æ²èÁü·Á¼°¤ËÊÑ´¹¤¹¤ë´Ø¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +ÊÑ´¹¤ò¹Ô¤¦´Ø¿ô¤Ï¡¢¼¡¤Î 5 ¤Ä¤Ç¤¹¡£ +

+ + + + + + + +
eb_bitmap_to_xbm() XBM ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_xpm() XPM ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_gif() GIF ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_bmp() BMP ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_png() PNG ¤Ø¤ÎÊÑ´¹
+ +

+¤É¤Î´Ø¿ô¤â¸Æ¤Ó½Ð¤·Êý¤ÏƱ¤¸¤Ç¤¹¤¬¡¢¤³¤³¤Ç¤Ï XBM ¤Ø¤ÎÊÑ´¹¤Î¥×¥í¥°¥é¥àÎã +¤ò¼¨¤·¤Þ¤¹¡£ +

+ +
+
+/* bitmap ¤Ë¹â¤µ 16 ¤ÎÁ´³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤¬³ÊǼ
+ * ¤µ¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+char bitmap[EB_SIZE_WIDE_FONT_16];
+char xbm[EB_SIZE_WIDE_FONT_16_XBM];
+size_t xbmsize;
+
+if (eb_wide_font_character_bitmap(bitmap, EB_WIDTH_WIDE_FONT_16,
+    EB_HEIGHT_FONT_16, xbm, &xbmsize) != EB_SUCCESS) {
+    return;
+}
+
+
+ +

+XPM, GIF, PNG ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£ +BMP ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÇò¤Ë¤Ê¤ê¤Þ¤¹¡£ +XBM ¤Ï¥â¥Î¥¯¥í¿ÞÈÇÍѤΥǡ¼¥¿·Á¼°¤Ê¤Î¤Ç¡¢¿§¤ÎÀßÄê¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥Æ¥­¥¹¥ÈÃæ¤Î³°»ú

+ +

+³°»ú¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿ (ËÜʸ¡¢¥á¥Ë¥å¡¼¤Ê¤É) ¤ÎÃæ¤Ç»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë½Ð¸½¤¹¤ë³°»ú¤ò¼±Ê̤·¤Æ +½èÍý¤ò¹Ô¤¦¤Ë¤Ï¡¢³°»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤òÀßÄꤷ¤Æ¡¢¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç½èÍý¤¹¤ë +¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+³°»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ï¡¢Á´³Ñ³°»ú¤ËÂФ¹¤ë EB_HOOK_WIDE_FONT ¤È +Ⱦ³Ñ³°»ú¤ËÂФ¹¤ë EB_HOOK_NARROW_FONT ¤ÎÆó¼ïÎब¤¢¤ê¤Þ¤¹¡£ +¤¤¤º¤ì¤â¡¢³°»ú¤¬°ì»ú½Ð¸½¤¹¤ëÅ٤ˡ¢ÀßÄꤷ¤¿¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯¤Î°·¤¤Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Font_Code ·¿

+ +

+³°»ú¥³¡¼¥É¤Ï¡¢³°»ú¤Î¹â¤µ (¥Ô¥¯¥»¥ë¿ô) ¤òɽ¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¹â¤µ¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
    +
  • EB_FONT_16 +
  • EB_FONT_24 +
  • EB_FONT_30 +
  • EB_FONT_48 +
  • EB_FONT_INVALID +
+ +

+³°»ú¥³¡¼¥É¤Î¼ÂÂΤÏÀ°¿ôÃͤǤ¹¤¬¡¢EB_FONT_16 ¤ÎÃÍ¤Ï 16 ¤Ç¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +¾¤âƱÍͤǤ¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+EB_FONT_INVALID ¤ÏÆÃÊ̤ʳ°»ú¥³¡¼¥É¤Ç¡¢ÉÔÀµ¤Ê³°»ú¥³¡¼¥ÉÃͤò +ɽ¤¹¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +

+ + +

Äê¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ëÄê¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/font.h>
+
+
+ + +

Äê¿ô EB_WIDTH_NARROW_FONT_16

+ +

Äê¿ô EB_WIDTH_NARROW_FONT_24

+ +

Äê¿ô EB_WIDTH_NARROW_FONT_30

+ +

Äê¿ô EB_WIDTH_NARROW_FONT_48

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_16

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_24

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_30

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_48

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Ä +ʬ¤ÎÉý (²£Êý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò int ·¿¤Çɽ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ + +

Äê¿ô EB_HEIGHT_NARROW_FONT_16

+ +

Äê¿ô EB_HEIGHT_NARROW_FONT_24

+ +

Äê¿ô EB_HEIGHT_NARROW_FONT_30

+ +

Äê¿ô EB_HEIGHT_NARROW_FONT_48

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_16

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_24

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_30

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_48

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô¤ò int ·¿¤Çɽ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB_HEIGHT_NARROW_FONT_16 ¤ª¤è¤Ó +EB_HEIGHT_WIDE_FONT_16 ¤Î¼ÂºÝ¤ÎÃÍ¤Ï 16 ¤Ç¤¹¡£ +(³°»ú¥³¡¼¥É EB_FONT_16 ¤Î¼ÂºÝ¤ÎÃÍ¤Ï 16 ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢ +Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£) +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë¤Î¤ËɬÍפÊÎΰè¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_XBM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_XBM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_XBM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_XBM

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_xbm() ¤òÍѤ¤¤Æ XBM ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î XBM ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_XPM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_XPM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_XPM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_XPM

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_xpm() ¤òÍѤ¤¤Æ XPM ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î XPM ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_GIF

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_GIF

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_GIF

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_GIF

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_gif() ¤òÍѤ¤¤Æ GIF ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î GIF ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_BMP

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_BMP

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_BMP

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_BMP

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_bmp() ¤òÍѤ¤¤Æ BMP ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î BMP ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_PNG

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_PNG

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_PNG

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_PNG

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_png() ¤òÍѤ¤¤Æ PNG ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î PNG ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/font.h>
+
+
+ + +

EB_Error_Code eb_font (EB_Book *book, EB_Font_Code *font_code)

+ +

+´Ø¿ô eb_font() ¤Ï¡¢ÁªÂò¤·¤Æ¤¤¤ëÉûËܤˤª¤¤¤Æ¡¢ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òɽ¤¹³°»ú¥³¡¼¥É¤ò font_code ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È font_code ¤Î»Ø¤¹Îΰè¤Ë EB_FONT_INVALID +¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +³°»ú¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ½¤Î¤â¤Î¤òÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â¡¢Æ±ÍͤǤ¹¡£ +

+ + +

EB_Error_Code eb_set_font (EB_Book *book, EB_Font_Code font_code)

+ +

+´Ø¿ô eb_set_font() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤˤª¤±¤ë³°»ú¥Õ¥©¥ó¥È¤Î +¹â¤µ¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£ +¥»¥Ã¥È¤¹¤ë³°»ú¥Õ¥©¥ó¥È¤Î¡Ö¹â¤µ¡×¤Ï¡¢Âбþ¤¹¤ë³°»ú¥³¡¼¥É¤ò°ú¿ô +font_code ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢»ØÄꤷ¤¿¡Ö¹â¤µ¡×¤¬ +¡ÖÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¡×¤È¤Ê¤ê¤Þ¤¹¡£ +¤¹¤Ç¤Ë³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó̤ÁªÂò¤Î¾õÂÖ¤Ë +¤·¤Æ¤«¤é¤¢¤é¤¿¤á¤Æ font_code ¤òÁªÂò¤·¤Þ¤¹¡£ +

+ +

+¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¡¢³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ï̤ÁªÂò¤Î +¾õÂ֤ˤʤê¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢¤½¤ÎÉûËܤ¬»ý¤Ã¤Æ¤¤¤Ê¤¤³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤¬»ØÄꤵ¤ì¤ë¤È¡¢ +EB_ERR_NO_SUCH_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_unset_font (EB_Book *book)

+ +

+´Ø¿ô eb_unset_font() ¤Ï¡¢ÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤ò̤ÁªÂò +¤Î¾õÂÖ¤ËÌᤷ¤Þ¤¹¡£ +book ¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤äÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢ +¤â¤·¤¯¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï²¿¤â¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_font_list (EB_Book *book, EB_Font_Code *font_list, int *font_count)

+ +

+´Ø¿ô eb_font_list() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ë³°»ú¤Î +¹â¤µ¤Î°ìÍ÷¤ò EB_Font_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢font_list +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_FONTS ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢½ñÀÒ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤθĿô¤ò font_count ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +(¸½ºß¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï ¡¢EB_MAX_FONTS ¤ÎÃÍ¤Ï 4 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +¹â¤µ 16, 24, 30, 48 ¥Ô¥¯¥»¥ë¤Î 4 ¼ïÎà¤Ç¤¹¡£) +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢font_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_font (EB_Book *book, EB_Font_Code font_code)

+ +

+´Ø¿ô eb_font() ¤Ï¡¢font_code ¤Ç»ØÄꤷ¤¿¹â¤µ¤Î +³°»ú¥Õ¥©¥ó¥È¤ò¡¢ÁªÂòÃæ¤ÎÉûËܤ¬»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+»ý¤Ã¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_font_height (EB_Book *book, int *height)

+ +

+´Ø¿ô eb_font_height() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ (½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò height ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢height ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_font_height2 (EB_Font_Code font_code, int *height)

+ +

+eb_font_height() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢°ú¿ô +font_height ¤Ç»ØÄꤵ¤ì¤¿³°»ú¥³¡¼¥É¤Î¹â¤µ (½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) +¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ + +

int eb_have_narrow_font (EB_Book *book)

+ +

int eb_have_wide_font (EB_Book *book)

+ +

+´Ø¿ô eb_have_narrow_font() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ +¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍͤˡ¢´Ø¿ô eb_have_wide_font() ¤Ï¡¢Á´³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤« +¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÄêµÁ¤·¤Æ¤¤¤ì¤Ð 1 ¤ò¡¢ÄêµÁ¤·¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_width (EB_Book *book, int *width)

+ +

EB_Error_Code eb_wide_font_width (EB_Book *book, int *width)

+ +

+´Ø¿ô eb_narrow_font_width() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ÎÉý (²£Êý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò¡¢ +height ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ƱÍͤˡ¢eb_wide_font_width() ¤ÏÁ´³Ñ³°»ú¤ÎÉý¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢width ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_width2 (EB_Font_Code font_code, int *width)

+ +

EB_Error_Code eb_wide_font_width2 (EB_Font_Code font_code, int *width)

+ +

+eb_narrow_font_width(), eb_wide_font_width() ¤È +»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢°ú¿ôfont_height ¤Ç»ØÄꤵ¤ì¤¿ +³°»ú¥³¡¼¥É¤ÎÉý (²£Êý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_size (EB_Book *book, size_t *size)

+ +

EB_Error_Code eb_wide_font_size (EB_Book *book, size_t *size)

+ +

+´Ø¿ô eb_narrow_font_size() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ë¤ª¤±¤ëȾ³Ñ³°»ú°ì¸Äʬ¤Î¥Ç¡¼¥¿¥µ¥¤¥º (¥Ð¥¤¥È¿ô) ¤ò¡¢ +size ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ƱÍͤˡ¢eb_wide_font_size() ¤ÏÁ´³Ñ³°»ú¤Î¥µ¥¤¥º¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢size ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_size2 (EB_Font_Code font_code, size_t *size)

+ +

EB_Error_Code eb_wide_font_size2 (EB_Font_Code font_code, size_t *size)

+ +

+eb_narrow_font_size(), eb_wide_font_size() ¤È +»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢°ú¿ô font_height ¤Ç»ØÄê +¤µ¤ì¤¿³°»ú¥³¡¼¥É¤Î³°»ú°ì¸Äʬ¤Î¥Ç¡¼¥¿¥µ¥¤¥º¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_start (EB_Book *book, int *start)

+ +

EB_Error_Code eb_wide_font_start (EB_Book *book, int *start)

+ +

+´Ø¿ô eb_narrow_font_start() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤˤª¤±¤ëȾ³Ñ³°»ú¤ÎÀèƬ¤Îʸ»úÈÖ¹æ (Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇ¾®¤Î¤â¤Î) +¤ò¡¢start ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_start() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤ÆÄ´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_start() ¤ÈƱ¤¸ +¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_end (EB_Book *book, int *end)

+ +

EB_Error_Code eb_wide_font_end (EB_Book *book, int *end)

+ +

+´Ø¿ô eb_narrow_font_end() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËÜ +¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ÎºÇ¸å¤Îʸ»úÈÖ¹æ (Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇÂç¤Î¤â¤Î) ¤ò¡¢ +start ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_end() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë¤Ä¤¤¤Æ +Ä´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_end() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_character_bitmap (EB_Book *book, int character_number, char *bitmap)

+ +

EB_Error_Code eb_wide_font_character_bitmap (EB_Book *book, int character_number, char *bitmap)

+ +

+´Ø¿ô eb_narrow_font_character_bitmap() ¤Ï¡¢book +¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤·¤Æ¤¤¤ë¡¢È¾³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¼è¤ê½Ð¤¹³°»ú¤Îʸ»úÈÖ¹æ¤ò¡¢character_number ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò bitmap ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¡¢EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢bitmap ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â¡¢¤ä¤Ï¤ê EB_ERR_NO_CUR_FONT +¤òÊÖ¤·¤Þ¤¹¡£ +ʸ»úÈÖ¹æ character_number ¤¬³°»ú¤ÎÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢ +EB_ERR_NO_SUCH_CHAR_BMP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_character_bitmap() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_narrow_font_character_bitmap() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Î·Á¼°¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö³°»ú¥Õ¥©¥ó¥È¤Î¼è¤ê½Ð¤·¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

EB_Error_Code eb_forward_narrow_font_character (EB_Book *book, int n, int *character_number)

+ +

EB_Error_Code eb_forward_wide_font_character (EB_Book *book, int n, int *character_number)

+ +

+´Ø¿ô eb_forward_narrow_font_character() ¤Ï¡¢book +¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëȾ³Ñ³°»ú¤Îʸ»úÈÖ¹æ character_number +¤În ¸Ä¸å¤í¤Ë°ÌÃÖ¤¹¤ë³°»ú¤Îʸ»úÈÖ¹æ¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë¡¢character_number ¤Î»Ø¤¹Îΰè¤Ë +ʸ»úÈÖ¹æ¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤­¤Þ¤¹¡£ +´Ø¿ô¤Î½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢Ìá¤Ã¤¿¤È¤­¤Ë n ¸Äʬ¤À¤±¸åÊý¤Îʸ»úÈÖ¹æ +¤Ë½ñ¤­´¹¤ï¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¸Ä¸å¤í¤Ë¤â¤¦³°»ú¤¬¤Ê¤¤¾ì¹ç¤ä¡¢¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë +character_number ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ó¤Ç¤¢¤Ã¤¿Ê¸»úÈֹ椬³°»ú¤Î +ÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï EB_ERR_NO_SUCH_CHAR_BMP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¤Ë¤ÏÉé¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¼¡¤Î¸Æ¤Ó½Ð¤·¤ÈÅù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+/* n < 0 ¤È¤¹¤ë */
+eb_backward_narrow_font_character (book, -n, character_number);
+
+
+ +

+´Ø¿ô eb_forward_wide_font_character() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤Ë¤Ä¤¤¤ÆÁàºî¤¹¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_forward_narrow_font_character() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_backward_narrow_font_character (EB_Book *book, int n, int *character_number)

+ +

EB_Error_Code eb_backward_wide_font_character (EB_Book *book, int n, int *character_number)

+ +

+´Ø¿ô eb_backward_narrow_font_character() ¤Ï +eb_forward_narrow_font_character() ¤È¤Ï¤Á¤ç¤¦¤ÉµÕ¤Î´Ø¿ô¤Ç¤¹¡£ +book ¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëȾ³Ñ³°»ú¤Îʸ»úÈÖ¹æ +character_number ¤Î n ¸ÄÁ°Êý¤Ë°ÌÃÖ¤¹¤ë³°»ú¤Î +ʸ»úÈÖ¹æ¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+ƱÍͤˡ¢eb_backward_wide_font_character() ¤Ï¡¢Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤Æ n ¸ÄÁ°Êý¤Î³°»ú¤Îʸ»úÈÖ¹æ¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤Ç¡¢ +eb_forward_wide_font_character() ¤ÈÈ¿ÂФδؿô¤Ç¤¹¡£ +

+ +

+n ¤Ë¤ÏÉé¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¡¢¤½¤ì¤¾¤ì¼¡¤Î¸Æ¤Ó½Ð¤·¤È +Åù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+/* Ⱦ³Ñ³°»ú¤Î¾ì¹ç (n < 0) */
+eb_forward_narrow_font_character (book, -n, character_number);
+
+/* Á´³Ñ³°»ú¤Î¾ì¹ç (n < 0) */
+eb_forward_wide_font_character (book, -n, character_number);
+
+
+ + +

EB_Error_Code eb_narrow_font_xbm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_xpm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_gif_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_bmp_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_png_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_xbm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_xpm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_gif_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_bmp_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_png_size (EB_Font_Code height, size_t *size)

+ +

+ºÇ½é¤Î 5 ¤Ä¤Î´Ø¿ô +(eb_narrow_font_xbm_size() ¡Á +eb_narrow_font_png_size()) ¤Ï¡¢³°»ú¥³¡¼¥É height +¤ÎȾ³Ñ³°»ú°ì¸Ä¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò XBM, XPM, GIF, BMP, PNG ·Á¼°¤Ë¤½¤ì¤¾¤ìÊÑ´¹ +¤·¤¿¤È¤­¤Î¥Ç¡¼¥¿¥µ¥¤¥º¤ò size ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+ƱÍͤˡ¢¸å¤í¤Î 5 ¤Ä¤Î´Ø¿ô +(eb_wide_font_xbm_size() ¡Á +eb_wide_font_png_size()) ¤Ï¡¢Á´³Ñ³°»ú¤òÊÑ´¹¤·¤¿¤È¤­¤Î +¥Ç¡¼¥¿¥µ¥¤¥º¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢size ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_bitmap_to_xbm (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_xpm (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_gif (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_bmp (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_png (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

+¤³¤ì¤é 5 ¤Ä¤Î´Ø¿ô¤Ï¡¢eb_narrow_font_character() ¤Þ¤¿¤Ï +eb_wide_font_character() ¤Ç¼è¤ê½Ð¤·¤¿³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò +XBM, XPM, GIF, BMP, PNG ·Á¼°¤Ë¤½¤ì¤¾¤ìÊÑ´¹¤·¤Þ¤¹¡£ +

+ +

+¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Î»Ø¤¹Îΰè¤ò bitmap ¤Ç»ØÄꤷ¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×¤Î +¹â¤µ¤ÈÉý¤ò width, height ¤ÇÅϤ·¤Þ¤¹¡£ +

+ +

+´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤«¤éÌá¤ë¤È¡¢image ¤Î»Ø¤¹Îΰè¤ËÊÑ´¹¸å¤Î¥Ç¡¼¥¿¤¬ +½ñ¤­¹þ¤Þ¤ì¡¢image_length ¤Î»Ø¤¹Îΰè¤ËÊÑ´¹¸å¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤¬ +½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+XPM, GIF, PNG ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£ +BMP ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÇò¤Ë¤Ê¤ê¤Þ¤¹¡£ +XBM ¤Ï¥â¥Î¥¯¥í¿ÞÈÇÍѤΥǡ¼¥¿·Á¼°¤Ê¤Î¤Ç¡¢¿§¤ÎÀßÄê¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2002-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     font <book-path> <subbook-index>
+ * Îã:
+ *     font /cdrom 0
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢¤½¤Î
+ *     ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñ³°»ú (¹â¤µ 16 ¥Ô¥¯¥»¥ë) ¤ò¤¹¤Ù¤Æ¥¢¥¹¥­¡¼
+ *     ¥¢¡¼¥È¤Çɽ¼¨¤·¤Þ¤¹¡£
+ *
+ *     ¤½¤ÎÉûËܤ¬¡¢¹â¤µ 16 ¥Ô¥¯¥»¥ë¤ÎȾ³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤È¡¢¥¨
+ *     ¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/font.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    int subbook_index;
+    int font_start;
+    unsigned char bitmap[EB_SIZE_NARROW_FONT_16];
+    int i, j;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 3) {
+        fprintf(stderr, "Usage: %s book-path subbook-index\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    error_code = eb_set_subbook(&book, subbook_list[subbook_index]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /*¡Ö¸½ºß¤Î³°»ú¤ÎÂ礭¤µ¡×¤òÀßÄê¡£*/
+    if (eb_set_font(&book, EB_FONT_16) < 0) {
+        fprintf(stderr, "%s: failed to set the font size, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ³°»ú¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/
+    error_code = eb_narrow_font_start(&book, &font_start);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get font information, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    i = font_start;
+    for (;;) {
+        /* ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼èÆÀ¡£*/
+        error_code = eb_narrow_font_character_bitmap(&book, i,
+            (char *)bitmap);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get font data, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+
+        /* ¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò¥¢¥¹¥­¡¼¥¢¡¼¥È¤Ë¤·¤Æ½ÐÎÏ¡£*/
+        printf("code point=%04x\n", i);
+        for (j = 0; j < 16; j++) {
+            fputc((bitmap[j] & 0x80) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x40) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x20) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x10) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x08) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x04) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x02) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x01) ? '*' : ' ', stdout);
+            fputc('\n', stdout);
+        }
+        fputs("--------\n", stdout);
+
+        /* ³°»ú¤Îʸ»úÈÖ¹æ¤ò°ì¤Ä¿Ê¤á¤ë¡£*/
+        error_code = eb_forward_narrow_font_character(&book, 1, &i);
+        if (error_code != EB_SUCCESS)
+            break;
+    }
+        
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-11.html b/lib/ebu/doc/eb-11.html new file mode 100644 index 0000000..728a6f7 --- /dev/null +++ b/lib/ebu/doc/eb-11.html @@ -0,0 +1,788 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿

+ +

+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿ (binary data) ¤È¤Ï¡¢ +¿ÞÈǤäÆ°²è¡¢²»À¼¤È¤¤¤Ã¤¿¥Þ¥ë¥Á¥á¥Ç¥£¥¢¥Ç¡¼¥¿¤Î¤³¤È¤ò»Ø¤·¤Þ¤¹¡£ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï¡¢É¬¤º¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +(¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡× ¤ò»²¾È¤Î¤³¤È) +¤«¤é»²¾È¤µ¤ì¤ë·Á¤ÇÍøÍѤµ¤ì¤Þ¤¹¡£ +

+ +

+º£¤Î¤È¤³¤í EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Á´¼ïÎà¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ò¼è¤ê°·¤¦¤³¤È¤¬ +¤Ç¤­¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +ÅŻҥ֥寤ǰ·¤¨¤ë¤Î¤Ï¡¢2 ³¬Ä´¤Î¥â¥Î¥¯¥í¿ÞÈǤȡ¢¥«¥é¡¼¿ÞÈÇ (JPEG) ¤À¤± +¤Ç¤¹¡£ +EPWING ¤Ç¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈÇ¡¢¥«¥é¡¼¿ÞÈÇ (BMP ¤ª¤è¤Ó JPEG) ¤Ë²Ã¤¨¤Æ¡¢ +WAVE (PCM) ²»À¼¡¢MPEG Æ°²è¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬Ä󶡤·¤Æ¤¤¤ë¤Î¤Ï¡¢¤³¤¦¤·¤¿¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ò +CD-ROM ½ñÀÒ¤«¤é¼èÆÀ¤¹¤ëµ¡Ç½¤À¤±¤Ç¤¹¡£ +ɽ¼¨¤·¤¿¤êºÆÀ¸¤·¤¿¤ê¤¹¤ëµ¡Ç½¤ÏÍÑ°Õ¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢±Ñϼ­½ñ¤ä¹ñ¸ì¼­½ñ¤È¤¤¤Ã¤¿¼­½ñ¤À¤±¤òÂоݤˤ¹¤ë¤Ê¤é¡¢ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Îɽ¼¨¤äºÆÀ¸¤Ë¤ÏÂбþ¤·¤Ê¤¯¤Æ¤â»Ù¾ã¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤·¤«¤·°ìÊý¤Ç¤Ï¡¢¿Þ´Õ¤ä¿ô¼°¤Îɽ¸½¤Ë¥â¥Î¥¯¥í¿ÞÈǤò»È¤Ã¤Æ¤¤¤ë¿ô³Ø¼­Åµ¤Î +¤è¤¦¤Ë¡¢Âбþ¤·¤Ê¤¤¤ÈÉÔÊؤʤâ¤Î¤â¤¢¤ê¤Þ¤¹¡£ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Îɽ¼¨¤äºÆÀ¸¤Îµ¡Ç½¤ò¼ÂÁõ¤¹¤ë¤«¤É¤¦¤«¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó +¤ÎÂоݼ­½ñ¤ò¤É¤ÎÈϰϤޤǤˤ¹¤ë¤Î¤«¤Ë¤è¤Ã¤Æ·è¤á¤ë¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£ +

+ +

+°Ê²¼¡¢¤³¤Î¾Ï¤Ç¤Ï¼ïÎàÊ̤˥Х¤¥Ê¥ê¥Ç¡¼¥¿¤Î°·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ +

+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Î¼ïÎàËè¤Ë¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·Êý¤ÏÈù̯¤Ë°Û¤Ê¤ê¤Þ¤¹¤¬ (¤³¤ì¤Ï +¥Ç¡¼¥¿¤Î¼ýÏ¿ÊýË¡¤¬Èù̯¤Ë°Û¤Ê¤Ã¤Æ¤¤¤ë¤«¤é¤Ë¾¤Ê¤ê¤Þ¤»¤ó)¡¢¤ª¤ª¤è¤½¼ê½ç +¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
    +
  1. +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥Õ¥Ã¥¯¤òÍѤ¤¤Æ¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Î»²¾È¾ðÊó¤ò¼èÆÀ¤¹¤ë¡£ + +
  2. +eb_binary_set_...() ´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢»ØÄꤷ¤¿°ÌÃ֤Π+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ò¤³¤ì¤«¤éÆɤ߹þ¤à»Ý¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤ë¡£ + +
  3. +eb_read_binary() ¤Ç¼ÂºÝ¤Ë¥Ç¡¼¥¿¤òÆɤ߹þ¤à¡£ +
+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÈƱÍͤˡ¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤âÉûËܤË°¤¹¤ë¥Ç¡¼¥¿ +¤Ç¤¹¤Î¤Ç¡¢ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¤È¼èÆÀ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤ÏÊ̤Π+¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤¬³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢ÁÐÊý¤ò¸ò¸ß¤ËÆɤ߹þ¤ó¤Ç¤â¡¢Æ°ºî¤Ë¤Ï±Æ¶Á¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + + +

¥â¥Î¥¯¥í¿ÞÈÇ

+ +

+2 ³¬Ä´¤Î¥â¥Î¥¯¥í¿ÞÈǤϡ¢ÅŻҥ֥寡¢EPWING ÁÐÊý¤Ë¸ºß¤·¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Ç¤Ï¤É¤Á¤é¤â°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +(ÅŻҥ֥寤˸ºß¤¹¤ë 16 ³¬Ä´¤Î¥â¥Î¥¯¥í¿ÞÈǤϡ¢º£¤Î¤È¤³¤í EB ¥é¥¤¥Ö¥é¥ê +¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£) +

+ +

+¥â¥Î¥¯¥í¿ÞÈǥǡ¼¥¿¤ÎÆâÉô·Á¼°¤Ï³°»ú¤ÈƱ¤¸¤Ç¤¹¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢ +1 ¥Ô¥¯¥»¥ë¤Ë 1bit ¤ò³ä¤êÅö¤Æ¤¿ BMP ·Á¼°¤ËÊÑ´¹¤·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë +ÅϤ¹¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤«¤é¤Ï¡¢¤¢¤¿¤«¤â BMP ¤Î¿ÞÈǥǡ¼¥¿¤¬¼ýÏ¿ +¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤Þ¤¹¡£ +

+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿Æ⤫¤é¤Ï¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ç¤¢¤ë¥â¥Î¥¯¥í¿ÞÈǤò»²¾È¤¹¤ë·Á +¤ò¤È¤ê¤Þ¤¹¡£ +¥â¥Î¥¯¥í¿ÞÈǤò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢¤³¤Î»²¾È¾ðÊó¤¬É¬ÍפǤ¹¡£ +»²¾È¾ðÊó¤Î¼èÆÀ¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿½èÍý»þ¤Ë¡¢¥â¥Î¥¯¥í¿ÞÈǤγ«»Ï¤È½ªÎ»¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MONO_GRAPHIC +¤È EB_HOOK_END_MONO_GRAPHIC ¤òÍѤ¤¤Æ¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MONO_GRAPHIC ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô +(argv) ¤Ï 4 ¤Ä¤¢¤ê¡¢¤³¤Î¤¦¤Á¤Î argv[2] ¤È +argv[3] ¤¬¿ÞÈǤÎÉý¤È¹â¤µ (¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢¥Õ¥Ã¥¯ EB_HOOK_END_MONO_GRAPHIC ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +°ú¿ô¤Ï 3 ¤Ä¤Ç¡¢argv[1] ¤È argv[2] ¤¬¡¢ +¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥â¥Î¥¯¥í¿ÞÈǤò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢¾åµ­¤Î¥Õ¥Ã¥¯¤«¤éÆÀ¤¿¿ÞÈǤΥڡ¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¡¢¤ª¤è¤ÓÉý¤È¹â¤µ¤òµ­²±¤·¤Æ¤ª¤­¤Þ¤¹¡£ +

+ +

+¼¡¤Ë¡¢eb_set_binary_mono_graphic() ¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢¤³¤ì¤«¤é +¥â¥Î¥¯¥í¿ÞÈǤΥǡ¼¥¿¤ò¼èÆÀ¤¹¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +eb_set_binary_mono_graphic() ¤Ø¤Î°ú¿ô¤Ë¤Ï¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤È¡¢Àè¤Û¤ÉÆÀ¤¿¿ÞÈǤؤΥڡ¼¥¸Èֹ桢 +¥ª¥Õ¥»¥Ã¥È¡¢Éý¡¢¹â¤µ¤òÅϤ·¤Þ¤¹¡£ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¤³¤ì¤«¤é¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ë¿ÞÈǤò +¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤò¤¢¤é¤«¤¸¤áÁªÂò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+/* eb_set_binary_mono_graphic() ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥× */
+EB_Error_Code
+eb_set_binary_mono_graphic(EB_Book *book, EB_Position *position,
+    int width, int height);
+
+
+ +

+ÅŻҥ֥寤Ǥϡ¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤ëÉý¤È¹â¤µ¤ÎÃÍ¤Ï 0 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢ +¤½¤Î¤Þ¤Þ eb_set_binary_mono_graphic() ¤ËÅϤ·¤Þ¤¹¡£ +(EPWING ¤Ç¤Ï 0 ¤òÅϤ·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£) +

+ +

+°Ê¾å¤Ç¿ÞÈǥǡ¼¥¿¤Î¼èÆÀ½àÈ÷¤¬¤Ç¤­¤¿¤Î¤Ç¡¢¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢eb_read_binary() ¤ò»È¤¤¤Þ¤¹¡£ +

+ +
+
+#define MAX_LENGTH 1000
+char bitmap[MAX_LENGTH];
+ssize_t bitmap_length;
+
+if (eb_read_binary(&book, MAX_LENGTH, bitmap, &bitmap_length)
+    != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+À®¸ù¤¹¤ë¤È¡¢Æɤ߹þ¤ó¤À¿ÞÈǥǡ¼¥¿¤¬ bitmap ¤Ë½ñ¤­¹þ¤Þ¤ì¡¢ +²¿¥Ð¥¤¥È½ñ¤­¹þ¤ó¤À¤Î¤«¤¬ bitmap_length ¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +½ñ¤­¹þ¤Þ¤ì¤ë¥Ð¥¤¥È¿ô¤Ï¡¢ºÇÂç¤Ç MAX_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +

+ +

+ɬ¤º¤·¤â°ì²ó¤Î eb_read_binary() ¤Î¸Æ¤Ó½Ð¤·¤Ç¿ÞÈǥǡ¼¥¿¤ò +½ªÃ¼¤Þ¤ÇÆɤ߹þ¤àɬÍפϤʤ¯¡¢´Ø¿ô¤ò·«¤êÊÖ¤·¸Æ¤Ó½Ð¤»¤Ð¡¢Á°²ó¤Î³¤­¤ò +Æɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +eb_read_binary() ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î½ªÃ¼¤Þ¤ÇÍè¤ë¤È¤½¤ì°Ê¾å +¥Ç¡¼¥¿¤ÏÆɤ߹þ¤ß¤Þ¤»¤ó¤Î¤Ç¡¢eb_read_binary() ¤¬ 0 ¤òÊÖ¤·¤¿ +»þÅÀ¤Ç¿ÞÈǥǡ¼¥¿¤¬½ªÃ¼¤·¤¿¤³¤È¤òǧ¼±¤Ç¤­¤Þ¤¹¡£ +

+ + +

¥«¥é¡¼¿ÞÈÇ

+ +

+¥«¥é¡¼¿ÞÈǤϡ¢ÅŻҥ֥å¯¤Ç¤Ï JPEG ·Á¼°¡¢EPWING ¤Ç¤Ï JPEG ¤È BMP (DIB) +·Á¼°¤Î¤â¤Î¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤ì¤é¤ò¤¹¤Ù¤Æ°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢ÅŻҥ֥寤ؤÎÂбþ +¤Ï¸ÂÄêŪ¤Ê¤â¤Î¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£(¾Ü¤·¤¯¤Ï¸å½Ò¤·¤Þ¤¹¡£) +

+ +

+¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤÈƱÍͤ˥ƥ­¥¹¥È¥Ç¡¼¥¿ +¤«¤é¥«¥é¡¼¿ÞÈǤؤλ²¾È¾ðÊó¤ò¥Õ¥Ã¥¯¤òÄ̤¸¤Æ¼èÆÀ¤·¡¢Â³¤¤¤Æ¼ÂºÝ¤Ë +¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤òÆɤ߹þ¤à¤È¤¤¤¦¼ê½ç¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+eb_set_binary_color_graphic() ¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢¤³¤ì¤«¤é +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤ò¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò +EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +eb_set_binary_color_graphic() ¤Ø¤Î°ú¿ô¤Ë¤Ï¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë²Ã¤¨¤Æ¡¢¥«¥é¡¼¿ÞÈǤΥڡ¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤òÅϤ·¤Þ¤¹¡£ +

+ +
+
+/* eb_set_binary_color_graphic() ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥× */
+EB_Error_Code
+eb_set_binary_color_graphic(EB_Book *book, EB_Position *position);
+
+
+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¤³¤ì¤«¤é¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ë¿ÞÈǤò +¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤò¤¢¤é¤«¤¸¤áÁªÂò¤·¤Æ¤ª¤­¤Þ¤¹¡£ + +¥«¥é¡¼¿ÞÈǤΥڡ¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤Î¾ðÊó¤Ï¡¢¥«¥é¡¼¿ÞÈǤγ«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯¤«¤éÆÀ¤Þ¤¹¡£ +¥Õ¥Ã¥¯¤Ï¡¢¥¤¥ó¥é¥¤¥óɽ¼¨ÍѤÈÈ󥤥ó¥é¥¤¥óÍѤΠ2 ¼ïÎब¤¢¤ê¡¢¤µ¤é¤Ë +¤½¤ì¤¾¤ì³«»Ï¥Õ¥Ã¥¯¤¬ JPEG ÍÑ¤È BMP ÍѤËʬ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_HOOK_BEGIN_COLOR_BMP
+
EB_HOOK_BEGIN_COLOR_JPEG
+
+È󥤥ó¥é¥¤¥óÍÑ BMP, JPEG ¤Î³«»Ï¥Õ¥Ã¥¯ + +
EB_HOOK_END_COLOR_GRAPHIC
+
+È󥤥ó¥é¥¤¥óÍÑ¥«¥é¡¼¿ÞÈÇ (BMP, JPEG ¶¦ÄÌ) ¤Î½ªÎ»¥Õ¥Ã¥¯ + +
EB_HOOK_BEGIN_IN_COLOR_BMP
+
EB_HOOK_BEGIN_IN_COLOR_JPEG
+
+¥¤¥ó¥é¥¤¥óÍÑ BMP, JPEG ¤Î³«»Ï¥Õ¥Ã¥¯ + +
EB_HOOK_END_IN_COLOR_GRAPHIC
+
+È󥤥ó¥é¥¤¥óÍÑ¥«¥é¡¼¿ÞÈÇ (BMP, JPEG ¶¦ÄÌ) ¤Î½ªÎ»¥Õ¥Ã¥¯ +
+ +

+È󥤥ó¥é¥¤¥óÍѤνªÎ»¥Õ¥Ã¥¯ EB_HOOK_END_GRAPHIC ¤Ç¤Ï¡¢ +¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô¤Î argv[2] ¤È argv[3] ¤¬¡¢ +¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤ò +eb_set_binary_color_graphic() ¤ËÅϤ·¤Æ¤ä¤ê¤Þ¤¹¡£ +ƱÍͤˡ¢¥¤¥ó¥é¥¤¥óÍѤνªÎ»¥Õ¥Ã¥¯ EB_HOOK_END_IN_GRAPHIC +¤Ç¤Ï¡¢argv[2] ¤È argv[3] ¤¬¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¤Î¤Ç¡¢¤³¤ì¤òÅϤ·¤Þ¤¹¡£ +

+ +

+¸å¤Ï¡¢¼ÂºÝ¤Ë¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤÈƱÍÍ¤Ë eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +»È¤¤Êý¤Ï¤Þ¤Ã¤¿¤¯°ì½ï¤Ç¤¹¤Î¤Ç¡¢¾Ü¤·¤¯¤Ï +¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¤¿¤À¤·¡¢ÅŻҥ֥寤Υ«¥é¡¼¿ÞÈǤˤĤ¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤Î½ªÎ»°ÌÃÖ¤¬Íè¤Æ¤â +EB ¥é¥¤¥Ö¥é¥ê¤ÏÆɤ߹þ¤ß¤ò»ß¤á¤Ê¤¤¤È¤¤¤¦À©¸Â»ö¹à¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢¥Ç¡¼¥¿¤ÎÂ礭¤µ¤Ë´Ø¤¹¤ë¾ðÊ󤬵­¤µ¤ì¤Æ¤¤¤Ê¤¤¤¿¤á¤Ç¡¢¥Ç¡¼¥¿¤Î +½ªÃ¼°ÌÃ֤ϡ¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬ JPEG ¤Î¥Ç¡¼¥¿¤ò¥Ç¥³¡¼¥É¤·¤Æ³ä¤ê½Ð¤¹¤·¤« +¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈÇ

+ +

+¥«¥é¡¼¿ÞÈǤˤϡ¢²èÁüÆâ¤ÎÆÃÄê¤Î¶ë·ÁÎΰè¤Ë»²¾ÈÀè¤Î¾ðÊó¤òÉÕ¤±²Ã¤¨¤¿¤â¤Î¤¬ +¤¢¤ê¤Þ¤¹¡£ +HTML ¤Ë¤ª¤±¤ë¥¯¥ê¥Ã¥«¥Ö¥ë¡¦¥¤¥á¡¼¥¸ (clickable image) ¤È¤Û¤ÜƱ¤¸¤Ç¡¢¤½¤Î +¶ë·ÁÎΰèÆâ¤Ë¥Þ¥¦¥¹¥Ý¥¤¥ó¥¿¤¬¤¢¤ë´Ö¤Ë¥Þ¥¦¥¹¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤¢¤é¤«¤¸¤á +·è¤á¤é¤ì¤¿¥ê¥ó¥¯Àè¤Ë²èÌ̤¬Á«°Ü¤¹¤ë¤È¤¤¤¦»Å³Ý¤±¤Ç¤¹¡£ +¥ê¥ó¥¯Àè¤È¤Ê¤ë¶ë·ÁÎΰè¤Ï¡¢²èÁü°ì¤Ä¤ËÂФ·¤ÆÊ£¿ô¸ÄÅÐÏ¿¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈǤÎÎã
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¡¡¡¡¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¢¡¡¡¡¶ë·ÁÎΰ裱¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¶ë·ÁÎΰ裲¡¡¡¡¨¢¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¡¡¡¡¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¢¡¡¡¡¶ë·ÁÎΰ裳¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¿ÞÈÇ¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈǤμè¤ê°·¤¤Êý¤Ï¡¢Ä̾ï¤Î¥«¥é¡¼¿ÞÈǤò³ÈÄ¥¤·¤¿·Á¤È +¤Ê¤ê¤Þ¤¹¡£Ä̾ï¤Î¥«¥é¡¼¿ÞÈǤξì¹ç¤Ç¤Ï¡¢¤¿¤È¤¨¤Ð JPEG ¤ÎÈ󥤥ó¥é¥¤¥ó +²èÁü¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ê½çÈ֤ǥե寤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£ +

+ +
    +
  1. EB_HOOK_BEGIN_COLOR_JPEG (È󥤥ó¥é¥¤¥óÍÑ JPEG ³«»Ï) +
  2. EB_HOOK_END_COLOR_GRAPHIC (È󥤥ó¥é¥¤¥óÍÑ JPEG ½ªÎ») +
+ +

+¤³¤ì¤ËÂФ·¤Æ»²¾ÈÀèÉÕ¤­¤Î¥«¥é¡¼¿ÞÈǤǤϡ¢¤³¤Î2¤Ä¤Î¥Õ¥Ã¥¯¤Î´Ö¤Ë¡¢¶ë·ÁÎΰè +¾ðÊó¤Ë´Ø¤¹¤ë¥Õ¥Ã¥¯¤¬ÁÞÆþ¤µ¤ì¤Þ¤¹¡£ +

+ +
    +
  1. EB_HOOK_BEGIN_COLOR_JPEG (È󥤥ó¥é¥¤¥óÍÑ JPEG ³«»Ï) +
  2. EB_HOOK_BEGIN_CLICKABLE_AREA (¶ë·ÁÎΰè1 ³«»Ï) +
  3. EB_HOOK_END_CLICKABLE_AREA (¶ë·ÁÎΰè1 ½ªÎ») +
  4. EB_HOOK_BEGIN_CLICKABLE_AREA (¶ë·ÁÎΰè2 ³«»Ï) +
  5. EB_HOOK_END_CLICKABLE_AREA (¶ë·ÁÎΰè2 ½ªÎ»)
    + °Ê²¼¡¢¶ë·ÁÎΰè3¡¢¶ë·ÁÎΰè4 ... ¤È¶ë·ÁÎΰè¤Î¸Ä¿ôʬ¤À¤±Â³¤¯¡£ +
  6. EB_HOOK_END_COLOR_GRAPHIC (È󥤥ó¥é¥¤¥óÍÑ JPEG ½ªÎ») +
+ +

+¶ë·ÁÎΰè¤Ë´Ø¤¹¤ë¶ñÂÎŪ¤Ê¾ðÊó¤Ï¡¢EB_HOOK_BEGIN_CLICKABLE_AREA +(³«»Ï¥Õ¥Ã¥¯) ¤Î¤Û¤¦¤Ç¼èÆÀ¤·¤Þ¤¹¡£ +¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô¤Î argv[1] ¤È argv[2] ¤¬¡¢ +¤½¤ì¤¾¤ì¶ë·ÁÎΰè¤Î³«»Ï x, y ºÂɸ¤òɽ¤·¤Þ¤¹¡£ +¥«¥é¡¼¿ÞÈǤκ¸¾å¤ÎºÂɸ¤¬ (0, 0) ¤Ç¤¹¡£ +ƱÍͤˡ¢argv[3] ¤È argv[4] ¤¬¶ë·ÁÎΰè¤Î±¦Êý¸þ +¤Ø¤ÎÉý¤È¡¢²¼Êý¸þ¤Ø¤Î¹â¤µ¤òɽ¤·¤Þ¤¹¡£ +ºÇ¸å¤Î argv[5] ¤È argv[6] ¤¬»²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈǤËÂбþ¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¶ë·ÁÎΰè¤Î +³«»Ï¾ðÊó¤È½ªÎ»¾ðÊó¤ò̵»ë¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ì¤Ë¤è¤ê¡¢¿ÞÈǤÏÄ̾ï¤Î (»²¾ÈÀè¤ò»ý¤¿¤Ê¤¤) ¥«¥é¡¼¿ÞÈǤȤޤ俤¯Æ±¤¸¤¯ +°·¤ï¤ì¤Þ¤¹¡£ +

+ + +

WAVE (PCM) ²»À¼

+ +

+WAVE (PCM) ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤Ï EPWING ¤Ë¤À¤±Â¸ºß¤·¤Þ¤¹¡£ +(Âå¤ï¤ê¤ËÅŻҥ֥å¯¤Ë¤Ï CD-DA ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤¬¤¢¤ê¤Þ¤¹¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£) +

+ +

+WAVE ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢¤Þ¤º¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ã椫¤é WAVE ²»À¼ +¤Î»²¾È¾ðÊó¤òÆÀ¤Þ¤¹¡£ +»²¾È³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯ +EB_HOOK_BEGIN_WAVE ¤È EB_HOOK_END_WAVE ¤¬ +¤½¤ì¤¾¤ì¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤òÍѤ¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_WAVE ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô¤Î¤¦¤Á¡¢ +argv[2] ¤È argv[3] ¤¬²»À¼¥Ç¡¼¥¿¤Î³«»Ï°ÌÃ֤Π+¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¡¢argv[4] ¤È argv[5] ¤¬ +½ªÎ»°ÌÃ֤Υڡ¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤³¤Î³«»Ï°ÌÃ֤ȽªÎ»°ÌÃÖ¤ò´Ø¿ô eb_set_binary_wave() ¤ËÅϤ·¤Æ¡¢ +¤½¤Î°ÌÃ֤ˤ¢¤ë²»À¼¥Ç¡¼¥¿¤ò¤³¤ì¤«¤é¼è¤ê½Ð¤¹¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +

+ +
+
+/* eb_set_binary_wave() ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥× */
+EB_Error_Code
+eb_set_binary_wave(EB_Book *book, EB_Position *start_position,
+EB_Position *end_position);
+
+
+ +

+¤½¤·¤Æ¸å¤Ï¡¢¼ÂºÝ¤Ë²»À¼¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢Â¾¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÈƱÍÍ¤Ë eb_read_binary() ¤ò +ÍѤ¤¤Þ¤¹¡£ +eb_read_binary() ¤Î»È¤¤Êý¤Ï¡¢ +¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× ¤ò»²¾È¤Î¤³¤È ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ + +

MPEG1 Æ°²è

+ +

+MPEG1 ·Á¼°¤ÎÆ°²è¥Ç¡¼¥¿¤Ï EPWING ¤Ë¤À¤±Â¸ºß¤·¤Þ¤¹¡£ +Æ°²è¥Ç¡¼¥¿¤Ï EPWING ¤Î CD-ROM ¤Î movie ¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤Ë¡¢ +Æ°²èËè¤Ë°ì¸Ä¤Î¥Õ¥¡¥¤¥ë¤Ë¤·¤¿·Á¤Ç¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë¸ºß¤¹¤ë¡¢MPEG ¥Ç¡¼¥¿¤Î»²¾È³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MPEG ¤È +EB_HOOK_END_MPEG ¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢»²¾ÈÀè¤Î MPEG ¤Î +¥Õ¥¡¥¤¥ë̾¤ò¼èÆÀ¤Ç¤­¤Þ¤¹¡£ +

+ +

+¶ñÂÎŪ¤Ë¤Ï¡¢¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MPEG ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +°ú¿ô¤Î¤¦¤Á¡¢argv[2] ¡Á argv[5] ¤¬¹ç¤ï¤»¤Æ°ì¤Ä +¤Î¥Õ¥¡¥¤¥ë̾¤òɽ¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+MPEG Æ°²è¤Î¥Ç¡¼¥¿¤òÆÀ¤ë¤Ë¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë̾¤ò +eb_set_binary_mpeg() ¤ËÅϤ·¤Æ¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÆ°²è¥Ç¡¼¥¿¤ò +¤³¤ì¤«¤é¼è¤ê½Ð¤¹»Ý¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ argv + 2 +(&argv[2] ¤Ç¤âƱ¤¸) ¤òÅϤ·¤Þ¤¹¡£ +

+ +
+
+if (eb_set_binary_mpeg(&book, argv + 2) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¸å¤Ï¡¢¼ÂºÝ¤ËÆ°²è¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢¤ä¤Ï¤ê¾¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÈƱÍÍ¤Ë eb_read_binary() +¤òÍѤ¤¤Þ¤¹¡£ +eb_read_binary() ¤Î»È¤¤Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× ¤ò»²¾È¤Î¤³¤È ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/binary.h>
+
+
+ + +

EB_Error_Code eb_set_binary_mono_graphic (EB_Book *book, const EB_Position *position, int width, height)

+ +

+´Ø¿ô eb_set_binary_mono_graphic() ¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤΥǡ¼¥¿¤ò +¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô position ¤Ï¿ÞÈǤΰÌÃÖ¡¢width, height +¤Ë¤Ï¿ÞÈǤÎÉý¤È¹â¤µ¤òÅϤ·¤Þ¤¹¡£ +¤³¤ì¤é¤Î¾ðÊó¤Ï¡¢¿ÞÈǤλ²¾È¸µ¤Ç¤¢¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ëµ­ºÜ¤µ¤ì¤Æ¤ª¤ê¡¢Ä̾ï¤Ï +¥Õ¥Ã¥¯´Ø¿ô¤òÄ̤¸¤ÆÆÀ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¤¿¤À¤·¡¢ÅŻҥ֥寤ǤÏÉý¤È¹â¤µ¤ÎÃͤξðÊ󤬥ƥ­¥¹¥È¥Ç¡¼¥¿¤Ëµ­¤µ¤ì¤Æ¤¤¤Ê¤¤ +¤¿¤á¡¢0 ¤òÅϤ¹¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤Ë±þ¤¸¤¿¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢¿ÞÈǤò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¿ÞÈǤΰÌÃÖ¡¢Éý¡¢¹â¤µ¤ÎÃͤ¬ÌÀ¤é¤«¤Ë¤ª¤«¤·¤¤¤È EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿ +¤È¤­¤Ï¡¢EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë¿ÞÈǥǡ¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +¥â¥Î¥¯¥í¿ÞÈǤΥǡ¼¥¿¤Ï¡¢1 ¥Ô¥¯¥»¥ë¤Ë 1bit ¤ò³ä¤êÅö¤Æ¤¿ BMP ·Á¼°¤Ë¤Ê¤Ã¤Æ +¤¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_binary_color_graphic (EB_Book *book, const EB_Position *position)

+ +

+´Ø¿ô eb_set_binary_color_graphic() ¤Ï¡¢EPWING ¤Î¥«¥é¡¼¿ÞÈǤΠ+¥Ç¡¼¥¿¤ò¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô position ¤Ï¿ÞÈǤΰÌÃÖ¤òÅϤ·¤Þ¤¹¡£ +°ÌÃ֤ξðÊó¤Ï¡¢¿ÞÈǤλ²¾È¸µ¤Ç¤¢¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ëµ­ºÜ¤µ¤ì¤Æ¤ª¤ê¡¢Ä̾ï¤Ï +¥Õ¥Ã¥¯´Ø¿ô¤òÄ̤¸¤ÆÆÀ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢¿ÞÈǤò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¿ÞÈǤΰÌÃÖ¤¬ÌÀ¤é¤«¤Ë¤ª¤«¤·¤¤¤È EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿¤È¤­¤Ï¡¢ +EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë¿ÞÈǥǡ¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +¥«¥é¡¼¿ÞÈǥǡ¼¥¿¤Ï¡¢JPEG ¤« BMP (DIB) ¤Î¤¤¤º¤«¤Î·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_binary_wave (EB_Book *book, const EB_Position *start_position, EB_Position *end_position)

+ +

+´Ø¿ô eb_set_binary_wave() ¤Ï¡¢WAVE (PCM) ·Á¼°¤Î²»À¼¤Î¥Ç¡¼¥¿ +¤ò¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô start_position ¤È end_position ¤Ë¤Ï²»À¼¥Ç¡¼¥¿ +¤Î³«»Ï°ÌÃÖ¤òÅϤ·¤Þ¤¹¡£ +°ÌÃ֤ξðÊó¤Ï¡¢²»À¼¥Ç¡¼¥¿¤Î»²¾È¸µ¤Ç¤¢¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ëµ­ºÜ¤µ¤ì¤Æ¤ª¤ê¡¢ +Ä̾ï¤Ï¥Õ¥Ã¥¯´Ø¿ô¤òÄ̤¸¤ÆÆÀ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤Ë±þ¤¸¤¿¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢²»À¼¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB ¤ò +ÊÖ¤·¤Þ¤¹¡£ +²»À¼¥Ç¡¼¥¿¤Î°ÌÃÖ¤¬ÌÀ¤é¤«¤Ë¤ª¤«¤·¤¤¤È EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿¤È¤­¤Ï¡¢ +EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë²»À¼¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_binary_mpeg (EB_Book *book, const unsigned int *argv)

+ +

+´Ø¿ô eb_set_binary_mpeg() ¤Ï¡¢MPEG1 ·Á¼°¤ÎÆ°²è¤Î¥Ç¡¼¥¿¤ò +¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô argv ¤Ë¤ÏÆ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾¤òÅϤ·¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤Î¥Õ¥¡¥¤¥ë̾¤Ïʸ»úÎó¤Ç¤Ï¤Ê¤¯¡¢¥Õ¥Ã¥¯´Ø¿ô +EB_HOOK_BEGIN_MPEG ¤ËÅϤµ¤ì¤¿°ú¿ô argv[2] +¡Á argv[5] ¤ÎÉôʬ¤òÅϤ·¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î°ú¿ô argv + 2 ¤ò¡¢ +eb_set_binary_mpeg() ¤Ø¤Î°ú¿ô argv ¤È¤·¤Æ +ÅϤ·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤Ë±þ¤¸¤¿¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢Æ°²è¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¸ºß¤·¤Ê¤¤Æ°²è¥Õ¥¡¥¤¥ë̾¤ò EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿¤È¤­¤Ï¡¢ +EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤ËÆ°²è¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_read_binary (EB_Book *book, size_t binary_max_length, char *binary, ssize_t *binary_length)

+ +

+´Ø¿ô eb_read_binary() ¤Ï¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +Æɤ߹þ¤â¤¦¤È¤·¤Æ¤¤¤ë¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï¡¢»öÁ°¤Ë +

+ +
    +
  • eb_set_binary_mono_graphic() +
  • eb_set_binary_color_graphic() +
  • eb_set_binary_wave() +
  • eb_set_binary_mpeg() +
+ +

+¤Î¤¤¤º¤ì¤«¤Î´Ø¿ô¤Ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤ËÄÌÃΤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+Æɤ߹þ¤ó¤À¥Ç¡¼¥¿¤Ï°ú¿ô binary ¤Î»Ø¤¹Àè¤ÎÎΰè¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¤Þ¤¿¡¢¤³¤Î¤È¤­½ñ¤­¹þ¤Þ¤ì¤¿¥Ð¥¤¥È¿ô¤Ï¡¢binary_length ¤Î»Ø¤¹ +Àè¤ÎÎΰè¤Ë¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +¤¿¤À¤·¡¢½ñ¤­¹þ¤Þ¤ì¤ë¥Ð¥¤¥È¿ô¤Ï¡¢ºÇŤǤâ°ú¿ô binary_max_length +¤Ë»ØÄꤷ¤¿ÃͤޤǤȤʤê¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢ÆäËÆɤ߹þ¤ó¤À¥Ç¡¼¥¿¤Î½ªÃ¼¤Ë¥Ê¥ëʸ»ú¤òÉղ乤ë¤è¤¦¤Ê»ö¤Ï +¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤Þ¤ì¤ë¥Ç¡¼¥¿¤â¥Ð¥¤¥Ê¥ê·Á¼°¤Ê¤Î¤Ç¡¢ÅÓÃæ¤Ë¥Ê¥ëʸ»ú¤¬½Ð¸½¤¹¤ë»ö¤â +¤¢¤ê¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò°ì²ó¸Æ¤Ó½Ð¤·¤À¤À¤±¤Ç¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿Á´ÂΤò°ìµ¤¤Ë¼èÆÀ¤¹¤ë +ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +·«¤êÊÖ¤·¸Æ¤Ó½Ð¤»¤Ð¡¢Á°²ó¤Î³¤­¤«¤é¥Ç¡¼¥¿¤¬Æɤ߹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢°Ê²¼¤Ëµó¤²¤¿´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë´Ø¤¹¤ë +¾õÂÖµ­Ï¿¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤½¤ì°Ê¾å¤ÎÆɤ߹þ¤ß¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +
    +
  • eb_set_subbook() +
  • eb_unset_subbook() +
  • eb_load_all_subbooks() +
  • eb_bind() +
  • eb_finalize_book() +
  • eb_set_binary_mono_graphic() +
  • eb_set_binary_color_graphic() +
  • eb_set_binary_wave() +
  • eb_set_binary_mpeg() +
+ +

+eb_read_binary() ¤ò·«¤êÊÖ¤·¸Æ¤ó¤À¾ì¹ç¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï +¤½¤ÎÅÔÅÙ binary ¤ÎÀèƬ¤«¤é½ñ¤­¹þ¤Þ¤ì¡¢*binary_length +¤ÎÃͤ⡢¤½¤Î²ó¤Î eb_read_binary() ¤Î¸Æ¤Ó½Ð¤·¤Ç½ñ¤­¹þ¤Þ¤ì¤¿ +¥Ð¥¤¥È¿ô¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Ç¡¼¥¿¤Î½ªÃ¼¤ËÍè¤ë¤È¡¢¤½¤ì°Ê¾å¤³¤Î´Ø¿ô¤ò¸Æ¤ó¤Ç¤â´Ø¿ô¤Ï binary +¤Ë¤Ï²¿¤â½ñ¤­¹þ¤Þ¤º¡¢*binary_length ¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢binary_length ¤¬»Ø¤¹Îΰè¤Ë -1 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¾õÂ֤ε­Ï¿¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢ +¥Ç¡¼¥¿¤Î³¤­¤òÆɤ߹þ¤à¤³¤È¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢ËÁƬ¤Ëµó¤²¤¿´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥ³¤Î´Ø¿ô¤ò¸Æ¤Ö¤È¡¢ +EB_ERR_NO_CUR_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_compose_movie_file_name (const unsigned int *argv, char *composed_file_name)

+ +

+´Ø¿ô eb_compose_movie_file_name() ¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾ +¤òÄ̾ï¤Îʸ»úÎó¤ËÊÑ´¹¤·¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾¤Ï¥Õ¥Ã¥¯´Ø¿ô +EB_HOOK_BEGIN_MPEG ¤ËÅϤµ¤ì¤¿ 4 ¤Ä¤Î int ·¿°ú¿ô +(argv[2] ¡Á argv[5]) ¤Ë¤è¤Ã¤Æɽ¸½¤µ¤ì¤Þ¤¹¡£ +

+ +

+Æ°²è¥Ç¡¼¥¿¤òÆɤ߹þ¤àºÝ¤Ï¡¢¤³¤ì¤ò¤½¤Î¤Þ¤Þ eb_set_binary_mpeg() +¤ËÅϤ»¤ÐÎɤ¤¤Î¤Ç¤¹¤¬¡¢¥Õ¥¡¥¤¥ë̾¤òÄ̾ï¤Îʸ»úÎó¤ÇÆÀ¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤Î´Ø¿ô¤ò +ÍѤ¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¸Ä¡¹¤ÎÆ°²è¤Ë°ì°Õ¤Î ID ¤Î¤è¤¦¤Ê¤â¤Î¤ò¿¶¤ê¤¿¤¤¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë +̾¤ò ID ¤È¤·¤Æ»È¤¦¤ÈÎɤ¤¤«¤âÃΤì¤Þ¤»¤ó¡£ +¤Ê¤ª¡¢¤³¤Î´Ø¿ô¤ÇÊÑ´¹¤·¤ÆÆÀ¤é¤ì¤ë¥Õ¥¡¥¤¥ë̾¤Ë¤Ï¥Ñ¥¹¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤Î°ú¿ô argv + 2 ¤ò¤³¤Î´Ø¿ô¤Ø¤Î°ú¿ô argv +¤È¤·¤ÆÅϤ¹¤È¡¢composed_file_name ¤¬»Ø¤¹Àè¤ÎÎΰè¤Ë¡¢Ê¸»úÎó·Á¼° +¤ËÊÑ´¹¤µ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤¬³ÊǼ¤µ¤ì¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤ÏºÇĹ¤Ç EB_MAX_DIRECTORY_NAME_LENGTH (= 8) ¥Ð¥¤¥È +¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¤Ï½ªÃ¼¤Î¥Ê¥ëʸ»ú¤Îʬ¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó¤Î¤Ç¡¢³ÊǼÎΰè¤Ë¤Ï¤â¤¦ +1 ¥Ð¥¤¥È;͵¤¬Íפê¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢³ÊǼ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤Ï¡¢¼ÂºÝ¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë̾¤È¤Ï¼ã´³°Û¤Ê¤Ã¤Æ +¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢±Ñ»ú¤ÎÂçʸ»ú¤È¾®Ê¸»ú¡¢ÀÜÈø»Ò¤Î̵ͭ¤Ê¤É¤Î°ã¤¤¤¬¤³¤ì¤ËÅö¤¿¤ê¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¤¢¤¯¤Þ¤Çʸ»úÎó¤Ëµ¡³£Åª¤ËÊÑ´¹¤¹¤ë¤À¤±¤Ê¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¤¬¼Âºß +¤¹¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤Ï¤·¤Þ¤»¤ó¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_compose_movie_path_name (EB_Book *book, const unsigned int *argv, char *composed_path_name)

+ +

+´Ø¿ô eb_compose_movie_path_name() ¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾ +¤òÄ̾ï¤Îʸ»úÎó¤ËÊÑ´¹¤·¤Þ¤¹¡£ +Ư¤­¤Ï¡¢Á°½Ò¤Î´Ø¿ô eb_compose_movie_file_name() ¤ËÎɤ¯ +»÷¤Æ¤¤¤Þ¤¹¤¬¡¢eb_compose_movie_path_name() ¤¬ÊÖ¤¹¥Õ¥¡¥¤¥ë̾ +¤Ï¡¢ÀäÂХѥ¹¤Î·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤ëÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢eb_compose_movie_path_name() ¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤¬¼Âºß +¤¹¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤ò¹Ô¤¦¤È¤¤¤¦ÅÀ¤â¡¢Â礭¤Ê°ã¤¤¤Ç¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤òʸ»úÎó¤ËÊÑ´¹¤·¤¿¾å¤Ç¡¢±Ñ»ú¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Î°ã¤¤¤äÀÜÈø»Ò¤Î +̵ͭ¤Ï¡¢¼Âºß¤Î¥Õ¥¡¥¤¥ë¤Ë¹ç¤ï¤»¤ÆÄ´À°¤·¤¿¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥Ñ¥¹¤ò½ü¤¤¤¿Éôʬ¤ÇÈæ³Ó¤·¤Æ¤â¡¢ +eb_compose_movie_file_name() ¤¬ÊÖ¤¹¥Õ¥¡¥¤¥ë̾¤È¤Ïɬ¤º¤·¤â +°ìÃפ·¤Þ¤»¤ó¡£ +

+ +

+°ú¿ô book ¤Ï¡¢Æ°²è¥Õ¥¡¥¤¥ë¤ò¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ +¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+°ú¿ô argv ¤Î°ÕÌ£¤Ï¡¢eb_compose_movie_file_name() +¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+¥Õ¥¡¥¤¥ë̾¤ÎÊÑ´¹¤¬À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï composed_path_name ¤¬ +»Ø¤¹Àè¤ÎÎΰè¤Ë¡¢Ê¸»úÎó·Á¼°¤ËÊÑ´¹¤µ¤ì¤¿Æ°²è¥Õ¥¡¥¤¥ë̾¤ò³ÊǼ¤·¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤ÏºÇĹ¤Ç EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¤Ï½ªÃ¼¤Î¥Ê¥ëʸ»ú¤Îʬ¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó¤Î¤Ç¡¢³ÊǼÎΰè¤Ë¤Ï¤â¤¦ +1 ¥Ð¥¤¥È;͵¤¬Íפê¤Þ¤¹¡£ +

+ +

+¥Õ¥¡¥¤¥ë̾¤¬¼Âºß¤·¤Ê¤¤¤È¡¢EB_ERR_BAD_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_decompose_movie_file_name (unsigned int *argv, const char *composed_file_name)

+ +

+´Ø¿ô eb_compose_movie_file_name() ¤Ï¡¢ +eb_compose_movie_file_name() ¤È¤Á¤ç¤¦¤ÉµÕ¤ÎƯ¤­¤ò¤·¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ä̾ï¤Îʸ»úÎó¤ËÊÑ´¹¤µ¤ì¤¿Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾ +composed_file_name ¤ò¡¢4 ¤Ä¤Î int ·¿°ú¿ô argv ¤Ë +Ìᤷ¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢argv ¤Î»Ø¤¹Îΰè¤Ï¡¢¾¯¤Ê¤¯¤È¤â int ·¿¤ÎÃͤò 4 ¤Ä +³ÊǼ¤Ç¤­¤ëÂ礭¤µ¤¬É¬ÍפǤ¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-12.html b/lib/ebu/doc/eb-12.html new file mode 100644 index 0000000..47f3380 --- /dev/null +++ b/lib/ebu/doc/eb-12.html @@ -0,0 +1,1031 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

appendix ¥Ç¡¼¥¿

+ +

+appendix (ÉÕÏ¿) ¤È¤Ï CD-ROM ½ñÀÒ¤ÎÊä½õ¥Ç¡¼¥¿¤Î +¤³¤È¤Ç¤¹¡£ +appendix ¤Ï CD-ROM ½ñÀҤνÐÈǼҤ«¤éÄ󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Ë¸ÇÍ­¤Î¤â¤Î¤Ç¤¹¡£ +ebappendix ¥³¥Þ¥ó¥É¤òÍѤ¤¤ÆÀ¸À®¤·¤Þ¤¹ +(¾Ü¤·¤¯¤Ï ebappendix ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öappendix (ÉÕÏ¿) ¤È¤Ï¡×¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+appendix ¤Ï°Ê²¼¤Î¥Ç¡¼¥¿¤ò CD-ROM ½ñÀÒ¤ËÂФ·¤ÆÄ󶡤·¤Þ¤¹¡£ +

+ +
    +
  • ËÜʸ¤Î¶èÀڤꥳ¡¼¥É +
  • ³°»ú¤ÎÂåÂØʸ»úÎó +
+ +

+appendix ¤Î¥ì¥¤¥¢¥¦¥È¤Ï CD-ROM ½ñÀҤΤâ¤Î¤È¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï catalog ¤â¤·¤¯¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¡¢³ÆÉûËܤΥǡ¼¥¿¤ÏÂбþ¤¹¤ë +¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÇÛÃÖ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï appendix ¤ËÂбþ¤·¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò»È¤¨¤ë +¤è¤¦¤Ë¤¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ +³°»ú¤ÎÂåÂØʸ»úÎó¤Ë¤Ä¤¤¤Æ¤Ï¡¢³°»ú¤Î¥Õ¥©¥ó¥È¤ò¤½¤Î¤Þ¤Þɽ¼¨¤Ç¤­¤ë¤Î¤Ç +¤¢¤ì¤Ð¡¢Âбþ¤¹¤ëɬÍ×À­¤Ï¤«¤Ê¤ê˳¤·¤¤¤Ç¤¹¤¬¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤Ï¡¢ +°·¤¨¤Ê¤¤¤ÈÀµ¤·¤¯ËÜʸ¤òɽ¼¨¤Ç¤­¤Ê¤¤½ñÀÒ¤ËÂбþ¤Ç¤­¤Þ¤»¤ó +(¶èÀڤꥳ¡¼¥É¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¶èÀڤꥳ¡¼¥É¤ÎÌäÂê¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ + + +

EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+CD-ROM ½ñÀÒËÜÂΤò°·¤¦¤Ë¤Ï EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò +ÍѤ¤¤Þ¤·¤¿¤¬¡¢appendix ¤ò°·¤¦¤Ë¤Ï EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤ò»È¤¤¤Þ¤¹¡£ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤òÁàºî¤¹¤ë¤¿¤á¤Î´Ø¿ô¤Ï¡¢ +EB_Book ¤Î¤â¤Î¤È¤Ï°Û¤Ê¤ê¤Þ¤¹¤¬¡¢Áàºî¼ê½ç¤Ï¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¸Ä¡¹¤Î appendix ¤ËÂФ·¤Æ 1 ¸Ä +¤º¤Äºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+EB_Appendix app;
+
+
+ +

+¤â¤Á¤í¤ó¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤Ï¡¢malloc() ¤Ç³ÎÊݤ·¤Æ¤â +¹½¤¤¤Þ¤»¤ó¡£ +

+ +
+
+EB_Appendix *app_pointer;
+
+app_pointer = (EB_Appendix *) malloc(sizeof(EB_Appendix));
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢»È¤¦Á°¤Ëɬ¤º eb_initialize_appendix() +¤È¤¤¤¦´Ø¿ô¤ÇÃæ¿È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤â eb_initialize_book() +¤Ç½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢¤½¤ì¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +
+
+eb_initialize_appendix(&app);
+eb_initialize_appendix(app_pointer);
+
+
+ +

+³¤¤¤Æ¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò appendix ¤Î¼ÂÂΤ˷ë¤ÓÉÕ¤±¤ë¤¿¤á¤Ë¡¢ +eb_bind_appendix() ¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î eb_bind() ¤Ë +ÁêÅö¤·¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Á£ð£ð£å£î£ä£é£ø¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£á£ð£ð£å£î£ä£é£ø
+¥ª¥Ö¥¸¥§¥¯¥È¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨£¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¨¼¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¾¡¡¡¿£í£î£ô¡¿£ä£é£ã£ô¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¥¡¡£å£â¡²£â£é£î£ä¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡²£á£ð£ð£å£î£ä£é£ø¡Ê¡Ë¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind_appendix(&app, "/mnt/dict") != EB_SUCCESS) {
+    printf("eb_bind_appendix() failed\n");
+    return;
+}
+
+
+ +

+eb_bind_appendix() ¤ËÅϤ¹ appendix ¤Î¥Ñ¥¹ +(¤³¤ÎÎã¤Ç¤Ï /mnt/dict) ¤Ï appendix ¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¡¢ +¤Ä¤Þ¤ê catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤Î¤¢¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¥Ñ¥¹¤Ë¤Ï¡¢±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò (Îã: ebnet://localhost/dict.app) +¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢ +eb_finalize_appendix() ¤ò¸Æ¤ó¤Ç¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤Ï appendix ¤È¤Î·ë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂÖ¤ËÌá¤ê¡¢ +ÆâÉô¤Ç³ä¤êÅö¤Æ¤é¤ì¤¿¥á¥â¥ê¤Ï²òÊü¤µ¤ì¡¢³«¤¤¤Æ¤¤¤¿¥Õ¥¡¥¤¥ë¤â¤¹¤Ù¤Æ +ÊĤ¸¤é¤ì¤Þ¤¹¡£ +

+ +
+
+eb_finalize_appendix(&app);
+eb_finalize_appendix(app_pointer);
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò malloc() ¤Ç³ÎÊݤ·¤¿¾ì¹ç¤Ï¡¢ +eb_finalize_appendix() ¤ò¸Æ¤ó¤À¸å¤Ê¤é¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Î +Îΰè¤ò°ÂÁ´¤Ë²òÊü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+free(app_pointer);
+
+
+ + +

ÉûËÜ

+ +

+CD-ROM ¤ÈƱÍͤˡ¢appendix ¤Ë¤âÉûËܤ¬Â¸ºß¤·¤Þ¤¹¡£ +appendix ¤ÎÉûËܤ⡢ÉûËÜ¥³¡¼¥É¤ò»È¤Ã¤Æ¼±Ê̤·¤Þ¤¹¡£ +¸Ä¡¹¤ÎÉûËÜ¥³¡¼¥É¤Ï¡¢appendix Æâ¤ÇƱ¤¸¤â¤Î¤¬¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤ÎÉûËܤÎÉûËÜ¥³¡¼¥É¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤È¤·¤Æ +eb_subbook_list() ¤¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢appendix ¤Ë¤â +eb_appendix_subbook_list() ¤È¤¤¤¦Æ±Íͤδؿô¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+/* app ¤¬ EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢
+ * ¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Subbook_Code sub_codes[EB_MAX_SUBBOOKS];
+int sub_count;
+
+if (eb_appendix_subbook_list(&app, sub_codes, &sub_count)
+    != EB_SUCCESS) {
+    printf("eb_appendix_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+eb_appendix_subbook_list() ¤¬À®¸ù¤¹¤ë¤È¡¢½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤Î +ÉûËÜ¥³¡¼¥É¤¬ ÇÛÎó sub_codes[] ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +ÇÛÎó¤ÎÀèƬ¤ÎÉûËÜ¥³¡¼¥É¤Ï sub_codes[0] ¤Èɽ¤µ¤ì¡¢¼¡¤Î +¥³¡¼¥É¤Ï sub_codes[1]¡¢¤È¤¤¤¦¶ñ¹ç¤Ë¤Ê¤ê¤Þ¤¹¡£ +ÉûËܤθĿô¤Ï¡¢sub_count ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +

+ +

+EB_Book ¤ÈƱÍÍ¤Ë EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤Ç¤â¡¢·ë¤Ó¤Ä¤±¤é¤ì¤¿ CD-ROM ½ñÀÒ¤ÎÃæ¤ÎǤ°Õ¤ÎÉûËܤ«¤é°ì¤ÄÁª¤ó¤Ç¡¢ +ÁªÂòÃæ¤ÎÉûËÜ (current subbook) ¤È¤·¤Æ»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ê£¿ô¤ÎÉûËܤò¡¢Æ±»þ¤ËÁªÂò¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +¶èÀڤꥳ¡¼¥É¤ä³°»ú¤ÎÂåÂØʸ»úÎó¤È¤¤¤Ã¤¿ appendix Æâ¤Î¥Ç¡¼¥¿¤Ø¤Î¥¢¥¯¥»¥¹ +¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤËÂФ·¤Æ¤À¤±¹Ô¤¨¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢ÀèƬ¤ÎÉûËÜ (sub_codes[0]) ¤òÁªÂò¤¹¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£ +

+ +
+
+/* app ¤¬ EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢
+ * ¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+if (eb_set_appendix_subbook(&app, sub_codes[0]) != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+eb_bind_appendix() ¤Ç EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤ò appendix ¤Ë·ë¤ÓÉÕ¤±¤¿Ä¾¸å¤Ï¡¢¤¤¤º¤ì¤ÎÉûËܤâÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂÖ¤Ë +¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ + +

ËÜʸ¤Î¶èÀڤꥳ¡¼¥É

+ +

+CD-ROM ½ñÀҤˤè¤Ã¤Æ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬ËÜʸ¤Îɽ¼¨¤òÀµ¤·¤¤°ÌÃÖ¤Ç +»ß¤á¤é¤ì¤Ê¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¶èÀڤꥳ¡¼¥É¤ÎÌäÂê¡× ¤ò»²¾È¤Î¤³¤È)¡£ +¤³¤ì¤Ï¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤Î¿ä¬¤ò EB ¥é¥¤¥Ö¥é¥ê¤¬¸í¤Ã¤¿¤¿¤á¤Ëµ¯¤³¤ë +¤Î¤Ç¤¹¤¬¡¢appendix ¥Ç¡¼¥¿¤ò»È¤¦¤³¤È¤Ç¡¢Àµ¤·¤¤¶èÀڤꥳ¡¼¥É¤ò EB ¥é¥¤¥Ö¥é¥ê +¤Ë¶µ¤¨¤Æ¤ä¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒ¤ÎËÜʸ¤ò¼èÆÀ¤¹¤ë´Ø¿ô eb_read_text() ¤Ï +Âè 2 °ú¿ô¤Ë EB_Appendix * ¤ò¤È¤ë¤Î¤Ç¤¹¤¬¡¢¤³¤³¤Ë appendix +¥ª¥Ö¥¸¥§¥¯¥È¤òÅϤ·¤Æ¤ä¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+/* book, app ¤Ï¡¢¤½¤ì¤¾¤ì EB_Book
+ * ¤ª¤è¤Ó EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤É¤Á¤é¤â¤¹¤Ç¤Ë
+ * ÉûËܤòÁªÂòÃæ¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+#define MAX_LENGTH 1000
+char buffer[MAX_LENGTH + 1];
+ssize_t text_length;
+
+if (eb_read_text(&book, &app, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+eb_read_text() ¤Ï¡¢ÅϤµ¤ì¤¿ appendix ¥ª¥Ö¥¸¥§¥¯¥È¤¬ÉûËܤò +ÁªÂòºÑ¤ß¤Ç¡¢¤«¤Ä¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò»ý¤Ã¤Æ¤¤¤ì¤Ð¡¢¤½¤Î¶èÀڤꥳ¡¼¥É¤ò +»ÈÍѤ·¤Þ¤¹¡£ +

+ + +

³°»ú¤ÎÂåÂØʸ»úÎó

+ +

+CD-ROM ½ñÀҤϡ¢ÄêµÁ¤·¤Æ¤¤¤ë³°»ú¤Î¾ðÊó¤È¤·¤Æ¥Õ¥©¥ó¥È¤Î¥Ç¡¼¥¿¤·¤«ÍÑ°Õ¤·¤Æ +¤¤¤Þ¤»¤ó¡£ +¤Ä¤Þ¤ê¡¢¤½¤Î³°»ú¤¬¤É¤Î¤è¤¦¤Êʸ»ú¤Ê¤Î¤«¤ò¥æ¡¼¥¶¤Ëʬ¤«¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¥Õ¥©¥ó¥È¤òɽ¼¨¤¹¤ë¤·¤«¤¢¤ê¤Þ¤»¤ó¡£ +¤·¤«¤·¤³¤ì¤Ç¤Ï¡¢¥Æ¥­¥¹¥È¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍѤ¤¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢ +ËÜʸÃæ¤Î³°»ú¤ÎÉôʬ¤¬¤Þ¤Ã¤¿¤¯Ê¬¤«¤ê¤Þ¤»¤ó¡£ +³°»ú¤ò¿ÍѤ·¤Æ¤¤¤ë½ñÀҤǤϡ¢ËÜʸ¤¬²òÆÉÉÔǽ¤Ë¶á¤¤¾õÂ֤ˤʤ뤫¤âÃΤì¤Þ¤»¤ó¡£ +

+ +

+¤½¤³¤Ç EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢³°»ú¤ÎÂåÂؤȤʤëʸ»úÎó¤ò appendix Æâ¤ÇÄêµÁ +¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ +appendix ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¸Â¤ê¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï³°»ú¤Î¥Õ¥©¥ó¥È +¤òÉÁ²è¤¹¤ëÂå¤ï¤ê¤Ë¤½¤ÎÂåÂØʸ»úÎó¤ò½ÐÎϤ¹¤ë¤³¤È¤Ë¤¹¤ì¤Ð¡¢ +¥Æ¥­¥¹¥È¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍѤ¤¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤â½ñÀÒ¤¬Æɤ߰פ¯ +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+appendix ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ëÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤¹´Ø¿ô¤Ï¡¢2 ¤Ä¤¢¤ê¤Þ¤¹¡£ +Ⱦ³Ñ³°»úÍѤΠeb_narrow_alt_character_text() ¤ÈÁ´³Ñ³°»úÍѤΠ+eb_wide_alt_character_text() ¤Ç¤¹¡£ +¤É¤Á¤é¤â¡¢»È¤¤Êý¤ÏÊѤï¤ê¤Þ¤»¤ó¡£ +

+ +

+°Ê²¼¤ÎÎã¤Ç¤Ï¡¢È¾³Ñ³°»ú¤Îʸ»úÈÖ¹æ 0xa121 ¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò +buffer ¤Ë³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/* app ¤¬ EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢
+ * ¤¹¤Ç¤ËÉûËܤòÁªÂòÃæ¤Ç¤¢¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+char buffer[EB_MAX_ALTERNATION_TEXT_LENGTH + 1];
+
+if (eb_narrow_alt_character_text(&app, buffer, 0xa121)
+    != EB_SUCCESS) {
+    printf("eb_narrow_alt_character_text() failed\n");
+    return;
+}
+
+
+ +

+³°»ú¤Ï¸Ä¡¹¤ÎÉûËܤËÂФ·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢ +¤¢¤é¤«¤¸¤áÉûËܤòÁªÂò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +³°»ú¤Î¥Õ¥©¥ó¥È¤ò¼è¤ê½Ð¤¹ºÝ¤Ï¡¢¤³¤ì¤Ë²Ã¤¨¤Æ³°»ú¤Î¡Ö¹â¤µ¡×¤âÁªÂò¤·¤Æ¤ª¤¯ +ɬÍפ¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢ÂåÂØʸ»úÎó¤Ë¤Ï¹â¤µ¤Î³µÇ°¤¬¤Ê¤¤¤Î¤ÇɬÍפ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+ÂåÂØʸ»úÎó¤ÏºÇĹ¤Ç EB_MAX_ALTERNATION_TEXT_LENGTH ¥Ð¥¤¥È +(= 31 ¥Ð¥¤¥È) ¤Ç¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎŤµ¤Ë¤Ï¥Ê¥ëʸ»ú¤Îʬ¤Ï´Þ¤ó¤Ç¤¤¤Ê¤¤¤Î¤Ç¡¢buffer +¤Ï¤â¤¦ 1 ¥Ð¥¤¥Èʬ;͵¤ò»ý¤¿¤»¤Æ¤¤¤Þ¤¹¡£ +

+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/appendix.h>
+
+
+ + +

EB_Appendix ·¿

+ +

+EB_Appendix ·¿¤Ï¡¢°ìºý¤Î CD-ROM ½ñÀÒ¤òɽ¤·¤Þ¤¹¡£ +CD-ROM ½ñÀҤؤΥ¢¥¯¥»¥¹¤Ï¡¢¤¹¤Ù¤Æ¤³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤Æ¹Ô¤¤¤Þ¤¹¡£ +Ʊ»þ¤ËÊ£¿ô¤Î CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ëºÝ¤Ï¡¢½ñÀÒ°ìºýËè¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò +ºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ï¡¢¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¤¬ +ÍÑ°Õ¤·¤Æ¤¤¤ë´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤Î¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È +¤ËÂФ·¤Æ eb_initialize_book() ¤ò¸Æ¤ó¤Ç½é´ü²½¤·¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/appendix.h>
+
+
+ + +

void eb_initialize_appendix (EB_Appendix *app)

+ +

+´Ø¿ô eb_initialize_appendix() ¤Ï¡¢app ¤Î»Ø¤¹ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò +¸Æ¤ÖÁ°¤Ë¡¢É¬¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ +ºÆÅÙ eb_initialize_appendix() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

void eb_finalize_appendix (EB_Appendix *app)

+ +

+´Ø¿ô eb_finalize_appendix() ¤Ï¡¢app ¤¬»Ø¤¹ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¤¹¤Ù¤Æ²òÊü¤µ¤ì¡¢ +¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬ appendix ¤È·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢·ë¤ÓÉÕ¤­¤¬²ò¤«¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_bind_appendix() ¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ +¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_bind_appendix (EB_Appendix *app, const char *path)

+ +

+´Ø¿ô eb_bind_appendix() ¤Ï¡¢app ¤Î»Ø¤¹ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢¥Ñ¥¹ path ¤Ë¤¢¤ë +appendix ¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +¥Ñ¥¹¤Ë¤Ï¡¢appendix ¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤«±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò»ØÄꤷ¤Þ¤¹¡£ +appendix ¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤È¤Ï¡¢catalog ¤¢¤ë¤¤¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤Î¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤·¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ëappendix ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤Î appendix ¤È¤Î +·ë¤ÓÉÕ¤­¤ò²ò¤¤¤Æ¤«¤é¡¢path ¤Ë¤¢¤ë appendix ¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢ÉûËܤÏ̤ÁªÂò¤Î¾õÂ֤ˤʤê¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò appendix ¤È¤Î·ë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂ֤ˤ·¤Æ¡¢ +¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ï¡¢EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¼ý¤Þ¤Æ +¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤µ¤é¤Ë¡¢path ¤¬ÁêÂХѥ¹¤Î¤È¤­¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤·¤¿·ë²Ì¤¬ +¤³¤ÎŤµ¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì¤òĶ¤¨¤ë¤È¡¢EB_ERR_TOO_LONG_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_is_appendix_bound (EB_Appendix *app)

+ +

+´Ø¿ô eb_is_appendix_bound() ¤Ï¡¢app ¤¬ appendix ¤Ë +·ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +·ë¤ÓÉÕ¤¤¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_path (EB_Appendix *app, char *path)

+ +

+´Ø¿ô eb_appendix_path() ¤Ï¡¢app ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤ë +appendix ¤Î¥Ñ¥¹¤â¤·¤¯¤Ï±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò¡¢path ¤Î»Ø¤¹Îΰè +¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢path ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+app ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ë½ñ¤­¹þ¤à¥Ñ¥¹Ì¾¤Î¥Ð¥¤¥È¿ô¤Ï¡¢ºÇĹ¤Ç +EB_MAX_PATH_LENGTH ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ï¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤ò´Þ¤ß¤Þ¤»¤ó¡£ +´Ø¿ô¤¬ÊÖ¤¹¥Ñ¥¹¤ÏÀµµ¬²½¤µ¤ì¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢ +eb_bind_appendix() ¤ËÅϤ·¤¿¤È¤­¤Î¤â¤Î¤ÈƱ¤¸¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢ÁêÂХѥ¹¤À¤Ã¤¿¾ì¹ç¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_load_all_appendix_subbooks (EB_Appendix *app)

+ +

+´Ø¿ô eb_load_all_appendix_subbooks() ¤Ï¡¢app Æâ +¤Î¤¹¤Ù¤Æ¤ÎÉûËܤò½é´ü²½¤·¤Þ¤¹¡£ +Ä̾ÉûËܤνé´ü²½¤Ï¡¢¤½¤ÎÉûËܤ¬½é¤á¤ÆÁªÂò¤µ¤ì¤¿¤È¤­¤Ë¼«Æ°Åª¤Ë +¹Ô¤ï¤ì¤Þ¤¹¤¬¡¢¤³¤Î´Ø¿ô¤Ï½é´ü²½¤òÁ°Åݤ·¤Ç¹Ô¤¤¤Þ¤¹¡£ +½é´ü²½¤ÎÂоݤȤʤë¤Î¤Ï¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿»þÅÀ¤Ç¤Þ¤À½é´ü²½¤·¤Æ¤¤¤Ê¤¤ +¤¹¤Ù¤Æ¤ÎÉûËܤǤ¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¥¹¥¿¥ó¥É¥¢¥í¥ó¤ÇÆ°ºî¤¹¤ë¥µ¡¼¥Ð¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ê¤É¤ÇÍ­¸ú¤Ç¤¹¡£ +¥¯¥é¥¤¥¢¥ó¥È¤«¤é¤ÎÀܳ¤ò¼õ¤±¤ëÁ°¤Ë¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ÉûËܤνé´ü²½¤Î +¤¿¤á¤Ë¥¯¥é¥¤¥¢¥ó¥È¤òÂÔ¤¿¤»¤Ê¤¯¤ÆºÑ¤ß¤Þ¤¹¡£ +

+ +

+½é´ü²½¤ÎÂоݤȤʤ俤¹¤Ù¤Æ¤ÎÉûËܤνé´ü²½¤ËÀ®¸ù¤¹¤ì¤Ð¡¢´Ø¿ô¤Ï +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +°ìºý¤Ç¤â½é´ü²½¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢»Ä¤ê¤ÎÉûËܤνé´ü²½¤òÄü¤á¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+app ¤Ï¡¢¤¢¤é¤«¤¸¤á appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢app ¤Ï¡¢ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾õÂÖ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook_list (EB_Book *app, EB_Subbook_Code *subbook_list, int *subbook_count)

+ +

+´Ø¿ô eb_appendix_subbook_list() ¤Ï¡¢app Æâ¤Î +¤¹¤Ù¤ÆÉûËܤÎÉûËÜ¥³¡¼¥É¤ò EB_Subbook_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢ +subbook_list ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_SUBBOOKS ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢appendix ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤθĿô¤ò subbook_count ¤Î +»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+app ¤Ï¡¢¤¢¤é¤«¤¸¤á appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook (EB_Book *app, EB_Subbook_Code *subbook_code)

+ +

+´Ø¿ô eb_appendix_subbook() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤Î +ÉûËܤÎÉûËÜ¥³¡¼¥É¤ò subbook_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_code ¤Î»Ø¤¹Îΰè¤Ë +EB_SUBBOOK_INVALID ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook_directory (EB_Book *app, char *directory)

+ +

+´Ø¿ô eb_appendix_subbook_directory() ¤Ï¡¢app Æâ +¤Ç¸½ºßÁªÂòÃæ¤ÎÉûËܤΥǡ¼¥¿¥Õ¥¡¥¤¥ë¤ò¼ý¤á¤¿¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¡¢ +directory ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤Îʸ»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç +EB_MAX_DIRECTORY_NAME_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï ASCII ¤Î¿ô»ú¡¢±Ñ¾®Ê¸»ú¡¢¥¢¥ó¥À¡¼¥¹¥³¥¢¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢directory ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤Ë +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook_directory2 (EB_Book *app, EB_Subbook_Code subbook_code, char *directory)

+ +

+eb_appendix_subbook_directory() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤Î +ÉûËܤǤϤʤ¯¡¢°ú¿ô subbook_code ¤Ç»ØÄꤵ¤ì¤¿ÉûËܤΠ+¥Ç¥£¥ì¥¯¥È¥ê̾¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢¤¢¤é¤«¤¸¤á +appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_appendix_subbook (EB_Book *app, EB_Subbook_Code code)

+ +

+´Ø¿ô eb_set_appendix_subbook() ¤Ï¡¢app ¤ÎÉûËÜ +code ¤òÁªÂò¤·¤Þ¤¹¡£ +¤¹¤Ç¤ËÉûËܤòÁªÂò¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¤«¤éÉûËÜ +subbook_code ¤òÁªÂò¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢³°»ú¤Ï̤ÁªÂò¤Î¾õÂ֤Ȥʤꡢ¸¡º÷¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¡¢ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë¤Ä¤¤¤Æ¤Î¾õÂÖµ­Ï¿¤Ï¡¢¤¹¤Ù¤Æ¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢ÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤Ï appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_unset_appendix_subbook (EB_Book *app)

+ +

+´Ø¿ô eb_unset_appendix_subbook() ¤Ï¡¢app ¤¬ÁªÂò +¤·¤Æ¤¤¤ëÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Þ¤¹¡£ +app ¤¬ appendix ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¤«¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤ +¾ì¹ç¤Ï¡¢²¿¤â¤·¤Þ¤»¤ó¡£ +

+ + +

int eb_have_stop_code (EB_Book *app)

+ +

+´Ø¿ô eb_have_stop_code() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËÜ¤Ç +¶èÀڤꥳ¡¼¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÄêµÁ¤·¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¤Þ¤¹¡£ +ÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_stop_code (EB_Book *app, int *stop_code)

+ +

+´Ø¿ô eb_stop_code() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ +¤·¤Æ¤¤¤ë¶èÀڤꥳ¡¼¥É¤ò stop_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +stop_code[0], stop_code[1] ¤Ë¡¢¶èÀڤꥳ¡¼¥É¤ÎÃÍ +¤È¤·¤Æ¤½¤ì¤¾¤ì 0x0000 ¡Á 0xffff ¤¬½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢´Ø¿ô¤Ï stop_code[0] ¤È stop_code[1] +¤Ë -1 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬¶èÀڤꥳ¡¼¥É¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_STOPCODE +¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_narrow_alt (EB_Book *app)

+ +

int eb_have_wide_alt (EB_Book *app)

+ +

+´Ø¿ô eb_have_narrow_alt() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ë +ÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍͤˡ¢´Ø¿ô eb_have_wide_alt() ¤Ï¡¢Á´³Ñ³°»ú¤ËÂФ¹¤ë +ÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÄêµÁ¤·¤Æ¤¤¤ì¤Ð 1 ¤ò¡¢ÄêµÁ¤·¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +app ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_alt_start (EB_Book *app, int *start)

+ +

EB_Error_Code eb_wide_alt_start (EB_Book *app, int *start)

+ +

+´Ø¿ô eb_narrow_alt_start() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËÜ +¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ÎÄêµÁÈϰϤòÄ´¤Ù¡¢ÀèƬ¤Îʸ»úÈÖ¹æ +(Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇ¾®¤Î¤â¤Î) ¤ò start ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_start() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤ÆÄ´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_start() ¤ÈƱ¤¸ +¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_alt_end (EB_Book *app, int *end)

+ +

EB_Error_Code eb_wide_alt_end (EB_Book *app, int *end)

+ +

+´Ø¿ô eb_narrow_alt_end() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËÜ +¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ÎÄêµÁÈϰϤòÄ´¤Ù¡¢ºÇ¸å¤Îʸ»úÈÖ¹æ +(Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇÂç¤Î¤â¤Î) ¤ò start ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_start() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤ÆÄ´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_start() ¤ÈƱ¤¸ +¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_alt_character_text (EB_Book *app, int character_number, char *text)

+ +

EB_Error_Code eb_wide_alt_character_text (EB_Book *app, int character_number, char *text)

+ +

+´Ø¿ô eb_narrow_alt_character_text() ¤Ï¡¢book ¤¬ +ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤·¤Æ¤¤¤ë¡¢È¾³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +³°»ú¤Îʸ»úÈÖ¹æ¤ò¡¢character_number ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤ÏÂåÂØʸ»úÎó¤ò text ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢text ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ÂåÂØʸ»úÎó¤ÏºÇĹ¤Ç EB_MAX_ALTERNATION_TEXT_LENGTH ¥Ð¥¤¥È +(= 31 ¥Ð¥¤¥È) ¤Ç¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎŤµ¤Ë¤Ï¥Ê¥ëʸ»ú¤Îʬ¤Ï´Þ¤ó¤Ç¤¤¤Ê¤¤¤Î¤Ç¡¢text ¤Î +Îΰè¤Ë¤Ï¤â¤¦ 1 ¥Ð¥¤¥ÈʬɬÍפǤ¹¡£ +

+ +

+ÂåÂØʸ»úÎ󤬤ɤÎʸ»ú¥³¡¼¥É¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¤«¤Ï¡¢appendix ¤ÎÃæ¤Ë¤Ï +µ­Ï¿¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +¤·¤«¤·¡¢appendix ¤Ïɬ¤ºÆÃÄê¤Î½ñÀÒ¤ËÂбþ¤·¤ÆºîÀ®¤µ¤ì¤ë¤â¤Î¤Ê¤Î¤Ç¡¢½ñÀҤΠ+ʸ»ú¥³¡¼¥É¤«¤é¼¡¤Î¤è¤¦¤ËȽÃǤ¹¤ì¤Ð¡¢ÌäÂê¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +

+ +
    +
  • ½ñÀÒ¤¬ ISO 8859-1 ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ÂåÂØʸ»úÎó¤â ISO 8859-1 +
  • ¤½¤ì°Ê³°¤Î¾ì¹ç¡¢ÂåÂØʸ»úÎó¤ÏÆüËܸì EUC +
+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ʸ»úÈÖ¹æ character_number ¤¬³°»ú¤ÎÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢ +EB_ERR_NO_SUCH_CHAR_TEXT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò (character_number ¤Ë¸Â¤é¤º +¤Þ¤Ã¤¿¤¯) ÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +¤½¤¦¤Ç¤Ï¤Ê¤¯¡¢°ìÉô¤Îʸ»úÈÖ¹æ¤Ë¤Ä¤¤¤Æ¤ÏȾ³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò +ÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤Î¡¢character_number ¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤Ï +¸ºß¤·¤Ê¤¤¾ì¹ç¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¡¢text +¤Î»Ø¤¹Îΰè¤Ë¤Ï¶õʸ»úÎ󤬽ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_alt_character_text() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤¹¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_narrow_alt_character_text() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_backward_narrow_alt_character (EB_Book *book, int n, int *character_number)

+ +

EB_Error_Code eb_backward_wide_alt_character (EB_Book *book, int n, int *character_number)

+ +

+´Ø¿ô eb_forward_narrow_alt_character() ¤Ï¡¢app +¤¬ÁªÂòÃæ¤ÎÉûËܤˤª¤¤¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡¢È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤Î +ʸ»úÈÖ¹æ character_number ¤Î n ¸Ä¸å¤í¤Ë°ÌÃÖ¤¹¤ë +ʸ»ú¤Îʸ»úÈÖ¹æ¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë¡¢character_number ¤Î»Ø¤¹Îΰè¤Ë +ʸ»úÈÖ¹æ¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤­¤Þ¤¹¡£ +´Ø¿ô¤Î½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢Ìá¤Ã¤¿¤È¤­¤Ë n ¸Äʬ¤À¤±¸åÊý¤Îʸ»úÈÖ¹æ +¤Ë½ñ¤­´¹¤ï¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¸Ä¸å¤í¤Ë¤â¤¦³°»ú¤¬¤Ê¤¤¾ì¹ç¤ä¡¢¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë +character_number ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ó¤Ç¤¢¤Ã¤¿Ê¸»úÈֹ椬³°»ú¤Î +ÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï EB_ERR_NO_SUCH_CHAR_TEXT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¤Ë¤ÏÉé¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¼¡¤Î¸Æ¤Ó½Ð¤·¤ÈÅù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+/* n < 0 ¤È¤¹¤ë */
+eb_backward_narrow_font_character (book, -n, character_number);
+
+
+ +

+´Ø¿ô eb_forward_wide_alt_character() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤Ë¤Ä¤¤¤ÆÁàºî¤¹¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_forward_narrow_alt_character() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2003-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     font <appendix-path> <subbook-index>
+ * Îã:
+ *     font /cdrom 0
+ * ÀâÌÀ:
+ *     <appendix-path> ¤Ç»ØÄꤷ¤¿ appendix ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢¤½
+ *     ¤ÎÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¤¹¤Ù¤Æɽ¼¨¤·¤Þ¤¹¡£
+ *
+ *     ¤½¤Î appendix ¤¬¡¢È¾³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤È¡¢¥¨
+ *     ¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢ÁàºîÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/appendix.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Appendix app;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    int subbook_index;
+    int alt_start;
+    char text[EB_MAX_ALTERNATION_TEXT_LENGTH + 1];
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 3) {
+        fprintf(stderr, "Usage: %s appendix-path subbook-index\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `app' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_appendix(&app);
+
+    /* appendix ¤ò `app' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind_appendix(&app, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the app, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_appendix_subbook_list(&app, subbook_list,
+        &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    if (eb_set_appendix_subbook(&app, subbook_list[subbook_index])
+        < 0) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ³°»ú¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/
+    error_code = eb_narrow_alt_start(&app, &alt_start);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get font information, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    i = alt_start;
+    for (;;) {
+        /* ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼èÆÀ¡£*/
+        error_code = eb_narrow_alt_character_text(&app, i, text);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get font data, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+
+        /* ¼èÆÀ¤·¤¿ÂåÂØʸ»úÎó¤ò½ÐÎÏ¡£*/
+        printf("%04x: %s\n", i, text);
+
+        /* ³°»ú¤Îʸ»úÈÖ¹æ¤ò°ì¤Ä¿Ê¤á¤ë¡£*/
+        error_code = eb_forward_narrow_alt_character(&app, 1, &i);
+        if (error_code != EB_SUCCESS)
+            break;
+    }
+        
+    /* appendix ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_appendix(&app);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_appendix(&app);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-13.html b/lib/ebu/doc/eb-13.html new file mode 100644 index 0000000..e95380d --- /dev/null +++ b/lib/ebu/doc/eb-13.html @@ -0,0 +1,474 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¥µ¡¼¥Ð¾å¤Î½ñÀÒ°ìÍ÷

+ +

+EBNET ¥µ¡¼¥Ð¤«¤é±ó³Ö¥¢¥¯¥»¥¹¤ò¹Ô¤¦ºÝ¡¢¥µ¡¼¥Ð¤¬¤½¤Î¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ +¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤ë½ñÀÒ¤ä appendix ¥Ç¡¼¥¿¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤³¤Î¤È¤­¡¢EBNET ¥µ¡¼¥Ð¤ò»ØÄꤹ¤ë±ó³Ö¥¢¥¯¥»¥¹µ­½Ò»Ò¤Ë¤Ï¡¢ÆÃÄê¤Î½ñÀÒ¤ä +appendix ¥Ç¡¼¥¿¤ËÂФ¹¤ë¥¢¥¯¥»¥¹¤È¤Ï°Û¤Ê¤ê¡¢½ñÀÒ̾¤Ï»ØÄꤷ¤Þ¤»¤ó¡£ +¤¹¤Ê¤ï¤Á¡¢°ìÈÌ·Á¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ebnet://¥Û¥¹¥È:¥Ý¡¼¥È/
+
+
+ +

+ËöÈø¤Î `/' ¤Ï¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +: ¤È¤½¤ì¤Ë³¤¯¥Ý¡¼¥ÈÈÖ¹æ¤Ï¾Êά²Äǽ¤Ç¡¢¤½¤Î¾ì¹ç¤Ï +22010 È֥ݡ¼¥È¤òÍøÍѤ¹¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ +

+ +

+ebinfo ¥³¥Þ¥ó¥É¤Î --book-list ¥ª¥×¥·¥ç¥ó»ØÄê»þ¤ÎµóÆ°¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Î¤³¤Îµ¡Ç½¤Ë¤è¤Ã¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +(ebinfo ¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +@pxref{Book list on EBNET server, , EBNET ¥µ¡¼¥Ð¤Î½ñÀÒ°ìÍ÷, ebinfo-ja, ebinfo-ja}¡£) +

+ +
+
+% ebinfo --book-list ebnet://localhost
+̾Á°             Âê̾
+encycl           ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ
+encycl.app       ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ (appendix)
+crossword        ¥¯¥í¥¹¥ï¡¼¥É¥Ñ¥º¥ë¼­Åµ
+travel           ¥ï¡¼¥ë¥É¥È¥é¥Ù¥ë¥¬¥¤¥É
+
+
+ +

+̾Á°¤ÎËöÈø¤¬ .app ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤â¤Î¤Ï appendix ¥Ç¡¼¥¿¤Ç¡¢ +¤½¤Î¾¤Ï½ñÀÒËÜÂΤǤ¹¡£ +¤³¤ÎÎã¤Î½ñÀÒ encycl ¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤¹¤ë¤Ê¤é¡¢ +±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò¤Ï ebnet://localhost/encycl ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤Ê¤¤½ñÀÒ¤ä appendix ¥Ç¡¼¥¿ +¤Ï¡¢¥µ¡¼¤¬Â¦¤Ç°ìÍ÷¤«¤é½ü³°¤µ¤ì¤Þ¤¹¡£ +

+ + + +

EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+EBNET ¥µ¡¼¥Ð¤ÎÄ󶡤¹¤ë½ñÀÒ¤ª¤è¤Ó appendix ¥Ç¡¼¥¿¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢ +¤Þ¤º EB_BookList ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+EB_BookList bl;
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤Ï¡¢malloc() ¤Ç³ÎÊݤ·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ +
+
+EB_BookList *bl_pointer;
+
+bl_pointer = (EB_BookList *) malloc(sizeof(EB_BookList));
+
+
+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈƱÍͤˡ¢EB_BookList +¥ª¥Ö¥¸¥§¥¯¥È¤â»È¤¦Á°¤ËÃæ¿È¤ò½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢eb_initialize_booklist() ¤È¤¤¤¦´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +

+ +
+
+eb_initialize_booklist(&bl);
+eb_initialize_booklist(bl_pointer);
+
+
+ +

+½é´ü²½¤¬´°Î»¤·¤¿¤é¡¢ÆÃÄê¤Î¥µ¡¼¥Ð¤È¥ª¥Ö¥¸¥§¥¯¥È¤ò·ë¤Ó¤Ä¤±¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ebnet://localhost ¤Çɽ¤µ¤ì¤ë¥µ¡¼¥Ð¤ËÂФ·¤Æ¡¢ +¥ª¥Ö¥¸¥§¥¯¥È¤ò·ë¤Ó¤Ä¤±¤ë¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind_booklist(&bl, "ebnet://localhost") != EB_SUCCESS) {
+    printf("eb_bind_booklist() failed\n");
+    return;
+}
+
+
+ +

+¤³¤ì¤Ï¤Á¤ç¤¦¤É¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ +eb_bind() ¤ò¸Æ¤Ö¤Î¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+¤³¤¦¤·¤Æ¡¢¤è¤¦¤ä¤¯½ñÀÒ°ìÍ÷¤Î¾ðÊó¤ò¼è¤ê½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï eb_booklist_book_count(), +eb_booklist_book_name(), eb_booklist_book_title() +¤È¤¤¤¦ 3 ¤Ä¤Î´Ø¿ô¤ò»ÈÍѤ·¤Þ¤¹¡£ +¤³¤ì¤é¤Î´Ø¿ô¤Ï¤½¤ì¤¾¤ì¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬¥¢¥¯¥»¥¹²Äǽ¤Ê½ñÀҤοô¡¢³Æ½ñÀÒ +¤ª¤è¤Ó appendix ¥Ç¡¼¥¿¤Î̾¾Î (¥¢¥¯¥»¥¹¼±Ê̻ҤȤ·¤Æ»ØÄꤹ¤ë̾Á°)¡¢³Æ½ñÀÒ +¤È appendix ¥Ç¡¼¥¿¤ÎÂê̾¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+char *name, *title;
+int count, i;
+
+count = eb_booklist_book_count(&bl);
+for (i = 0; i < count; i++) {
+    if (eb_booklist_book_name(&bl, i, &name) != EB_SUCCESS) {
+        printf("eb_booklist_book_name(%d) failed\n", i);
+        return;
+    }
+    if (eb_booklist_book_title(&bl, i, &title) != EB_SUCCESS) {
+        printf("eb_booklist_book_title(%d) failed\n", i);
+        return;
+    }
+    printf("name = %s, title = %s\n", name, title);
+}
+
+
+ +

+EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢É¬¤º¸å»ÏËö¤ò +¹Ô¤¤¤Þ¤¹¡£ +

+ +
+
+eb_finalize_booklist(&bl);
+eb_finalize_booklist(bl_pointer);
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò malloc() ¤Ç³ÎÊݤ·¤¿¾ì¹ç¤Ï¡¢ +eb_finalize_booklist() ¤ò¸Æ¤ó¤À¸å¤Ê¤é¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè +¤ò°ÂÁ´¤Ë²òÊü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+free(bl_pointer);
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/booklist.h>
+
+
+ + +

EB_BookList ·¿

+ +

+EB_BookList ·¿¤Ï¡¢EBNET ¥µ¡¼¥Ð¾å¤¬»È¤Ã¤Æ¤¤¤ë½ñÀÒ¤ª¤è¤Ó +appendix ¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ëºÝ¤ËÍѤ¤¤ë¥ª¥¯¥¸¥§¥¯¥È¤Î·¿¤Ç¤¹¡£ +

+ +

+EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È +¤ËÂФ·¤Æ eb_initialize_booklist() ¤ò¸Æ¤ó¤Ç½é´ü²½¤¹¤ëɬÍפ¬ +¤¢¤ê¤Þ¤¹¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/booklist.h>
+
+
+ + +

void eb_initialize_booklist (EB_BookList *bl)

+ +

+´Ø¿ô eb_initialize_booklist() ¤Ï¡¢bl ¤Î»Ø¤¹ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò +¸Æ¤ÖÁ°¤Ë¡¢É¬¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ +ºÆÅÙ eb_initialize_booklist() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_bind_booklist (EB_BookList *bl, const char *path)

+ +

+´Ø¿ô eb_bind_booklist() ¤Ï¡¢app ¤Î»Ø¤¹ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢±ó³Ö¥¢¥¯¥»¥¹µ­½Ò»Ò path +¤Ç»ØÄꤵ¤ì¤¿ EBNET ¥µ¡¼¥Ð¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ë¥µ¡¼¥Ð¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤Î¥µ¡¼¥Ð¤È¤Î·ë¤ÓÉÕ¤­ +¤ò²ò¤¤¤Æ¤«¤é¡¢path ¤Ë¤¢¤ë¥µ¡¼¥Ð¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò¥µ¡¼¥Ð¤È¤Î·ë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂ֤ˤ·¤Æ¡¢¸¶°ø +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ï¡¢EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¼ý¤Þ¤Æ +¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì¤òĶ¤¨¤ë¤È¡¢EB_ERR_TOO_LONG_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢½ñÀÒ̾¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤±ó³Ö¥¢¥¯¥»¥¹µ­½Ò»Ò¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤Î·Á¼°¤À¤È¡¢EB_ERR_BAD_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+»ÈÍѤ·¤Æ¤¤¤ë EB ¥é¥¤¥Ö¥é¥ê¤Î¥Ð¥¤¥Ê¥ê¤¬¡¢±ó³Ö¥¢¥¯¥»¥¹¤ËÈóÂбþ¤Î¤â¤Î¤Ç +¤¢¤ë¾ì¹ç¡¢EB_ERR_EBNET_UNSUPPORTED ¤¬ÊÖ¤ê¤Þ¤¹¡£ +

+ + +

void eb_finalize_booklist (EB_BookList *bl)

+ +

+´Ø¿ô eb_finalize_booklist() ¤Ï¡¢bl ¤¬»Ø¤¹ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¤¹¤Ù¤Æ²òÊü¤µ¤ì¡¢ +¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬ EBNET ¥µ¡¼¥Ð¤È·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢·ë¤ÓÉÕ¤­¤¬²ò¤«¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_bind_booklist() ¤ò¸Æ¤Ö +¤³¤È¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

int eb_booklist_book_count (EB_BookList *bl)

+ +

+´Ø¿ô eb_booklist_book_count() ¤Ï¡¢EBNET ¥µ¡¼¥Ð¤¬¤³¤Î +¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤ë½ñÀÒ¤ª¤è¤Ó appendix ¥Ç¡¼¥¿¤Î¿ô +¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È bl ¤Î»Ø¤¹ EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢ +¤¢¤é¤«¤¸¤á EBNET ¥µ¡¼¥Ð¤Ë·ë¤Ó¤Ä¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOKLIST ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_booklist_book_name (EB_BookList *bl, int i, char **name)

+ +

EB_Error_Code eb_booklist_book_title (EB_BookList *bl, int i, char **title)

+ +

+´Ø¿ô eb_booklist_book_name() ¤Ï¡¢EBNET ¥µ¡¼¥Ð¤Î½ñÀÒ¤ä +appendix ¥Ç¡¼¥¿¤Î̾¾Î¤ò¼èÆÀ¤·¤Þ¤¹¡£ +¤³¤³¤Ç¸À¤¦¡Ö̾¾Î¡×¤È¤Ï¡¢±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤǻØÄꤹ¤ë½ñÀÒ̾¤Î¤³¤È¤Ç¤¹¡£ +¤Ä¤Þ¤ê¡¢ebnet://localhost/dict ¤Î dict ¤ÎÉôʬ +¤ò»Ø¤·¤Þ¤¹¡£ +ƱÍͤˡ¢´Ø¿ô eb_booklist_book_title() ¤Ï¡¢½ñÀÒ¤ä appendix +¤ÎÂê̾¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¡¢EBNET ¥µ¡¼¥Ð¾å¤Î²¿ÈÖÌܤνñÀҤ⤷¤¯¤Ï appendix ¤Î¾ðÊó¤ò +¼èÆÀ¤¹¤ë¤Î¤«¤ò¡¢°ú¿ô i ¤Ç»ØÄꤷ¤Þ¤¹¡£ +ÀèƬ¤Ï 1 ÈÖÌܤǤϤʤ¯ 0 ÈÖÌܤˤʤê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï½ñÀÒ¤Î̾¾Î¡¢Âê̾¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò *name, +*title ¤Ë½ñ¤­¹þ¤ß¡¢EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤Ê¤ª¡¢¤³¤Î¥Ý¥¤¥ó¥¿ÃÍ¤Ï ¥ª¥Ö¥¸¥§¥¯¥È bl ¤¬ÊÝ»ý¤·¤Æ¤¤¤ë +ʸ»úÎó¤ò»Ø¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +bl ¤ËÂФ·¤Æ eb_finalize_booklist() ¤ò¸Æ¤ó¤Ç +¤·¤Þ¤¦¤È¡¢¤³¤Îʸ»úÎó¤â»²¾ÈÉÔ²Äǽ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È bl ¤Î»Ø¤¹ EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È +¤Ï¡¢¤¢¤é¤«¤¸¤á EBNET ¥µ¡¼¥Ð¤Ë·ë¤Ó¤Ä¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOKLIST ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢i ¤Ï 0 °Ê¾å¤«¤Ä¥µ¡¼¥Ð¤¬Ä󶡤·¤Æ¤¤¤ë½ñÀÒ¤ª¤è¤Ó appendix +¤ÎÁí¿ô̤Ëþ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì°Ê³°¤ÎÃͤΤȤ­¤Ï¡¢EB_ERR_NO_SUCH_BOOK ¤¬ÊÖ¤ê¤Þ¤¹¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2003-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     booklist <remote-access-ideintifier>
+ * Îã:
+ *     booklist ebnet://localhost
+ * ÀâÌÀ:
+ *     <remote-access-ideintifier> ¤Ç»ØÄꤷ¤¿ EBNET ¥µ¡¼¥Ð¤ËÀܳ¤·
+ *     ¤Æ¡¢¥µ¡¼¥Ð¤ÎÄ󶡤¹¤ë½ñÀÒ¡¢appendix ¤Î°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/booklist.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_BookList bl;
+    int book_count;
+    char *name, *title;
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s book-path remote-access-identifier\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `bl' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_booklist(&bl);
+
+    /* EBNET ¥µ¡¼¥Ð¤ò `bl' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind_booklist(&bl, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the EBNET server, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ¥µ¡¼¥Ð¾å¤Î½ñÀÒ¡¢appendix ¤Î¸Ä¿ô¤ò¼èÆÀ¡£*/
+    error_code = eb_booklist_book_count(&bl, &book_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the number of books, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    for (i = 0; i < book_count; i++) {
+        /* ½ñÀÒ¡¢appendix ¤Î̾¾Î¤ò¼èÆÀ¡£*/
+        error_code = eb_booklist_book_name(&bl, i, &name);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get book name #%d, %s\n",
+                argv[0], i, eb_error_message(error_code));
+            goto die;
+        }
+
+        /* ½ñÀÒ¡¢appendix ¤ÎÂê̾¤ò¼èÆÀ¡£*/
+        error_code = eb_booklist_book_name(&bl, i, &title);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get book title #%d, %s\n",
+                argv[0], i, eb_error_message(error_code));
+            goto die;
+        }
+
+        printf("%-20s  %s\n", name, title);
+    }
+        
+    /* `bl' ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_booklist(&bl);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_booklist(&bl);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-14.html b/lib/ebu/doc/eb-14.html new file mode 100644 index 0000000..2a5bb7f --- /dev/null +++ b/lib/ebu/doc/eb-14.html @@ -0,0 +1,419 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[Á°¤Ø] [Ìܼ¡] +

+
+

º÷°ú

+ + +

¥Ç¡¼¥¿·¿¤Îº÷°ú

+ +

+·¿Ì¾¤ÎÀèƬ¤Î EB_ ¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
A +
Appendix +
B +
Book +
BookList +
D +
Disc_Code +
E +
EB_Character_Code +
Error_Code +
F +
Font_Code +
H +
Hit +
Hook +
Hook_Code +
Hookset +
M +
Multi_Search_Code +
P +
Position +
S +
Subbook_Code +
+ + +

´Ø¿ô¤Îº÷°ú

+ +

+´Ø¿ô̾¤ÎÀèƬ¤Î eb_ ¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
A +
appendix_path +
appendix_subbook +
appendix_subbook_directory +
appendix_subbook_directory2 +
appendix_subbook_list +
B +
backward_narrow_alt_character +
backward_narrow_font_character +
backward_text +
backward_wide_alt_character +
backward_wide_font_character +
bind +
bind_appendix +
bind_booklist +
bitmap_to_bmp +
bitmap_to_gif +
bitmap_to_png +
bitmap_to_xbm +
bitmap_to_xpm +
booklist_book_count +
booklist_book_name +
booklist_book_title +
C +
character_code +
compose_movie_file_name +
compose_movie_path_name +
copyright +
current_candidate +
D +
decompose_movie_file_name +
disc_type +
E +
error_message +
error_string +
F +
finalize_appendix +
finalize_book +
finalize_booklist +
finalize_hookset +
finalize_library +
font +
font_height +
font_height2 +
font_list +
forward_heading +
forward_narrow_font_character +
forward_text +
forward_wide_font_character +
H +
have_copyright +
have_endword_search +
have_exactword_search +
have_font +
have_keyword_search +
have_menu +
have_multi_search +
have_narrow_alt +
have_narrow_font +
have_stop_code +
have_text +
have_wide_alt +
have_wide_font +
have_word_search +
hit_list +
hook_empty +
hook_euc_to_ascii +
hook_narrow_character_text +
hook_newline +
hook_wide_character_text +
I +
initialize_appendix +
initialize_book +
initialize_booklist +
initialize_hookset +
initialize_library +
is_appendix_bound +
is_bound +
is_text_stopped +
L +
load_all_appendix_subbooks +
load_all_subbooks +
M +
menu +
multi_entry_candidates +
multi_entry_count +
multi_entry_have_candidates +
multi_entry_label +
multi_search_list +
multi_title +
N +
narrow_alt_character_text +
narrow_alt_end +
narrow_alt_start +
narrow_font_bmp_size +
narrow_font_character_bitmap +
narrow_font_end +
narrow_font_gif_size +
narrow_font_png_size +
narrow_font_size +
narrow_font_size2 +
narrow_font_start +
narrow_font_width +
narrow_font_width2 +
narrow_font_xbm_size +
narrow_font_xpm_size +
P +
path +
R +
read_binary +
read_heading +
read_rawtext +
read_text +
S +
search_cross +
search_endword +
search_exactword +
search_keyword +
search_multi +
search_word +
seek_text +
set_appendix_subbook +
set_binary_color_graphic +
set_binary_mono_graphic +
set_binary_mpeg +
set_binary_wave +
set_font +
set_hook +
set_hooks +
set_subbook +
stop_code +
subbook +
subbook_directory +
subbook_directory2 +
subbook_list +
subbook_title +
subbook_title2 +
T +
tell_text +
text +
U +
unset_appendix_subbook +
unset_font +
unset_subbook +
W +
wide_alt_character_text +
wide_alt_end +
wide_alt_start +
wide_font_bmp_size +
wide_font_character_bitmap +
wide_font_end +
wide_font_gif_size +
wide_font_png_size +
wide_font_size +
wide_font_size2 +
wide_font_start +
wide_font_width +
wide_font_width2 +
wide_font_xbm_size +
wide_font_xpm_size +
write_text +
write_text_byte1 +
write_text_byte2 +
write_text_string +
+ + +

Äê¿ô¤Îº÷°ú

+ +

+Äê¿ô̾¤ÎÀèƬ¤Î EB_ ¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
E +
ERR_BAD_DIR_NAME +
ERR_BAD_FILE_NAME +
ERR_BAD_WORD +
ERR_DIFF_CONTENT +
ERR_EBNET_FAIL_CONNECT +
ERR_EBNET_NO_PERMISSION +
ERR_EBNET_SERVER_BUSY +
ERR_EBNET_UNSUPPORTED +
ERR_EMPTY_WORD +
ERR_END_OF_CONTENT +
ERR_FAIL_GETCWD +
ERR_FAIL_OPEN_APP +
ERR_FAIL_OPEN_BINARY +
ERR_FAIL_OPEN_CAT +
ERR_FAIL_OPEN_CATAPP +
ERR_FAIL_OPEN_FONT +
ERR_FAIL_OPEN_TEXT +
ERR_FAIL_READ_APP +
ERR_FAIL_READ_BINARY +
ERR_FAIL_READ_CAT +
ERR_FAIL_READ_CATAPP +
ERR_FAIL_READ_FONT +
ERR_FAIL_READ_TEXT +
ERR_FAIL_SEEK_APP +
ERR_FAIL_SEEK_BINARY +
ERR_FAIL_SEEK_CAT +
ERR_FAIL_SEEK_CATAPP +
ERR_FAIL_SEEK_FONT +
ERR_FAIL_SEEK_TEXT +
ERR_MEMORY_EXHAUSTED +
ERR_NO_APPSUB +
ERR_NO_CANDIDATES +
ERR_NO_CUR_APPSUB +
ERR_NO_CUR_BINARY +
ERR_NO_CUR_FONT +
ERR_NO_CUR_SUB +
ERR_NO_FONT +
ERR_NO_PREV_SEARCH +
ERR_NO_PREV_SEEK +
ERR_NO_SUB +
ERR_NO_SUCH_APPSUB +
ERR_NO_SUCH_BINARY +
ERR_NO_SUCH_BOOK +
ERR_NO_SUCH_CHAR_BMP +
ERR_NO_SUCH_CHAR_TEXT +
ERR_NO_SUCH_ENTRY_ID +
ERR_NO_SUCH_FONT +
ERR_NO_SUCH_HOOK +
ERR_NO_SUCH_MULTI_ID +
ERR_NO_SUCH_SEARCH +
ERR_NO_SUCH_SUB +
ERR_NO_TEXT +
ERR_NO_WORD +
ERR_TOO_LONG_FILE_NAME +
ERR_TOO_LONG_WORD +
ERR_TOO_MANY_WORDS +
ERR_UNBOUND_APP +
ERR_UNBOUND_BOOK +
ERR_UNBOUND_BOOKLIST +
ERR_UNEXP_APP +
ERR_UNEXP_BINARY +
ERR_UNEXP_CAT +
ERR_UNEXP_CATAPP +
ERR_UNEXP_FONT +
ERR_UNEXP_TEXT +
H +
HEIGHT_NARROW_FONT_16 +
HEIGHT_NARROW_FONT_24 +
HEIGHT_NARROW_FONT_30 +
HEIGHT_NARROW_FONT_48 +
HEIGHT_WIDE_FONT_16 +
HEIGHT_WIDE_FONT_24 +
HEIGHT_WIDE_FONT_30 +
HEIGHT_WIDE_FONT_48 +
HOOK_BEGIN_CANDIDATE +
HOOK_BEGIN_CLICKABLE_AREA +
HOOK_BEGIN_COLOR_BMP +
HOOK_BEGIN_COLOR_JPEG +
HOOK_BEGIN_DECORATION +
HOOK_BEGIN_EMPHASIS +
HOOK_BEGIN_GRAY_GRAPHIC +
HOOK_BEGIN_IN_COLOR_BMP +
HOOK_BEGIN_IN_COLOR_JPEG +
HOOK_BEGIN_KEYWORD +
HOOK_BEGIN_MONO_GRAPHIC +
HOOK_BEGIN_MPEG +
HOOK_BEGIN_NARROW +
HOOK_BEGIN_NO_NEWLINE +
HOOK_BEGIN_REFERENCE +
HOOK_BEGIN_SUBSCRIPT +
HOOK_BEGIN_SUPERSCRIPT +
HOOK_BEGIN_WAVE +
HOOK_END_CANDIDATE_GROUP +
HOOK_END_CANDIDATE_LEAF +
HOOK_END_CLICKABLE_AREA +
HOOK_END_COLOR_GRAPHIC +
HOOK_END_DECORATION +
HOOK_END_EMPHASIS +
HOOK_END_GRAY_GRAPHIC +
HOOK_END_IN_COLOR_GRAPHIC +
HOOK_END_KEYWORD +
HOOK_END_MONO_GRAPHIC +
HOOK_END_MPEG +
HOOK_END_NARROW +
HOOK_END_NO_NEWLINE +
HOOK_END_REFERENCE +
HOOK_END_SUBSCRIPT +
HOOK_END_SUPERSCRIPT +
HOOK_END_WAVE +
HOOK_GB2312 +
HOOK_INITIALIZE +
HOOK_ISO8859_1 +
HOOK_NARROW_FONT +
HOOK_NARROW_JISX0208 +
HOOK_NEWLINE +
HOOK_NULL +
HOOK_SET_INDENT +
HOOK_WIDE_FONT +
HOOK_WIDE_JISX0208 +
S +
SIZE_NARROW_FONT_16 +
SIZE_NARROW_FONT_16_BMP +
SIZE_NARROW_FONT_16_GIF +
SIZE_NARROW_FONT_16_PNG +
SIZE_NARROW_FONT_16_XBM +
SIZE_NARROW_FONT_16_XPM +
SIZE_NARROW_FONT_24 +
SIZE_NARROW_FONT_24_BMP +
SIZE_NARROW_FONT_24_GIF +
SIZE_NARROW_FONT_24_PNG +
SIZE_NARROW_FONT_24_XBM +
SIZE_NARROW_FONT_24_XPM +
SIZE_NARROW_FONT_30 +
SIZE_NARROW_FONT_30_BMP +
SIZE_NARROW_FONT_30_GIF +
SIZE_NARROW_FONT_30_PNG +
SIZE_NARROW_FONT_30_XBM +
SIZE_NARROW_FONT_30_XPM +
SIZE_NARROW_FONT_48 +
SIZE_NARROW_FONT_48_BMP +
SIZE_NARROW_FONT_48_GIF +
SIZE_NARROW_FONT_48_PNG +
SIZE_NARROW_FONT_48_XBM +
SIZE_NARROW_FONT_48_XPM +
SIZE_WIDE_FONT_16 +
SIZE_WIDE_FONT_16_BMP +
SIZE_WIDE_FONT_16_GIF +
SIZE_WIDE_FONT_16_PNG +
SIZE_WIDE_FONT_16_XBM +
SIZE_WIDE_FONT_16_XPM +
SIZE_WIDE_FONT_24 +
SIZE_WIDE_FONT_24_BMP +
SIZE_WIDE_FONT_24_GIF +
SIZE_WIDE_FONT_24_PNG +
SIZE_WIDE_FONT_24_XBM +
SIZE_WIDE_FONT_24_XPM +
SIZE_WIDE_FONT_30 +
SIZE_WIDE_FONT_30_BMP +
SIZE_WIDE_FONT_30_GIF +
SIZE_WIDE_FONT_30_PNG +
SIZE_WIDE_FONT_30_XBM +
SIZE_WIDE_FONT_30_XPM +
SIZE_WIDE_FONT_48 +
SIZE_WIDE_FONT_48_BMP +
SIZE_WIDE_FONT_48_GIF +
SIZE_WIDE_FONT_48_PNG +
SIZE_WIDE_FONT_48_XBM +
SIZE_WIDE_FONT_48_XPM +
SUCCESS +
W +
WIDTH_NARROW_FONT_16 +
WIDTH_NARROW_FONT_24 +
WIDTH_NARROW_FONT_30 +
WIDTH_NARROW_FONT_48 +
WIDTH_WIDE_FONT_16 +
WIDTH_WIDE_FONT_24 +
WIDTH_WIDE_FONT_30 +
WIDTH_WIDE_FONT_48 +
+ +
+

+[Á°¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb-cat.html b/lib/ebu/doc/eb-cat.html new file mode 100644 index 0000000..fa82ea1 --- /dev/null +++ b/lib/ebu/doc/eb-cat.html @@ -0,0 +1,10941 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

EB ¥é¥¤¥Ö¥é¥ê

+

+¤³¤Îʸ½ñ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 2001-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î C ¤Î¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£ +UNIX ·Ï OS ¤ª¤è¤Ó Windows (2000°Ê¹ß) ¤Î¥·¥¹¥Æ¥à¾å¤ÇÆ°ºî¤µ¤»¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï EB, EBG, EBXA, EBXA-C, S-EBXA ¤ª¤è¤Ó EPWING ·Á¼°¤Î +CD-ROM ½ñÀÒ¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤Ï¡¢¼ç¤ËÆüËܤÇÈÎÇ䤵¤ì¤Æ¤¤¤ë¼­½ñ¤Ë»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¼«ÂÎ¤Ï ISO 9660 ·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Â¾¤Î ISO 9660 ·Á¼° +¤ÈƱ¤¸Í×ÎΤǥޥ¦¥ó¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+Ëܽñ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤òºîÀ®¤¹¤ë +³«È¯¼Ô¸þ¤±¤Ë¡¢¥é¥¤¥Ö¥é¥ê¤Î»ÅÍͤò²òÀ⤷¤¿Ê¸½ñ¤Ç¤¹¡£ +¤½¤·¤Æ¡¢¥é¥¤¥Ö¥é¥ê¤Î¸ø¼°¤Ê»²¾È¥Þ¥Ë¥å¥¢¥ë¤Ç¤â¤¢¤ê¤Þ¤¹¡£ +Æɤ߿ʤá¤ë¤Ë¤¢¤¿¤Ã¤Æ¡¢ÆÉ¼Ô¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ª¤è¤Ó CD-ROM ½ñÀÒ¤ÎÆâÉô¹½Â¤ +¤Ë¤Ä¤¤¤ÆÃΤäƤ¤¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¤¬¡¢ÅŻҥ֥寤« EPWING ¤òÍøÍѤ·¤Æ¡¢ +¼ÂºÝ¤Ë CD-ROM ½ñÀÒ¤¬¤É¤Î¤è¤¦¤Ê¤â¤Î¤«¤òÍý²ò¤·¤Æ¤ª¤¯¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢C ¸À¸ì¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Ï¡¢½½Ê¬¤ËÍý²ò¤·¤Æ¤¤¤ë¤³¤È¤òÁ°Äó +¤È¤·¤Þ¤¹¡£ +

+ +

+Ëܽñ¤ÎÆâÍƤ˱è¤Ã¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ò +ºîÀ®¤¹¤ë¤Ë¤Ï¡¢¤ª»ÈÍѤ¤¤Î¥·¥¹¥Æ¥à¤Ë EB ¥é¥¤¥Ö¥é¥ê¤È C ¥³¥ó¥Ñ¥¤¥é¤ò +¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¤¤Æ²¼¤µ¤¤¡£ +¤Ê¤ª¡¢Ëܽñ¤Ç¤Ï¼ç¤Ë UNIX ·Ï OS ¤ò»ÈÍѤ·¤¿¾ì¹ç¤Ë¤Ä¤¤¤Æ¡¢µ­½Ò¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¥½¡¼¥¹¥³¡¼¥É¤ª¤è¤Ó¥Ð¥¤¥Ê¥ê¤ò¡¢ +¤¤¤ï¤æ¤ë Modified BSD ¥é¥¤¥»¥ó¥¹¤Î²¼¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ +(¥Ð¡¼¥¸¥ç¥ó 4.1 ¤è¤ê¤âÁ°¤Î¤â¤Î¤Ï¡¢GPL ¤òºÎÍѤ·¤Æ¤¤¤Þ¤·¤¿¡£) +¾Ü¤·¤¯¤Ï¡¢¥½¡¼¥¹¥³¡¼¥É¤ËÉÕ°¤·¤Æ¤¤¤ë COPYING ¤È¤¤¤¦±Ñʸ¤Î¥Õ¥¡¥¤¥ë¤ò»²¾È +¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ÅŻҥ֥å¯¤È EPWING ¤Ë¤Ä¤¤¤Æ

+ +

+ÅŻҥ֥å¯¤È EPWING ¤Ï¡¢¤¤¤º¤ì¤â¼ç¤ËÆüËܤǻȤï¤ì¤Æ¤¤¤ëÅŻҽñÀҤΠ+¥Ç¡¼¥¿·Á¼°¤Î̾¾Î¤Ç¡¢CD-ROM ¤Ë¼ý¤á¤¿·Á¤Ç¿ô¡¹¤Î½ñÀÒ¤¬»ÔÈΤµ¤ì¤Æ¤¤¤Þ¤¹¡£ +CD-ROM ¤Ï ISO 9660 ·Á¼° ¤Ê¤Î¤Ç¡¢CD-ROM ¥É¥é¥¤¥Ö¤¬°·¤¨¤ë¥·¥¹¥Æ¥à¤Ç¤¢¤ì¤Ð¡¢ +Íưפ˥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +ÅŻҽñÀҤΥǡ¼¥¿·Á¼°¤È¤Ï¤¤¤Ã¤Æ¤â¡¢¼ÂºÝ¤Ï¼­½ñ¸þ¤±¤ËÆò½¤·¤¿¹½Â¤¤È¤Ê¤Ã¤Æ +¤ª¤ê¡¢»ÔÈΤµ¤ì¤Æ¤¤¤ë½ñÀҤ⼭½ñ¤ÎÎब°µÅÝŪ¤Ë¿¤¤¤è¤¦¤Ç¤¹¡£ +

+ +

+ÅŻҥ֥寡¢EPWING ¤È¤â¤Ë¡¢¥Ç¡¼¥¿·Á¼°¤Ë´Ø¤¹¤ëµ¬³Ê¤ÎÁ´ÍƤϰìÈ̸ø³«¤µ¤ì¤Æ +¤¤¤Þ¤»¤ó¤¬¡¢EPWING ¤Ä¤¤¤Æ¤Ïµ¬³Ê¤Î°ìÉô¤¬ÆüËܹ©¶Èµ¬³Ê JIS X 4081 +¡ÖÅŻҽÐÈǸ¡º÷¥Ç¡¼¥¿¹½Â¤¡×¤È¤·¤Æ¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¤µ¤é¤Ë¡¢EPWING ¤ÈÅŻҥ֥寤Υǡ¼¥¿·Á¼°¤Ï¡¢¹ó»÷¤·¤Æ¤¤¤ë¤³¤È¤¬ÃΤé¤ì¤Æ +¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î³«È¯¼Ô¤â¡¢ÅŻҥ֥寡¢EPWING µ¬³Ê¤ÎÁ´ÍƤÏÃΤê¤Þ¤»¤ó¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï JIS X 4081 ¤Îµ­½Ò¤ò¤â¤È¤Ë¡¢ÅŻҥ֥寡¢EPWING ¤òÆɤá¤ë +¤è¤¦¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£ +¤·¤«¤·¤Ê¤¬¤é¡¢µ¬³Ê¤ÎÁ´ÍƤ¬Ê¬¤«¤é¤Ê¤¤¾õÂ֤dz«È¯¤·¤Æ¤¤¤ë¤¿¤á¡¢»ÄÇ°¤Ê¤¬¤é +°ìÉô¤ËÀµ¤·¤¯Æɤá¤Ê¤¤½ñÀÒ¤¬Â¸ºß¤·¤Þ¤¹¡£ +

+ + +

Ëܽñ¤Î¹½À®¤Ë¤Ä¤¤¤Æ

+ +

+¼¡¾Ï¡ÖEB ¥é¥¤¥Ö¥é¥ê¤ÎÆÃħ¡×¤Ç¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬Âбþ¤·¤Æ¤¤¤ëµ¡Ç½¡¢Âбþ +¤·¤Æ¤¤¤Ê¤¤µ¡Ç½¤Ë¤Ä¤¤¤Æ¡¢´Êñ¤ËÀâÌÀ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢¥é¥¤¥Ö¥é¥ê¤Î³µÎ¬¤Ë´Ø¤·¤Æ¡¢ºÇ½é¤ËÃΤäƤª¤¤¤¿¤Û¤¦¤¬Îɤ¤¤È»×¤ï¤ì¤ë +»öÊÁ¤ò¤¤¤¯¤Ä¤«ÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤µ¤é¤Ë¼¡¤Î¾Ï¡Ö¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡¡×¤Ç¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤¿ +¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡¤òÀâÌÀ¤·¤Þ¤¹¡£ +Ëܽñ¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤ËɬÍפʾðÊó¤â¡¢¤³¤Î¾Ï¤Ë +µ­¤·¤Æ¤¢¤ê¤Þ¤¹¡£ +

+ +

+¤½¤·¤Æ¡¢¤½¤Î¼¡¤Î¾Ï¡Ö¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤È¸å»ÏËö¡×¤«¤é¤¬¡¢¼ÂºÝ¤Î +EB ¥é¥¤¥Ö¥é¥ê¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Î²òÀâ¤È¤Ê¤ê¤Þ¤¹¡£ +¤½¤ì¤¾¤ì¤Î¾Ï¤Ï¡¢¼¡¤Î¤è¤¦¤ÊÀᤫ¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢¾Ï¤Ë¤è¤Ã¤Æ¤Ï°ìÉô¤ÎÀ᤬¤Ê¤¤¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ +

+ +
+
²òÀâ
+
+¤½¤Î¾Ï¤Ç²òÀ⤹¤ëµ¡Ç½¤ä³µÇ°¤Ë¤Ä¤¤¤Æ¤Î´ðÁÃÃμ±¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î»ÅÍͤΠ+³µÍפˤĤ¤¤Æ²òÀ⤷¤Æ¤¤¤Þ¤¹¡£ + +
¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à
+
+¡Ö²òÀâ¡×¤Ç¤Ï¥×¥í¥°¥é¥à¤ÎÃÇÊÒ¤À¤±¤ò¼¨¤¹¤³¤È¤¬Â¿¤¤¤Î¤Ç¡¢Æ°ºî²Äǽ¤Ê +¥×¥í¥°¥é¥à¤Î¥µ¥ó¥×¥ë¤ò¤³¤³¤Ç¼¨¤·¤Þ¤¹¡£ + +
¥Ç¡¼¥¿·¿¤Î¾ÜºÙ
+
+¥Ç¡¼¥¿·¿¤ä´Ø¿ô¡¢Äê¿ôÃͤʤɤˤĤ¤¤Æ¤Î»²¾È¥Þ¥Ë¥å¥¢¥ë¤Ç¤¹¡£ +
+ + +

EB ¥é¥¤¥Ö¥é¥ê¤ÎÆÃħ

+ +

+Á°¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢ÅŻҥ֥å¯ (EB, EBG, EBXA, EBXA-C, S-EBXA) +¤È EPWING ·Á¼°¤Î CD-ROM ½ñÀÒ¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢¤³¤ì¤é¤Î CD-ROM ½ñÀÒ¤ËÂФ·¤Æ¡¢¼¡¤Î½èÍý¤ò¹Ô¤¦¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +
    +
  • Á°Êý°ìÃ׸¡º÷ +
  • ¸åÊý°ìÃ׸¡º÷ +
  • ´°Á´°ìÃ׸¡º÷ +
  • ¾ò·ï¸¡º÷ +
  • Ê£¹ç¸¡º÷ +
  • ¸«½Ð¤·¥Ç¡¼¥¿¤Î¼èÆÀ +
  • ËÜʸ¥Ç¡¼¥¿¤Î¼èÆÀ +
  • ¥á¥Ë¥å¡¼¤Î¼èÆÀ +
  • Ãøºî¸¢É½¼¨¤Î¼èÆÀ +
  • ¥«¥é¡¼¿ÞÈǥǡ¼¥¿¤Î¼èÆÀ (¤¿¤À¤· EPWING ¤Î¤ß) +
  • ¥â¥Î¥¯¥í¿ÞÈǥǡ¼¥¿¤Î¼èÆÀ +
  • ³°»ú¥Ç¡¼¥¿¤Î¼èÆÀ +
  • Æ°²è¥Ç¡¼¥¿¤Î¼èÆÀ +
+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î³µÍפ˴ؤ·¤Æ¡¢¤¢¤é¤«¤¸¤áÃΤäƤª¤¤¤Æ夤¤¿ +¤Û¤¦¤¬Îɤ¤¤È»×¤ï¤ì¤ë¤½¤Î¾¤Î»öÊÁ¤Ë¤Ä¤¤¤Æ¡¢²¿ÅÀ¤«ÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
appendix.h
+
+appendix (ÉÕÏ¿) ¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
binary.h
+
+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
eb.h
+
+EB ¥é¥¤¥Ö¥é¥ê¤Î´ðËܥإåÀ¥Õ¥¡¥¤¥ë¡£ +
error.h
+
+¥¨¥é¡¼¥³¡¼¥É¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
font.h
+
+³°»ú¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
text.h
+
+¥Æ¥­¥¹¥È¥Ç¡¼¥¿ (ËÜʸ¡¢¸«½Ð¤·¤Ê¤É) ¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
+ +

+¤³¤ì°Ê³°¤Ë¤â¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¤¬¡¢¾å¤Ëµó¤²¤¿ +¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤«¤éÆɤ߹þ¤Þ¤ì¤ë¤â¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬ +ľÀÜÆɤ߹þ¤àɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦ºÝ¤Ë¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë +¤ò¥Õ¥¡¥¤¥ë¤ÎÀèƬÉÕ¶á¤ÇÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ +
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+
+ +

+eb.h ¤Ç¤Ï¤Ê¤¯¡¢eb/eb.h ¤òÆɤ߹þ¤à¤è¤¦¤Ë¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ʸ»ú¥³¡¼¥É

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢CD-ROM ½ñÀÒÆâ¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤Ë¤·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó +¤ËÅϤ¹ºÝ¤Îʸ»ú¥³¡¼¥É¤òµ¬Äꤷ¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EBG (³¤³°¤ÎÅŻҥ֥å¯) ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤¬ ISO 8859-1 (¥é¥Æ¥óʸ»ú 1¡¢ +¤¿¤À¤·À©¸æʸ»ú¤ò½ü¤¯) ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¤¿¤á¡¢¥Ç¡¼¥¿¤Î¤ä¤ê¼è¤ê¤â ISO 8859-1 +¤Ç¹Ô¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢³°»ú¤À¤±¤Ï 2 ¥Ð¥¤¥È¤Çɽ¸½¤·¡¢0x0101 ¡Á 0x1efe ¤ÎÎΰè¤ò»ÈÍѤ·¤Þ¤¹¡£ +(³°»úÎΰè¤Î²¼°Ì 16 ¥Ó¥Ã¥È¤Ï 0x01 ¡Á 0xfe ¤ÎÈϰϤò»ÈÍѤ·¤Þ¤¹¡£) +

+ +

+EBG, EBXA-C ¤ò½ü¤¤¤¿ÅŻҥ֥寡¢¤ª¤è¤Ó EPWING ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤¬ +JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤Ç½ñ¤«¤ì¤Æ¤ª¤ê¡¢JIS X 0208 ¤ò 0x2121 ¡Á +0x7e7e ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤·¡¢0xa121 ¡Á 0xfe7e ¤ò³°»úÎΰè¤Ë¤·¤Æ¤¤¤Þ¤¹ (²¼¿Þ)¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¾å°Ì£¸¥Ó¥Ã¥È
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¡¡£²£±¡¡¡¡¡¡¡¡£·£å¡¡£á£±¡¡¡¡¡¡¡¡£æ£å
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¨£¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¤
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£²£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£Ê£É£Ó¡¡£Ø¨¢¡¡¡¡¨¢¡¡³°»ú¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£°£²£°£¸¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£·£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+²¼°Ì£¸¥Ó¥Ã¥È¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£á£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£æ£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¥
+
+
+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï JIS X 0208 Éôʬ¤òÆüËܸì EUC (EUC-JP) ¤Ë¥¨¥ó¥³¡¼¥É +¤·¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È¤Î¤ä¤ê¼è¤ê¤âÆüËܸì EUC ¤Ç¹Ô¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢JIS X 0208 Éôʬ¤Ï 0xa1a1 ¡Á 0xfefe ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤Þ¤¹¡£ +

+ +

+EBXA-C (ÃæÆü¡¦ÆüÃæ¼­½ñ¤ÎÅŻҥ֥å¯) ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤¬ JIS X 0208 +(ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤È GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ¤Ç½ñ¤«¤ì¤Æ¤ª¤ê¡¢ +JIS X 0208 ¤ò 0x2121 ¡Á 0x7e7e ¤Ë¥Þ¥Ã¥Ô¥ó¥°¡¢ +GB 2312 ¤ò 0x21a1 ¡Á 0x7efe ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤·¡¢ +0xa121 ¡Á 0xfe7e ¤ò³°»úÎΰè¤Ë¤·¤Æ¤¤¤Þ¤¹ (²¼¿Þ)¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¾å°Ì£¸¥Ó¥Ã¥È
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¡¡£²£±¡¡¡¡¡¡¡¡£·£å¡¡£á£±¡¡¡¡¡¡¡¡£æ£å
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¨£¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¤
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£²£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£Ê£É£Ó¡¡£Ø¨¢¡¡¡¡¨¢¡¡³°»ú¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£°£²£°£¸¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£·£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+²¼°Ì£¸¥Ó¥Ã¥È¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£á£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£Ç£Â¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£²£³£±£²¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£æ£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¥
+
+
+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È¤Î¤ä¤ê¼è¤ê¤Ë»È¤¦Ê¸»ú¥³¡¼¥É¤Ï¡¢ +ÆüËܸì EUC ¤ª¤è¤ÓÃæ¹ñ¸ì EUC (EUC-ZH) ¤Ç¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¤½¤Î¤Þ¤Þ¤Ç¤Ï JIS X 0208 ¤È GB 2312 ¤¬ 0xa1a1 ¡Á 0xfefe ¤Ë +¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¡¢¾×Æͤ·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +¤³¤ÎÌäÂê¤ò¤É¤¦²óÈò¤¹¤ë¤Î¤«¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤Ç·è¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¥Õ¥Ã¥¯¤Èʸ»ú¥³¡¼¥É¤Î´Ø·¸¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ÅŻҥ֥寡¢EPWING ¤È¤â¤Ë¡¢³°»ú¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤Ç¤É¤¦ +°·¤¦¤«¤ò·è¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +³°»ú¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯¤Ï ¡Ö³°»ú¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

°µ½Ì¤µ¤ì¤¿½ñÀҤˤĤ¤¤Æ

+ +

+EB ¥é¥¤¥Ö¥é¤Ï¡¢¥Ç¡¼¥¿¤ò°µ½Ì¤·¤Æ¼ýÏ¿¤·¤¿½ñÀÒ¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +º£¤Î¤È¤³¤í¡¢¼¡¤Î 4 ¼ïÎà¤Î°µ½ÌÊýË¡¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
ebzip °µ½Ì·Á¼°
+
+EB ¥é¥¤¥Ö¥é¥êÆȼ«¤Î°µ½Ì·Á¼°¤Ç¤¹¡£ +ÉÕ°¤Î ebzip ¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿½ñÀÒ¤òºî¤ì¤Þ¤¹¡£ + +
EPWING V4, V5 ·Á¼°
+
+»ÔÈΤΠEPWING V4, V5 ¤Î½ñÀҤΰìÉô¤Ë¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ + +
EPWING V6 ·Á¼°
+
+»ÔÈΤΠEPWING V6 ¤Î½ñÀҤΰìÉô¤Ë¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +EPWING V4, V5 ·Á¼°¤Î²þÎÉ·¿¤Ç¤¹¡£ + +
S-EBXA ·Á¼°
+
+»ÔÈΤΠS-EBXA ¤Î½ñÀҤΰìÉô¤Ë¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +
+ +

+¥Ç¡¼¥¿¤Î¿­Ä¹¤Ï EB ¥é¥¤¥Ö¥é¥ê¦¤Ç¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤ë¤¿¤á¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¡¢¥¢¥¯¥»¥¹¤·¤Æ¤¤¤ë½ñÀÒ¤¬°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤« +¤É¤¦¤«Ê¬¤«¤ê¤Þ¤»¤ó¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢½ñÀÒ¤¬°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ç½èÍý¤òÊѤ¨¤ë +ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ + +

±ó³Ö¥Û¥¹¥È¾å¤Î½ñÀҤˤĤ¤¤Æ

+ +

+¥Ð¡¼¥¸¥ç¥ó 4.0 ¤«¤é¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¾¤Î¥Û¥¹¥È¤Î½ñÀҤ˥¢¥¯¥»¥¹¤Ç¤­¤ë +¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£ +

+ +

+±ó³Ö¥¢¥¯¥»¥¹¤Î½èÍý¤Ï¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¦¤Ç¹Ô¤ï¤ì¤Þ¤¹¤Î¤Ç¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢½ñÀÒ¤¬¼«Ê¬¤Î¥Û¥¹¥È¾å¤Ë¤¢¤ë¤«¤É¤¦¤«¤Ç¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Î¸Æ¤Ó½Ð¤·¼ê½ç¤òÊѤ¨¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¤¿¤À¤·¡¢Â¾¤Î¥Û¥¹¥È¤«¤é¥¢¥¯¥»¥¹¤¹¤ë¤È¡¢½èÍý®ÅÙ¤ÏÈó¾ï¤ËÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£ +¤½¤Î¤¿¤á¡¢¸úΨÎɤ¯½èÍý¤Ç¤­¤ë¤è¤¦¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î½èÍýÊýË¡¤ò¹©Éפ¹¤Ù¤­ +¾õ¶·¤¬À¸¤¸¤ë¤³¤È¤Ï¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ + +

¥·¥¹¥Æ¥à¤ÎÍ×·ï

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ë¤ËÍѤ¤¤ë¥³¥ó¥Ñ¥¤¥é¤Ë¤Ï¡¢ +ANSI (ANSI X3.159-1989, ISO/IEC 9899-1990) Âбþ¤Î¤â¤Î¤òÂоݤȤ·¤Æ¤¤¤Þ¤¹¡£ +¤Þ¤¿¡¢¥·¥¹¥Æ¥à¤Ë¤Ï POSIX.1 (IEEE Std. 1003.2-1990, ISO/IEC 9945-1:1990) +½àµò¤Ê¤¤¤·¸ß´¹¤Î¤â¤Î¤òÂоݤȤ·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+±Ê¤é¤¯ EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¸Å¤¤¥³¥ó¥Ñ¥¤¥é¤ä UNIX ·Ï¥·¥¹¥Æ¥à¤Ø¤ÎÂбþ¤â +¤½¤ì¤Ê¤ê¤Ë¹Ô¤ï¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢¥Ð¡¼¥¸¥ç¥ó 4.1 ¤«¤é¤ÏÂбþ¤òÂǤÁÀڤäƤ¤¤Þ¤¹¡£ +ÆÃ¤Ë ANSI Âбþ¤Î¥³¥ó¥Ñ¥¤¥é¤Ïɬ¿Ü¤Ç¤¹¤Î¤Ç¡¢¤´Ãí°Õ¤¯¤À¤µ¤¤¡£ +

+ + +

¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡

+ +

+ËܾϤǤϡ¢EB ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤¿¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ë¤Î»ÅÊý¤Ë¤Ä¤¤¤Æ¡¢ +2 Ä̤ê¤ÎÊýË¡¤òÀâÌÀ¤·¤Þ¤¹¡£ +

+ +

+°ì¤ÄÌܤϡ¢¤´¤¯»äŪ¤Ê¡¢¾®µ¬ÌÏ¤Î¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ëºÝ¤Ë¸þ¤¤¤Æ¤¤¤ë +¤Æ¤Ã¤È¤êÁ᤯¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤ÎÊýË¡¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î»È¤¤Êý¤ò³Ð¤¨¤ëÌÜŪ¤Ç´Êñ¤Ê¥×¥í¥°¥é¥à¤òÁȤàºÝ¤Ï¡¢¤³¤Á¤é +¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£ +

+ +

+Æó¤ÄÌܤϡ¢EB ¥é¥¤¥Ö¥é¥ê¤òÁȤ߹þ¤ó¤À¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢ +¤È¤·¤Æ¥ê¥ê¡¼¥¹¤¹¤ëºÝ¤Ë¸þ¤¤¤Æ¤¤¤ëÊýË¡¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢GNU Autoconf, Automake, Libtool ¤òÊ»ÍѤ¹¤ë»ÅÁȤߤò +ÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤é¤ò»È¤Ã¤¿¥³¥ó¥Ñ¥¤¥ëÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¤Æ¤Ã¤È¤êÁᤤ¥³¥ó¥Ñ¥¤¥ëÊýË¡

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ëºÝ¤Ï¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î +¥Ç¥£¥ì¥¯¥È¥ê°ÌÃÖ¤ò C ¥³¥ó¥Ñ¥¤¥é¤Ë¶µ¤¨¤Æ¤ä¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +°ìÈÌ¤Ë UNIX ¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¡¢-I ¥ª¥×¥·¥ç¥ó¤Ç°ÌÃÖ¤ò»ØÄê +¤·¤Þ¤¹¡£ +

+ +
+
+cc -I/usr/local/include -c sample.c
+
+
+ +

+/usr/local/include/eb ¤Ç¤Ï¤Ê¤¯¡¢¤½¤Î°ì¤Ä¾å¤ò»ØÄꤷ¤Þ¤¹ +(¡Ö¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+¼¡¤Ë¡¢¥ê¥ó¥¯¤·¤Æ¼Â¹Ô¥Ð¥¤¥Ê¥ê¤òÀ¸À®¤¹¤ë¹©Äø¤Ç¤¹¤¬¡¢ +°Ê²¼¤Ëµ­¤·¤¿¥é¥¤¥Ö¥é¥ê¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´Éô¤ò¥ê¥ó¥¯¤·¤Þ¤¹¡£ +³ç¸ÌÆâ¤Ï¡¢¥é¥¤¥Ö¥é¥ê¤Î¥Õ¥¡¥¤¥ë̾¤Ç¤¹ (¤¿¤À¤·¡¢.a ¤ä +.so ¤È¤¤¤Ã¤¿ÀÜÈø»Ò¤Ï¾Êά)¡£ +

+ +
+
EB ¥é¥¤¥Ö¥é¥ê (libeb)
+
+EB ¥é¥¤¥Ö¥é¥ê¤ÎËÜÂΤǤ¹¡£¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ïɬ¿Ü¤Ç¤¹¡£ + +
zlib (libz)
+
+°µ½Ì¤È¿­Ä¹¤ò¹Ô¤¦¥é¥¤¥Ö¥é¥ê¤Ç¤¹ +(¾Ü¤·¤¯¤Ï @url{http://www.gzip.org/zlib/})¡£ +ebzip ¥³¥Þ¥ó¥É¤Ç°µ½Ì¤·¤¿¼­½ñ¤ò°·¤¦¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£ +¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ïɬ¿Ü¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î¥½¡¼¥¹¥³¡¼¥É¤Ë¤Ï zlib ¤â¼ýÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¥·¥¹¥Æ¥à¤Ë zlib ¤¬ ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò +¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëºÝ¤Ë¡¢zlib ¤â¼«Æ°Åª¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£ + +
gettext ¥é¥¤¥Ö¥é¥ê (libintl)
+
+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤òÄ󶡤¹¤ë¥é¥¤¥Ö¥é¥ê¤Ç¤¹ +¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤ë +¾ì¹ç¤Ï¡¢É¬Íפˤʤ뤫¤âÃΤì¤Þ¤»¤ó¡£ +gettext ¤Î¼ÂÁõ¤Ï²¿¼ïÎफ¤¢¤ê¤Þ¤¹¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç»ÈÍѤǤ­¤ë¤Î¤Ï +¥á¥Ã¥»¡¼¥¸¥«¥¿¥í¥°¤Î·Á¼°¤¬ GNU gettext ¸ß´¹¤Î¤â¤Î¤À¤±¤Ç¤¹¡£ + +¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ¤¤¤ë¾ì¹ç¤Ç¤â¡¢OS ¤Îɸ½à C ¥é¥¤¥Ö¥é¥ê +¤È¤·¤Æ glibc ¤òºÎÍѤ·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ + +
iconv ¥é¥¤¥Ö¥é¥ê
+
+ʸ»ú¥³¡¼¥ÉÊÑ´¹¤Î¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£ +gettext ¥é¥¤¥Ö¥é¥ê¤ò¥ê¥ó¥¯¤¹¤ë¾ì¹ç¡¢°ì½ï¤ËɬÍפȤʤ뤫¤âÃΤì¤Þ¤»¤ó¡£ +iconv ¤Î¼ÂÁõ¤â²¿¼ïÎफ¤¢¤ê¡¢OS ¤Ë¤è¤Ã¤Æ¤ÏºÇ½é¤«¤éźÉÕ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +
+ +

+ɬÍפʥ饤¥Ö¥é¥ê¥Õ¥¡¥¤¥ë¤Î̾¾Î¤ò¡¢C ¥³¥ó¥Ñ¥¤¥é¤Ë»ØÄꤷ¤Æ¤ä¤ê¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢¥Õ¥¡¥¤¥ë¤ÎÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê°ÌÃÖ¤ò¡¢C ¥³¥ó¥Ñ¥¤¥é¤Ë¶µ¤¨¤ë +ɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +°ìÈÌ¤Ë UNIX ¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¡¢-L ¥ª¥×¥·¥ç¥ó¤Ç¥Ç¥£¥ì¥¯¥È¥ê +°ÌÃÖ¤ò»ØÄꤷ¡¢-l ¥ª¥×¥·¥ç¥ó¤Ç¥é¥¤¥Ö¥é¥ê¤Î¥Õ¥¡¥¤¥ë̾¤ò»ØÄê +¤·¤Þ¤¹¡£ +

+ +
+
+cc sample.o -L/usr/local/lib -leb -lz -lintl -liconv
+
+
+ +

+¤¿¤À¤·¡¢¶¦Í­¥é¥¤¥Ö¥é¥ê¤ò¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤Ï¡¢¼Â¹Ô»þ¤Ë¤ª¤±¤ë¥é¥¤¥Ö¥é¥ê¤Î +¸¡º÷¥Ñ¥¹¤â¹ç¤ï¤»¤Æ»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+cc sample.o -R/usr/local/lib -L/usr/local/lib -leb -lz -lintl -liconv
+
+
+ +

+C ¥³¥ó¥Ñ¥¤¥é¤Î»È¤¤Êý¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢C ¥³¥ó¥Ñ¥¤¥é¤Î¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È +¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

Autoconf ¤òÊ»ÍѤ·¤¿¥³¥ó¥Ñ¥¤¥ëÊýË¡

+ +

+ºî¶È¤ÎÁ°¤Ë¡¢Autoconf, Automake, Libtool ¤Ï¡¢¤¢¤é¤«¤¸¤á¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ +¤ª¤¤¤Æ²¼¤µ¤¤¡£ +Autoconf ¤Ï¥Ð¡¼¥¸¥ç¥ó 2.50 °Ê¹ß¤¬É¬ÍפǤ¹¡£ +

+ +

+¤Þ¤º¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î configure.ac +(¤â¤·¤¯¤Ï configure.in) ¤Ë¡¢¼¡¤Î¹Ô¤ò²Ã¤¨¤Þ¤¹¡£ +

+ +
+
+eb_LIB_EB4
+
+
+ +

+¥Þ¥¯¥í eb_LIB_EB4 ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î»ÈÍѤËɬÍפʰìÀڤΠ+¥Á¥§¥Ã¥¯¤ò¹Ô¤¤¡¢¤µ¤é¤Ë configure ¤Ë¼¡¤Î¥ª¥×¥·¥ç¥ó¤òÄɲà +¤·¤Þ¤¹¡£ +

+ +
+
+  --with-eb-conf=FILE     eb.conf file is FILE [SYSCONFDIR/eb.conf]
+
+
+ +

+eb.conf ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤È¤­¤Î¾ðÊó¤òµ­Ï¿ +¤·¤¿¥Õ¥¡¥¤¥ë¤Ç¡¢¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£ +eb_LIB_EB4 ¤Ï¤³¤Î¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç¡¢C ¥³¥ó¥Ñ¥¤¥é¤Ë +ÅϤµ¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤¥ª¥×¥·¥ç¥ó¤Ê¤É¤Î¾ðÊó¤òÆÀ¤Þ¤¹¡£ +--eb-conf-file ¤Ï¡¢eb.conf ¤Î¥Õ¥¡¥¤¥ë̾¤ò +ÌÀ¼¨Åª¤Ë»ØÄꤹ¤ë¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£ +

+ +

+¥Þ¥¯¥í eb_LIB_EB4 ¤Ï¡¢eb4.m4 ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ç +Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤ò /usr/local ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢¸Ä¡¹¤Î¥Õ¥¡¥¤¥ë +¤Î¥¤¥ó¥¹¥È¡¼¥ëÀè¤òÊѹ¹¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢/usr/local/share/aclocal +¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£ +¤³¤Î eb4.m4 ¤ò¥½¡¼¥¹¥³¡¼¥É¤ÎŬÅö¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼ (¤¿¤È¤¨¤Ð +m4) ¤Ë¥³¥Ô¡¼¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+aclocal ¥³¥Þ¥ó¥É¤Ç aclocal.m4 ¤òºÆÀ¸À®¤¹¤ëºÝ¤Ï¡¢ +-I ¥ª¥×¥·¥ç¥ó¤Ç¥Þ¥¯¥í¥Õ¥¡¥¤¥ë¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +
+
+aclocal -I m4
+
+
+ +

+²Ã¤¨¤Æ¡¢¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Î Makefile.am ¤ÎÃæ¤Ë¤â +aclocal ¤ØÅϤ¹¥ª¥×¥·¥ç¥ó¤ò½ñ¤¤¤Æ¤ª¤­¤Þ¤¹¡£ +

+ +
+
+ACLOCAL_AMFLAGS = -I m4
+
+
+ +

+¤Þ¤¿¡¢¥½¡¼¥¹¥³¡¼¥É¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë Libtool ¥Ñ¥Ã¥±¡¼¥¸¤¬¤Þ¤ÀÍÑ°Õ¤µ¤ì¤Æ +¤¤¤Ê¤±¤ì¤Ð¡¢ÍÑ°Õ¤·¤Þ¤¹¡£ +libtoolize ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ²¼¤µ¤¤¡£ +Libtool ¥Ñ¥Ã¥±¡¼¥¸¤¬¡¢¥½¡¼¥¹¥³¡¼¥É¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ +

+ +
+
+libtoolize
+
+
+ +

+ºÇ¸å¤Ë¡¢¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Î Makefile.am ¥Õ¥¡¥¤¥ë +¤Î _LDFLAGS ¤È INCLUDES ¤Ë¡¢¼¡¤Î¤è¤¦¤ÊÃͤòÄɲà +¤·¤Þ¤¹¡£ +

+ +
+
+program_LDFLAGS = $(EBCONF_EBLIBS) $(EBCONF_ZLIBLIBS) $(EBCONF_INTLLIBS)
+INCLUDES = $(EBCONF_EBINCS)
+
+
+ +

+(program_LDFLAGS ¤Î program ¤Î¤È¤³¤í¤Ï¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¼ÂºÝ¤Î¥³¥Þ¥ó¥É̾¤Ë¤·¤Þ¤¹¡£) +

+ + +

EB ¥é¥¤¥Ö¥é¥êËÜÂΤΥǥХå°

+ +

+¡Ö¼«Ê¬¤¬ºî¤Ã¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬Àµ¤·¤¯Æ°¤«¤Ê¤¤¤Î¤Ï¡¢¤Ò¤ç¤Ã¤È¤¹¤ë¤È +EB ¥é¥¤¥Ö¥é¥ê¤Î¥Ð¥°¤¬¸¶°ø¤Ç¤Ï¤Ê¤¤¤«?¡×¤È¤¤¤¦µ¿Ìä¤òÊú¤­¡¢EB ¥é¥¤¥Ö¥é¥ê +¤ÎµóÆ°¤ò³Îǧ¤·¤¿¤¤¤È»×¤¦¤³¤È¤¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +

+¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ï¡¢´Ä¶­ÊÑ¿ô EB_DEBUG ¤ò¥»¥Ã¥È¤·¤¿¾õÂÖ¤Ç +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ïɸ½à¥¨¥é¡¼½ÐÎϤˡ¢¼¡¤Î¤è¤¦¤Ê¥í¥°¤ò (¤«¤Ê¤êÂçÎ̤Ǥ¹¤¬) +½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+[EB] in: eb_set_font(book=0, font_code=0)
+[EB] in: eb_load_narrow_font(book=0)
+[EB] out: eb_load_narrow_font()
+[EB] in: eb_load_wide_font(book=0)
+[EB] out: eb_load_wide_font()
+[EB] out: eb_set_font() = EB_SUCCESS
+
+
+ +

+¤³¤ì¤é¤Î¥í¥°¤Ï¡¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·»þ¤Î°ú¿ôÎ󡢤ª¤è¤Ó´Ø¿ô¤«¤é¤ÎÌá¤êÃͤò +¼¨¤·¤Æ¤¤¤Þ¤¹¡£ +ebfixlog ¤È¤¤¤¦ Perl5 ¥¹¥¯¥ê¥×¥È¤ò»È¤¦¤È¡¢¥í¥°¤òÀ°·Á¤¹¤ë¤³¤È +¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¥¹¥¯¥ê¥×¥È¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¥½¡¼¥¹¥³¡¼¥É¤Î misc +¥Ç¥£¥ì¥¯¥È¥ê¤Ë¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+ebfixlog ¤Ï¡¢¥³¥Þ¥ó¥É¹Ô¤Î°ú¿ô¤È¤·¤ÆÍ¿¤¨¤é¤ì¤¿¥Õ¥¡¥¤¥ë +(°ú¿ô¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ðɸ½àÆþÎÏ) ¤«¤é¥á¥Ã¥»¡¼¥¸¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¡¢ +¼¡¤Î¤è¤¦¤Ë»ú²¼¤²¤·¤Æ½ÐÎϤ·¤Þ¤¹¡£ +

+ +
+
+[EB] in: eb_set_font(book=0, font_code=0)
+[EB]   in: eb_load_narrow_font(book=0)
+[EB]   out: eb_load_narrow_font()
+[EB]   in: eb_load_wide_font(book=0)
+[EB]   out: eb_load_wide_font()
+[EB] out: eb_set_font() = EB_SUCCESS
+
+
+ +

+Ä̾ï ebfixlog ¥¹¥¯¥ê¥×¥È¤Ï¡¢zio ¤ª¤è¤Ó ebnet ¤È¸Æ¤Ð¤ì¤ë¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¥Õ¥¡¥¤¥ëÆþ½ÐÎϤò¼õ¤±»ý¤Ä½èÍýÉô¤Î¥í¥°¤ÏÆɤ߼ΤƤë¤è¤¦¤Ë +¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤Ë¤è¤ê¡¢¥í¥°¤ÎÎ̤¬¤«¤Ê¤ê¸º¤ê¤Þ¤¹¡£ +

+ +

+zio ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ÎÄã¥ì¥Ù¥ëÆþ½ÐÎϤνèÍýÉô¤Ç¡¢ÉÑÈˤ˸ƤӽФµ¤ì¤Þ¤¹¡£ +ÌäÂê¤Î¸¶°ø¤òÄ´¤Ù¤ëºÝ¤â¡¢¤Þ¤º¤ÏÆɤ߼ΤƤ¿Êý¤¬¥é¥¤¥Ö¥é¥ê¤ÎÆâÉôÆ°ºî¤òÄÉÀ× +¤·¤ä¤¹¤¤¤Ç¤·¤ç¤¦¡£ +

+ +

+ebfixlog ¤Î -z ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢zio ¤Î +¥á¥Ã¥»¡¼¥¸¤òÆɤ߼ΤƤº¤Ë½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebnet ¤Ï±ó³Ö¥¢¥¯¥»¥¹¤ÎÆþ½ÐÎϤò½èÍý¤¹¤ëÉôʬ¤Ç¡¢zio ¤è¤ê¤â¤µ¤é¤Ë +²¼°Ì¥ì¥Ù¥ë¤Ë°ÌÃÖ¤·¤Þ¤¹¡£ +±ó³Ö¥¢¥¯¥»¥¹¤ÎµóÆ°¤òÄÉÀפ¹¤ë¤È¤­°Ê³°¤Ï¡¢Æɤ߼ΤƤ¿Êý¤¬Îɤ¤¤È»×¤¤¤Þ¤¹¡£ +

+ +

+ebfixlog ¤Î -n ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢ebnet, +zio ξÊý¤Î¥á¥Ã¥»¡¼¥¸¤òÆɤ߼ΤƤº¤Ë½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ + +

¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤È¸å»ÏËö

+ +

+¤³¤Î¾Ï¤«¤é¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Î²òÀâ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é EB ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ¹¤ë¤Ë¤Ï¡¢ +ºÇ½é¤Ë¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤ò¹Ô¤¦¤Ë¤Ï¡¢eb_initialize_library() +¤È¤¤¤¦´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_initialize_library() != EB_SUCCESS) {
+    printf("eb_initialize_library() failed\n");
+    exit(1);
+}
+
+
+ +

+ƱÍͤˡ¢¥é¥¤¥Ö¥é¥ê¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢eb_finalize_library() +¤È¤¤¤¦´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +

+ +
+
+eb_finalize_library();
+
+
+ + + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2001-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     initexit
+ * Îã:
+ *     initexit
+ * ÀâÌÀ:
+ *     EB ¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¡¢¸å»ÏËö¤ò¤·¤Æ¤ß¤Þ¤¹¡£
+ *     ¥×¥í¥°¥é¥à¤Î³°Â¦¤«¤é¸«¤ì¤Ð¡¢¤³¤ì¤Ï²¿¤Î°ÕÌ£¤â¤Ê¤¤Æ°ºî¤Ç¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¡£*/
+    error_code = eb_initialize_library();
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_library();
+    exit(0);
+}
+
+
+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤Î¹à¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢eb/eb.h ¤òÆɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Error_Code eb_initialize_library ()

+ +

+´Ø¿ô eb_initialize_library() ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¤·¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë¡¢É¬¤º +°ì²ó¤À¤±¤³¤Î´Ø¿ô¤ò¸Æ¤ÖɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë +¤·¤¿¾ì¹ç¡¢eb_initialize_library() ¤Ï bindtextdomain() ¤ò +¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬ setlocale() ¤ò +¸Æ¤Ó½Ð¤¹¤Î¤Ï¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¤»¤º¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï +̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤òºÑ¤Þ¤»¤¿¾õÂ֤ǡ¢ºÆÅÙ eb_initialize_library() +¤ò¸Æ¤ó¤Ç¤â¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

void eb_finalize_library ()

+ +

+´Ø¿ô eb_finalize_library() ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤¤½ª¤ï¤Ã¤¿ +ºÝ¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¦¤Ç»ÈÍѤ·¤¿ +EB_Book¡¢EB_Hookset¡¢EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤ò¸å»ÏËö¤¹¤ë¤Ë¤Ï¡¢¤½¤ì¤¾¤ìÀìÍѤδؿô +eb_finalize_book()¡¢eb_finalize_hookset()¡¢ +eb_finalize_appendix() ¤ò³Æ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤ÆÊÌÅÓ +¸Æ¤ó¤Ç¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¥é¥¤¥Ö¥é¥ê¤Î¸å»ÏËö¤ò¤·¤¿¸å¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¤¤¤«¤Ê¤ë´Ø¿ô¤â¸Æ¤ó¤Ç¤Ï +¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢CD-ROM ½ñÀҤؤΥ¢¥¯¥»¥¹¤Ï¡¢¤¹¤Ù¤Æ EB_Book ·¿ +¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤Æ¹Ô¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¤Û¤È¤ó¤É¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢ËܾϤǵ­½Ò¤·¤Æ¤¤¤ë +½èÍý¤òɬÍפȤ¹¤ë¤Ï¤º¤Ç¤¹¡£ +

+ +

+ËÜ¾Ï¤Ç¤Ï EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½¡¢¸å»ÏËö¤È¤¤¤Ã¤¿´ðËÜŪ¤Ê +¼è¤ê°·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

EB_Book ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+CD-ROM ½ñÀҤإ¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢¤Þ¤º EB_Book ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò +ÍÑ°Õ¤·¤Þ¤¹¡£ +Ʊ»þ¤ËÊ£¿ô¤Î CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ë¤Ê¤é¡¢½ñÀÒ°ìºýËè¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò +ºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+EB_Book book;
+
+
+ +

+¤â¤Á¤í¤ó¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤Ï¡¢malloc() ¤Ç³ÎÊݤ·¤Æ¤â +¹½¤¤¤Þ¤»¤ó¡£ +

+ +
+
+EB_Book *book_pointer;
+
+book_pointer = (EB_Book *) malloc(sizeof(EB_Book));
+
+
+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÃæ¿È (ÊÑ¿ô book ¤ÎÃæ¿È +¤ª¤è¤Ó book_pointer ¤Î»Ø¤¹Îΰè) ¤Ï¤Þ¤À½é´ü²½¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢ +¼¡¤ÎÍ×ÎΤǥª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +

+ +
+
+eb_initialize_book(&book);
+eb_initialize_book(book_pointer);
+
+
+ +

+eb_initialize() ¤ØÅϤ¹°ú¿ô¤Ï EB_Book ¥ª¥Ö¥¸¥§¥¯¥È +¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤Ã¤Æ¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤½¤Î¤â¤Î¤Ç¤Ï +¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ +(EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤â¡¢¤¹¤Ù¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Ý¥¤¥ó¥¿¤ÇÅϤ·¤Þ¤¹¡£) +

+ +

+CD-ROM ½ñÀÒ¤ò»È¤¦¤Ë¤Ï¡¢Â³¤¤¤Æ EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò +CD-ROM ½ñÀҤμÂÂΤ˷ë¤ÓÉÕ¤±¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢´Ø¿ô eb_bind() ¤Ë¤è¤Ã¤Æ¹Ô¤¤¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Â£ï£ï£ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¥ª¥Ö¥¸¥§¥¯¥È¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨£¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¨¼¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¾¡¡¡¿£í£î£ô¡¿£ã£ä£ò£ï£í¡¡¨¢
+¨¦¨¡¨¡¨¡¨¥¡¡£å£â¡²£â£é£î£ä¡Ê¡Ë¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind(&book, "/mnt/cdrom") != EB_SUCCESS) {
+    printf("eb_bind() failed\n");
+    return;
+}
+
+
+ +

+eb_bind() ¤ËÅϤ¹½ñÀҤΥѥ¹ (¤³¤ÎÎã¤Ç¤Ï /mnt/cdrom) +¤Ï½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê catalog ¤Þ¤¿¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢ +eb_finalize_book() ¤ò¸Æ¤ó¤Ç¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤Ï½ñÀҤȤηë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂÖ¤ËÌá¤ê¡¢ÆâÉô¤Ç³ä¤êÅö¤Æ¤é¤ì¤¿ +¥á¥â¥ê¤Ï²òÊü¤µ¤ì¡¢³«¤¤¤Æ¤¤¤¿¥Õ¥¡¥¤¥ë¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +

+ +
+
+eb_finalize_book(&book);
+eb_finalize_book(book_pointer);
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò malloc() ¤Ç³ÎÊݤ·¤¿¾ì¹ç¤Ï¡¢ +eb_finalize_book() ¤ò¸Æ¤ó¤À¸å¤Ê¤é¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò +°ÂÁ´¤Ë²òÊü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+free(book_pointer);
+
+
+ + +

±ó³Ö¥Û¥¹¥È¤Ø¤Î eb_bind()

+ +

+Á°Àá¤ÇÀâÌÀ¤·¤¿ eb_bind() ¤òÍѤ¤¤Æ¡¢EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò±ó³Ö¥Û¥¹¥È¤Î½ñÀҤ˷ë¤Ó¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢½ñÀҤΥѥ¹¤ÎÂå¤ï¤ê¤Ë¡¢±ó³Ö¥¢¥¯¥»¥¹ÍѤμ±Ê̻Ҥò»ØÄꤷ¤Þ¤¹¡£ +¼±Ê̻Ҥϡ¢¼¡¤Î¤è¤¦¤Ê·Á¼°¤ò¤È¤ê¤Þ¤¹¡£ +

+ +
+
+ebnet://¥Û¥¹¥È:¥Ý¡¼¥È/½ñÀÒ̾
+
+
+ +

+¥Û¥¹¥È ¤Ï±ó³Ö¥Û¥¹¥È¤Î IP ¥¢¥É¥ì¥¹¤â¤·¤¯¤Ï¥Û¥¹¥È̾¤Ç¤¹¡£ +¤¿¤À¤·¡¢IPv6 ¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë¾ì¹ç¤Ï¡¢¥¢¥É¥ì¥¹¤ò [ ¤È +] ¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¥Ý¡¼¥È ¤Ï¡¢¤½¤Î¥Û¥¹¥È¤¬ÂÔ¤Á¼õ¤±¤Æ¤¤¤ë¥Ý¡¼¥È¤ÎÈÖ¹æ¤Ç¤¹¡£ +¥Û¥¹¥È¤¬ÂÔ¤Á¼õ¤±¤Æ¤¤¤ë¥Ý¡¼¥È¤¬É¸½à¤Î 22010 È֤Ǥ¢¤ì¤Ð¡¢:¥Ý¡¼¥È +¤ÎÉôʬ¤Ï¾Êά²Äǽ¤Ç¤¹¡£ +

+ +

+°Ê²¼¤Ë eb_bind() ¤Î¥³¡¼¥ÉÎã¤òµ­¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind(&book, "ebnet://localhost/cdrom") != EB_SUCCESS) {
+    printf("eb_bind() failed\n");
+    return;
+}
+
+
+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +

+¤³¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ç¤Ï¡¢CD-ROM ½ñÀҤμïÎà¤òÄ´¤Ù¤ë¤¿¤á¤Ë¡¢ +eb_disc_code() ¤È¤¤¤¦´Ø¿ô¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö´Ø¿ô¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     disctype <book-path>
+ * Îã:
+ *     disctype /cdrom
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤵ¤ì¤¿ CD-ROM ½ñÀҤμïÎब¡¢EB ¤« EPWING ¤«
+ *     ¤òÄ´¤Ù¤Æɽ¼¨¤·¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Disc_Code disc_code;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s book-path\n", argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    error_code = eb_initialize_library();
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+    eb_initialize_book(&book);
+
+    /* `book' ¤ò½ñÀҤ˷ë¤ÓÉÕ¤±¤ë¡£¼ºÇÔ¤·¤¿¤é½ªÎ»¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ½ñÀҤμïÎà¤òÄ´¤Ù¤Æɽ¼¨¡£*/
+    error_code = eb_disc_type(&book, &disc_code);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get disc type, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    if (disc_code == EB_DISC_EB) {
+        fputs("EB\n", stdout);
+    } else if (disc_code == EB_DISC_EPWING) {
+        fputs("EPWING\n", stdout);
+    } else {
+        fputs("unknown\n", stdout);
+    }
+
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Book ·¿

+ +

+EB_Book ·¿¤Ï¡¢°ìºý¤Î CD-ROM ½ñÀÒ¤òɽ¤·¤Þ¤¹¡£ +CD-ROM ½ñÀҤؤΥ¢¥¯¥»¥¹¤Ï¡¢¤¹¤Ù¤Æ¤³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤Æ¹Ô¤¤¤Þ¤¹¡£ +Ʊ»þ¤ËÊ£¿ô¤Î CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ëºÝ¤Ï¡¢½ñÀÒ°ìºýËè¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò +ºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ï¡¢¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¤¬ÍÑ°Õ +¤·¤Æ¤¤¤ë´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë +ÂФ·¤Æ eb_initialize_book() ¤ò¸Æ¤ó¤Ç½é´ü²½¤·¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +

+ + +

EB_Disc_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Disc_Code ¤Ï¡¢CD-ROM ½ñÀҤηÁ¼°¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢¼¡¤ÎÃͤ¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_DISC_EB
+
+ÅŻҥ֥å¯ (EB, EBG, EBXA, EBXA-C, S-EBXA) ¤Ç¤¢¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ + +
EB_DISC_EPWING
+
+EPWING ¤Ç¤¢¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ + +
EB_DISC_INVALID
+
+ÉÔÀµ¤Ê·Á¼°¥³¡¼¥ÉÃͤòɽ¤·¤Þ¤¹¡£ +
+ +

+¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

EB_Character_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Character_Code ¤Ï¡¢CD-ROM ½ñÀҤǻÈÍѤµ¤ì¤ë +ʸ»ú¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢¼¡¤ÎÃͤ¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_CHARCODE_ISO8859_1
+
+ISO 8859-1 (¥é¥Æ¥óʸ»ú 1) ¤ò»ÈÍѤ·¤Æ¤¤¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ +ÅŻҥ֥寤ΠEBG ¤Ï¤³¤ì¤Ç¤¹¡£ + +
EB_CHARCODE_JISX0208
+
+JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤ò»ÈÍѤ·¤Æ¤¤¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ +EBG, EBXA-C °Ê³°¤ÎÅŻҥ֥寡¢¤ª¤è¤Ó EPWING ¤Ï¤¹¤Ù¤Æ¤³¤ì¤Ç¤¹¡£ + +
EB_CHARCODE_JISX0208_GB2312
+
+JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤È GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ¤òÊ»ÍѤ·¤Æ¤¤¤ë +¤³¤È¤òɽ¤·¤Þ¤¹¡£ +ÅŻҥ֥寤ΠEBXA-C ¤Ï¤³¤ì¤Ç¤¹¡£ + +
EB_CHARCODE_INVALID
+
+ÉÔÀµ¤Êʸ»ú¥³¡¼¥ÉÃͤòɽ¤·¤Þ¤¹¡£ +
+ +

+¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

void eb_initialize_book (EB_Book *book)

+ +

+´Ø¿ô eb_initialize_book() ¤Ï¡¢book ¤Î»Ø¤¹ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë¡¢ +ɬ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ºÆÅÙ +eb_initialize_book() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_bind (EB_Book *book, const char *path)

+ +

+´Ø¿ô eb_bind() ¤Ï¡¢book ¤Î»Ø¤¹ EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢¥Ñ¥¹ path ¤Ë¤¢¤ë CD-ROM ½ñÀҤ˷ë¤ÓÉÕ¤±¤Þ¤¹¡£ +¥Ñ¥¹¤Ë¤Ï¡¢½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤«±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò»ØÄꤷ¤Þ¤¹¡£ +½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤È¤Ï¡¢catalog ¤¢¤ë¤¤¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤Î¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤·¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤Î½ñÀҤȤηë¤ÓÉÕ¤­¤ò +²ò¤¤¤Æ¤«¤é¡¢path ¤Ë¤¢¤ë½ñÀҤ˷ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢ÉûËܤÏ̤ÁªÂò¤Î¾õÂ֤ˤʤê¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò½ñÀҤȤηë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂ֤ˤ·¤Æ¡¢¸¶°ø +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ï¡¢EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¼ý¤Þ¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +¤µ¤é¤Ë¡¢path ¤¬ÁêÂХѥ¹¤Î¤È¤­¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤·¤¿·ë²Ì¤¬¤³¤ÎŤµ +¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì¤òĶ¤¨¤ë¤È¡¢EB_ERR_TOO_LONG_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_finalize_book (EB_Book *book)

+ +

+´Ø¿ô eb_finalize_book() ¤Ï¡¢book ¤¬»Ø¤¹ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¤¹¤Ù¤Æ²òÊü¤µ¤ì¡¢ +¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬½ñÀҤȷë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢·ë¤ÓÉÕ¤­¤¬²ò¤«¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_bind() ¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ +¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

int eb_is_bound (EB_Book *book)

+ +

+´Ø¿ô eb_is_bound() ¤Ï¡¢book ¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤« +¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +·ë¤ÓÉÕ¤¤¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_path (EB_Book *book const char *path)

+ +

+´Ø¿ô eb_path() ¤Ï¡¢book ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤ë½ñÀҤΥѥ¹ +¤â¤·¤¯¤Ï±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò¡¢path ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢path ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ë½ñ¤­¹þ¤à¥Ñ¥¹Ì¾¤Î¥Ð¥¤¥È¿ô¤Ï¡¢ºÇĹ¤Ç +EB_MAX_PATH_LENGTH ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ï¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤ò´Þ¤ß¤Þ¤»¤ó¡£ +´Ø¿ô¤¬ÊÖ¤¹¥Ñ¥¹¤ÏÀµµ¬²½¤µ¤ì¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢eb_bind() ¤Ë +ÅϤ·¤¿¤È¤­¤Î¤â¤Î¤ÈƱ¤¸¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢ÁêÂХѥ¹¤À¤Ã¤¿¾ì¹ç¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_disc_type (EB_Book *book, EB_Disc_Code *disc_code)

+ +

+´Ø¿ô eb_disc_type() ¤Ï¡¢book ¤Î¥Ç¥£¥¹¥¯¤Î·Á¼°¤ò +disc_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +½ñ¤­¹þ¤à¥Ç¥£¥¹¥¯¤Î·Á¼°¤ÎÃͤϡ¢EB_Disc_Code ·¿ +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î¤¤¤º¤ì¤«¤ÎÄê¿ôÃͤǤ¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢disc_code ¤Î»Ø¤¹Îΰè¤Ë EB_DISC_INVALID +¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_character_code (EB_Book *book, EB_Character_Code *character_code)

+ +

+´Ø¿ô eb_character_code() ¤Ï¡¢book ¤¬½ñ¤«¤ì¤Æ¤¤¤ë +ʸ»ú¥³¡¼¥É¤ò character_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +½ñ¤­¹þ¤àʸ»ú¥³¡¼¥É¤ÎÃͤϡ¢EB_Character_Code ·¿ +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î¤¤¤º¤ì¤«¤ÎÄê¿ôÃͤǤ¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢character_code ¤Î»Ø¤¹Îΰè¤Ë +EB_CHARCODE_INVALID ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

¥¨¥é¡¼½èÍý

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢¾ï¤ËÀ®¸ù¤¹¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò½ñÀҤ˷ë¤Ó¤Ä¤±¤ë´Ø¿ô +eb_bind() ¤Ë¤Ï¡¢°ú¿ô¤È¤·¤Æ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤òÅϤ·¤Þ¤¹¤¬¡¢ +¸ºß¤·¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤¿¾ì¹ç¡¢½èÍý¤Ï¼ºÇԤ˽ª¤ï¤ê¤Þ¤¹¡£ +

+ +

+°ìÈ̤ˤ³¤¦¤·¤¿»ö¾Ý¤Ï¡¢¥æ¡¼¥¶¤¬¸í¤Ã¤¿¥Ñ¥¹¤ò»ØÄꤷ¤¿¤È¤­¤Ëµ¯¤³¤ê¤Þ¤¹¤¬¡¢ +¥á¥â¥êÉÔ­¤Î¤è¤¦¤Ë¡¢¥æ¡¼¥¶¤Î¥ß¥¹¤¬¸¶°ø¤Ç¤Ï¤Ê¤¤¼ºÇԤⵯ¤³¤ê¤¨¤Þ¤¹¡£ +

+ +

+ËܾϤǤϡ¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤Î½èÍý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¥¨¥é¡¼¥³¡¼¥É¤È¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Î¿¤¯¤Ï¡¢Ìá¤êÃͤȤ·¤Æ EB_Error_Code +·¿¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£ +½èÍý¤¬À®¸ù¤·¤¿¤È¤­¤ËÊÖ¤¹ÃÍ¤Ï EB_SUCCESS ¤Ç¤¹¤¬¡¢¼ºÇÔ¤·¤¿¤È¤­¤Ï +¥¨¥é¡¼¤Î¸¶°ø¤Ë±þ¤¸¤ÆÍÍ¡¹¤ÊÃͤòÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤¿¤á¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¼¡¤Î¤è¤¦¤Ê EB_SUCCESS ¤È¤ÎÈæ³Ó½èÍý +¤¬¤è¤¯¹Ô¤ï¤ì¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code error_code;
+
+error_code = eb_bind(&book, "/mnt/cdrom");
+if (error_code != EB_SUCCESS) {
+    printf("eb_bind() failed\n");
+    return;
+}
+
+
+ +

+¥¨¥é¡¼¥³¡¼¥É¤ÎÃͤϡ¢´Ø¿ô eb_error_message() ¤Ë¤è¤Ã¤Æ +¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ËÊÑ´¹¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢¥¨¥é¡¼¤Î¸¶°ø¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥æ¡¼¥¶¤Ë +¤â¤¦¾¯¤·Ê¬¤«¤ê¤ä¤¹¤¯ÅÁ¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+error_code = eb_bind(&book, "/mnt/cdrom");
+if (error_code != EB_SUCCESS) {
+    printf("eb_bind() failed, %s\n",
+        eb_error_message(error_code));
+    return;
+}
+
+
+ +

+error_code ¤¬ EB_ERR_TOO_LONG_FILENAME ¤Ë +¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢¼¡¤Î¤è¤¦¤Ê¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ +

+ +
+
+too long filename
+
+
+ +

+¤¢¤ë¤¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆüËܸì¤Î¥á¥Ã¥»¡¼¥¸¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+¥Õ¥¡¥¤¥ë̾¤¬Ä¹¤¹¤®¤Þ¤¹
+
+
+ +

+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤ò̵¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë +¤·¤¿¾ì¹ç¤Ï¡¢¾ï¤Ë±Ñ¸ì¤Î¥á¥Ã¥»¡¼¥¸¤¬ÊÖ¤ê¤Þ¤¹¡£ +Í­¸ú¤Ë¤·¤¿¾ì¹ç¤Ï¡¢¥í¥±¡¼¥ë¤ÎÀßÄê¤Ë¤è¤Ã¤Æ¤É¤Á¤é¤Î¸À¸ì¤Î¥á¥Ã¥»¡¼¥¸¤¬ +Ê֤뤫¤¬·è¤Þ¤ê¤Þ¤¹¡£ +

+ +

+Ëܽñ¤Ç¤Ï¥×¥í¥°¥é¥à¤ò´Ê·é¤Ë¤¹¤ë¤¿¤á¤Ë¡¢¥¨¥é¡¼½èÍý¤ÏºÇÄã¸Â¤·¤«¹Ô¤Ã¤Æ +¤¤¤Þ¤»¤ó¡£ +¤±¤ì¤É¤â°ìÈ̤Υ¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ç¤Ï¡¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù +¤·¤¿¤«¤É¤¦¤«¤ò¾ï¤Ë¥Á¥§¥Ã¥¯¤·¡¢½èÍý¤¬¼ºÇÔ¤·¤¿ºÝ¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ +¤·¤Æ¡¢¥æ¡¼¥¶¤Ë¥¨¥é¡¼¤Î¸¶°ø¤òÅÁ¤¨¤ë¤Î¤¬Ë¾¤Þ¤·¤¤¤È¤¤¤¨¤Þ¤¹¡£ +

+ + +

¥¨¥é¡¼¤ËÂФ¹¤ë´²ÍƤµ

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¾õÂ֤˴ؤ¹¤ë¥Ñ¥é¥á¥¿¤ò¤¤¤¯¤Ä¤«»ý¤Ã¤Æ +¤¤¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬ CD-ROM ½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤«¤É¤¦¤«¤â¡¢¤³¤¦¤·¤¿¥Ñ¥é¥á¥¿ +¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹¡£ +

+ +

+°ú¿ô¤Ë EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò¼è¤ë´Ø¿ô¤Ë¤Ï¡¢ +¤¢¤é¤«¤¸¤á¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆÃÄê¤Î¥Ñ¥é¥á¥¿¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤³¤È¤òÁ°Äó¤È +¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢eb_path() ¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤³¤È +¤òÁ°Äó¤È¤·¤Æ¤¤¤Þ¤¹¡£ +¤Ç¤Ï¡¢¤â¤·¤â½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ò eb_path() ¤Ë +ÅϤ·¤¿¤é¤É¤¦¤Ê¤ë¤Ç¤·¤ç¤¦¤«¡£ +

+ +
+
+EB_Book book;
+EB_Error_Code error_code;
+char path[EB_MAX_PATH_LENGTH + 1];
+
+eb_initialize_library();
+eb_initialize(&book);
+error_code = eb_path(&book, path);    /* ¤É¤¦¤Ê¤ë? */
+
+
+ +

+¤³¤Î¾ì¹ç¡¢eb_path() ¤Ï EB_ERR_UNBOUND_BOOK ¤ò +ÊÖ¤·¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢É¬Íפʥѥé¥á¥¿¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ò +¸¡ÃΤ·¤ÆµñÀ䤷¤Þ¤¹¡£ +

+ +

+¤·¤«¤·¤Ê¤¬¤é¡¢»²¾È¥Þ¥Ë¥å¥¢¥ë¤ÇÌÀ¼¨¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤ò½ü¤¤¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Î´Ø¿ô¤Ï¡¢Í¿¤¨¤é¤ì¤¿¥Ý¥¤¥ó¥¿¤¬ NULL ¤«¤É¤¦¤«¤Þ¤Ç¤ÏÄ´¤Ù¤Þ¤»¤ó¡£ +¼¡¤Î¤è¤¦¤Ê¤³¤È¤ò¤¹¤ë¤È¡¢¥×¥í¥°¥é¥à¤ò°Û¾ï½ªÎ»¤µ¤»¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +

+ +
+
+eb_bind(NULL, "/mnt/cdrom");    /* °Û¾ï½ªÎ»! */
+eb_bind(&book, NULL);           /* ¤³¤ì¤â°Û¾ï½ªÎ»! */
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/error.h>
+
+
+ + +

EB_Error_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Error_Code ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¥¨¥é¡¼¥³¡¼¥É¤ò +ɽ¤·¤Þ¤¹¡£ +¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Á´Éô¤Ç EB_NUMBER_OF_ERRORS ¸Ä¤Î +¥Õ¥Ã¥¯¥³¡¼¥É¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +¥¨¥é¡¼¥³¡¼¥É¤Î°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¼¡¤ÎÀá (¡Ö¥¨¥é¡¼¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È) +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

¥¨¥é¡¼¥³¡¼¥É¤Î°ìÍ÷

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥¨¥é¡¼¥³¡¼¥É¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/error.h>
+
+
+ + +

Äê¿ô EB_SUCCESS

+ +

+À®¸ù¡£ +¥¨¥é¡¼¤Ïµ¯¤­¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_MEMORY_EXHAUSTED

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬ malloc() ¤ò¸Æ¤Ó½Ð¤·¤¿¤¬¡¢NULL +¤¬Ê֤äƤ­¤¿¡£ +

+ + +

Äê¿ô EB_ERR_TOO_LONG_FILE_NAME

+ +

+Í¿¤¨¤é¤ì¤¿½ñÀҤΥѥ¹Ì¾¤¬Ä¹¤¹¤®¤ë¡£ +

+ + +

Äê¿ô EB_ERR_BAD_FILE_NAME

+ +

+½ñÀҤΥѥ¹Ì¾¤¬ÉÔÀµ¤Ç¤¢¤ë¡£ +

+ + +

Äê¿ô EB_ERR_BAD_DIR_NAME

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤¬ÉÔÀµ¤Ç¤¢¤ë¡£ +(EB ¥é¥¤¥Ö¥é¥ê¤ÎÆâÉô½èÍýÍѤʤΤǡ¢ +¤³¤Î¥¨¥é¡¼¥³¡¼¥É¤¬¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ËÊ֤뤳¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£) +

+ + +

Äê¿ô EB_ERR_TOO_LONG_WORD

+ +

+Í¿¤¨¤é¤ì¤¿¸¡º÷¸ì¤ÏŤ¹¤®¤ë¡£ +

+ + +

Äê¿ô EB_ERR_BAD_WORD

+ +

+Í¿¤¨¤é¤ì¤¿¸¡º÷¸ì¤ËÉÔÀµ¤Êʸ»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£ +

+ + +

Äê¿ô EB_ERR_EMPTY_WORD

+ +

+Í¿¤¨¤é¤ì¤¿¸¡º÷¸ì¤Ï¶õ¤Ç¤¢¤ë¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_GETCWD

+ +

+getcwd() ¤â¤·¤¯¤Ï getwd() ¤¬¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ë¤òÆɤळ¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥á¥¤¥ó¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥХ¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥á¥¤¥ó¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥХ¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢´üÂԤȤϰۤʤë¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥á¥¤¥ó¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥХ¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNBOUND_BOOK

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿ EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤¿ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ï +½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNBOUND_APP

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿ EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿ +¥ª¥Ö¥¸¥§¥¯¥È¤Ï appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUB

+ +

+½ñÀÒ¤ÏÉûËܤò°ì¤Ä¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_APPSUB

+ +

+appendix ¤ÏÉûËܤò°ì¤Ä¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_FONT

+ +

+ÁªÂòÃæ¤ÎÉûËܤϡ¢³°»ú¤ò°ì¼ïÎà¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_TEXT

+ +

+ÁªÂòÃæ¤ÎÉûËܤϡ¢ËÜʸ¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_SUB

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤È¤·¤Æ¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤ÏÁªÂò¤µ¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_APPSUB

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë EB_Appendix +¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤ÏÁªÂò¤µ¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_FONT

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢³°»ú¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤ÏÁªÂò¤µ¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_BINARY

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ßÍ×µá¤ò¥»¥Ã¥È¤·¤Æ¤¤¤ë +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï +¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_SUB

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÉûËÜ¥³¡¼¥É¤¬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë½ñÀҤϡ¢¤½¤Î +ÉûËÜ¥³¡¼¥É¤Ë°ìÃפ¹¤ëÉûËܤò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_APPSUB

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÉûËÜ¥³¡¼¥É¤¬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë appendix ¤Ï¡¢ +¤½¤ÎÉûËÜ¥³¡¼¥É¤Ë°ìÃפ¹¤ëÉûËܤò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_FONT

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤È³°»ú¤Î½Ä¤Î¥µ¥¤¥º¤¬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤Ó¤Ä¤±¤é¤ì¤Æ¤¤¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢ +¤½¤Î¥µ¥¤¥º¤Î³°»ú¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_CHAR_BMP

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Èʸ»úÈֹ椬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢ +¤½¤ÎÈÖ¹æ¤Î³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_CHAR_TEXT

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Èʸ»úÈֹ椬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë appendix ¤Ç +ÁªÂòÃæ¤ÎÉûËܤϡ¢¤½¤ÎÈÖ¹æ¤Î³°»ú¤ÎÂåÂØʸ»úÎó¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_SEARCH

+ +

+ÁªÂòÃæ¤ÎÉûËܤϡ¢»ØÄꤵ¤ì¤¿¸¡º÷¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢¸¡º÷¤Ï¹Ô¤¨¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_HOOK

+ +

+ÉÔÀµ¤Ê¥Õ¥Ã¥¯¥³¡¼¥É¤¬´Ø¿ô¤ËÅϤµ¤ì¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_BINARY

+ +

+»ØÄꤵ¤ì¤¿°ÌÃ֤ˡ¢»ØÄꤵ¤ì¤¿·Á¼°¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï¸ºß¤·¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_DIFF_CONTENT

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤òÍ׵ᤵ¤ì¤¿¤¬¡¢»ØÄê +¤µ¤ì¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎब¡¢Á°²ó¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¤È¤­¤È°ìÃפ·¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_PREV_SEARCH

+ +

+eb_hit_list() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¤¬¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à +¤«¤éÁ°¤â¤Ã¤Æ¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤¬¤Ê¤µ¤ì¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_MULTI_ID

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÊ£¹ç¸¡º÷¥³¡¼¥É¤¬´Ø¿ô¤ËÅϤµ¤ì¤¿¤¬¡¢ +·ë¤ÓÉÕ¤±¤é¤ì¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢¤½¤Î¥³¡¼¥É¤Ë°ìÃפ¹¤ëÊ£¹ç¸¡º÷¤ò»ý¤Ã¤Æ +¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_ENTRY_ID

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÊ£¹ç¸¡º÷¥¨¥ó¥È¥ê¥³¡¼¥É¤¬´Ø¿ô¤Ë +ÅϤµ¤ì¤¿¤¬¡¢·ë¤ÓÉÕ¤±¤é¤ì¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢¤½¤Î¥¨¥ó¥È¥ê¥³¡¼¥É¤Ë +°ìÃפ¹¤ëÊ£¹ç¸¡º÷¥¨¥ó¥È¥ê¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_TOO_MANY_WORDS

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¾ò·ï¸¡º÷¤â¤·¤¯¤ÏÊ£¹ç¸¡º÷¤Î¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È +¤µ¤ì¤¿¤¬¡¢¸¡º÷¸ì¤Î¸Ä¿ô¤¬Â¿¤¹¤®¤ë¡£ +

+ + +

Äê¿ô EB_ERR_NO_WORD

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¾ò·ï¸¡º÷¤â¤·¤¯¤ÏÊ£¹ç¸¡º÷¤Î¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È +¤µ¤ì¤¿¤¬¡¢¸¡º÷¸ì¤¬¤¹¤Ù¤Æ¶õ¤Ç¤¢¤ë¡£ +

+ + +

Äê¿ô EB_ERR_NO_CANDIDATES

+ +

+eb_multi_entry_candidates() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¤¬¡¢ +»ØÄꤵ¤ì¤¿Ê£¹ç¸¡º÷¥¨¥ó¥È¥ê¤Ï¡¢¸¡º÷¸ì¤Î¸õÊä°ìÍ÷¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_END_OF_CONTENT

+ +

+eb_forward_text() ¤¢¤ë¤¤¤Ï eb_backward_text() +¤ÇËÜʸ¤ÎƬ½Ð¤·¤ò¹Ô¤ª¤¦¤È¤·¤¿¤¬¡¢¤¹¤Ç¤ËËÜʸ¤ÎËöÈø¤Ê¤¤¤·ÀèƬ¤Ë㤷¤Æ¤¤¤Æ¡¢ +¤½¤ì°Ê¾åÀè¤Ë¿Ê¤à¤³¤È¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_PREV_SEEK

+ +

+¤¢¤é¤«¤¸¤á eb_seek_text() ¤Ç¥·¡¼¥¯¤ò¹Ô¤Ã¤Æ¤¤¤Ê¤¤¾õÂ֤ǡ¢ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤äƬ½Ð¤·¤ò¹Ô¤ª¤¦¤È¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_UNSUPPORTED

+ +

+¤³¤Î EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢±ó³Ö¥Û¥¹¥È¤Ø¤Î¥¢¥¯¥»¥¹¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_FAIL_CONNECT

+ +

+±ó³Ö¥Û¥¹¥È¤Ø¤Î¥¢¥¯¥»¥¹¤ò»î¤ß¤¿¤¬¡¢¥µ¡¼¥Ð (EBNETD) ¤ËÀܳ¤Ç¤­¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_SERVER_BUSY

+ +

+±ó³Ö¥Û¥¹¥È¤Ø¤ÎÀܳ¤ò¹Ô¤Ã¤¿¤¬¡¢½ñÀҤ˥¢¥¯¥»¥¹¤·¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È¤Î¿ô¤¬ +¤¹¤Ç¤Ë¾å¸Â¤Ë㤷¤Æ¤¤¤ë¤¿¤á¡¢¤½¤Î½ñÀÒ¤òÍøÍѤǤ­¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_NO_PERMISSION

+ +

+±ó³Ö¥Û¥¹¥È¤Ø¤ÎÀܳ¤ò¹Ô¤Ã¤¿¤¬¡¢¤½¤Î½ñÀҤؤÎÍøÍѸ¢¸Â¤¬¤Ê¤¤¤¿¤á¡¢¥µ¡¼¥Ð +¤«¤é¥¢¥¯¥»¥¹¤òµñÈݤµ¤ì¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNBOUND_BOOKLIST

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿ EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢±ó³Ö¥Û¥¹¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È +¤Ï±ó³Ö¥Û¥¹¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_BOOK

+ +

+EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤È½ñÀÒ¤ÎÍ×ÁÇÈÖ¹æ¤ò´Ø¿ô¤ËÅϤµ¤ì¤¿¤¬¡¢ +EB_BookList ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿±ó³Ö¥Û¥¹¥È¾å¤Ë¤Ï¡¢¤½¤ÎÍ×ÁÇÈÖ¹æ¤Ë +³ºÅö¤¹¤ë½ñÀҤϸºß¤·¤Ê¤¤¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/error.h>
+
+
+ + +

const char *eb_error_string (EB_Error_Code error_code)

+ +

+´Ø¿ô eb_error_string() ¤Ï¡¢¥¨¥é¡¼¥³¡¼¥É error_code +¤òʸ»úÎó¤ËÊÑ´¹¤·¤¿¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£ +ʸ»úÎó¤Îʸ»ú¥³¡¼¥É¤Ï¡¢ASCII ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¥¨¥é¡¼¥³¡¼¥ÉÃÍ EB_SUCCESS ¤òÅϤ¹¤Èʸ»úÎó +"EB_SUCCESS" ¤òÊÖ¤·¤Þ¤¹¡£ +̤ÃΤΥ¨¥é¡¼¥³¡¼¥É¤òÅϤ·¤¿¤È¤­¤Ï¡¢"EB_ERR_UNKNOWN" ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

const char *eb_error_message (EB_Error_Code error_code)

+ +

+´Ø¿ô eb_error_message() ¤Ï¡¢¥¨¥é¡¼¥³¡¼¥É error_code +¤ËÂбþ¤·¤¿¥á¥Ã¥»¡¼¥¸¤òʸ»úÎó¤Ë¤·¤ÆÊÖ¤·¤Þ¤¹¡£ +´Ø¿ô¤ÎÊÖ¤¹¥á¥Ã¥»¡¼¥¸¤Ï¡¢±Ñ¸ì¤«ÆüËܸì¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¹ñºÝ²½µ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¾ï¤Ë +±Ñ¸ì¤Î¥á¥Ã¥»¡¼¥¸¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¤Î¥á¥Ã¥»¡¼¥¸¤Îʸ»ú¥³¡¼¥É¤Ï¡¢ASCII ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë +¤·¤¿¾ì¹ç¤Ï¡¢¥í¥±¡¼¥ë¤ÎÀßÄê¤Ë±þ¤¸¤Æ¤É¤Á¤é¤Î¸À¸ì¤Î¥á¥Ã¥»¡¼¥¸¤òÊÖ¤¹¤Î¤« +¤¬·è¤Þ¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢GNU gettext ¥Ð¡¼¥¸¥ç¥ó 0.36 °Ê¹ß¤Ç¤Ï iconv() ¤ÈÏ¢·È¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢ +¥á¥Ã¥»¡¼¥¸¤Îʸ»ú¥³¡¼¥É¤â¥í¥±¡¼¥ë¤Ë±þ¤¸¤ÆÊѲ½¤·¤Þ¤¹¡£ +gettext ¤¬ iconv() ¤È¤ÎÏ¢·È¤ò¹Ô¤ï¤Ê¤±¤ì¤Ð¡¢±Ñ¸ì¤Î¥á¥Ã¥»¡¼¥¸¤Ï ASCII¡¢ +ÆüËܸì¤Î¥á¥Ã¥»¡¼¥¸¤ÏÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¡¢gettext ¤Î¥Æ¥­¥¹¥È¥É¥á¥¤¥ó¤ÎÀßÄê¤ÏÊѲ½ +¤·¤Þ¤»¤ó¡£ +

+ +

+̤ÃΤΥ¨¥é¡¼¥³¡¼¥É¤òÅϤ·¤¿¤È¤­¤ËÊÖ¤¹¥á¥Ã¥»¡¼¥¸¤Ï¡¢±Ñ¸ì¤Ç¤Ï +"unknown error"¡¢ÆüËܸì¤Ç¤Ï "̤ÃΤΥ¨¥é¡¼¤Ç¤¹" +¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ + +

ÉûËÜ

+ +

+»æ¤Ë°õºþ¤µ¤ì¤¿ËܤǤÏÊÌ¡¹¤Î½ñÀҤˤʤäƤ¤¤ë¤â¤Î¤Ç¤â¡¢ÅŻҥ֥寤ä EPWING +¤Ç¤Ï 1 Ëç¤Î CD-ROM ¤Ë¤Þ¤È¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢¤¢¤ë CD-ROM ½ñÀҤϡ¢¹ñ¸ì¼­½ñ¡¢±Ñ¡¹¼­Åµ¡¢É´²Ê»öŵ¤È¤¤¤¦ 3 ¤Ä +¤Î (°õºþ¤µ¤ì¤¿ËܤǸÀ¤¦¤È¤³¤í¤Î) ¡Ö½ñÀҡפò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤â¤¢¤êÆÀ¤Þ¤¹¡£ +ʶ¤é¤ï¤·¤µ¤òÈò¤±¤ë¤¿¤á¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¤³¤³¤Ç¸À¤¦¡Ö½ñÀҡפΤ³¤È¤ò +ÉûËÜ (subbook) ¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢¡¡ÉûËÜ£°¡§¡¡¡Î¹ñ¸ì¼­Åµ¡Ï¡¡¨¢
+¨¢¡¡ÉûËÜ£±¡§¡¡¡Î±Ñ¡¹¼­Åµ¡Ï¡¡¨¢
+¨¢¡¡ÉûËÜ£²¡§¡¡¡ÎÉ´²Ê»öŵ¡Ï¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+CD-ROM ½ñÀҤǤϡ¢¤½¤ì¤¾¤ì¤ÎÉûËܤϤ½¤ì¼«ÂΤ¬ÆÈΩ¤·¤¿½ñÀҤˤʤäƤ¤¤Þ¤¹¡£ +¤Þ¤¿¡¢ÉûËܤΥǡ¼¥¿¤â¡¢ÉûËÜËè¤ËÊÌ¡¹¤Î¥Õ¥¡¥¤¥ë¤Ë¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤â¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¼çÍפʽèÍý +¤Ç¤¢¤ëñ¸ì¤Î¸¡º÷¤äËÜʸ¥Ç¡¼¥¿¤Î¼èÆÀ¤Ê¤É¤Ï¡¢¤¹¤Ù¤ÆÉûËÜñ°Ì¤Ç¹Ô¤¦¤è¤¦¤Ë +¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+ËܾϤǤϡ¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤ÎÉûËܤΰ·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

ÉûËÜ¥³¡¼¥É

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¤½¤ì¤¾¤ì¤ÎÉûËܤËÂФ·¤Æ ÉûËÜ¥³¡¼¥É (subbook code) +¤ò³ä¤êÅö¤Æ¤Þ¤¹¡£ +¤³¤Î¥³¡¼¥É¤Ï EB ¥é¥¤¥Ö¥é¥ê¤¬ÉûËܤò¼±Ê̤¹¤ë¤¿¤á¤ËÍѤ¤¤Þ¤¹¤Î¤Ç¡¢¸Ä¡¹¤Î +ÉûËÜ¥³¡¼¥É¤Ï¡¢½ñÀÒÆâ¤ÇƱ¤¸¤â¤Î¤¬¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Î¥½¡¼¥¹¥³¡¼¥É¤Ï¡¢eb_subbook_list() ¤È¤¤¤¦´Ø¿ô¤Î +»ÈÍÑÎã¤Ç¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤ÎÉûËܤÎÉûËÜ¥³¡¼¥É¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Subbook_Code sub_codes[EB_MAX_SUBBOOKS];
+int sub_count;
+
+if (eb_subbook_list(&book, sub_codes, &sub_count)
+    != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+eb_subbook_list() ¤¬À®¸ù¤¹¤ë¤È¡¢½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤ÎÉûËÜ¥³¡¼¥É¤¬ +ÇÛÎó sub_codes[] ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +ÇÛÎó¤ÎÀèƬ¤ÎÉûËÜ¥³¡¼¥É¤Ï sub_codes[0] ¤Èɽ¤µ¤ì¡¢¼¡¤Î +¥³¡¼¥É¤Ï sub_codes[1]¡¢¤È¤¤¤¦¶ñ¹ç¤Ë¤Ê¤ê¤Þ¤¹¡£ +ÉûËܤθĿô¤Ï¡¢sub_count ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +

+ +

+¸Ä¡¹¤ÎÉûËܤˤϡ¢É¬¤ºÂê̾¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +ÀèƬ¤ÎÉûËÜ (sub_codes[0]) ¤ÎÂê̾¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ +ÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+char title[EB_MAX_TITLE_LENGTH + 1];
+
+if (eb_subbook_title2(&book, sub_codes[0], title)
+    != EB_SUCCESS) {
+    printf("eb_subbook_title2() failed\n");
+    return;
+}
+
+
+ +

+eb_subbook_title2() ¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù¤¹¤ë¤È¡¢ +title ¤ËÂê̾¤òɽ¤¹Ê¸»úÎ󤬳ÊǼ¤µ¤ì¤Þ¤¹¡£ +

+ +

+¼Ø­¤Ç¤¹¤¬¡¢(ÉûËܤǤϤʤ¯) CD-ROM ¤ÎÂê̾¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤Ê¤¼¤Ê¤é¡¢Âê̾¤ò¼¨¤¹¥Ç¡¼¥¿¤¬ CD-ROM ¤ÎÃæ¤Ë¤Ï²¿½è¤Ë¤â¤Ê¤¤¤«¤é¤Ç¤¹¡£ +

+ + +

ÁªÂòÃæ¤ÎÉûËÜ

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢·ë¤Ó¤Ä¤±¤é¤ì¤¿ CD-ROM ½ñÀÒ¤ÎÃæ¤Î +Ǥ°Õ¤ÎÉûËܤ«¤é°ì¤ÄÁª¤ó¤Ç¡¢ÁªÂòÃæ¤ÎÉûËÜ (current subbook) +¤È¤·¤Æ»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ê£¿ô¤ÎÉûËܤò¡¢Æ±»þ¤ËÁªÂò¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +ñ¸ì¤Î¸¡º÷¤ä¡¢ËÜʸ¥Ç¡¼¥¿¤Î¼èÆÀ¤Ê¤É¡¢¤Û¤È¤ó¤É¤ÎÁàºî¤Ï¡¢ÁªÂòÃæ¤ÎÉûËÜ¤Ë +ÂФ·¤Æ¤À¤±¹Ô¤¨¤Þ¤¹¡£ +

+ +

+eb_bind() ¤Ç EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò½ñÀÒ¤Ë +·ë¤ÓÉÕ¤±¤¿Ä¾¸å¤Ï¡¢¤¤¤º¤ì¤ÎÉûËܤâÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂ֤ˤʤäƤ¤¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Â£ï£ï£ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¥ª¥Ö¥¸¥§¥¯¥È
+¨£¨¡¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢ÁªÂòÃæ¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£°¡§¡¡¡Î¹ñ¸ì¼­Åµ¡Ï¡¡¨¢
+¨¢¤ÎÉûËÜ¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£±¡§¡¡¡Î±Ñ¡¹¼­Åµ¡Ï¡¡¨¢
+¨¢¡ã¤Ê¤·¡ä¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£²¡§¡¡¡ÎÉ´²Ê»öŵ¡Ï¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+ÉûËܤÎÁªÂò¤ò¹Ô¤¦¤Ë¤Ï¡¢´Ø¿ô eb_set_subbook() ¤ò»ÈÍѤ·¤Þ¤¹¡£ +eb_set_subbook() ¤Ï¡¢°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤¿ÉûËÜ¥³¡¼¥É¤Ë +¤·¤¿¤¬¤Ã¤ÆÉûËܤòÁªÂò¤·¤Þ¤¹¡£ +°Ê²¼¤Ï¡¢ÀèƬ¤ÎÉûËÜ (sub_codes[0]) ¤òÁªÂò¤¹¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Subbook_Code sub_codes[EB_MAX_SUBBOOKS];
+int sub_count;
+
+if (eb_subbook_list(&book, sub_codes, &sub_count)
+    != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+if (eb_set_subbook(&book, sub_codes[0]) != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+À®¸ù¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤ËÉûËܤ¬ÁªÂò¤µ¤ì¤¿¾õÂ֤ˤʤê¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Â£ï£ï£ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¥ª¥Ö¥¸¥§¥¯¥È
+¨£¨¡¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢ÁªÂòÃæ¡¡¨¢¡¡¡¡¨®¨¬¨¬¨¬¨¬¨»¨¬ÉûËÜ£°¡§¡¡¡Î¹ñ¸ì¼­Åµ¡Ï¡¡¨¢
+¨¢¤ÎÉûËÜ¡¡¨¢¡¡¡¡¨­¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£±¡§¡¡¡Î±Ñ¡¹¼­Åµ¡Ï¡¡¨¢
+¨¢¡¡¡ö¨¬¨¬¨»¨¬¨¬¨°¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£²¡§¡¡¡ÎÉ´²Ê»öŵ¡Ï¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     subbook <book-path>
+ * Îã:
+ *     subbook /cdrom
+ * ÀâÌÀ:
+ *     <boook-path> ¤Ç»ØÄꤵ¤ì CD-ROM ½ñÀҤ˴ޤޤì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎÉûËܤÎ
+ *     Âê̾¤òɽ¼¨¤·¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    char title[EB_MAX_TITLE_LENGTH + 1];
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s book-path\n", argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    error_code = eb_initialize_library();
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ½ñÀҤ˴ޤޤì¤Æ¤¤¤ëÉûËܤÎÂê̾¤ò½ÐÎÏ¡£*/
+    for (i = 0; i < subbook_count; i++) {
+        error_code = eb_subbook_title2(&book, subbook_list[i], title);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get the title, %s\n",
+                argv[0], eb_error_message(error_code));
+            continue;
+        }
+        printf("%d: %s\n", i, title);
+    }
+
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Subbook_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Subbook_Code ¤ÏÉûËÜ¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +°ìºý¤Î½ñÀÒ¤ÎÃæ¤ÎÉûËܤϡ¢¤½¤ì¤¾¤ì°ì°Õ¤ÎÉûËÜ¥³¡¼¥É¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢ÉÔÀµ¤ÊÉûËÜ¥³¡¼¥ÉÃͤòɽ¤¹ EB_SUBBOOK_INVALID ¤È¤¤¤¦ +ÆÃÊ̤ÊÉûËÜ¥³¡¼¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +ÍøÍѲÄǽ¤ÊÉûËܤËÂФ·¤Æ¡¢¤³¤ÎÉûËÜ¥³¡¼¥É¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Error_Code eb_load_all_subbooks (EB_Book *book)

+ +

+´Ø¿ô eb_load_all_subbooks() ¤Ï¡¢book Æâ¤Î¤¹¤Ù¤Æ¤Î +ÉûËܤò½é´ü²½¤·¤Þ¤¹¡£ +Ä̾ÉûËܤνé´ü²½¤Ï¡¢¤½¤ÎÉûËܤ¬½é¤á¤ÆÁªÂò¤µ¤ì¤¿¤È¤­¤Ë¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤Þ¤¹¤¬¡¢ +¤³¤Î´Ø¿ô¤Ï½é´ü²½¤òÁ°Åݤ·¤Ç¹Ô¤¤¤Þ¤¹¡£ +½é´ü²½¤ÎÂоݤȤʤë¤Î¤Ï¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿»þÅÀ¤Ç¤Þ¤À½é´ü²½¤·¤Æ¤¤¤Ê¤¤ +¤¹¤Ù¤Æ¤ÎÉûËܤǤ¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¥¹¥¿¥ó¥É¥¢¥í¥ó¤ÇÆ°ºî¤¹¤ë¥µ¡¼¥Ð¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ê¤É¤ÇÍ­¸ú¤Ç¤¹¡£ +¥¯¥é¥¤¥¢¥ó¥È¤«¤é¤ÎÀܳ¤ò¼õ¤±¤ëÁ°¤Ë¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ÉûËܤνé´ü²½¤Î +¤¿¤á¤Ë¥¯¥é¥¤¥¢¥ó¥È¤òÂÔ¤¿¤»¤Ê¤¯¤ÆºÑ¤ß¤Þ¤¹¡£ +

+ +

+½é´ü²½¤ÎÂоݤȤʤ俤¹¤Ù¤Æ¤ÎÉûËܤνé´ü²½¤ËÀ®¸ù¤¹¤ì¤Ð¡¢´Ø¿ô¤Ï +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +°ìºý¤Ç¤â½é´ü²½¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢»Ä¤ê¤ÎÉûËܤνé´ü²½¤òÄü¤á¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢book ¤Ï¡¢ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾õÂ֤ˤʤê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_list (EB_Book *book, EB_Subbook_Code *subbook_list, int *subbook_count)

+ +

+´Ø¿ô eb_subbook_list() ¤Ï¡¢book Æâ¤Î¤¹¤Ù¤ÆÉûËܤΠ+ÉûËÜ¥³¡¼¥É¤ò EB_Subbook_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢ +subbook_list ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_SUBBOOKS ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢½ñÀÒ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤθĿô¤ò subbook_count ¤Î»Ø¤¹ +Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook (EB_Book *book, EB_Subbook_Code *subbook_code)

+ +

+´Ø¿ô eb_subbook() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËܤΠ+ÉûËÜ¥³¡¼¥É¤ò subbook_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_code ¤Î»Ø¤¹Îΰè¤Ë +EB_SUBBOOK_INVALID ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_title (EB_Book *book, char *title)

+ +

+´Ø¿ô eb_subbook_title() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËܤΠ+Âê̾¤ò title ¤Î»Ø¤¹Îΰè¤Ëʸ»úÎó¤È¤·¤Æ½ñ¤­¹þ¤ß¤Þ¤¹¡£ +Âê̾¤Îʸ»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç EB_MAX_TITLE_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +¤³¤ÎŤµ¤Ï¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤ò´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢Âê̾¤òɽ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ê¤éÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢title ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_title2 (EB_Book *book, EB_Subbook_Code subbook_code, char *title)

+ +

+eb_subbook_title() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢ +°ú¿ô subbook_code ¤Ç»ØÄꤵ¤ì¤¿ÉûËܤÎÂê̾¤ò½ñ¤­¹þ¤àÅÀ¤¬ +°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢¤¢¤é¤«¤¸¤á½ñÀÒ +¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_directory (EB_Book *book, char *directory)

+ +

+´Ø¿ô eb_subbook_directory() ¤Ï¡¢book Æâ¤Ç¸½ºß +ÁªÂòÃæ¤ÎÉûËܤΥǡ¼¥¿¥Õ¥¡¥¤¥ë¤ò¼ý¤á¤¿¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¡¢directory +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤Îʸ»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç +EB_MAX_DIRECTORY_NAME_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï ASCII ¤Î¿ô»ú¡¢±Ñ¾®Ê¸»ú¡¢¥¢¥ó¥À¡¼¥¹¥³¥¢¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢directory ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤Ë +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_directory2 (EB_Book *book, EB_Subbook_Code subbook_code, char *directory)

+ +

+eb_subbook_directory() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢ +°ú¿ô subbook_code ¤Ç»ØÄꤵ¤ì¤¿ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò½ñ¤­¹þ¤àÅÀ +¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢¤¢¤é¤«¤¸¤á +½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_subbook (EB_Book *book, EB_Subbook_Code code)

+ +

+´Ø¿ô eb_set_subbook() ¤Ï¡¢book ¤ÎÉûËÜ +code ¤òÁªÂò¤·¤Þ¤¹¡£ +¤¹¤Ç¤ËÉûËܤòÁªÂò¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¤«¤éÉûËÜ +subbook_code ¤òÁªÂò¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢³°»ú¤Ï̤ÁªÂò¤Î¾õÂ֤Ȥʤꡢ¸¡º÷¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¡¢ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë¤Ä¤¤¤Æ¤Î¾õÂÖµ­Ï¿¤Ï¡¢¤¹¤Ù¤Æ¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢ÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_unset_subbook (EB_Book *book)

+ +

+´Ø¿ô eb_unset_subbook() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ë +ÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Þ¤¹¡£ +book ¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¤«¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +²¿¤â¤·¤Þ¤»¤ó¡£ +

+ + +

¸¡º÷

+ +

+CD-ROM ½ñÀҤˤª¤¤¤Æ¡¢¸¡º÷¤ÏÈó¾ï¤Ë½ÅÍפʵ¡Ç½¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѤǤ­¤Þ¤¹¡£ +

+ +
    +
  • Á°Êý°ìÃ׸¡º÷ (word search) +
  • ¸åÊý°ìÃ׸¡º÷ (end-word search) +
  • ´°Á´°ìÃ׸¡º÷ (exact-word search) +
  • ¾ò·ï¸¡º÷ (keyword search) +
  • ¥¯¥í¥¹¸¡º÷ (cross search) +
  • Ê£¹ç¸¡º÷ (multi search) +
+ +

+¤¿¤À¤·¡¢¤¹¤Ù¤Æ¤Î CD-ROM ½ñÀÒ¡¢¤¹¤Ù¤Æ¤ÎÉûËܤǡ¢¤³¤³¤Ëµó¤²¤¿¤¹¤Ù¤Æ¤Î +¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤Ê¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +ÉûËܤÎÃæ¤Ë¤Ï¡¢¤¤¤º¤ì¤Î¸¡º÷¥á¥½¥Ã¥É¤âÄ󶡤·¤Ê¤¤¤â¤Î¤â¸ºß¤·¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¸¡º÷¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¤Î¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤËÂФ·¤Æ +¤À¤±¤Ç¤¹¡£ +

+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢¤½¤ì¤¾¤ì¤Î¸¡º÷¥á¥½¥Ã¥É¤Î´Êñ¤ÊÀâÌÀ¤È¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Î +°·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷

+ +

+Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷¤Ï¡¢¤¤¤º¤ì¤â°ì¸Ä¤ÎÆþÎϸì¤Ë°ìÃפ¹¤ë +¥¨¥ó¥È¥ê¤òõ¤·½Ð¤¹¸¡º÷¥á¥½¥Ã¥É¤Ç¤¹¡£ +

+ +

+Á°Êý°ìÃ׸¡º÷¤Ï¡¢ÆþÎϸì¤ÈÀèƬÉôʬ¤¬°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¡Ö¹¾¸Í¡×¤È¤¤¤¦¸ì¤Ï¡¢¡Ö¹¾¸Í¡×¡Ö¹¾¸Í»þÂå¡×¡Ö¹¾¸Í¤Ã»Ò¡×¤È¤¤¤Ã¤¿ +¥¨¥ó¥È¥ê¤Ë°ìÃפ·¤Þ¤¹¡£ +

+ +

+¸åÊý°ìÃ׸¡º÷¤Ï¡¢ÆþÎϸì¤ÈËöÈø¤¬°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢`bye' ¤È¤¤¤¦¸ì¤Ï¡¢`bye'¡¢`good bye'¡¢`bye bye' ¤È¤¤¤Ã¤¿ +¥¨¥ó¥È¥ê¤Ë°ìÃפ·¤Þ¤¹¡£ +

+ +

+´°Á´°ìÃ׸¡º÷¤Ï¡¢°ì¸Ä¤Î¸¡º÷¸ì¤È´°Á´¤Ë°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤À¤±¤ò¸¡º÷¤·¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢Á°Êý°ìÃ׸¡º÷¤Î¥×¥í¥°¥é¥à¤ÎÎã¤Ç¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤÎÃ椫¤é¡¢ÀèƬ¤¬ librar ¤Ç»Ï¤Þ¤ë¥¨¥ó¥È¥ê¤òõ¤·¤Æ +¤¤¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+#define MAX_HITS 50
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_search_word(&book, "librar") != EB_SUCCESS) {
+    printf("eb_search_word() failed\n");
+    return;
+}
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    printf("eb_hit_list() failed\n");
+    return;
+}
+
+
+ +

+eb_search_word() ¤ÏÁ°Êý°ìÃ׸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë´Ø¿ô¤Ç¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢librar ¤È¤¤¤¦¸¡º÷ʸ»úÎó¤òÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤Î´Ø¿ô¤Ï°ìÃפ·¤¿¥¨¥ó¥È¥ê¤òÊÖ¤¹¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +

+ +

+°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï¡¢Â³¤¯ eb_hit_list() ´Ø¿ô¤ò +¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë¹Ô¤ï¤ì¤Þ¤¹¡£ +eb_hit_list() ¤Ï°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î°ìÍ÷¤òÇÛÎó +hits[] ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¡¢¸«¤Ä¤«¤Ã¤¿°ìÃ×¥¨¥ó¥È¥ê¤Î¸Ä¿ô +¤ò &hit_count ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢eb_hit_list() ¤ÏºÇÂç¤Ç MAX_HITS +(= 50) ¸Ä ¤Î¥¨¥ó¥È¥ê¤òõ¤·¤Þ¤¹¡£ +(¤Ä¤Þ¤ê¡¢50 ¸Ä¸«¤Ä¤«¤Ã¤¿¤é¸¡º÷¤ò»ß¤á¤Þ¤¹¡£) +

+ +

+¤â¤·¡¢ÁªÂòÃæ¤ÎÉûËܤ¬±Ñ¡¹¼­Åµ¤À¤È¤¹¤ë¤È¡¢¾¯¤Ê¤¯¤È¤â library +¤È librarian ¤È¤¤¤¦ 2 ¤Ä¤Î¥¨¥ó¥È¥ê¤Ë´Ø¤¹¤ë¾ðÊó¤¬ÆÀ¤é¤ì¤ë +¤Ç¤·¤ç¤¦¡£ +¤³¤Î¤È¤­¡¢ÇÛÎó hits[] ¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +(¤¿¤À¤·¡¢library ¤È librarian ¥¨¥ó¥È¥ê¤Î +½ç½ø¤Ï¡¢²¼¤Î³¨¤È¤Ï°Û¤Ê¤Ã¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£) +

+ +
+
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¨¨¡
+¨¢¡¡£ì£é£â£ò£á£ò£é£á£î¡¡¨¢¡¡¡¡£ì£é£â£ò£á£ò£ù¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨ª¨¡
+¡¡¡¡¡¡£è£é£ô£ó¡Î£°¡Ï¡¡¡¡¡¡¡¡¡¡£è£é£ô£ó¡Î£±¡Ï
+
+
+ +

+hits[] ¤ÎÃæ¿È¤Ë¤Ä¤¤¤Æ¤Ï¡¢ËܾϤθå¤í¤ÎÀá¤Ç¤â¤¦¾¯¤·¾Ü¤·¤¯ +ÀâÌÀ¤·¤Þ¤¹¡£ +

+ +

+¤³¤³¤Þ¤Ç¤ÏÁ°Êý°ìÃ׸¡º÷¤òÎã¤Ë¤È¤ê¤Þ¤·¤¿¤¬¡¢¸åÊý°ìÃפξì¹ç¤Ï +eb_search_word() ¤ÎÂå¤ï¤ê¤Ë eb_search_endword() +¤ò¸Æ¤Ö¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¾¤Ï¤¹¤Ù¤ÆƱ¤¸¤Ç¤¹¡£ +

+ +
+
+if (eb_search_endword(&book, "nalization") != EB_SUCCESS) {
+    printf("eb_search_endword() failed\n");
+    return;
+}
+
+
+ +

+´°Á´°ìÃפξì¹ç¤âƱÍͤǤ¹¡£ +eb_search_exactword() ¤ò¸Æ¤Ö¤è¤¦¤Ë¤¹¤ë°Ê³°¤Ï¡¢¤¹¤Ù¤ÆƱ¤¸ +¤Ç¤¹¡£ +

+ +
+
+if (eb_search_exactword(&book, "library") != EB_SUCCESS) {
+    printf("eb_search_exactword() failed\n");
+    return;
+}
+
+
+ + +

¾ò·ï¸¡º÷

+ +

+¾ò·ï¸¡º÷¤Ï¡¢Ê£¿ô¸Ä¤ÎÆþÎϸì¤Ë¤¹¤Ù¤Æ°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢±Ñ¡¹¼­Åµ¤Î¾ò·ï¸¡º÷¤Ç¤Ï¡¢ÆþÎϸì¤ò¤¹¤Ù¤Æ´Þ¤ó¤ÀÎãʸ¤ò¸¡º÷¤¹¤ë +¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +

+°Ê²¼¤Ï¡¢¾ò·ï¸¡º÷¤Ç make, with ¤È¤¤¤¦¸ì¤ÎÁÐÊý¤È +°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¡¢ÁªÂòÃæ¤ÎÉûËܤÎÃ椫¤éõ¤·½Ð¤¹¥×¥í¥°¥é¥à¤ÎÃÇÊҤǤ¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+static const char *keywords[3] = {"make", "with", NULL};
+
+if (eb_search_word(&book, keywords) != EB_SUCCESS) {
+    printf("eb_search_word() failed\n");
+    return;
+}
+
+
+ +

+¾ò·ï¸¡º÷¤ò¹Ô¤¦´Ø¿ô¤Ï¡¢eb_search_keyword() ¤Ç¤¹¡£ +Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷¤Î´Ø¿ô¤È´ðËÜŪ¤Ë°·¤¤Êý¤Ï°ì½ï¤Ç¤¹¤¬¡¢ +Ê£¿ô¤ÎÆþÎϸì¤ò¼õ¤±ÉÕ¤±¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ë¤Ï¡¢ÆþÎϸì¤Îʸ»úÎó (¤Ø¤Î¥Ý¥¤¥ó¥¿) ¤òÇÛÎó¤Ë¤·¤¿¤â¤Î¤òÅϤ·¤Þ¤¹¡£ +ÇÛÎó¤ÎºÇ¸å¤Ë¤Ï NULL ¤òÃÖ¤­¡¢ÇÛÎó¤Î½ªÃ¼¤òÌÀ¼¨¤¹¤ëɬÍפ¬ +¤¢¤ëÅÀ¤ËÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷¤ÈƱÍͤˡ¢eb_search_keyword() +¤â¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤ò¹Ô¤¦¤À¤±¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ë¤Ï¡¢¤ä¤Ï¤êƱÍÍ¤Ë eb_hit_list() ´Ø¿ô¤ò +»È¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    printf("eb_hit_list() failed\n");
+    return;
+}
+
+
+ + +

¥¯¥í¥¹¸¡º÷

+ +

+¥¯¥í¥¹¸¡º÷¤Ï¡¢¾ò·ï¸¡º÷¤Î°¡¼ï¤È¤â¸À¤¦¤Ù¤­¸¡º÷¥á¥½¥Ã¥É¤Ç¤¹¡£ +EPWING ¤äÅŻҥ֥寤ò¤ß¤Æ¤â¡¢¤É¤¦¤¤¤¦¥ë¡¼¥ë¤Ç»È¤¤Ê¬¤±¤¬¤Ê¤µ¤ì¤Æ¤¤¤ë¤Î¤« +ʬ¤«¤é¤Ê¤¤Äø¡¢Î¾¼Ô¤Ï¼Â¤Ë¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¥¯¥í¥¹¸¡º÷¤ò¹Ô¤¦´Ø¿ô¤Ï eb_search_cross() +¤Ç¤¹¤¬¡¢»È¤¤Êý¤Ï¾ò·ï¸¡º÷¤Î´Ø¿ô eb_search_keyword() ¤È +¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£ +»È¤¤Êý¤Î¾ÜºÙ¤Ï¡¢¡Ö¾ò·ï¸¡º÷¡× ¤ò¤´Í÷²¼¤µ¤¤¡£ +

+ + +

Ê£¹ç¸¡º÷

+ +

+Ê£¹ç¸¡º÷¤Ï¡¢¾ò·ï¸¡º÷¤ÈƱ¤¸¤¯¡¢Ê£¿ô¸Ä¤ÎÆþÎϸì¤Ë¤¹¤Ù¤Æ°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò +¸¡º÷¤·¤Þ¤¹¤¬¡¢¸Ä¡¹¤ÎÆþÎϸì¤Ë¤¢¤é¤«¤¸¤áÂêÌܤ¬ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃס¢¾ò·ï¸¡º÷¤Ï¤¹¤Ù¤Æ¡¢³ÆÉûËܤˤĤ­ +°ì¼ïÎष¤«¤¢¤ê¤Þ¤»¤ó¤¬¡¢Ê£¹ç¸¡º÷¤À¤±¤Ï°ì¤Ä¤ÎÉûËܤÎÃæ¤ÇÊ£¿ô¤Î¼ïÎबÍÑ°Õ +¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¤¢¤ëÀ¤³¦¿Í̾»öŵ¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¿Í̾¸¡º÷ÍѤÈÉѽÐÍѸì¤Î¸¡º÷ÍÑ +¤Î 2 ¼ïÎà¤ÎÊ£¹ç¸¡º÷¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+(Ê£¹ç¸¡º÷¤½¤Î 1: ¿Í̾¤ò¸¡º÷¤¹¤ë)
+    ÆþÎϸì 0: ¹ñ¡¦ÃÏ°è
+    ÆþÎϸì 1: »þÂå
+    ÆþÎϸì 2: À­ÊÌ
+    ÆþÎϸì 3: ¥­¡¼¥ï¡¼¥É
+    ÆþÎϸì 4: ¥­¡¼¥ï¡¼¥É
+
+
+ +
+
+(Ê£¹ç¸¡º÷¤½¤Î 2: ÉѽÐÍѸì¤ò¸¡º÷¤¹¤ë)
+    ÆþÎϸì 0: ÍѸì
+    ÆþÎϸì 1: ¥­¡¼¥ï¡¼¥É
+    ÆþÎϸì 2: ¥­¡¼¥ï¡¼¥É
+
+
+ +

+¤³¤ÎÎã¤Î¤è¤¦¤Ë¡¢¸Ä¡¹¤ÎÊ£¹ç¸¡º÷¤Ï¡¢ÆþÎϸì¤ÎÂêÌܤÀ¤±¤Ç¤Ê¤¯¡¢ÆþÎϸì¤Î¿ô¤â +¤Þ¤Á¤Þ¤Á¤Ç¤¹¡£ +¤Þ¤¿¡¢¸¡º÷¤¹¤ëºÝ¤Ï¤¹¤Ù¤Æ¤ÎÆþÎϸì¤òËä¤á¤ëɬÍפϤʤ¯¡¢¾¯¤Ê¤¯¤È¤â°ì¸Ä¤Î +ÆþÎϸ줬¶õ¤Ç¤Ê¤±¤ì¤Ð¡¢¸¡º÷¤ÏÀ®¸ù¤·¤Þ¤¹¡£ +

+ +

+ÉûËÜÆâ¤ÎÊ£¹ç¸¡º÷¤Ï¡¢¼ïÎàËè¤Ë Ê£¹ç¸¡º÷¥³¡¼¥É (multi search code) +¤Ë¤è¤Ã¤Æ¼±Ê̤µ¤ì¤Þ¤¹¡£ +´Ø¿ô eb_multi_search_list() ¤ò»È¤¦¤È¡¢ÁªÂòÃæ¤ÎÉûËܤÇÍøÍѲÄǽ +¤ÊÊ£¹ç¸¡º÷¤Î°ìÍ÷¤¬ÆÀ¤é¤ì¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Multi_Search_Code multi_codes[EB_MAX_MULTI_SEARCHES];
+int multi_count;
+
+if (eb_multi_search_list(&book, multi_codes, &multi_count)
+    != EB_SUCCESS) {
+    printf("eb_multi_search_list() failed\n");
+    return;
+}
+
+
+ +

+¤³¤ÎÊ£¹ç¸¡º÷¥³¡¼¥É¤Ï¡¢Ê£¹ç¸¡º÷¤Î¤¿¤á¤Î´Ø¿ô¤ÇɬÍפȤʤê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢eb_multi_title() ¤Ï¡¢»ØÄꤷ¤¿Ê£¹ç¸¡º÷¤ÎÂê̾ +(Îã:¡Ö¿Í̾¸¡º÷¡×¡ÖÉѽÐÍѸ측º÷¡×) ¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤Ç¤¹¤¬¡¢¤³¤Î¤È¤­¤Î +Ê£¹ç¸¡º÷¤Î»ØÄê¤Ë¤Ï¡¢Ê£¹ç¸¡º÷¥³¡¼¥É¤òÍѤ¤¤Þ¤¹¡£ +°Ê²¼¤ÎÎã¤Ç¤Ï¡¢°ìÍ÷¤ÎÀèƬ¤ËºÜ¤Ã¤Æ¤¤¤ëÊ£¹ç¸¡º÷ (multi_codes[0]) +¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+char title[EB_MAX_MULTI_TITLE_LENGTH + 1];
+
+if (eb_multi_title(&book, multi_codes[0], title)
+    != EB_SUCCESS) {
+    printf("eb_multi_title() failed\n");
+    return;
+}
+
+
+ +

+¤µ¤é¤Ë´Ø¿ô¤Ë¤è¤Ã¤Æ¤Ï¡¢Ê£¹ç¸¡º÷¥³¡¼¥É¤Ë²Ã¤¨¤Æ¡¢²¿ÈÖÌܤÎÆþÎϸ줫¤â»ØÄê +¤·¤Æ¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ÆÃÄê¤ÎÆþÎϸì¤ÎÂêÌܤòÆÀ¤ë´Ø¿ô eb_multi_entry_label() +¤¬¡¢¤³¤ì¤Ë³ºÅö¤·¤Þ¤¹¡£ +0 ÈÖÌܤÎÆþÎϸì (¤Ä¤Þ¤êÀèƬ¤ÎÆþÎϸì) ¤ÎÂêÌܤò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë +¤·¤Þ¤¹¡£ +

+ +
+
+char label[EB_MAX_MULTI_LABEL_LENGTH + 1];
+
+if (eb_multi_entry_label(&book, multi_code[0], 0, label)
+    != EB_SUCCESS) {
+    printf("eb_multi_entry_label() failed\n");
+    return;
+}
+
+
+ +

+Ê£¹ç¸¡º÷¤ò¹Ô¤¦´Ø¿ô¤Ï¡¢eb_search_multi() ¤Ç¤¹¡£ +»È¤¤Êý¤Ï¾ò·ï¸¡º÷¤È¤Û¤ÜƱ¤¸¤Ç¡¢ÆþÎϸì¤Îʸ»úÎó¤òÇÛÎó¤Ë¤·¤¿¤â¤Î¤ò°ú¿ô +¤È¤·¤ÆÅϤ·¡¢ÇÛÎó¤ÎºÇ¸å¤Ë¤Ï NULL ¤òÃÖ¤¤¤Æ²¼¤µ¤¤¡£ +Ëä¤á¤é¤ì¤Æ¤¤¤Ê¤¤ÆþÎϸì¤Î¤È¤³¤í¤Ë¤Ï¡¢¶õʸ»úÎó¤òÃÖ¤­¤Þ¤¹¡£ +

+ +

+eb_search_multi() ¤â¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤ò¹Ô¤¦¤À¤±¤Ç¡¢°ìÃפ·¤¿ +¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +¼èÆÀ¤¹¤ë¤Ë¤Ï eb_hit_list() ¤ò»È¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¤Ê¤ª¡¢Ê£¹ç¸¡º÷¤ÎÆþÎϸì¤Ë¤è¤Ã¤Æ¤Ï +¸õÊä°ìÍ÷ (candidates) ¤¬¤¢¤é¤¸¤áÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤ò¤¢¤é¤«¤¸¤áÎóµó¤·¤Æ¤ª¤­¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥æ¡¼¥¶¤ËÁªÂò¤µ¤»¤ë»ÅÁȤߤǤ¹¡£ +¸õÊä°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤³¤Î¾Ï¤Ç¤Ï¤Ê¤¯¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡×¤Î¾Ï¤ÇÀâÌÀ¤·¤Þ¤¹ +(¡ÖÊ£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ + +

°ìÃ×¥¨¥ó¥È¥ê¤Î¾ðÊó

+ +

+eb_hit_list() ¤Ï¡¢¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¸¡º÷ (Á°Êý°ìÃס¢¸åÊý°ìÃס¢ +´°Á´°ìÃס¢¾ò·ï¡¢Ê£¹ç) ¤Ë°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤È¸«¤Ä¤«¤Ã¤¿¥¨¥ó¥È¥ê¤Î +¸Ä¿ô¤ò¡¢¤½¤ì¤¾¤ì EB_Hit ·¿¤ÎÇÛÎóÎΰ褪¤è¤Ó int ·¿¤Î +Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤±
+ * ¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+EB_Hit ÇÛÎó¤Î¸Ä¡¹¤ÎÍ×ÁǤˤϡ¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î +¸«½Ð¤· (heading) ¤È ËÜʸ (text) ¤Î³«»Ï°ÌÃÖ¤¬ +½ñ¤­¹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¸«½Ð¤·
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¡¡£Å£Â¡²£È£é£ô¡¡¡¡¡¡¨®¨¬¨»£ì£é£â£ò£á£ò£é£á£î¡¡£î¡¥¨¢
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤¡¡¨­¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+¨¢£è£å£á£ä£é£î£ç¨»¨¬¨°¡¡¡¡ËÜʸ
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢¡¡¡¡¡¡£ô£å£ø£ô¨»¨¬¨¬¨¬¨»£ì£é£â£ò£á£ò£é£á£î¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥¡¡¡¡¡¡¨¢£î¡¥¡Ê£±¡Ë£Á¡¡£ð£å£ò£ó£ï£î¡¡£÷£è£ï¡¡£é£ó¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢£á¡¡£ó£ð£å£ã£é£á£ì£é£ó£ô¡¡£é£î¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢£ì£é£â£ò£á£ò£ù¡¡£÷£ï£ò£ë¡¥¡Ê£²¡Ë¡¥¡¥¡¥¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¸«½Ð¤·¤ÈËÜʸ¤Ë¤Ä¤¤¤Æ¤Î¤è¤ê¾Ü¤·¤¤²òÀâ¤È¼èÆÀÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

»Ä¤Ã¤Æ¤¤¤ë¥¨¥ó¥È¥ê¤Î¼èÆÀ

+ +

+Á°¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢eb_hit_list() ¤ò¸Æ¤Ó½Ð¤¹¤È¤­¤Ï¡¢°ìÃפ¹¤ë +¥¨¥ó¥È¥ê¤òºÇÂç¤Ç²¿¸Ä¤Þ¤Çõ¤¹¤Î¤«¤ò°ú¿ô¤Ç»ØÄꤷ¤Þ¤¹¡£ +¤Þ¤¿¡¢eb_hit_list() ¤Ï½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢¼ÂºÝ¤Ë¸«¤Ä¤«¤Ã¤¿ +¥¨¥ó¥È¥ê¤Î¿ô¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ë¶µ¤¨¤Þ¤¹¡£ +

+ +
+
+error_code = eb_hit_list(&book, MAX_HITS, hits, &hit_count);
+if (error_code == EB_SUCCESS)
+    printf("%d entries found\n", hit_count);
+
+
+ +

+»ØÄꤷ¤¿ºÇÂç¸Ä¿ô¤è¤ê¤â¿¤¯¤Î°ìÃ×¥¨¥ó¥È¥ê¤¬ÉûËܤ˸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ +eb_hit_list() ¤ò·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢»Ä¤ê¤Î¥¨¥ó¥È¥ê¤ò +¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+for (;;) {
+    if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+        != EB_SUCCESS) {
+        fprintf(stderr, "an error occurs.\n");
+        return;
+    }
+    if (hit_count == 0)
+        break;
+    /* ¼èÆÀ¤·¤¿°ìÃ×¥¨¥ó¥È¥ê¤Î½èÍý */
+}
+
+
+ +

+°ìÃ×¥¨¥ó¥È¥ê¤¬¤â¤¦»Ä¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢eb_hit_list() ¤Ï +&hit_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ó¤Ç¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢ÅÓÃæ¤Ç eb_hit_list() ¤¬¼ºÇÔ¤¹¤ë¤È +(EB_SUCCESS °Ê³°¤ÎÃͤòÊÖ¤¹¤È)¡¢¸¡º÷¥ê¥¯¥¨¥¹¥È¤Ë´Ø¤¹¤ë +¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È¤µ¤ì¤ë¤¿¤á¡¢°ìÃ×¥¨¥ó¥È¥ê¤Î¼èÆÀ¤ò¤½¤ì°Ê¾å³¤±¤ë¤³¤È¤Ï +¤Ç¤­¤Þ¤»¤ó¡£ +

+ + +

½ÅÊ£¥¨¥ó¥È¥ê¤Îºï½ü

+ +

+eb_hit_list() ¤òÍѤ¤¤Æ°ìÃפ·¤¿¥¨¥ó¥È¥ê¤ò¼èÆÀ¤¹¤ë¤È¡¢Ãæ¿È¤¬ +¼Â¼ÁŪ¤ËÊѤï¤é¤Ê¤¤¥¨¥ó¥È¥ê¤¬Ê£¿ô´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢¤³¤¦¤·¤¿½ÅÊ£¥¨¥ó¥È¥ê¤Îºï½ü¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +ɬÍפʤ顢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤Ç¹Ô¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+½ÅÊ£¤ò´°àú¤Ë¼è¤ê½ü¤¯¤Ê¤é¡¢°Ê²¼¤Î¤¹¤Ù¤Æ¤Î¾ò·ï¤Ë°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò +½ÅÊ£¥¨¥ó¥È¥ê¤È¤ß¤Ê¤·¡¢ÆóÅÙÌܰʹߤ˽и½¤·¤¿¥¨¥ó¥È¥ê¤òºï½ü¤·¤Þ¤¹¡£ +

+ +
    +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹ËÜʸ¤Î°ÌÃÖ¤¬Æ±¤¸ +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹¸«½Ð¤·¤Îʸ»úÎó (°ÌÃ֤ǤϤʤ¯Ê¸»úÎ󤽤Τâ¤Î) ¤¬Æ±¤¸ +
+ +

+(¸«½Ð¤·Ê¸»úÎó¤Î¼èÆÀÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+½ÅÊ£¤Ï¡¢Ä¾Á°¤Î¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¤Î¤ßµ¯¤³¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢eb_hit_list() ¤Ç°ìÃ×¥¨¥ó¥È¥ê¤¬ 50 ¸ÄÆÀ¤é¤ì¤¿¾ì¹ç¡¢ +ºÇ¸å¤Î 50 ¸ÄÌܤÏÁ°Êý¤Î 49 ¸Ä¤È½ÅÊ£¸¡ºº¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢Á´ÂΤǤϥ¨¥ó¥È¥êƱ»Î¤ÎÈæ³Ó¤ò 1 + 2 + ... + 49 = 1225 ²ó +¹Ô¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+½ñÀҤˤè¤Ã¤Æ¤Ï½ÅÊ£¥¨¥ó¥È¥ê¤¬¼è¤ê¤­¤ì¤Ê¤¤²ÄǽÀ­¤â¤¢¤ê¤Þ¤¹¤¬¡¢¤â¤¦¾¯¤· +´Êñ¤ÊÊýË¡¤â¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£ +½èÍý¤ò´Êñ¤Ë¤¹¤ëÂè°ì¤ÎÊýË¡¤Ï¡¢½ÅÊ£¥¨¥ó¥È¥ê¤ÎȽÄê¾ò·ï¤ò¼¡¤Î¤è¤¦¤ËÊѤ¨¤ë +¤³¤È¤Ç¤¹¡£ +

+ +
    +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹ËÜʸ¤Î°ÌÃÖ¤¬Æ±¤¸ +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹¸«½Ð¤·¤Îʸ»úÎó¤Î°ÌÃÖ¤¬Æ±¤¸ +
+ +

+¤µ¤é¤Ë½èÍý¤ò´Êñ¤Ë¤¹¤ë¤Ë¤Ï¡¢Ä¾Á°¤Î 1¸Ä¤Î¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¤À¤±½ÅÊ£¸¡ºº¤ò +¹Ô¤¦¤È¤¤¤¦ÊýË¡¤â¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ê¤é¡¢50 ¸Ä¤Î°ìÃ×¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¡¢Èæ³Ó¤Ï 49 ²ó¤ÇºÑ¤ß¤Þ¤¹¡£ +¤¿¤À¤·¤³¤ÎÊýË¡¤Ï¡¢½ñÀҤˤè¤Ã¤Æ¤Ï¤Þ¤Ã¤¿¤¯¸ú²Ì¤¬¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     word <book-path> <subbook-index> <word>
+ * Îã:
+ *     word /cdrom 0 apple
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤ÎÆÃÄê¤ÎÉûËܤÎÃ椫¤é <word>
+ *     ¤È¤¤¤¦Ã±¸ì¤ò´°Á´°ìÃ׸¡º÷¤Çõ¤·¡¢¥Ò¥Ã¥È¤·¤¿¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤Î
+ *     ¸«½Ð¤·¤òɽ¼¨¤·¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/text.h>
+
+#define MAX_HITS 50
+#define MAXLEN_HEADING 127
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    EB_Hit hits[MAX_HITS];
+    char heading[MAXLEN_HEADING + 1];
+    int subbook_count;
+    int subbook_index;
+    int hit_count;
+    ssize_t heading_length;
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 4) {
+        fprintf(stderr, "Usage: %s book-path subbook-index word\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    error_code = eb_set_subbook(&book, subbook_list[subbook_index]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ñ¸ì¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤òÁ÷½Ð¡£*/
+    error_code = eb_search_exactword(&book, argv[3]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to search for the word, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[3]);
+        goto die;
+    }
+
+    for (;;) {
+        /* »Ä¤Ã¤Æ¤¤¤ë¥Ò¥Ã¥È¥¨¥ó¥È¥ê¤ò¼èÆÀ¡£*/
+        error_code = eb_hit_list(&book, MAX_HITS, hits, &hit_count);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get hit entries, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+        if (hit_count == 0)
+            break;
+
+        for (i = 0; i < hit_count; i++) {
+            /* ¸«½Ð¤·¤Î°ÌÃ֤ذÜÆ°¡£*/
+            error_code = eb_seek_text(&book, &(hits[i].heading));
+            if (error_code != EB_SUCCESS) {
+                fprintf(stderr, "%s: failed to seek the subbook, %s\n",
+                    argv[0], eb_error_message(error_code));
+                goto die;
+            }
+
+            /* ¸«½Ð¤·¤ò¼èÆÀ¤·¤Æɽ¼¨¡£*/
+            error_code = eb_read_heading(&book, NULL, NULL, NULL,
+                MAXLEN_HEADING, heading, &heading_length);
+            if (error_code != EB_SUCCESS) {
+                fprintf(stderr, "%s: failed to read the subbook, %s\n",
+                    argv[0], eb_error_message(error_code));
+                goto die;
+            }
+            printf("%s\n", heading);
+        }
+    }
+        
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Hit ·¿

+ +

+EB_Hit ¤Ï¡¢¸¡º÷¤Ë°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤ò³ÊǼ¤¹¤ë¤¿¤á¤Î +¥Ç¡¼¥¿·¿¤Ç¤¹¡£ +ÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Hit_Struct EB_Hit;
+
+struct EB_Hit_Struct {
+    EB_Position heading;  /* ¸«½Ð¤·¤Î°ÌÃÖ */
+    EB_Position text;     /* ËÜʸ¤Î°ÌÃÖ   */
+};
+
+
+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Hit ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ + +

EB_Position ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Position ¤Ï¡¢ÉûËܤΥǡ¼¥¿¤Î°ÌÃÖ¤òɽ¤·¤Þ¤¹¡£ +ÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Position_Struct EB_Position;
+
+struct EB_Position_Struct {
+    int page;     /* ¥Ú¡¼¥¸ÈÖ¹æ */
+    int offset;   /* ¥Ú¡¼¥¸Æâ¤Î¥ª¥Õ¥»¥Ã¥È */
+};
+
+
+ +

+¥Ú¡¼¥¸ÈÖ¹æ¤Ï 1 ¤«¤é»Ï¤Þ¤ê¡¢¥Ú¡¼¥¸Æâ¤Î¥ª¥Õ¥»¥Ã¥È¤Ï 0 ¡Á 2047 ¤ÎÈÏ°Ï¤È +¤Ê¤ê¤Þ¤¹¡£ +¤¿¤À¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤òºîÀ®¤¹¤ë¾å¤Ç¡¢¤³¤Î¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¯ +ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +¤Î¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ + +

EB_Multi_Search_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Multi_Search_Code ¤ÏÊ£¹ç¸¡º÷¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷¤Ï¡¢¤½¤ì¤¾¤ì°ì°Õ¤ÎÊ£¹ç¸¡º÷¥³¡¼¥É¤ò +»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢ÉÔÀµ¤ÊÊ£¹ç¸¡º÷¥³¡¼¥ÉÃͤòɽ¤¹ EB_MULTI_INVALID ¤È¤¤¤¦ +ÆÃÊ̤ÊÉûËÜ¥³¡¼¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +ÍøÍѲÄǽ¤ÊÊ£¹ç¸¡º÷¤ËÂФ·¤Æ¡¢¤³¤ÎÊ£¹ç¸¡º÷¥³¡¼¥É¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¤³¤È¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

int eb_have_word_search (EB_Book *book)

+ +

int eb_have_endword_search (EB_Book *book)

+ +

int eb_have_exactword_search (EB_Book *book)

+ +

+´Ø¿ô eb_have_word_search() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤÇÁ°Êý°ìÃ׸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍÍ¤Ë eb_have_endword_search() ¤Ï¸åÊý°ìÃ׸¡º÷¥á¥½¥Ã¥É¤Ë +¤Ä¤¤¤Æ¡¢eb_have_exactword_search() ¤Ï´°Á´°ìÃ׸¡º÷¥á¥½¥Ã¥É¤Ë +¤Ä¤¤¤ÆÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÍøÍѲÄǽ¤Ê¤é 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_keyword_search (EB_Book *book)

+ +

+´Ø¿ô eb_have_keyword_search() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤǾò·ï¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÍøÍѲÄǽ¤Ê¤é 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_multi_search (EB_Book *book)

+ +

+´Ø¿ô eb_have_multi_search() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤÇÊ£¹ç¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ºÇÄã 1 ¼ïÎà¤Ç¤âÍøÍѲÄǽ¤Ê¤é 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_search_list (EB_Book *book, EB_Multi_Search_Code *multi_list, int *multi_count)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷¤òÄ´¤Ù¡¢Ê£¹ç¸¡º÷¥³¡¼¥É¤Î°ìÍ÷¤ò +EB_Multi_Search_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢multi_list +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_MULTI_SEARCHES ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢Ê£¹ç¸¡º÷¤Î¼ïÎà¿ô¤ò multi_count ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_entry_count (EB_Book *book, EB_Multi_Search_Code multi_id, int *entry_count)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ÆþÎϸì¤Î +¸Ä¿ô¤ò entry_count ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­½ñ¤­¹þ¤Þ¤ì¤ëÆþÎϸì¤Î¸Ä¿ô¤Ï¡¢1 °Ê¾å EB_MAX_MULTI_ENTRIES +°Ê²¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢entry_count ¤Î»Ø¤¹Îΰè¤Ë¤Ï 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_title (EB_Book *book, EB_Multi_Search_Code multi_id, char *title)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤ÎÂê̾¤ò title +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÂêÌܤϺÇĹ¤Ç EB_MAX_MULTI_TITLE_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢ÂêÌܤòɽ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ê¤éÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+½ñÀҤˤè¤Ã¤Æ¤Ï¡¢Ê£¹ç¸¡º÷¤ÏÍÑ°Õ¤·¤Æ¤¤¤Æ¤â¡¢Ê£¹ç¸¡º÷¤ÎÂê̾¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ +¤¤¤Ê¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤½¤Î¾ì¹ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬Âå¤ï¤ê¤ËÉÕ¤±¤¿Âê̾¤¬ title ¤Ë +½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤¬ÉÕ¤±¤ëÂê̾¤Ï¡¢"Multi Search 1", "Multi Search 2", ... +¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ç¤¢¤ì¤Ð¡¢Âê̾¤ÏÆüËܸì EUC ¤Ç½ñ¤«¤ì¤¿¡ÖÊ£¹ç¸¡º÷ 1¡× +¡ÖÊ£¹ç¸¡º÷ 2¡×... ¤È¤¤¤¦Ê¸»úÎó¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢label ¤Î»Ø¤¹Îΰè¤Ë¤Ï¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_entry_label (EB_Book *book, EB_Multi_Search_Code multi_id, int entry_index, char *label)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ +entry_index ÈÖÌܤθ¡º÷¸ì¤ÎÂêÌܤò label ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +entry_index ¤Ï¡¢ÀèƬ¤Î¸¡º÷¸ì¤ò 0 ÈÖÌܤȿô¤¨¤Þ¤¹¡£ +ÂêÌܤϺÇĹ¤Ç EB_MAX_MULTI_LABEL_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢ÂêÌܤòɽ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ê¤éÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢label ¤Î»Ø¤¹Îΰè¤Ë¤Ï¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_multi_entry_have_candidates (EB_Book *book, EB_Multi_Search_Code multi_id, int entry_index)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ +entry_index ÈÖÌܤθ¡º÷¸ì¤¬¸õÊä°ìÍ÷¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤Þ¤¹¡£ +entry_index ¤Ï¡¢ÀèƬ¤Î¸¡º÷¸ì¤ò 0 ÈÖÌܤȿô¤¨¤Þ¤¹¡£ +

+ +

+»ý¤Ã¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¤Þ¤¹¡£ +»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤¢¤ë¤¤¤Ï +multi_id, ¤ä entry_index ¤¬ÉÔÀµ¤ÊÃͤÀ¤Ã¤¿¾ì¹ç¤Ï +0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_entry_candidates (EB_Book *book, EB_Multi_Search_Code multi_id, int entry_index, EB_Position *position)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ +entry_index ÈÖÌܤθ¡º÷¸ì¤Î¸õÊä°ìÍ÷¤Î°ÌÃÖ¤ò position +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÀèƬ¤Î¸¡º÷¸ì¤¬ 0 ÈÖÌܤˤʤê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢positin ¤Î»Ø¤¹Îΰè¤Ë¤Ï eb_seek_text() +¤¬É¬¤º¼ºÇÔ¤¹¤ë°ÌÃÖ¾ðÊó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_search_word (EB_Book *book, const char *input_word)

+ +

EB_Error_Code eb_search_endword (EB_Book *book, const char *input_word)

+ +

EB_Error_Code eb_search_exactword (EB_Book *book, const char *input_word)

+ +

+´Ø¿ô eb_search_word() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËÜ¤Ë +ÂФ¹¤ëÁ°Êý°ìÃ׸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +ƱÍÍ¤Ë eb_search_endword() ¤Ï¸åÊý°ìÃ׸¡º÷¤ò¡¢ +eb_search_exactword() ¤Ï´°Á´°ìÃ׸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +

+ +

+¸¡º÷¤¹¤ë¸ì¤Ï¡¢°ú¿ô input_word ¤Ç»ØÄꤷ¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë¤À¤±¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î +¾ðÊó¤òÊÖ¤¹¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ë¤Ï eb_hit_list() ¤ò»È¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤¿¸¡º÷¤Î¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È +¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤½¤Î¾õÂÖ¤Î¤Þ¤Þ eb_hit_list() ¤ò¸Æ¤Ó½Ð¤·¤Æ¤â¡¢ +¤ä¤Ï¤ê¼ºÇԤ˽ª¤ï¤ê¤Þ¤¹¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢´Ø¿ô¤ËÅϤ¹¸¡º÷¸ì¤Ï ISO 8859-1 +¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¾ì¹ç¤Ï¡¢ÆüËܸì EUC ¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÉÔÀµ¤Êʸ»úÈÖ¹æ¤ò´Þ¤ó¤Ç¤¤¤¿¾ì¹ç¡¢´Ø¿ô¤Ï EB_ERR_BAD_WORD ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+²Ã¤¨¤Æ¡¢¸¡º÷¸ì¤Ï 1 ¥Ð¥¤¥È°Ê¾å¡¢EB_MAX_WORD_LENGTH (= 255) +¥Ð¥¤¥È°Ê²¼¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +Ť¹¤®¤ë¾ì¹ç¤Ï¡¢EB_ERR_TOO_LONG_WORD ¤ò¡¢ +Ťµ¤¬ 0 (¶õʸ»úÎó) ¤Î¾ì¹ç¤Ï EB_ERR_EMPTY_WORD ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Ê¤ª¡¢°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤¬ºÇÄã 1 ¸Ä¤¢¤ë¤«¤É¤¦¤«¤Ï¡¢Ìá¤êÃͤˤϱƶÁ¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_search_keyword (EB_Book *book, const char * const input_words[])

+ +

EB_Error_Code eb_search_cross (EB_Book *book, const char * const input_words[])

+ +

EB_Error_Code eb_search_multi (EB_Book *book, EB_Multi_Search_Code multi_id, const char * const input_words[])

+ +

+´Ø¿ô eb_search_keyword() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÂФ¹¤ë¾ò·ï¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +ƱÍÍ¤Ë eb_search_cross() ¤Ï¥¯¥í¥¹¸¡º÷¤ò¡¢ +eb_search_multi() ¤ÏÊ£¹ç¸¡º÷¤ò¤½¤ì¤¾¤ì¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +

+ +

+¸¡º÷¤¹¤ë¸ì¤Ï¡¢°ú¿ô input_words ¤Ç»ØÄꤷ¤Þ¤¹¡£ +¾ò·ï¸¡º÷¤ÈÊ£¹ç¸¡º÷¤Ï¤¤¤º¤ì¤âÊ£¿ô¸Ä¤Î¸¡º÷¸ì¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¤Î¤Ç¡¢¸¡º÷¸ì¤ò +ÇÛÎó¤Ë¤·¤ÆÅϤ·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢ÇÛÎó¤ÎËöÈø¤ÎÍ×ÁÇ¤Ë¤Ï NULL ¤òÃÖ¤­¡¢ÇÛÎó¤Î½ªÃ¼¤ò +ÌÀ¼¨¤·¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë¤À¤±¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤ò +ÊÖ¤¹¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ë¤Ï eb_hit_list() ¤ò»È¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤¿¸¡º÷¤Î¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È +¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤½¤Î¾õÂÖ¤Î¤Þ¤Þ eb_hit_list() ¤ò¸Æ¤Ó½Ð¤·¤Æ¤â¡¢ +¤ä¤Ï¤ê¼ºÇԤ˽ª¤ï¤ê¤Þ¤¹¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢´Ø¿ô¤ËÅϤ¹¸¡º÷¸ì¤Ï ISO 8859-1 +¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¾ì¹ç¤Ï¡¢ÆüËܸì EUC ¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÉÔÀµ¤Êʸ»úÈÖ¹æ¤ò´Þ¤ó¤Ç¤¤¤¿¾ì¹ç¡¢´Ø¿ô¤Ï EB_ERR_BAD_WORD ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+²Ã¤¨¤Æ¡¢¸Ä¡¹¤Î¸¡º÷¸ì¤Ï EB_MAX_WORD_LENGTH (= 255) ¥Ð¥¤¥È°Ê²¼ +¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +Ť¹¤®¤ë¾ì¹ç¤Ï¡¢EB_ERR_TOO_LONG_WORD ¤òÊÖ¤·¤Þ¤¹¡£ +Ťµ¤¬ 0 ¥Ð¥¤¥È¤Î¸¡º÷¸ì¤Ï̵»ë¤µ¤ì¤Þ¤¹¤¬¡¢¾¯¤Ê¤¯¤È¤â 1 ¸Ä¤Î¸¡º÷¸ì¤ÏŤµ +¤¬ 1 °Ê¾å¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£ +Ťµ¤¬ 1 °Ê¾å¤Î¸¡º÷¸ì¤¬ 1 ¤Ä¤â¤Ê¤¤¤È¤­¤Ï¡¢EB_ERR_NO_WORD ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+ËöÈø¤Î NULL ¤ò½ü¤¤¤¿ÇÛÎó¤ÎÍ×ÁÇ¿ô¤Ï¡¢¾ò·ï¸¡º÷¤Ç¤Ï EB_MAX_KEYWORDS +°Ê²¼¡¢¥¯¥í¥¹¸¡º÷¤Ç¤Ï EB_MAX_CROSS_ENTRIES °Ê²¼¡¢ +Ê£¹ç¸¡º÷¤Ç¤Ï EB_MAX_MULTI_ENTRIES °Ê²¼¤Ç¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +¸Ä¿ô¤¬Â¿¤¹¤®¤ë¤È EB_ERRO_TOO_MANY_WORDS ¤òÊÖ¤·¤Þ¤¹¡£ +¶õʸ»úÎó¤ÎÍ×ÁǤòº¹¤·°ú¤¤¤¿¸Ä¿ô¤Ç¤Ï¤Ê¤¯¡¢Ã±½ã¤ËÅϤµ¤ì¤¿Í×ÁÇ¿ô¤¬¾å¸Â¤ò +Ķ¤¨¤Æ¤¤¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤¬É¬ÍפǤ¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Ê¤ª¡¢°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤¬ºÇÄã 1 ¸Ä¤¢¤ë¤«¤É¤¦¤«¤Ï¡¢Ìá¤êÃͤˤϱƶÁ¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_hit_list (EB_Book *book, int max_hit_count, EB_Hit *hit_list, int *hit_count)

+ +

+´Ø¿ô eb_hit_list() ¤Ï¡¢¤¢¤é¤«¤¸¤á°Ê²¼¤Î¤¤¤º¤ì¤«¤Î´Ø¿ô¤Ç +¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¸¡º÷¤ò¼Â¹Ô¤·¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +
    +
  • eb_search_word() (Á°Êý°ìÃ׸¡º÷) +
  • eb_search_endword() (¸åÊý°ìÃ׸¡º÷) +
  • eb_search_exactword() (´°Á´°ìÃ׸¡º÷) +
  • eb_search_keyword() (¾ò·ï¸¡º÷) +
  • eb_search_cross() (¥¯¥í¥¹¸¡º÷) +
  • eb_search_multi() (Ê£¹ç¸¡º÷) +
+ +

+¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë¡¢¾åµ­¤Î¤¤¤º¤ì¤«¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤ËÀ®¸ù¤·¤Æ +¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +

+ +

+eb_hit_list() ¤ÏºÇÂç¤Ç max_hit_count ¸Ä¤Î +°ìÃ×¥¨¥ó¥È¥ê¤ò hit_list ¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤½¤·¤Æ¡¢½ñ¤­¹þ¤ó¤À°ìÃ×¥¨¥ó¥È¥ê¤Î¿ô¤ò hit_count ¤¬»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤½¤ì°Ê¾å¤Î¸Ä¿ô¤Î°ìÃ×¥¨¥ó¥È¥ê¤¬Â¸ºß¤¹¤ë¾ì¹ç¡¢»Ä¤Ã¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤Ï¡¢ +¤³¤Î´Ø¿ô¤ò·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤ÇÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢°Ê²¼¤Ëµó¤²¤¿´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¥ê¥¯¥¨¥¹¥È¤·¤¿¸¡º÷¤Ë´Ø¤¹¤ë¾õÂÖµ­Ï¿ +¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï·Ñ³¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +
    +
  • eb_set_subbook() +
  • eb_unset_subbook() +
  • eb_load_all_subbooks() +
  • eb_bind() +
  • eb_finalize_book() +
  • eb_search_word() +
  • eb_search_endword() +
  • eb_search_exactword() +
  • eb_search_keyword() +
  • eb_search_cross() +
  • eb_search_multi() +
+ +

+·«¤êÊÖ¤·¸Æ¤ó¤À¾ì¹ç¤â¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤Ï¤½¤ÎÅÔÅÙ hit_list +¤ÎÀèƬ¤«¤é½ñ¤­¹þ¤ß¡¢hit_count ¤¬»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤àÃͤ⡢¤½¤Î²ó +¤Î eb_hit_list() ¤Î¸Æ¤Ó½Ð¤·¤Ç½ñ¤­¹þ¤ó¤À°ìÃ×¥¨¥ó¥È¥ê¤Î¿ô¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤¿¤È¤¨°ìÃפ·¤¿¥¨¥ó¥È¥ê¤¬¤Ê¤¯¤Æ¤â¡¢½èÍý¤¬Àµ¾ï¤Ë½ªÎ»¤¹¤ì¤Ð¡¢´Ø¿ô¤Ï +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¼ºÇÔ¤¹¤ë¤È¡¢hit_count ¤¬»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤¿¸¡º÷¤Î¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢ +¤³¤ì°Ê¾å eb_hit_list() ¤ò¸Æ¤ó¤Ç¡¢»Ä¤Ã¤¿°ìÃ×¥¨¥ó¥È¥ê¤ò¼èÆÀ +¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢Àè¤Ëµó¤²¤¿¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤¬À®¸ù¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥ³¤Î´Ø¿ô¤ò¸Æ¤Ö¤È¡¢ +EB_ERR_NO_PREV_SEARCH ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿

+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤Ï¡¢¸¡º÷¤ÈʤֽÅÍפʵ¡Ç½¤Ç¤¹¡£ +

+ +

+¤³¤³¤Ç¸À¤¦ ¥Æ¥­¥¹¥È¥Ç¡¼¥¿ (text data) ¤Ï¡¢ +ËÜʸ (text body) ¤È¤¤¤¦°ÕÌ£¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +CD-ROM ½ñÀҤˤϳΤ«¤ËËÜʸ¤â¸ºß¤·¤Þ¤¹¤¬¡¢ËÜʸ¤ÈƱ¤¸¥Ç¡¼¥¿·Á¼°¤òÍѤ¤¤Æ +½ñ¤«¤ì¤¿¥Ç¡¼¥¿¤¬¿ô¼ïÎढ¤ê¤Þ¤¹¡£ +Ëܽñ¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥Ç¡¼¥¿¤ò¤Þ¤È¤á¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤¬°·¤¨¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤Ï¡¢¼¡¤Î¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
    +
  • ¸«½Ð¤· +
  • ËÜʸ +
  • ¥á¥Ë¥å¡¼ +
  • Ãøºî¸¢É½¼¨ +
  • Ê£¹ç¸¡º÷¤ÎÆþÎϸì¤Î¸õÊä°ìÍ÷ +
+ +

+ËܾϤǤϡ¢¤³¤ì¤é¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤È²Ã¹©ÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥·¡¼¥¯¤ÈÆɤ߹þ¤ß

+ +

+UNIX ¤Ç¥×¥í¥°¥é¥à¤òÁȤó¤À·Ð¸³¤Î¤¢¤ëÊý¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤òÆɤ߹þ¤à +ºÝ¤ËÍѤ¤¤ë lseek(), read() ¤È¤¤¤¦¥·¥¹¥Æ¥à¥³¡¼¥ë +¤ò¤´Â¸¤¸¤ÎÊý¤â¿¤¤¤Ç¤·¤ç¤¦¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤â¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤Ë¤Ï¡¢¥·¡¼¥¯ (seek) ¤È +Æɤ߹þ¤ß (read) ¤È¤¤¤¦ 2 ¤Ä¤ÎÁàºî¤Ç¹Ô¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤ä¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï¤Ê¤¯¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤òÄ̤¸¤Æ¥·¡¼¥¯¤äÆɤ߹þ¤ß¤ÎÁàºî¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢¥·¡¼¥¯»þ¤Ë»ØÄꤹ¤ë°ÌÃÖ¤â off_t ·¿¤Ç¤Ï¤Ê¤¯¡¢ +EB_Position ·¿ (¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÍѤ¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ËÜʸ¤ÎÀèƬ°ÌÃ֤ϡ¢eb_text() ¤È¤¤¤¦´Ø¿ô¤ò»È¤Ã¤Æ +¼¡¤Î¤è¤¦¤Ë¼èÆÀ¤Ç¤­¤Þ¤¹¤¬¡¢¤³¤Î¤È¤­¤â°ÌÃ֥ǡ¼¥¿¤Ï EB_Position +·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +
+
+EB_Position position;
+
+/* ´Ø¿ô¤Î½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢position ¤ËËÜʸ¤Î³«»Ï°ÌÃÖ¤¬
+ * ½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ */
+if (eb_text(&book, &position) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+»²¹Í¤Þ¤Ç¤Ë¡¢EB_Position ·¿¤ÎÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Position_Struct EB_Position;
+
+struct EB_Position_Struct {
+    int page;     /* ¥Ú¡¼¥¸ÈÖ¹æ */
+    int offset;   /* ¥Ú¡¼¥¸Æâ¤Î¥ª¥Õ¥»¥Ã¥È */
+};
+
+
+ +

+¸¡º÷¤·¤Æ¸«¤Ä¤«¤Ã¤¿°ìÃ×¥¨¥ó¥È¥ê¤Î¸«½Ð¤·¤äËÜʸ¤òÆɤ߹þ¤àºÝ¤Ë¤â¡¢°ÌÃÖ¾ðÊó +¤Î»ØÄê¤Ë¤Ï EB_Position ·¿¤¬»È¤ï¤ì¤Þ¤¹¡£ +°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤Ï¡¢´Ø¿ô eb_hit_list() ¤Ë¤è¤Ã¤Æ +EB_Hit ¤È¤¤¤¦·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¤¬¡¢ +EB_Hit ·¿¤Ï¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +
+
+typedef struct {
+    EB_Position heading;   /* ¸«½Ð¤·¤Î°ÌÃÖ */
+    EB_Position text;      /* ËÜʸ¤Î°ÌÃÖ   */
+} EB_Hit;
+
+
+ +

+¤Ä¤Þ¤ê¡¢¤³¤Î¤È¤­¤Î¸«½Ð¤·¤ÈËÜʸ¤Î°ÌÃ֤⡢EB_Position ·¿¤Ç +ɽ¸½¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¹¡£ +

+ +

+¤Ç¤Ï¡¢¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤òÎã¤Ë¤·¤Æ¡¢¥·¡¼¥¯¤ÈÆɤ߹þ¤ß¤ò¹Ô¤Ã¤Æ¤ß¤Þ¤¹¡£ +¤Þ¤º¤Ï¡¢¥·¡¼¥¯¤«¤é¤Ç¤¹¡£ +¤³¤ì¤Ë¤Ï´Ø¿ô eb_seek_text() ¤òÍѤ¤¤Þ¤¹¡£ +¤³¤³¤Ç¤â¤ä¤Ï¤ê¡¢°ÌÃÖ¤Ï EB_Position ·¿¤ÇÅϤ·¤Þ¤¹¡£ +

+ +
+
+if (eb_seek_text(&book, &position) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¥Ç¡¼¥¿¤Î¼ïÎà (¸«½Ð¤·¡¢ËÜʸ ...) ¤Ë¤è¤é¤º¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥·¡¼¥¯¤Ï +¤¹¤Ù¤Æ eb_seek_text() ¤Ç¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎàÊÌ¤Ë +Æɤ߹þ¤ß°ÌÃÖ¤ò³Ð¤¨¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¯¡¢Á´¼ïÎà¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ç¶¦Í­¤¹¤ë +°ÌÃÖ¾ðÊó¤ò°ì¤Ä³Ð¤¨¤Æ¤¤¤ë¤À¤±¤Ç¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ËÜʸ¤òÆɤ߹þ¤ó¤À¸å¤Ç¡¢Ê̤ΰÌÃ֤˥·¡¼¥¯¤·¤Æ¸«½Ð¤·¤òÆɤ߹þ¤à¤È¡¢ +EB_Book ¤ÏËÜʸ¤ÎÆɤ߹þ¤ß°ÌÃ֤Τ³¤È¤Ï˺¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +

+ +

+¤µ¤Æ¡¢¥·¡¼¥¯¤¬½ª¤ï¤Ã¤¿¤é¡¢¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +Æɤ߹þ¤â¤¦¤È¤¹¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¡¢»ÈÍѤ¹¤ë´Ø¿ô¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +¸«½Ð¤·¤À¤±¤Ï eb_read_heading() ¤ò»È¤¤¤Þ¤¹¤¬¡¢¤½¤ì°Ê³°¤Ç¤Ï +eb_read_text() ¤ò»È¤¤¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢eb_read_text() ¤Î»ÈÍÑÎã¤Ç¤¹¡£ +

+ +
+
+#define MAX_LENGTH 1000
+char buffer[MAX_LENGTH + 1];
+ssize_t text_length;
+
+if (eb_read_text(&book, NULL, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+À®¸ù¤¹¤ë¤È¡¢text ¤Ë¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬¡¢ +text_length ¤Ë¤Ï¼ÂºÝ¤ËÆɤ߹þ¤ó¤À¥Ð¥¤¥È¿ô¤¬½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¤ÏºÇÂç¤Ç MAX_LENGTH ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¤µ¤é¤Ë¥Ê¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢buffer ¤Ë¤Ï +¤â¤¦ 1 ¥Ð¥¤¥Èʬ¤ÎÎΰ褬ɬÍפˤʤê¤Þ¤¹¡£ +

+ +

+eb_read_heading() ¤Î¸Æ¤Ó½Ð¤·Êý¤â¡¢eb_read_text() +¤È¤Þ¤Ã¤¿¤¯ÊѤï¤ê¤Þ¤»¤ó¡£ +

+ +
+
+if (eb_read_heading(&book, NULL, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+eb_read_text() ¤ä eb_read_heading() ¤ÇÆɤ߹þ¤ó¤À +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ïʿʸ¤Î¥Æ¥­¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¥Ê¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+printf("%s\n", text);   /* ½ÐÎϤ·¤Æ¤ß¤ë */
+
+
+ +

+Æɤ߹þ¤ß¤¿¤¤¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬Ä¹¤¹¤®¤Æ¡¢eb_read_text() +¤¢¤ë¤¤¤Ï eb_read_heading() ¤ò°ì²ó¸Æ¤Ó½Ð¤·¤¿¤À¤±¤Ç¤ÏÁ´Éô +Æɤ߹þ¤á¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢ºÆÅٸƤӽФ¹¤³¤È¤Ç³¤­¤Î¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉô·Á¼°

+ +

+Á°Àá¤ÎÎã¤Ç¤Ï¡¢Æɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢Ê¿Ê¸¥Æ¥­¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£ +¤±¤ì¤É¤â¡¢CD-ROM ½ñÀÒÆâ¤Ëʿʸ¥Æ¥­¥¹¥È¤Î¥Ç¡¼¥¿¤¬¡¢¤½¤Î¤Þ¤Þ¼ýÏ¿¤µ¤ì¤Æ¤¤¤ë +¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¼ÂºÝ¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÎã¤ò¡¢°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£ +º¸Â¦¤Î¥Ö¥í¥Ã¥¯¤Ï 16 ¿Ê¿ô¤Ç¥À¥ó¥×¤·¤¿ÍͻҤǡ¢±¦Â¦¤Ï¤½¤ì¤ò´ð¤Ë JIS X 0208 +(ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤Îʸ»ú¤òɽ¤·¤Æ¤¤¤ëÉôʬ¤ò [¡¡] ¤È¤¤¤¦·Á¤Ë +ľ¤·¤¿¤â¤Î¤Ç¤¹¡£ +

+ +
+
+     (16¿Ê¿ô¤Ë¤è¤ë¥À¥ó¥×)            (²Äǽ¤ÊÉôʬ¤ò¤«¤Ê´Á»ú¤ËÊÑ´¹)
+1f0900011f41010026321f611f042121   1f0900011f410100[¦²]1f611f04[¡¡]
+212721211f053e704a734a541f0a1f04   [¡§][¡¡]1f05[¾ð][Êó][ÊÔ]1f0a1f04
+214e1f0525372530255e1f04214f2121   [¡Î]1f05[¥·][¥°][¥Þ]1f04[¡Ï][¡¡]
+214a237323692367236d236121212370   [¡Ê][£ó][£é][£ç][£í][£á][¡¡][£ð]
+2372236f236a236523632374214b1f05   [£ò][£ï][£ê][£å][£ã][£ô][¡Ë]1f05
+
+
+ +

+±¦Â¦¤Î¥Ö¥í¥Ã¥¯¤ò¸«¤ë¤È¡¢¤ª¤ª¤è¤½Ê¿Ê¸¤Ë¶á¤¤·Á¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬¼ý¤á¤é¤ì¤Æ +¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¤¬¡¢¤È¤³¤í¤É¤³¤í¤Ë¡Öʸ»ú¡×¤Ç¤Ï¤Ê¤¤¥Ç¡¼¥¿¤â´Þ¤Þ¤ì¤Æ +¤¤¤Þ¤¹¡£ +

+ +

+ʸ»ú¤Ç¤Ï¤Ê¤¤Éôʬ¤Ï¡¢¤¹¤Ù¤Æ¡Ö¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¡×¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¤¹¡£ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤È¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò½ÐÎϤ¹¤ëºÝ¤Ë¡¢²þ¹Ô¤Î¶Ø»ß¤ä +¶¯Ä´½¤¾þ¤È¤¤¤Ã¤¿À©¸æ¾ðÊó¤òÅÁ¤¨¤ë¤¿¤á¤Î»ÅÁȤߤǤ¹¡£ +16 ¿Ê¿ô¤Î 1f ¤¬¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î³«»Ï¤ò°ÕÌ£¤·¤Þ¤¹¡£ +

+ +

+»²¹Í¤Þ¤Ç¤Ë¡¢¾å¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ç»È¤ï¤ì¤Æ¤¤¤ë¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ò +¤¹¤Ù¤ÆÎóµó¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
1f09 0001
+
+»ú²¼¤² (¥¤¥ó¥Ç¥ó¥È) ¤ÎÎ̤ò»ØÄê¡£ +(°ú¿ô¤¬ 0001 ¤Ê¤Î¤Ç¡¢»ú²¼¤²ÎÌ¤Ï 1¡£) +
1f41 0100
+
+¸¡º÷¥­¡¼¤Î³«»Ï¡£ +(°ú¿ô 0100 ¤Î°ÕÌ£¤Ë¤Ä¤¤¤Æ¤Ï¡¢JIS X 4081 ¤Ëµ­½Ò¤¬¤Ê¤¤¤¿¤áÉÔÌÀ¡£) +
1f61
+
+¸¡º÷¥­¡¼¤Î½ªÎ»¡£ +
1f04
+
+Ⱦ³Ñɽ¼¨¤Î³«»Ï¡£ +
1f05
+
+Ⱦ³Ñɽ¼¨¤Î½ªÎ»¡£ +
1f0a
+
+²þ¹Ô +
+ +

+Á°Àá¤Î¥×¥í¥°¥é¥à¤Ç¡¢Æɤ߹þ¤ó¤À¥Ç¡¼¥¿¤¬Ê¿Ê¸¥Æ¥­¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤Î¤Ï¡¢ +¼Â¤Ï EB ¥é¥¤¥Ö¥é¥ê¤¬²Ã¹©½èÍý¤ò¤·¤¿¤«¤é¤Ç¤¹¡£ +¤Ä¤Þ¤ê¡¢¡Ö²þ¹Ô¡×¤Î¤è¤¦¤Ëʿʸ¥Æ¥­¥¹¥È¤Ç¤âɽ¸½²Äǽ¤Ê¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹ +¤Ë¤Ä¤¤¤Æ¤Ï½èÍý¤·¡¢¡Ö¸¡º÷¥­¡¼¤Î³«»Ï¡×¤Î¤è¤¦¤Ëɽ¸½¤Ç¤­¤Ê¤¤¤â¤Î¤Ë¤Ä¤¤¤Æ¤Ï +̵»ë¤¹¤ë¤è¤¦¤Ë¤·¤Æ¡¢Ê¿Ê¸¥Æ¥­¥¹¥È¤Ë¤Ê¤ë¤è¤¦¤Ë²Ã¹©¤·¤Æ¤¤¤¿¤Î¤Ç¤¹¡£ +

+ +

+¤·¤«¤·¡¢Ê¿Ê¸¥Æ¥­¥¹¥È¤Ïɽ¸½ÎϤ¬Ë³¤·¤¤¤Î¤Ç¡¢¸µ¤Î¥Ç¡¼¥¿¤Ë¤Ï´Þ¤Þ¤ì¤Æ¤¤¤ë +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¿¤¯¤ò̵»ë¤¹¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +HTML ¤Î¤è¤¦¤Ë¡¢¤â¤Ã¤Èɽ¸½ÎϤΤ¢¤ë·Á¼°¤Ç½ÐÎϤ¹¤ë¤Ê¤é¡¢Ìµ»ë¤»¤º¤ËºÑ¤à +¥·¡¼¥±¥ó¥¹¤òÁý¤ä¤»¤½¤¦¤Ç¤¹¡£ +¤Ç¤Ï¡¢HTML ·Á¼°¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤¬ EB ¥é¥¤¥Ö¥é¥ê¤ËÍÑ°Õ¤µ¤ì¤Æ +¤¤¤ë¤«¤È¤¤¤¦¤È¡¢»ÄÇ°¤Ê¤¬¤é¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¤½¤ÎÂå¤ï¤ê¤Ë¡¢¤«¤Ê¤ê¼ê´Ö¤Ï¤«¤«¤ê¤Þ¤¹¤¬¡¢¼«Í³¤Ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò²Ã¹©¤Ç¤­¤ë +¤¿¤á¤Î»ÅÁȤߤ¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¤½¤ì¤¬¡¢¼¡¤ÎÀá¤ÇÀâÌÀ¤¹¤ë ¥Õ¥Ã¥¯ (hook) ¤Ç¤¹¡£ +¥Õ¥Ã¥¯¤ò»È¤¦¤³¤È¤Ç¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò½ÀÆð¤Ë²Ã¹©¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

¥Õ¥Ã¥¯

+ +

+Æä˲¿¤â»ØÄꤷ¤Ê¤±¤ì¤Ð¡¢eb_read_text(), +eb_read_heading() ¤¬ÊÖ¤¹¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î²Ã¹©¤Ï¡¢¤¢¤é¤«¤¸¤á +·è¤á¤é¤ì¤¿Ä̤ê¤ÎÊýË¡¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¡Ö²þ¹Ô¡×¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¤Ï¡¢\n ¤ò +½ñ¤­¹þ¤à¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ (hook) ¤ò»È¤¦¤È¡¢¤³¤¦¤·¤¿²Ã¹©ÊýË¡¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¥Õ¥Ã¥¯¤Ï¡¢¤¢¤é¤«¤¸¤á·è¤á¤é¤ì¤¿¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤ËÂФ·¤Æ¡¢¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿ +¤¹¤ë¤³¤È¤ÇÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ +¥Õ¥Ã¥¯´Ø¿ô¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤È¡¢eb_read_text() ¤ä +eb_read_heading() ¤Ï¡¢¤¢¤é¤«¤¸¤á·è¤Þ¤Ã¤¿¤ä¤êÊý¤Ç¥Ç¡¼¥¿¤ò +½ñ¤­¹þ¤àÂå¤ï¤ê¤Ë¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +¸Æ¤Ó½Ð¤µ¤ì¤¿¥Õ¥Ã¥¯´Ø¿ô¤¬¥Ç¡¼¥¿¤Î½ñ¤­¹þ¤ß½èÍý¤ò¹Ô¤¦¤³¤È¤Ç¡¢ +eb_read_text() ¤ä eb_read_heading() ¤«¤éÊÖ¤ë +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬ÊѲ½¤¹¤ë¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢Â¿¿ô¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +³Æ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¤Ï¡¢¤½¤ì¤¾¤ìÀìÍѤ˥ե寤¬ÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¡¢ +¤½¤ì°Ê³°¤Ë¤âʸ»ú¤Î¤¿¤á¤Î¥Õ¥Ã¥¯¤¬Â¸ºß¤·¤Þ¤¹¡£ +(¤É¤Î¤è¤¦¤Ê¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤¬¤¢¤ë¤«¡¢¾Ü¤·¤¯¤Ï +¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+¤½¤ì¤¾¤ì¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃ֤ϡ¢¥Õ¥Ã¥¯¥³¡¼¥É (hook code) ¤È +¸Æ¤Ð¤ì¤ë¥³¡¼¥ÉÃͤǼ±Ê̤µ¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢Á°½Ò¤Î¡Ö²þ¹Ô¡×¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂбþ¤¹¤ë¥Õ¥Ã¥¯¥³¡¼¥É +¤Ï EB_HOOK_NEWLINE ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¥Õ¥Ã¥¯¤ò°·¤¦¤Ë¤Ï¡¢¥Õ¥Ã¥¯¤Î½¸¹ç¤Ç¤¢¤ë +¥Õ¥Ã¥¯¥»¥Ã¥È (hook set) ¤òÍÑ°Õ¤·¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ÇÍøÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤ËÂФ·¤Æ¡¢¤É¤Î +¥Õ¥Ã¥¯´Ø¿ô¤ò»È¤¦¤Î¤«¤òµ­Ï¿¤¹¤ë¤¿¤á¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£ +

+ +

+¤Ç¤Ï¡¢¼ÂºÝ¤Ë¤É¤¦¤ä¤Ã¤Æ¥Õ¥Ã¥¯¥»¥Ã¥È¤ò°·¤¦¤Î¤«¡¢ÀâÌÀ¤·¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£ +¥Õ¥Ã¥¯¥»¥Ã¥È¤Ï EB_Hookset ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Çɽ¤·¤Þ¤¹¤Î¤Ç¡¢ +¤Þ¤º EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤·¤Þ¤¹¡£ +

+ +
+
+EB_Hookset hookset;
+
+
+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È +¤ÈƱÍͤˡ¢»ÈÍÑÁ°¤Ëɬ¤º½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+eb_initialize_hookset(&hookset);
+
+
+ +

+¼ÂºÝ¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç eb_write_text_string() ¤È¤¤¤¦ +´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢<br> ¤È¤¤¤¦Ê¸»úÎó¤ò¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤È¤·¤Æ½ñ¤­¹þ¤ó¤Ç¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code
+hook_newline(EB_Book *book, EB_Appendix *appendix, void *container,
+    EB_Hook_Code code, int argc, const unsigned int *argv) {
+    eb_write_text_string(book, "<br>");
+    return 0;
+}
+
+
+ +

+´Ø¿ô eb_set_hook() ¤òÍѤ¤¤ë¤³¤È¤Ç¡¢¤³¤Î¥Õ¥Ã¥¯´Ø¿ô¤ò +¥Õ¥Ã¥¯¥»¥Ã¥È¤ËÅÐÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤Þ¤º EB_Hook ¤È¤¤¤¦·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¤¤Ã¤¿¤ó +¥Õ¥Ã¥¯¥³¡¼¥É¤È¥Õ¥Ã¥¯´Ø¿ô¤òÀßÄꤷ¡¢¤½¤ì¤ò eb_set_hook() ¤ò +ÅϤ·¤Æ¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¤³¤³¤Ç¤Ï¡¢¡Ö²þ¹Ô¡×¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¡¢¾åµ­¤Î¥Õ¥Ã¥¯´Ø¿ô +¤òÅÐÏ¿¤·¤Æ¤ß¤Þ¤¹¡£ +

+ +
+
+EB_Hook hook;
+
+hook.code = EB_HOOK_NEWLINE;   # ¥Õ¥Ã¥¯¥³¡¼¥É¤ò¥»¥Ã¥È
+hook.function = hook_newline;  # ¥Õ¥Ã¥¯´Ø¿ô¤ò¥»¥Ã¥È
+eb_set_hook(&hookset, &hook);
+
+
+ +

+¤Ê¤ª¡¢Æ±¤¸¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ (¥Õ¥Ã¥¯¥³¡¼¥É) ¤ËÊ£¿ô²ó¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤â¡¢ +Í­¸ú¤Ë¤Ê¤ë¤Î¤ÏºÇ¸å¤ËÅÐÏ¿¤·¤¿¤â¤Î¤À¤±¤Ç¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ NULL ¤ò»ØÄꤹ¤ë¤È¡¢ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥Õ¥Ã¥¯¤¬ +²ò½ü¤µ¤ì¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_set_hooks() (ºÇ¸å¤Ë s ¤¬ÉÕ¤¯) ¤ò»È¤¨¤Ð¡¢ +Ê£¿ô¤Î¥Õ¥Ã¥¯´Ø¿ô¤ò°ìÅÙ¤ËÅÐÏ¿¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+static const EB_Hook hooks[] = {
+    {EB_HOOK_NEWLINE,        hook_newline},
+    {EB_HOOK_SET_INDENT,     hook_set_indent},
+    {EB_HOOK_WIDE_JISX0208,  hook_set_jisx0208},
+    {EB_HOOK_NULL,           NULL}
+};
+
+eb_set_hooks(&hookset, &hooks);
+
+
+ +

+ÇÛÎó¤ÎËöÈø¤òÌÀ¼¨¤¹¤ë¤¿¤á¤Ë¡¢EB_HOOK_NULL ¤È¤¤¤¦Æüì¤Ê +¥Õ¥Ã¥¯¥³¡¼¥É¤òÃÖ¤­¤Þ¤¹¡£ +¤³¤ÎÅÀ¤âÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¤³¤¦¤·¤Æ¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤¿¥Õ¥Ã¥¯¥»¥Ã¥È¤ò¡¢eb_raed_text(), +eb_raed_heading() ¤Ø¤Î°ú¿ô¤È¤·¤ÆÅϤ·¤Þ¤¹¡£ +Á°Àá¤Þ¤Ç¤ÎÎã¤Ç¤Ï¡¢NULL ¤òÅϤ·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢Âå¤ï¤ê¤Ë +&hookset ¤òÅϤ·¤Æ¤ß¤Þ¤¹¡£ +

+ +
+
+if (eb_read_text(&book, NULL, &hookset, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¤³¤ì¤Ë¤è¤Ã¤Æ¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë²þ¹Ô¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬¤¢¤ë¤È¡¢ +\n ¤ÎÂå¤ï¤ê¤Ë <br> ¤È¤¤¤¦Ê¸»úÎó¤¬ +½ñ¤­¹þ¤Þ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢ +eb_finalize_hookset() ¤ò¸Æ¤ó¤Ç¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +

+ +
+
+eb_finalize_hookset(&hookset);
+
+
+ + +

¥Õ¥Ã¥¯¤Èʸ»ú¥³¡¼¥É¤Î´Ø·¸

+ +

+Á°Àá¤Ç¤Ï¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤òÎã¤Ë¤È¤ê¤Þ¤·¤¿¤¬¡¢¤³¤Î¾ +¤Ë¤â¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ïʸ»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_HOOK_ISO8859_1
+
+ISO 8859-1 (¥é¥Æ¥óʸ»ú 1) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£¤¿¤À¤·À©¸æʸ»ú¤ò½ü¤­¤Þ¤¹¡£ +°ú¿ô¤È¤·¤Æ¡¢ISO 8859-1 ¤Îʸ»úÈֹ椬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_NARROW_JISX0208
+
+Ⱦ³Ñ¤Î JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢ÆüËܸì EUC ¤Çɽ¸½¤·¤¿¾ì¹ç¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_WIDE_JISX0208
+
+Á´³Ñ¤Î JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢ÆüËܸì EUC ¤Çɽ¸½¤·¤¿¾ì¹ç¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_GB2312
+
+GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢Ãæ¹ñ¸ì EUC ¤Çɽ¸½¤·¤¿¾ì¹ç¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_NARROW_FONT
+
+Ⱦ³Ñ¤Î³°»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢³°»ú¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_WIDE_FONT
+
+Ⱦ³Ñ¤Î³°»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢³°»ú¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ +
+ +

+¤¤¤º¤ì¤â¡¢¤½¤Îʸ»ú¤¬¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë¸½¤ì¤ëÅ٤ˡ¢¥Õ¥Ã¥¯´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì +¤Þ¤¹¡£ +

+ +

+¾å¤Îµ­½Ò¤ò¸«¤Æ¤âʬ¤«¤ë¤è¤¦¤Ë¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤ëʸ»úÈÖ¹æ¤Ï¡¢½ñÀÒ¤Îʸ»ú +¥³¡¼¥É¤Ë±þ¤¸¤Æ¡¢ISO 8859-1, ÆüËܸì EUC¡¢Ãæ¹ñ¸ì EUC ¤Î¤¤¤º¤ì¤«¤Îʸ»ú¥³¡¼¥É +¤Çɽ¸½¤µ¤ì¤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Ê¤±¤ì¤Ð¡¢¤½¤Îʸ»úÈֹ椬¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ¤½¤Î¤Þ¤Þ +½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤â¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê¤ÎÆâÉô¥³¡¼¥É¤È¤Ï°Û¤Ê¤ë +ʸ»ú¥³¡¼¥É¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Î¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¡¢ +¥³¡¼¥ÉÊÑ´¹½èÍý¤ò¤¹¤ë¤Î¤â¼ê¤Ç¤¹¡£ +¤¿¤À¤·¡¢°ìʸ»úËè¤Ë¥Õ¥Ã¥¯´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¤Î¤Ç¡¢Áê±þ¤ÎÉé²Ù¤¬¤«¤«¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢EBXA-C ¤ò°·¤¦¤Ë¤Ï¡¢ÆÃÊ̤ʽèÍý¤¬É¬ÍפǤ¹¡£ +EBXA-C ¤Ç¤Ï¡¢Ê¸»ú¥³¡¼¥É¤È¤·¤Æ GB 2312 ¤È JIS X 0208 ¤¬»È¤ï¤ì¤Þ¤¹¤¬ +(¡Öʸ»ú¥³¡¼¥É¡× ¤ò»²¾È¤Î¤³¤È)¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë¤è¤ëɸ½à¤Î½èÍý +¤Ç¤Ï¡¢¤É¤Á¤é¤â 0xa1a1 ¡Á 0xfefe ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤Æ¾×Æͤ¹¤ë¤¿¤á¡¢ºÇÄã +¤Ç¤â¤É¤Á¤é¤«°ìÊý¤ò¥Õ¥Ã¥¯¤·¤Æʸ»ú¤Îɽ¸½ÊýË¡¤òÊѤ¨¤Ê¤¤¤È¡¢Àµ¤·¤¯½ÐÎÏ +¤Ç¤­¤Þ¤»¤ó¡£ +

+ + +

¥¯¥í¥¹¸¡º÷¤Î¸¡º÷·ë²Ì

+ +

+¤¹¤Ç¤Ë ¡Ö¸¡º÷¡× ¤Î¾Ï¤Ç½Ò¤Ù¤¿¤è¤¦¤Ë¡¢CD-ROM ½ñÀÒ +¤Ë¤ÏÁ°Êý°ìÃ׸¡º÷¡¢¸åÊý°ìÃ׸¡º÷¤È¤¤¤Ã¤¿Ê£¿ô¤Î¸¡º÷¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¸¡º÷¤ò¹Ô¤¦¤È¡¢¤É¤Î¸¡º÷¥á¥½¥Ã¥É¤Ç¤â¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î +¾ðÊó¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê EB_Hit ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ +¼õ¤±¼è¤ê¤Þ¤¹¡£ +

+ +
+
+typedef struct {
+    EB_Position heading;   /* ¸«½Ð¤·¤Î°ÌÃÖ */
+    EB_Position text;      /* ËÜʸ¤Î°ÌÃÖ   */
+} EB_Hit;
+
+
+ +

+¤·¤«¤·¥¯¥í¥¹¸¡º÷¤Ç¤Ï¡¢EB_Hit ¤Î¸«½Ð¤·¤ÈËÜʸ¤Î°ÌÃÖ¤Ï +¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¸«½Ð¤·¤ÈËÜʸ¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤Ë¤Ï¡¢Â¾¤Î¸¡º÷¥á¥½¥Ã¥É +¤Î¤è¤¦¤Ë¤½¤ì¤¾¤ì¤Î°ÌÃ֤˥·¡¼¥¯¤·¤ÆÆɤ߹þ¤à¤È¤¤¤¦¤ä¤êÊý¤Ç¤Ï¤¦¤Þ¤¯ +¤¤¤­¤Þ¤»¤ó¡£ +

+ +

+°Ê²¼¤Ë¡¢¥¯¥í¥¹¸¡º÷¤Î¸«½Ð¤·¤ÈËÜʸ¤òÆɤ߹þ¤à¥×¥í¥°¥é¥àÎã¤ò¼¨¤·¤Þ¤¹¡£ +

+ +
+
+/* ¸«½Ð¤·°ÌÃ֤ؤΥ·¡¼¥¯¤ò¹Ô¤¦ */
+if (eb_seek_text(&book, &hits[0].heading) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+/* ¸«½Ð¤·¤ÎÆɤ߹þ¤ß¤ò¹Ô¤¦ */
+if (eb_read_heading(&book, NULL, NULL, NULL, MAX_LENGTH,
+    heading, &heading_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+/* Àè¤Û¤ÉÆɤ߹þ¤ó¤À¸«½Ð¤·¤Î¡¢¼¡¤ÎÉôʬ¤ØÈô¤Ö */
+if (eb_forward_heading(&book) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+/* ËÜʸ¤ÎÆɤ߹þ¤ß¤ò¹Ô¤¦ */
+if (eb_read_heading(&book, NULL, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¥¯¥í¥¹¸¡º÷¤Ç¤â¡¢¸«½Ð¤·¤ÎÆâÍƤòÆɤ߹þ¤àÊýË¡¤Ï¾¤Î¸¡º÷¥á¥½¥Ã¥É¤ÈÊѤï¤ê +¤Ï¤Ê¤¯¡¢eb_read_heading() ¤ò»È¤¤¤Þ¤¹¡£ +ÊѤï¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ËÜʸ¤ÎÆɤ߹þ¤ß¤Ç¤¹¡£ +eb_read_text() ¤Ç¤Ï¤Ê¤¯¡¢eb_read_heading() +¤ò»È¤¤¤Þ¤¹¡£ +¸«½Ð¤·¤òÆɤ߹þ¤à¤¿¤á¤Î´Ø¿ô eb_read_heading() ¤ò¡¢ËÜʸ¤ò +Æɤ߹þ¤à¤¿¤á¤Ë¸Æ¤Ö¤È¤¤¤¦¤Î¤Ï´ñ̯¤ÊÏäǤ¹¤¬¡¢¤³¤ì¤Ï¥¯¥í¥¹¸¡º÷¤ÎËÜʸ¤¬ +¸«½Ð¤·¤ÈƱ¤¸·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¤Ç¤¹¡£ +Ä̾¸«½Ð¤·¤Ï°ì¹ÔÄøÅÙ¤·¤«½ñ¤«¤ì¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¼ÂºÝ¤Î¤È¤³¤í¥¯¥í¥¹¸¡º÷ +¤ÎËÜʸ¤â°ì¹ÔÄøÅÙ¤·¤«¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¤Þ¤¿¡¢ËÜʸ¤Ï¸«½Ð¤·¤Î¤¹¤°¸å¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤¿¤á¡¢¾åµ­¤Î¤è¤¦¤Ë¸«½Ð¤·¤ò +Æɤ߹þ¤ó¤À¸å¤Ç eb_forward_heading() ¤È¤¤¤¦´Ø¿ô¤ò¸Æ¤Ó¡¢ +¤½¤Î¸å¤ÇËÜʸ¤òÆɤ߹þ¤à¤¿¤á¤Ë¤â¤¦°ìÅÙ eb_read_heading() ¤ò +¸Æ¤Ö¤È¤¤¤¦ÊѤï¤Ã¤¿¼ê½ç¤òƧ¤ß¤Þ¤¹¡£ +

+ +

+ËÜʸ¤À¤±¤¬É¬ÍפǸ«½Ð¤·¤¬Íפé¤Ê¤±¤ì¤Ð¡¢¥·¡¼¥¯Ä¾¸å¤Ë +eb_forward_heading() ¤ò¸Æ¤Ö¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¤½¤Î¸å¤Ç eb_read_heading() ¤ò¸Æ¤Ö¤È¡¢ËÜʸ¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ + +

Ãøºî¸¢É½¼¨

+ +

+Àè¤Ëµ­¤·¤¿¤è¤¦¤Ë¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤Ï²¿¼ïÎफ¤¢¤ê¡¢¤½¤ÎÃæ¤Ë +Ãøºî¸¢É½¼¨ (copyright notice) ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +̾Á°¤ÎÄ̤ꡢÃøºî¸¢É½¼¨¤Ë´Ø¤¹¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò¼ý¤á¤¿¤â¤Î¤Ç¤¹¡£ +

+ +

+°ìÈ̤ˡ¢Ãøºî¸¢É½¼¨¤ÏËÜʸ¤È¤Ï¤Þ¤Ã¤¿¤¯ÆÈΩ¤·¤¿¥Ç¡¼¥¿¤È¤·¤ÆÍÑ°Õ¤µ¤ì¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢ËÜʸ¤òÀèƬ¤«¤éËöÈø¤Þ¤ÇÆɤó¤Ç¤ß¤Æ¤â¡¢Ãøºî¸¢É½¼¨¤Ï¤É¤³¤Ë¤â +¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£ +

+ +

+ÁªÂòÃæ¤ÎÉûËܤˤĤ¤¤Æ¡¢Ãøºî¸¢É½¼¨¤Î³«»Ï°ÌÃÖ¤òÃΤë¤Ë¤Ï +eb_copyright() ¤ò»È¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ÉûËܤ¬Ãøºî¸¢É½¼¨¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð +EB_ERR_NO_SUCH_SEARCH ¤òÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢Ãøºî¸¢É½¼¨¤Î̵ͭ¤â +Ʊ»þ¤Ëʬ¤«¤ê¤Þ¤¹¡£ +(³«»Ï°ÌÃ֤ϼèÆÀ¤»¤º¤Ë¡¢Í­Ìµ¤À¤±¤òÄ´¤Ù¤¿¤¤¤È¤­¤Ï¡¢ +eb_have_copyright() ¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£) +

+ +
+
+EB_Position position;
+EB_Error_Code err;
+
+err = eb_copyright(&book, &position);
+if (err == EB_ERR_NO_SUCH_SEARCH) {
+    /* Ãøºî¸¢É½¼¨¤Ï¤Ê¤¤ */
+} else if (err != EB_SUCCESS) {
+    /* ¤½¤ì°Ê³°¤Î¥¨¥é¡¼ */
+   return;
+}
+
+
+ +

+¸å¤Ï¡¢ÆÀ¤é¤ì¤¿°ÌÃÖ (position) ¤Ë¥·¡¼¥¯¤·¤Æ¡¢ +eb_read_text() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ + +

¥á¥Ë¥å¡¼

+ +

+ËÜʸ¤È¤ÏÆÈΩ¤·¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ¤Ï¡¢Ãøºî¸¢É½¼¨¤Î¾¤Ë +¥á¥Ë¥å¡¼ (menu) ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +¥á¥Ë¥å¡¼¤Ï¡¢¼ç¤ËËÜʸ¤ÎÊä½õ¤È¤Ê¤ë¥Ç¡¼¥¿¤ò¼ýÏ¿¤·¤Æ¤¤¤Þ¤¹¡£ +ÂåɽŪ¤Ê¤â¤Î¤Ç¤Ï¡¢¡ÖÁ°½ñ¤­ (½ø)¡×¡ÖËÞÎã¡×¤È¤¤¤Ã¤¿¤â¤Î¤¬µó¤²¤é¤ì¤Þ¤¹¡£ +

+ +

+¥á¥Ë¥å¡¼¤Ç¤Ï¡ÖÊ̹àÌÜ»²¾È¡×¤È¤¤¤¦¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ò¿ÍѤ·¤Æ¡¢³¬ÁØŪ +¤Ê¹½Â¤¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤¬°ìÈÌŪ¤Ç¤¹¡£ +¤³¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¤Ï¡¢»²¾ÈÀè¤Î¥Æ¥­¥¹¥È¤Î°ÌÃÖ¤¬µ­Ï¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢¤¢¤ë CD-ROM ½ñÀҤΥá¥Ë¥å¡¼¤¬¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤È¤·¤Þ¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢¥á¥Ë¥å¡¼¤Ë¤Ï 3 ¤Ä¤Î¹àÌܤ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+ * ½øʸ
+ * ɽµ­¤Ë¤Ä¤¤¤Æ
+ * ±üÉÕ
+
+
+ +

+¥á¥Ë¥å¡¼¤Î¤½¤ì¤¾¤ì¤Î¹àÌܤˤϡ¢»²¾ÈÀ褬¤¢¤ê¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉôɽ¸½¤Ç¤Ï¡¢¡Ö½øʸ¡×¡Öɽµ­¤Ë¤Ä¤¤¤Æ¡×¡Ö±üÉաפΠ+¤½¤ì¤¾¤ì¤Îʸ»úÎó¤ÎÁ°¸å¤ËÊ̹àÌÜ»²¾È³«»Ï¤ª¤è¤Ó½ªÎ»¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬ +ÉÕ¤¤¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +»ë³ÐŪ¤Ëʬ¤«¤ë¤è¤¦¤Ëµ­¤¹¤È¡¢¼¡¤Î¤è¤¦¤Ê·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+ * <Ê̹àÌÜ»²¾È³«»Ï¥·¡¼¥±¥ó¥¹> "½øʸ" <Ê̹àÌÜ»²¾È½ªÎ»¥·¡¼¥±¥ó¥¹>
+ * <Ê̹àÌÜ»²¾È³«»Ï¥·¡¼¥±¥ó¥¹> "ɽµ­" <Ê̹àÌÜ»²¾È½ªÎ»¥·¡¼¥±¥ó¥¹>
+ * <Ê̹àÌÜ»²¾È³«»Ï¥·¡¼¥±¥ó¥¹> "±üÉÕ" <Ê̹àÌÜ»²¾È½ªÎ»¥·¡¼¥±¥ó¥¹>
+
+
+ +

+HTML ¤Î½ñ¤­Êý¤òÃΤäƤ¤¤ë¤Ê¤é¡¢a ¥¿¥°¤È¸À¤¨¤Ðʬ¤«¤ë¤Î¤Ç¤Ï +¤Ê¤¤¤«¤È»×¤¤¤Þ¤¹¡£ +

+ +
+
+<a href="./index.html">EB ¥é¥¤¥Ö¥é¥ê¤Î¥Û¡¼¥à¥Ú¡¼¥¸</a>
+
+
+ +

+¤¿¤À¤·¡¢»²¾ÈÀè¤Î°ÌÃÖ¾ðÊó¤Ï½ªÎ»¥·¡¼¥±¥ó¥¹Â¦¤Ëµ­ºÜ¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎÅÀ¤Ï +HTML ¤È¤ÏµÕ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¼Ø­¤Ç¤¹¤¬¡¢ÊÌ°ÌÃÖ»²¾È¤Ï¥á¥Ë¥å¡¼¤À¤±¤Ç¤Ê¤¯¡¢ËÜʸ¤Ç¤â°ìÈÌŪ¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ +

+ +

+Ê̹àÌÜ»²¾È³«»Ï¤ª¤è¤Ó½ªÎ»¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¡¢¤½¤ì¤¾¤ì¥Õ¥Ã¥¯ +EB_HOOK_BEGIN_REFERENCE ¤È EB_HOOK_END_REFERENCE +¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +»²¾ÈÀè¤Î°ÌÃÖ¾ðÊó¤Ï¡¢½ªÎ»¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯´Ø¿ô¤ËÂФ·¤Æ¡¢°ú¿ô¤È¤·¤Æ +ÅϤµ¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢EB_HOOK_END_REFERENCE ¤Ø¤Î¥Õ¥Ã¥¯´Ø¿ô¤ÎËÁƬ¤Ç¤Ï¡¢ +¼¡¤Î¤è¤¦¤Ë¤¹¤ë¤ÈÎɤ¤¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+EB_Error_Code
+hook_end_ref(EB_Book *book, EB_Appendix *appendix, void *container,
+    EB_Hook_Code code, int argc, const unsigned int *argv)
+{
+    EB_Position position;
+
+    position.page = argv[1];    # »²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ
+    position.offset = argv[2];  # »²¾ÈÀè¤Î¥ª¥Õ¥»¥Ã¥È
+
+
+ +

+»²¾ÈÀè¤Ï¡¢¥á¥Ë¥å¡¼¤ÎÂè 2 ÁؤȤʤê¤Þ¤¹¡£ +¤³¤Î½ñÀҤΡֱüÉաפλ²¾ÈÀè¤òé¤Ã¤¿¤é¡¢¼¡¤Î¤è¤¦¤Êɽµ­¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£ +

+ +
+
+¡û¡ûƲ½ÐÈÇ¼Ò ¿·¹ñ¸ì¼­Åµ Âè 2 ÈÇ (EPWING ÈÇ)
+Âè 1 ÈÇ È¯¹Ô 1988ǯ 2·î
+Âè 2 ÈÇ È¯¹Ô 1999ǯ 11·î
+Âè 2 ÈÇ (EPWING ÈÇ) ȯ¹Ô 2000ǯ 2·î
+
+
+ +

+ƱÍͤˡֽøʸ¡×¡Öɽµ­¤ËÉÕ¤¤¤Æ¡×¤Î»²¾ÈÀè¤Ë¤Ä¤¤¤Æ¤â¡¢¤³¤¦¤·¤¿Ê¸¾Ï¥Ç¡¼¥¿ +¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¡£ +¿Þ¼¨¤¹¤ë¤È¡¢¥á¥Ë¥å¡¼¤Î³¬Áؤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¤
+Â裱ÁØ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨½¨¡¨¡¨¥
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨®¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¶¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¯
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­
+¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¿¨¡¨¡¨¤¡¡¨£¨¡¨¡¨¿¨¡¨¡¨¤¡¡¨£¨¡¨¡¨¿¨¡¨¡¨¤
+Â裲ÁØ¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢
+¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¥¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¥¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¤³¤Î¼­½ñ¤ÎÎã¤Ç¤Ï¡¢¥á¥Ë¥å¡¼¤Ï¤³¤³¤Ç½ª¤ï¤ê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢½ñÀҤˤè¤Ã¤Æ¤Ï +¤µ¤é¤ËÂè 3 ÁØ¡¢Âè 4 Áؤȳ¤¯¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢¥á¥Ë¥å¡¼Á´ÂΤ¬¶Ñ°ì¤Î³¬ÁØ¿ô¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¥á¥Ë¥å¡¼¤Î»²¾ÈÀ褬ËÜʸ¤äÃøºî¸¢É½¼¨¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ +

+ +

+ÁªÂòÃæ¤ÎÉûËܤˤĤ¤¤Æ¡¢(Âè 1 ÁؤÎ) ¥á¥Ë¥å¡¼¤Î³«»Ï°ÌÃÖ ¤òÃΤë¤Ë¤Ï +eb_menu() ¤ò»È¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ÉûËܤ¬¥á¥Ë¥å¡¼¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð +EB_ERR_NO_SUCH_SEARCH ¤òÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢¥á¥Ë¥å¡¼¤Î̵ͭ¤âƱ»þ¤Ë +ʬ¤«¤ê¤Þ¤¹¡£ +(³«»Ï°ÌÃ֤ϼèÆÀ¤»¤º¤Ë¡¢Í­Ìµ¤À¤±¤òÄ´¤Ù¤¿¤¤¤È¤­¤Ï¡¢ +eb_have_menu() ¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£) +

+ +
+
+EB_Position position;
+EB_Error_Code err;
+
+err = eb_menu(&book, &position);
+if (err == EB_ERR_NO_SUCH_SEARCH) {
+    /* ¥á¥Ë¥å¡¼¤Ï¤Ê¤¤ */
+} else if (err != EB_SUCCESS) {
+    /* ¤½¤ì°Ê³°¤Î¥¨¥é¡¼ */
+   return;
+}
+
+
+ +

+¸å¤Ï¡¢ÆÀ¤é¤ì¤¿°ÌÃÖ (position) ¤Ë¥·¡¼¥¯¤·¤Æ¡¢ +eb_read_text() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ + +

Ê£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷

+ +

+¡ÖÊ£¹ç¸¡º÷¡×(¡ÖÊ£¹ç¸¡º÷¡× ¤ò»²¾È¤Î¤³¤È) ¤Î¤È¤³¤í¤Ç½Ò¤Ù¤¿¤è¤¦¤Ë¡¢ +Ê£¹ç¸¡º÷¤Ç¤Ï¡¢ÆþÎϸì¤Ë ¸õÊä°ìÍ÷ (candidates) ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë +¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤ò¤¢¤é¤«¤¸¤áÎóµó¤·¤Æ¤ª¤­¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥æ¡¼¥¶¤ËÁªÂò¤µ¤»¤ë»ÅÁȤߤǤ¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢¿Í̾¤ò¸¡º÷¤¹¤ë¤Î¤¿¤á¤Ë¡¢¼¡¤Î¤è¤¦¤ÊÊ£¹ç¸¡º÷¤¬¤¢¤Ã¤¿¤È¤·¤Þ¤¹¡£ +

+ +
+
+ÆþÎϸì 0: ¹ñ¡¦ÃÏ°è
+ÆþÎϸì 1: »þÂå
+ÆþÎϸì 2: À­ÊÌ
+ÆþÎϸì 3: ¥­¡¼¥ï¡¼¥É
+ÆþÎϸì 4: ¥­¡¼¥ï¡¼¥É
+
+
+ +

+¤³¤Î¤¦¤Á¡¢ÆþÎϸì 3 ¤Î¡ÖÀ­Ê̡פˤϡ¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤Ï¡ÖÃˡפȡֽ÷¡× +¤Î 2 ¤Ä¤·¤«¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +¤³¤Î¤è¤¦¤Ë¡¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤¬¸Â¤é¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢¸õÊä°ìÍ÷¤¬ÍÑ°Õ +¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¸õÊä°ìÍ÷¤Ï¸¡º÷¤Î¤¿¤á¤Î¥Ç¡¼¥¿¤Ç¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢ÆâÉô¹½Â¤¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤½¤Î¤â¤Î¤Ç¤¹¡£ +¥æ¡¼¥¶¤ËÂФ·¤Æ¸õÊä¤òÎóµ­¤·¤¿¼¨¤·¤¿¥Æ¥­¥¹¥È¤ò¼¨¤·¡¢¤½¤ÎÃæ¤Î°ì¤Ä¤òÁªÂò +¤·¤Æ¤â¤é¤¦¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤·¤«¤â¡¢¸õÊä°ìÍ÷¤Î¥Ç¡¼¥¿¹½Â¤¤Ï¥á¥Ë¥å¡¼¤ÈÈó¾ï¤Ë»÷¤Æ¤ª¤ê¡¢¥á¥Ë¥å¡¼¤Î +¤è¤¦¤Ê³¬Áع½Â¤¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹ +(¡Ö¥á¥Ë¥å¡¼¡× ¤ò»²¾È¤Î¤³¤È)¡£ +¤¿¤È¤¨¤Ð¡¢¾å¤ÎÊ£¹ç¸¡º÷¤ÎÆþÎϸì 2 ¡Ö¹ñ¡¦ÃÏ°è¡×¤Ë¤â¸õÊä¤Î°ìÍ÷¤òÀߤ±¤ë¤È +¤·¤¿¤é¡¢ºÇ½é¤Î³¬Áؤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+* ÆüËÜ (¢ªÁªÂò)
+* ÆüËܰʳ°¤Î¥¢¥¸¥¢ (¢ª¾ÜºÙ)
+* ¥è¡¼¥í¥Ã¥Ñ (¢ª¾ÜºÙ)
+* ËÌ¥¢¥á¥ê¥« (¢ª¾ÜºÙ)
+* ¤½¤Î¾ (¢ª¾ÜºÙ)
+
+
+ +

+¡ÖÆüËܡפòÁª¤Ö¤È¡¢¤½¤³¤ÇÆþÎϸ줬·èÄꤵ¤ì¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢ +¤½¤ì°Ê³°¤Î¹àÌܤˤĤ¤¤Æ¤Ï¤µ¤é¤ËºÙ¤«¤¯Ê¬Îव¤ì¤¿ÁªÂò»è¤¬ÍÑ°Õ¤µ¤ì¤Æ +¤¤¤Þ¤¹¡£ +¤³¤³¤Ç¤Ï¡¢¡ÖËÌ¥¢¥á¥ê¥«¡×¤òÁª¤ó¤Ç¤ß¤Þ¤·¤ç¤¦¡£ +¤¹¤ë¤È¡¢¤µ¤é¤Ë¼¡¤Î¤è¤¦¤Ê¸õÊä°ìÍ÷¤Î¥Ç¡¼¥¿¤¬Ä󼨤µ¤ì¤Þ¤¹¡£ +

+ +
+
+* ¥¢¥á¥ê¥« (¢ªÁªÂò)
+* ¥«¥Ê¥À (¢ªÁªÂò)
+
+
+ +

+¤³¤³¤Ç¡¢¡Ö¥¢¥á¥ê¥«¡×¡Ö¥«¥Ê¥À¡×¤òÁª¤Ö¤È¡¢ÆþÎϸ줬·èÄꤵ¤ì¤Þ¤¹¡£ +

+ +

+¼¡¤Ë¼ÂºÝ¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ¤³¤¦¤·¤¿¸õÊä°ìÍ÷¤ò°·¤¦ÊýË¡¤Ë¤Ä¤¤¤Æ +ÀâÌÀ¤·¤Þ¤¹¡£ +¤Þ¤º¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ê£¹ç¸¡º÷¤ÎÆþÎϸ줬¸õÊä°ìÍ÷¤ò»ý¤Ã¤Æ +¤¤¤ë¤«¤É¤¦¤«¤ò¡¢³Îǧ¤¹¤ëɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£ +eb_multi_entry_candidates() ¤ò»È¤¦¤È¡¢¸õÊä°ìÍ÷¥Ç¡¼¥¿¤Î³«»Ï°ÌÃÖ +¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¸õÊä°ìÍ÷¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð EB_ERR_NO_CANDIDATES ¤ò +ÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢¸õÊä°ìÍ÷¤Î̵ͭ¤âʬ¤«¤ê¤Þ¤¹¡£ +(³«»Ï°ÌÃ֤ϼèÆÀ¤»¤º¤Ë¡¢Í­Ìµ¤À¤±¤òÄ´¤Ù¤¿¤¤¤È¤­¤Ï¡¢ +eb_multi_entry_have_candidates() ¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£) +

+ +
+
+EB_Position position;
+EB_Error_Code err;
+
+/* mulit_id, entry_id ¤Ç¡¢¤É¤ÎÊ£¹ç¸¡º÷¤Î
+ * ²¿ÈÖÌܤÎÆþÎϸì¤Ë¤Ä¤¤¤Æ³Îǧ¤¹¤ë¤Î¤«¤ò»ØÄꤷ¤Þ¤¹¡£*/
+err = eb_multi_entry_candidates(&book, multi_id, entry_id, &position);
+if (err == EB_ERR_NO_CANDIDATES) {
+    /* ¤³¤ÎÆþÎϸì¤Ë¤Ï¡¢¸õÊä°ìÍ÷¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Ê¤¤ */
+   return;
+} else if (err != EB_SUCCESS) {
+    /* ¤½¤ì°Ê³°¤Î¥¨¥é¡¼ */
+   return;
+}
+
+
+ +

+¸å¤Ï¡¢ÆÀ¤é¤ì¤¿°ÌÃÖ (position) ¤Ë¥·¡¼¥¯¤·¤Æ¡¢ +eb_read_text() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +Æɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¤Ç¤Ï¡¢¸õÊä¤È¤Ê¤ë¸ì¤Î¤½¤ì¤¾¤ì¤¬¸õÊ䳫»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¶´¤Þ¤ì¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "ÆüËÜ" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "ÆüËܰʳ°¤Î¥¢¥¸¥¢" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "¥è¡¼¥í¥Ã¥Ñ" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "ËÌ¥¢¥á¥ê¥«" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "¤½¤Î¾" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+
+
+ +

+¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¤Ï¡¢¥Õ¥Ã¥¯¤È¤·¤Æ +EB_HOOK_BEGIN_CANDIDATE ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +½ªÎ»¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ï 2 ¼ïÎढ¤Ã¤Æ¡¢¤µ¤é¤Ë¼¡¤Î³¬Áؤس¤¯¾ì¹ç +¤Ë¸Æ¤Ð¤ì¤ë EB_HOOK_END_CANDIDATE_GROUP ¤È¡¢¤½¤Î¸ì¤¬¤½¤Î¤Þ¤Þ +ÆþÎϸì¤Î¸õÊä¤È¤Ê¤ë¾ì¹ç¤Ë¸Æ¤Ð¤ì¤ë EB_HOOK_END_GROUP_LEAF ¤Ë +ʬ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¼¡¤Î³¬ÁؤΥǡ¼¥¿¤Î³«»Ï°ÌÃ֤ϡ¢½ªÎ»¥·¡¼¥±¥ó¥¹¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ë¡¢°ú¿ô¤È¤·¤Æ +ÅϤäƤ­¤Þ¤¹¡£ +(¤³¤ÎÅÀ¤â¥á¥Ë¥å¡¼¤ÈƱÍͤʤΤǡ¢¥á¥Ë¥å¡¼¤Î²òÀâ¤ò»²¹Í¤Ë¤·¤Æ²¼¤µ¤¤¡£) +

+ +

+½ªÎ»¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç¤Ï¡¢eb_current_candidate() +¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢³«»Ï¥·¡¼¥±¥ó¥¹¤È½ªÎ»¥·¡¼¥±¥ó¥¹¤Î´Ö¤Ë¶´¤Þ¤ì¤¿¡Ö¸õÊä¡×¤Îʸ»úÎó +(¥Ý¥¤¥ó¥¿) ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +
+
+const char *candidate;
+
+candidate = eb_current_candidate(book);
+
+
+ + +

¶èÀڤꥳ¡¼¥É¤ÎÌäÂê

+ +

+ËÜʸ¤Ï¡¢ÀèƬ¤«¤éËöÈø¤Þ¤Ç°ìËܤηҤ¬¤Ã¤¿¥Ç¡¼¥¿Îó¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +±Ñ¸ì¼­Åµ¤Ê¤é¡¢ºÇ½é¤Îñ¸ì `A' ¤«¤éºÇ¸å¤Î `zzz' ¤Þ¤Ç¤ÎÀâÌÀ¤¬¡¢¤¹¤Ù¤Æ°ì¤Ä¤Î +¡ÖËÜʸ¡×¤ÎÃæ¤Ë½ñ¤«¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+°ìÈ̤ˡ¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¤¢¤ëñ¸ì¤ò¸¡º÷¤·¤¿ºÝ¤Ï¡¢ËÜʸ¤ÎÃ椫¤é +¤½¤Îñ¸ì¤òÀâÌÀ¤·¤¿Éôʬ¤À¤±¤òÈ´¤­½Ð¤·¤Æ½ÐÎϤ¹¤ë¤³¤È¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£ +¤¿¤È¤¨¤Ð¡¢`dictionary' ¤È¤¤¤¦Ã±¸ì¤ò°ú¤¤¤¿¾ì¹ç¡¢¼¡¤Î¤è¤¦¤Êʸ¾Ï¤¬½ÐÎϤµ¤ì¤ë +»ö¤¬´üÂÔ¤µ¤ì¤Þ¤¹¡£ +¤½¤Î¼¡¤ä¡¢¼¡¤Î¼¡¤Îñ¸ì¤ÎÀâÌÀ¤Þ¤Ç±ä¡¹¤Èɽ¼¨¤µ¤ì¤ë¤³¤È¤ò¡¢¤ª¤½¤é¤¯ÂçȾ¤Î +¥æ¡¼¥¶¤Ï˾¤Þ¤Ê¤¤È¦¤Ç¤¹¡£ +

+ +
+
+dictionary [̾] (ʣ: dictionaries)
+¼­Åµ¡¢»öŵ
+[ÎàµÁ] lexicon, glossary (ÍѸ켭ŵ), encyclopedia (É´²Ê»öŵ)
+
+
+ +

+¤·¤«¤·¡¢º¤¤Ã¤¿¤³¤È¤Ë CD-ROM ½ñÀҤˤϡ¢Ã±¸ì¤ÎÀâÌÀ¤Î½ª¤ï¤ê¤ò¼¨¤¹°õ +(¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹) ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +¤Ä¤Þ¤ê¡¢¤¢¤ë¸ì¤ÎÀâÌÀÉôʬ¤òÀµ³Î¤ËÈ´¤­½Ð¤¹¤³¤È¤Ï¡¢ÅŻҥ֥寤ä EPWING ¤Ç¤Ï +ÉÔ²Äǽ¤Ê¤Î¤Ç¤¹¡£ +

+ +

+¤·¤«¤·¤Ê¤¬¤é¡¢¹¬¤¤¤Ë¤â»ÔÈΤνñÀҤο¤¯¤Ë¤Ï¡¢Ã±¸ì¤ÎÀâÌÀ¤Î½ªÎ»°ÌÃ֤ˤÀ¤± +½Ð¸½¤¹¤ë¡¢ÆÃÍ­¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬Â¸ºß¤·¤Þ¤¹¡£ +¤â¤Á¤í¤ó¡¢¤³¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ÏËÜÍè¡Öñ¸ì¤ÎÀâÌÀ¤Î½ªÎ»¡×¤ò¼¨¤¹¤â¤Î +¤Ç¤Ï¤Ê¤¯Ê̤ÎÍÑÅӤȤ·¤ÆÍѤ¤¤ë¤Î¤Ç¤¹¤¬¡¢¡Ö½ªÎ»°ÌÃ֡פȤ·¤ÆÂåÍѤǤ­¤ë +¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¤³¤Î¡Ö½ªÎ»°ÌÃ֡פΰõ¤Ë»È¤¨¤ë¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î +¤³¤È¤ò¡¢¶èÀڤꥳ¡¼¥É (stop code) ¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ï¶èÀڤꥳ¡¼¥É¤ò¼«Æ°È½Äꤹ¤ëµ¡Ç½¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢È½Äê¤Ï +´°àú¤Ç¤Ï¤Ê¤¤¤Î¤Ç³°¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ +³°¤ì¤ë¤ÈËÜʸ¤¬ÅÓÃæ¤ÇÅÓÀڤ줿¤ê¡¢ËÜʸ¤Î³¤­¤¬±ä¡¹¤È½ÐÎϤµ¤ì¤¿¤ê¤·¤Þ¤¹¡£ +

+ +

+¤½¤Î¾ì¹ç¤Ï¡¢ÌÀ¼¨Åª¤Ë appendix +(¾Ü¤·¤¯¤Ï ebappendix ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öappendix (ÉÕÏ¿) ¤È¤Ï¡×¤ò»²¾È¤Î¤³¤È) +¤Ç¶èÀڤꥳ¡¼¥É¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ²óÈò¤Ç¤­¤ë½ñÀҤ⤢¤ê¤Þ¤¹¤¬¡¢ +»ÄÇ°¤Ê¤¬¤é¶èÀڤꥳ¡¼¥É¤¬¤Þ¤Ã¤¿¤¯Â¸ºß¤·¤Ê¤¤½ñÀҤ⾯¿ô¤Ê¤¬¤é¸ºß¤·¤Þ¤¹¡£ +¶èÀڤꥳ¡¼¥É¤ò»ý¤¿¤Ê¤¤½ñÀÒ¤ËÂФ·¤Æ¡¢Í­¸ú¤ÊÂнèÊýË¡¤Ïº£¤Î¤È¤³¤í¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+eb_read_text() ¤Ë¤è¤ëËÜʸ¤Î¼èÆÀ¤Ç¤Ï¡¢¶èÀڤꥳ¡¼¥É¤¬¸¡½Ð¤µ¤ì¤¿ +»þÅÀ¤ÇÆɤ߹þ¤ß¤ò»ß¤á¤Þ¤¹¡£ +¤µ¤é¤Ë·«¤êÊÖ¤· eb_read_text() ¤ò¸Æ¤ó¤Ç¤â¡¢¶èÀڤꥳ¡¼¥É¤è¤êÀè¤Î +ËÜʸ¤ÏÆɤ߹þ¤á¤Þ¤»¤ó¡£ +

+ +

+¶èÀڤꥳ¡¼¥É¤ò¸¡½Ð¤·¤¿¤«¤É¤¦¤«¤ÎȽÄê¤Ë¤Ï¡¢eb_is_text_stopped() +¤ò»È¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ºÇ¸å¤ËÆɤ߹þ¤ß¤ò¹Ô¤Ã¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÃæ¤Ë¡¢¶èÀڤꥳ¡¼¥É¤ò +¸¡½Ð¤·¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ËÜʸ°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤â¶èÀڤꥳ¡¼¥É¤Î³µÇ°¤Ï¸ºß¤·¤Þ¤¹¤Î¤Ç¡¢ +eb_is_text_stopped() ¤ò»È¤Ã¤Æ¶èÀڤꥳ¡¼¥É¤ò¸¡½Ð¤Ç¤­¤Þ¤¹¡£ +¤·¤«¤·¡¢ËÜʸ°Ê³°¤Ç¤Ï EB ¥é¥¤¥Ö¥é¥ê¤¬³Î¼Â¤Ë¶èÀÚ¤ê¤òȽÊ̤Ǥ­¤Þ¤¹¤Î¤Ç¡¢ +¸íȽÄê¤ÎÌäÂê¤Ïµ¯¤­¤Þ¤»¤ó¡£ +

+ +

+¸«½Ð¤·¤Ë¤ª¤±¤ë¶èÀÚ¤ê¤Ï¡¢¤½¤ì¤¾¤ì¤Îñ¸ì¤Î¸«½Ð¤·¤Î½ªÎ»°ÌÃ֤Ȥʤê¤Þ¤¹¡£ +¥á¥Ë¥å¡¼¤ª¤è¤ÓÊ£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷¤Ç¤Ï¡¢³¬Áز½¤µ¤ì¤¿¸Ä¡¹¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿ +¤Î½ªÎ»°ÌÃ֤ǶèÀÚ¤ê¤ÈȽÄꤵ¤ì¤Þ¤¹¡£ +(Ʊ°ì³¬ÁؤËÊ£¿ô¸Ä¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿¤¬¤¢¤Ã¤Æ¤â¡¢¸Ä¡¹¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿¤Ç +¶èÀÚ¤é¤ì¤Þ¤¹¡£) +Ãøºî¸¢É½¼¨¤Ç¤Ï¡¢Á´Ê¸¤Î½ªÎ»°ÌÃ֤ǶèÀÚ¤ê¤ÈȽÄꤵ¤ì¤Þ¤¹¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     text <book-path> <subbook-index> <number>
+ * Îã:
+ *     text /cdrom 0 10
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢ËÜʸ
+ *     ¤ÎÀèƬ¤«¤é <number> ¸Äʬ¤Îñ¸ì¤ÎÀâÌÀ¤ò½ÐÎϤ·¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/text.h>
+
+#define MAXLEN_TEXT 1023
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    int subbook_index;
+    EB_Position text_position;
+    char text[MAXLEN_TEXT + 1];
+    ssize_t text_length;
+    int text_count;
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 4) {
+        fprintf(stderr, "Usage: %s book-path subbook-index number\n",
+            argv[0]);
+        exit(1);
+    }
+    text_count = atoi(argv[3]);
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    error_code = eb_set_subbook(&book, subbook_list[subbook_index]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ¥Æ¥­¥¹¥È¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/
+    error_code = eb_text(&book, &text_position);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get text information, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ¥Æ¥­¥¹¥È¤ò¥·¡¼¥¯¡£*/
+    error_code = eb_seek_text(&book, &text_position);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to seek text, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    i = 0;
+    while (i < text_count) {
+        /* ¥Æ¥­¥¹¥È¤ò¼èÆÀ¡£*/
+        error_code = eb_read_text(&book, NULL, NULL, NULL, MAXLEN_TEXT,
+            text, &text_length);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to read text, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+        fputs(text, stdout);
+
+        if (!eb_is_text_stopped(&book))
+            continue;
+
+        fputs("\n----------------------------------------\n", stdout);
+
+        /* ¼¡¤Îñ¸ì¤ÎÀâÌÀ¤Ø°ÜÆ°¡£*/
+        error_code = eb_forward_text(&book, NULL);
+        if (error_code == EB_ERR_END_OF_CONTENT)
+            fputs("\n[END]\n", stdout);
+        else if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to read text, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+        i++;
+    }
+        
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Hook_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Hook_Hook ¤Ï¡¢¥Õ¥Ã¥¯¤ÎÀßÄê°ÌÃÖ¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Á´Éô¤Ç EB_NUMBER_OF_HOOKS ¸Ä¤Î¥Õ¥Ã¥¯¥³¡¼¥É +¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +ÄêµÁ¤µ¤ì¤Æ¤¤¤ëÀßÄê°ÌÃÖ¥³¡¼¥É¤Î°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¼¡¤ÎÀá (¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È) +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

EB_Hook ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Hook ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É¤È¤½¤ì¤ËÂбþ¤¹¤ë¥Õ¥Ã¥¯´Ø¿ô +¤ÎÁȤòɽ¤·¤Þ¤¹¡£ +ÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Hook_Struct EB_Hook;
+
+struct EB_Hook_Struct {
+    EB_Hook_Code code;
+    EB_Error_Code (*FUNC)(EB_Book *, EB_Appendix *, void *,
+        EB_Hook_Code, int, const unsigned int *);
+};
+
+
+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ + +

EB_Hookset ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Hookset ¤Ï¡¢¥Õ¥Ã¥¯°ì¼°¤òɽ¤·¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤ÇÍøÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤ËÂФ·¤Æ¡¢¤É¤Î¤è¤¦¤Ê +¥Õ¥Ã¥¯´Ø¿ô¤ò»ØÄꤹ¤ë¤Î¤«¤òµ­Ï¿¤¹¤ë¤¿¤á¤Î·¿¤Ç¤¹¡£ +

+ +

+EB_Hookiset ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ï¡¢¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¤¬ÍÑ°Õ +¤·¤Æ¤¤¤ë´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë +ÂФ·¤Æ eb_initialize_hookset() ¤ò¸Æ¤ó¤Ç½é´ü²½¤·¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +

+ + +

¥Õ¥Ã¥¯´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤Ç¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î»ÅÍͤˤĤ¤¤Æµ­¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ eb_read_text() ¤ª¤è¤Ó +eb_read_heading() ¤Î¥×¥í¥È¥¿¥¤¥×¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code
+eb_read_text(EB_Book *book, EB_Appendix *appendix,
+    EB_Hookset *hookset, void *container, size_t text_max_length,
+    char *text, ssize_t *text_length)
+
+
+ +

+°ìÊý¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code
+hook_function(EB_Book *book, EB_Appendix *appendix, void *container,
+    EB_Hook_Code code, int argc, const unsigned int *argv);
+
+
+ +

+°ú¿ô book, appendix, container ¤Ï¡¢ +eb_read_text() ¤¢¤ë¤¤¤Ï eb_read_heading() ¤Ë +ÅϤµ¤ì¤¿Ãͤ¬¤½¤Î¤Þ¤Þ¥Õ¥Ã¥¯´Ø¿ô¤Ë¤âÅϤäƤ­¤Þ¤¹¡£ +

+ +

+appendix ¤È¤¤¤¦¤Î¤Ï¡¢½ñÀÒ¤ËÂФ¹¤ëÊä½õ¥Ç¡¼¥¿¤òÄ󶡤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È +¤Ç¤¹ +(appendix (ÉÕÏ¿) ¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯¤Ï +ebappendix ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öappendix (ÉÕÏ¿) ¤È¤Ï¡×¤ò»²¾È¤Î¤³¤È)¡£ + +

+°ú¿ô container ¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¥Õ¥Ã¥¯´Ø¿ô¤Ë +²¿¤«¥Ç¡¼¥¿¤òÅϤ·¤¿¤¤¤È¤­¤Ë»È¤¤¤Þ¤¹¡£ +

+ +

+ºÇ¸å¤Î argc ¤È argv ¤Ë¤Ï¡¢²Ã¹©Á°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬ +ÅϤµ¤ì¤Þ¤¹¡£ +ʸ»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤Ï¡¢Ê¸»ú¥³¡¼¥ÉÈֹ椬ÅϤäƤ­¤Þ¤¹¡£ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤Ï¡¢¤½¤Î¥·¡¼¥±¥ó¥¹¼«ÂΤΥ³¡¼¥É +(1f ¤Ç»Ï¤Þ¤ë¥³¡¼¥É) ¤È¡¢¤â¤·¤¢¤ì¤Ð¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î +°ú¿ô¤ò¤¬ÅϤäƤ­¤Þ¤¹¡£ +¸Ä¡¹¤Î¥Õ¥Ã¥¯¤Ë¤ª¤¤¤Æ¡¢argc ¤È argv ¤Ë¤É¤¦¤è¤¦¤ÊÃͤ¬ +ÅϤäƤ¯¤ë¤Î¤«¡¢¾Ü¤·¤¯¤Ï ¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤ÎÃ椫¤é¼¡¤Ëµó¤²¤ë´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ø¤Î +½ñ¤­¹þ¤ß¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
    +
  • eb_write_text() +
  • eb_write_text_string() +
  • eb_write_text_byte1() +
  • eb_write_text_byte2() +
+ +

+¤³¤ì¤é¤Î´Ø¿ô¤Î»ÅÍͤ˴ؤ·¤Æ¾Ü¤·¤¯¤Ï +¡Ö[¥Æ¥­¥¹¥È¥Ç¡¼¥¿] ´Ø¿ô¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤¬ EB_SUCCESS °Ê³°¤ÎÃͤòÊÖ¤¹¤È¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò +¸Æ¤Ó½Ð¤·¤¿ eb_read_text(), eb_read_heading() +¤Ï¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤â¤Î¤È¸«¤Ê¤·¡¢¤½¤Î¥¨¥é¡¼¥³¡¼¥É¤ò¤½¤Î¤Þ¤Þ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ËÊÖ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç¤Ï¡¢book ¤ËÂФ·¤Æ°Ê²¼¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤Ï +¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÎÆ°ºî¤Ï¡¢Ì¤ÄêµÁ¤Ç¤¹¡£ +

+ +
    +
  • eb_seek_text() +
  • eb_read_text() +
  • eb_read_heading() +
  • eb_read_rawtext() +
  • eb_forward_text() +
  • eb_backward_text() +
  • eb_set_subbook() +
  • eb_unset_subbook() +
  • eb_load_all_subbook() +
  • eb_bind() +
  • eb_finalize_book() +
  • eb_finalize_library() +
+ + +

¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Õ¥Ã¥¯¥³¡¼¥É¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ + +

Äê¿ô EB_HOOK_NULL

+ +

+EB_HOOK_NULL ¤Ï¸·Ì©¤Ë¤Ï¥Õ¥Ã¥¯¤Ç¤Ï¤Ê¤¯¡¢ +eb_set_hooks() ¤ÇÊ£¿ô¤Î¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤¹¤ëºÝ¤Ë¡¢ +EB_Hook ÇÛÎó¤ÎËöÈø¤ÎÍ×ÁǤò¼¨¤¹¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +¤³¤Î¥Õ¥Ã¥¯¥³¡¼¥É¤ËÂФ·¤Æ¡¢¥Õ¥Ã¥¯´Ø¿ô¤ÏÅÐÏ¿¤Ç¤­¤Þ¤»¤ó¡£ +

+ +

+¾Ü¤·¤¯¤Ï¡¢¡Ö[¥Æ¥­¥¹¥È¥Ç¡¼¥¿] ¥Õ¥Ã¥¯´Ø¿ô¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

Äê¿ô EB_HOOK_INITIALIZE

+ +

+EB_HOOK_INITIALIZE ¤Ï¡¢eb_seek_text() ¤ò +¸Æ¤Ó½Ð¤·¤¿Ä¾¸å¤ÎºÇ½é¤Î eb_read_text(), +eb_read_heading() ¤Î¸Æ¤Ó½Ð¤·»þ¤Ë½èÍý¤µ¤ì¤Þ¤¹¡£ +²¿¤«½é´ü²½½èÍý¤ò¤·¤¿¤¤¤È¤­¤Ë¡¢»È¤¦¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 0 ¤Ç¤¹¡£ +¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_NARROW

+ +

Äê¿ô EB_HOOK_END_NARROW

+ +

+EB_HOOK_BEGIN_NARROW ¤ª¤è¤Ó EB_HOOK_END_NARROW +¤Ï¡¢È¾³Ñɽ¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_NARROW ¤Ê¤é 0x1f04¡¢ +EB_HOOK_END_NARROW ¤Ê¤é 0x1f05 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_SUBSCRIPT

+ +

Äê¿ô EB_HOOK_END_SUBSCRIPT

+ +

+EB_HOOK_BEGIN_SUBSCRIPT ¤ª¤è¤Ó +EB_HOOK_END_SUBSCRIPT ¤Ï¡¢²¼ÉÕ¤­É½¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤ÎÃͤϥ¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_SUBSCRIPT ¤Ê¤é 0x1f06¡¢ +EB_HOOK_END_SUBSCRIPT ¤Ê¤é 0x1f07 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë +²¿¤â½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_SET_INDENT

+ +

+EB_HOOK_SET_INDENT ¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¹ÔƬ¤Î»ú²¼¤²»ØÄê¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f09 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤¬¡¢»ú²¼¤²¤ÎÎ̤òɽ¤·¤Þ¤¹¡£ +

+ +

+»ú²¼¤²¤ÎÎ̤Îñ°Ì¤¬¡¢²¿¤Ç¤¢¤ë¤Î¤«¤ÏÉÔÌÀ¤Ç¤¹¡£ +¤Þ¤¿¡¢»ú²¼¤²Î̤κǾ®Ãͤϡ¢0 ¤Î¾ì¹ç¤È 1 ¤Î¾ì¹ç¤ÎÆóÄ̤꤬¤¢¤ê¤Þ¤¹¡£ +¤¤¤º¤ì¤Ë¤·¤í¡¢»ú²¼¤²¤Ï 1 ¤º¤ÄÁý¤¨¤¿¤ê¸º¤Ã¤¿¤ê¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_NEWLINE

+ +

+EB_HOOK_SET_NEWLINE ¤Ï¡¢²þ¹Ô¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë +ÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤¿¤À¤·¡¢eb_read_heading() (¸«½Ð¤·¤ÎÆɤ߹þ¤ß) ¤Ë¤è¤ë½èÍý¤Ç¤Ï¡¢ +²þ¹Ô¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ï¶èÀڤꥳ¡¼¥É¤È¤·¤Æ¤â°·¤ï¤ì¤Þ¤¹¡£ +¤½¤Î¤¿¤á¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬¸«¤Ä¤«¤Ã¤Æ¤â¤³¤Î¥Õ¥Ã¥¯¤Î½èÍý¤Ï¹Ô¤ï¤ì¤º¡¢ +¤¿¤À¤Á¤ËÆɤ߹þ¤ß½èÍý¤Ï½ªÎ»¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f0a ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¤¬¡¢eb_initialize_hookset() ¤Ç +EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ë¤È¡¢¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ +eb_hook_newline() ¤¬¼«Æ°Åª¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_SUPERSCRIPT

+ +

Äê¿ô EB_HOOK_END_SUPERSCRIPT

+ +

+EB_HOOK_BEGIN_SUPERSCRIPT ¤ª¤è¤Ó +EB_HOOK_END_SUPERSCRIPT ¤Ï¡¢¾åÉÕ¤­É½¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_SUPERSCRIPT ¤Ê¤é 0x1f0e¡¢ +EB_HOOK_END_SUPERSCRIPT ¤Ê¤é 0x1f0f ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_NO_NEWLINE

+ +

Äê¿ô EB_HOOK_END_NO_NEWLINE

+ +

+EB_HOOK_BEGIN_NO_NEWLINE ¤ª¤è¤Ó +EB_HOOK_END_NO_NEWLINE ¤Ï¡¢²þ¹Ô¶Ø»ß¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_NO_NEWLINE ¤Ê¤é 0x1f10¡¢ +EB_HOOK_END_NO_NEWLINE ¤Ê¤é 0x1f11 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_EMPHASIS

+ +

Äê¿ô EB_HOOK_END_EMPHASIS

+ +

+EB_HOOK_BEGIN_EMPHASIS ¤ª¤è¤Ó EB_HOOK_END_EMPHASIS +¤Ï¡¢¶¯Ä´É½¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_EMPHASIS ¤Ê¤é 0x1f12¡¢ +EB_HOOK_END_EMPHASIS ¤Ê¤é 0x1f13 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_CANDIDATE

+ +

Äê¿ô EB_HOOK_END_CANDIDATE_LEAF

+ +

Äê¿ô EB_HOOK_END_CANDIDATE_GROUP

+ +

+EB_HOOK_BEGIN_CANDIDATE ¤Ï¡¢Ê£¹ç¸¡º÷¤Î¸õÊä¤È¤Ê¤ë¸ì¤Î³«»Ï¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤½¤ì¤ËÂФ·¤Æ¡¢½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ï 2 ¼ïÎà +¤¢¤ê¤Þ¤¹¡£ +°ì¤Ä¤Ï EB_HOOK_END_CANDIDATE_LEAF ¤Ç¡¢¸õÊä¤È¤Ê¤ë¸ì¤¬¼ÂºÝ¤Ë +¸¡º÷¤ÎÆþÎϸì¤È¤·¤Æ»È¤¨¤ë¤â¤Î¤Ç¤¢¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +¤â¤¦°ì¤Ä¤Ï EB_HOOK_END_CANDIDATE_GROUP ¤Ç¡¢¸õÊä¤È¤Ê¤ë¸ì¤Ï +¤µ¤é¤ËºÙ¤«¤¤ÁªÂò»è¤Ëʬ¤«¤ì¤Æ¤¤¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +(¤·¤¿¤¬¤Ã¤Æ¡¢¸õÊä¤È¤Ê¤ë¸ì¤ò¸¡º÷¤ÎÆþÎϸì¤È¤·¤Æ»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£) +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_CANDIDATES ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f43 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_END_CANDIDATE_LEAF ¤ª¤è¤Ó +EB_HOOK_END_CANDIDATE_GROUP ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É +¤½¤Î¤â¤Î¤Ç¡¢0x1f63 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¥Õ¥Ã¥¯ EB_HOOK_END_CANDIDATE_GROUP ¤Î argv[1] +¤È argv[2] ¤Ï¡¢¼¡¤Î³¬ÁؤθõÊä°ìÍ÷¥Ç¡¼¥¿¤Î³«»Ï¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +¥Õ¥Ã¥¯ EB_HOOK_END_CANDIDATE_LEAF ¤Ç¤Ï¡¢argv[1], +argv[2] ¤Ï 2 ¤Ä¤È¤â 0 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_REFERENCE

+ +

Äê¿ô EB_HOOK_END_REFERENCE

+ +

+EB_HOOK_BEGIN_REFERENCE ¤ª¤è¤Ó +EB_HOOK_END_REFERENCE ¤Ï¡¢ÊÌ°ÌÃ֤Υƥ­¥¹¥È¥Ç¡¼¥¿¤Î»²¾È³«»Ï¤È +½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_REFERENCE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f42 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_REFERENCE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc +¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f62 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢»²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_KEYWORD

+ +

Äê¿ô EB_HOOK_END_KEYWORD

+ +

+EB_HOOK_BEGIN_KEYWORD ¤ª¤è¤Ó EB_HOOK_END_KEYWORD ¤Ï¡¢ +¸¡º÷¥­¡¼¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_KEYWORD ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f41 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_KEYWORD ¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Ë 1 ¸Ä¤Î°ú¿ô¤òÅϤ·¤Þ¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f61 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_DECORATION

+ +

Äê¿ô EB_HOOK_END_DECORATION

+ +

+EB_HOOK_BEGIN_DECORATION ¤ª¤è¤Ó +EB_HOOK_END_DECORATION ¤Ï¡¢Ê¸»ú½¤¾þ¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_DECORATION ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1fe0 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_KEYWORD ¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Ë 1 ¸Ä¤Î°ú¿ô¤òÅϤ·¤Þ¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1fe1 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_NARROW_FONT

+ +

Äê¿ô EB_HOOK_WIDE_FONT

+ +

+EB_HOOK_NARROW_FONT ¤ª¤è¤Ó EB_HOOK_WIDE_FONT ¤Ï¡¢ +¤½¤ì¤¾¤ìȾ³Ñ³°»ú¤ÈÁ´³Ñ³°»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢³°»ú¤Îʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¤¬¡¢eb_initialize_hookset() ¤Ç +EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ë¤È¡¢¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ +eb_hook_narrow_character_text() ¤ª¤è¤Ó +eb_hook_wide_character_text() ¤¬¼«Æ°Åª¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_ISO8859_1

+ +

+EB_HOOK_ISO8859_1 ¤Ï¡¢ISO 8859-1 (¥é¥Æ¥óʸ»ú 1) ʸ»ú¤ËÂФ¹¤ë +¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢ISO 8859-1 ¤Îʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢argv[0] ¤ÎÃͤò¤½¤Î¤Þ¤Þ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ê¸»ú¤Ï¤½¤Î¤Þ¤Þ ISO 8859-1 ¤È¤·¤Æ¡¢1 ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬ÍøÍѤµ¤ì¤ë¤Î¤Ï¡¢½èÍýÃæ¤Î½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ +EB_CHARCODE_ISO8859_1 ¤Î¾ì¹ç¤À¤±¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_NARROW_JISX0208

+ +

Äê¿ô EB_HOOK_WIDE_JISX0208

+ +

+EB_HOOK_NARROW_JISX0208 ¤È EB_HOOK_WIDE_JISX0208 +¤Ï¡¢È¾³Ñ¤ª¤è¤ÓÁ´³Ñ¤Î JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ʸ»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢JIS X 0208 ¤Îʸ»ú¤òÆüËܸì EUC ¤Çɽ¸½¤·¤¿¤È¤­¤Î +ʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢argv[0] ¤ÎÃͤò¤½¤Î¤Þ¤Þ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ê¸»ú¤Ï¤½¤Î¤Þ¤ÞÆüËܸì EUC ¤È¤·¤Æ¡¢2 ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬ÍøÍѤµ¤ì¤ë¤Î¤Ï¡¢ +½èÍýÃæ¤Î½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ EB_CHARCODE_JISX0208 ¤« +EB_CHARCODE_JISX0208_GB2312 ¤Î¾ì¹ç¤À¤±¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_GB2312

+ +

+EB_HOOK_GB2312 ¤Ï¡¢GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ʸ»ú¤ËÂФ¹¤ë +¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢GB 2312 ¤Îʸ»ú¤òÃæ¹ñ¸ì EUC ¤Çɽ¸½¤·¤¿¤È¤­¤Î +ʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢argv[0] ¤ÎÃͤò¤½¤Î¤Þ¤Þ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ê¸»ú¤Ï¤½¤Î¤Þ¤ÞÃæ¹ñ¸ì EUC ¤È¤·¤Æ¡¢2 ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬ÍøÍѤµ¤ì¤ë¤Î¤Ï¡¢½èÍýÃæ¤Î½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ +EB_CHARCODE_JISX0208_GB2312 ¤Î¾ì¹ç¤À¤±¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_MONO_GRAPHIC

+ +

Äê¿ô EB_HOOK_END_MONO_GRAPHIC

+ +

+EB_HOOK_BEGIN_MONO_GRAPHIC ¤ª¤è¤Ó +EB_HOOK_END_MONO_GRAPIHC ¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤγ«»Ï¤È½ªÎ»¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MONO_GRAPHIC ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 4 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f32 ¤« 0x1f44 ¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï¡¢¿ÞÈǤι⤵¤ÈÉý +(¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +¤¿¤À¤·¡¢ÅŻҥ֥寤Υâ¥Î¥¯¥í¿ÞÈÇ (ºÇ½é¤Î°ú¿ô¤¬ 0x1f32 ¤Î +¾ì¹ç) ¤Ë¤Ï¡¢¿ÞÈǤι⤵¤ÈÉý¤Î¾ðÊ󤬷礱¤Æ¤¤¤ë¤Î¤Ç¡¢ÃͤϤɤÁ¤é¤â 0 ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_MONO_GRAPHIC ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¤¹¡£ +EB_HOOK_BEGIN_MONO_GRAPHIC ¤Î argv[0] ¤¬ +0x1f32 ¤Ê¤é¡¢EB_HOOK_END_MONO_GRAPHIC ¤Î +argv[0] ¤Ï 0x1f52 ¤Ë¤Ê¤ê¡¢0x1f44 +¤Ê¤é 0x1f64 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¿ÞÈǥǡ¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_GRAY_GRAPHIC

+ +

Äê¿ô EB_HOOK_END_GRAY_GRAPHIC

+ +

+¤³¤ì¤é¤Î¥Õ¥Ã¥¯Ì¾¾Î¤Ï¡¢¥°¥ì¡¼¥¹¥±¡¼¥ë¿ÞÈǤΤ¿¤á¤ËͽÌ󤵤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ +ËܥС¼¥¸¥ç¥ó¤Î EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¤Þ¤ÀÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_COLOR_BMP

+ +

Äê¿ô EB_HOOK_BEGIN_COLOR_JPEG

+ +

Äê¿ô EB_HOOK_END_COLOR_GRAPHIC

+ +

+EB_HOOK_BEGIN_COLOR_BMP ¤È EB_HOOK_COLOR_JPEG +¤Ï¡¢¤½¤ì¤¾¤ì BMP ·Á¼°¤È JPEG ·Á¼°¤Î¥«¥é¡¼¿ÞÈǤγ«»Ï¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +³«»Ï¤Î¥Õ¥Ã¥¯¤Ï BMP ¤È JPEG ¤È¤Ç¥Õ¥Ã¥¯¤¬Ê¬¤«¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢½ªÎ»¤Î +¥Õ¥Ã¥¯¤Ï¶¦Ä̤ǡ¢EB_HOOK_END_COLOR_GRAPIHC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_COLOR_BMP ¤È +EB_HOOK_COLOR_JPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï +4 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f4d ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï¡¢¿ÞÈǤÎÉý¤È¹â¤µ +(¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_END_COLOR_BMP ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f6d ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¿ÞÈǥǡ¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥«¥é¡¼¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_IN_COLOR_BMP

+ +

Äê¿ô EB_HOOK_BEGIN_IN_COLOR_JPEG

+ +

Äê¿ô EB_HOOK_END_IN_COLOR_GRAPHIC

+ +

+EB_HOOK_BEGIN_IN_COLOR_BMP ¤È EB_HOOK_IN_COLOR_JPEG ¤Ï¡¢ +¤½¤ì¤¾¤ì BMP ·Á¼°¤È JPEG ·Á¼°¤Î¥¤¥ó¥é¥¤¥ó¥«¥é¡¼¿ÞÈǤγ«»Ï¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +³«»Ï¤Î¥Õ¥Ã¥¯¤Ï BMP ¤È JPEG ¤È¤Ç¥Õ¥Ã¥¯¤¬Ê¬¤«¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢½ªÎ»¤Î +¥Õ¥Ã¥¯¤Ï¶¦Ä̤ǡ¢EB_HOOK_END_IN_COLOR_GRAPIHC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_IN_COLOR_BMP ¤È +EB_HOOK_IN_COLOR_JPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc +¤Ï 4 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f3c ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï¡¢¿ÞÈǤÎÉý¤È¹â¤µ +(¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_END_IN_COLOR_BMP ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f5c ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¿ÞÈǥǡ¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥«¥é¡¼¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_CLICKABLE_AREA

+ +

Äê¿ô EB_HOOK_END_CLICKABLE_AREA

+ +

+EB_HOOK_BEGIN_CLICKABLE_AREA ¤Ï¡¢¥«¥é¡¼¿ÞÈǤª¤è¤Ó¥¤¥ó¥é¥¤¥ó¥«¥é¡¼¿ÞÈÇÆâ¤ÎÆÃÄê¶ë·ÁÎΰè¤ËÂФ·¤Æ¡¢»²¾ÈÀè¾ðÊó¤òɽ¸½¤·¤¿³«»Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +ƱÍͤˡ¢EB_HOOK_END_CLICKABLE_AREA ¤Ï½ªÎ»¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_CLICKABLE_AREA ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 7 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f4f ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¤½¤ì¤¾¤ì¶ë·ÁÎΰè¤Î³«»Ï +x, y ºÂɸ¤òɽ¤·¤Þ¤¹¡£ +¤½¤ì¤¾¤ì¶ë·ÁÎΰè¤Î³«»Ï x, y ºÂɸ¤òɽ¤·¤Þ¤¹¡£ +¥«¥é¡¼¿ÞÈǤκ¸¾å¤ÎºÂɸ¤¬ (0, 0) ¤Ç¤¹¡£ +ƱÍͤˡ¢argv[3] ¤È argv[4] ¤¬¿ÞÈǤα¦Êý¸þ¤Ø¤Î +Éý¤È¡¢²¼Êý¸þ¤Ø¤Î¹â¤µ¤òɽ¤·¤Þ¤¹¡£ +ºÇ¸å¤Î argv[5] ¤È argv[6] ¤¬»²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈÇ
+¡Ê£°¡¤£°¡Ë
+¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡Ê£ø¡¤£ù¡Ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¹â¤µ¢¬¡¡¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¶ë·ÁÎΰ衡¡¡¡¡¡¡¡¡¨¢¡¡¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡Éý¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¢«¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨«¢ª¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢­¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+EB_HOOK_END_CLICKABLE_AREA ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f6f ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+»²¾ÈÀè¾ðÊó¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_WAVE

+ +

Äê¿ô EB_HOOK_END_WAVE

+ +

+EB_HOOK_BEGIN_WAVE ¤ª¤è¤Ó EB_HOOK_END_WAVE ¤Ï¡¢ +WAVE (PCM) ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë +¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_WAVE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 6 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f4a ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï²»À¼¥Ç¡¼¥¿¤Î³«»Ï°ÌÃ֤Π+¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¡¢argv[4] ¤È argv[5] ¤Ï +½ªÎ»°ÌÃ֤Υڡ¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤ò¤½¤ì¤¾¤ìɽ¤·¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_WAVE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï +1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f6a ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+²»À¼¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖWAVE ²»À¼¡× +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_MPEG

+ +

Äê¿ô EB_HOOK_END_MPEG

+ +

+EB_HOOK_BEGIN_MPEG ¤ª¤è¤Ó EB_HOOK_END_MPEG ¤Ï¡¢ +MPEG ·Á¼°¤ÎÆ°²è¥Ç¡¼¥¿¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯ +¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 6 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f39 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¡Á argv[5] ¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾¤ò +¥¨¥ó¥³¡¼¥É¤·¤¿¿ôÃÍÎó¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_MPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï +1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f59 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+Æ°²è¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖMPEG Æ°²è¡× +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

¥Õ¥Ã¥¯¥»¥Ã¥ÈÁàºî´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ + +

void eb_initialize_hookset (EB_Hookset *hookset)

+ +

+´Ø¿ô initialize_hookset() ¤Ï¡¢hookset ¤Î»Ø¤¹ +EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_Hookiset ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò +¸Æ¤ÖÁ°¤Ë¡¢ +ɬ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ºÆÅÙ +eb_initialize_hookset() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢³Æ¥Õ¥Ã¥¯¤Î½é´üÃͤò¼¡¤Î¤è¤¦¤Ë¥»¥Ã¥È¤·¤Þ¤¹¡£ +

+ + + + + + + + + + + + + + +
¥Õ¥Ã¥¯ + ¥Õ¥Ã¥¯´Ø¿ô +
EB_HOOK_NARROW_JISX0208 + eb_hook_euc_to_ascii() +
EB_HOOK_NARROW_FONT + eb_hook_narrow_character_text() +
EB_HOOK_WIDE_FONT + eb_hook_wide_character_text() +
EB_HOOK_NEWLINE + eb_hook_newline() +
¾åµ­°Ê³°¤Î¥Õ¥Ã¥¯ + NULL (¥Õ¥Ã¥¯´Ø¿ô¤Ê¤·) +
+ + +

EB_Error_Code eb_finalize_hookset (EB_Hookset *hookset)

+ +

+´Ø¿ô eb_finalize_hookset() ¤Ï¡¢hookset ¤¬»Ø¤¹ +EB_Hooksest ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¡¢¤¹¤Ù¤Æ²òÊü¤µ¤ì¤Þ¤¹¡£ +¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯¤Ë¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ NULL ¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_set_hook(), eb_set_hooks() +¤ò¸Æ¤Ö¤³¤È¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_hook (EB_Hookset *hookset, const EB_Hook *hook)

+ +

+´Ø¿ô eb_set_hook() ¤Ï¡¢hookset ¤¬»Ø¤¹ EB_Hooksest +¥ª¥Ö¥¸¥§¥¯¥È¤Ë¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò°ì¤ÄÅÐÏ¿¤·¤Þ¤¹¡£ +ÅÐÏ¿¤¹¤ë¥Õ¥Ã¥¯¤Î¼ïÎà¤È¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢hook ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+Ʊ¤¸¥Õ¥Ã¥¯¥³¡¼¥É¤ËÊ£¿ô²ó¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤â¡¢Í­¸ú¤Ë¤Ê¤ë¤Î¤ÏºÇ¸å¤Ë +ÅÐÏ¿¤·¤¿¤â¤Î¤À¤±¤Ç¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ NULL ¤ò»ØÄꤹ¤ë¤È¡¢ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥Õ¥Ã¥¯¤¬ +²ò½ü¤µ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_hooks (EB_Hookset *hookset, const EB_Hook *hooks)

+ +

+¤³¤Î´Ø¿ô¤Ï eb_set_hook() ¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢Ç¤°Õ¤Î¸Ä¿ô¤Î +¥Õ¥Ã¥¯´Ø¿ô¤ò°ìÅÙ¤ËÅÐÏ¿¤Ç¤­¤ëÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ÅÐÏ¿¤¹¤ë¥Õ¥Ã¥¯¤Î¼ïÎà¤È¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢hooks ¤Ç»ØÄꤷ¤Þ¤¹¡£ +hooks ¤Ï EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇÛÎó (¤ÎÀèƬ) ¤ò +»Ø¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤Þ¤¿¡¢¤³¤ÎÇÛÎó¤ÎËöÈø¤Ë¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É EB_HOOK_NULL ¤ò¥»¥Ã¥È +¤·¤¿ EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤òÇÛÎóÍ×ÁǤȤ·¤ÆÃÖ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+eb_set_hooks() ¤Ï¡¢ÇÛÎó¤ÎÀèƬ¤«¤é½çÈ֤ˡ¢»ØÄꤵ¤ì¤¿¥Õ¥Ã¥¯¥³¡¼¥É +¤ËÂФ·¤Æ¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤­¤Þ¤¹¡£ +¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤È¡¢»Ä¤ê¤Î¥Õ¥Ã¥¯¤ÎÅÐÏ¿¤Ï¤»¤º¤Ë¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤ò¤¿¤À¤Á¤ËÊÖ¤·¤Þ¤¹¡£ +¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯´Ø¿ô¤ÎÅÐÏ¿¤ËÀ®¸ù¤¹¤ë¤È¡¢EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

ÁȤ߹þ¤ß¥Õ¥Ã¥¯´Ø¿ô¤Î¾ÜºÙ

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢´ðËÜŪ¤Ê¥Õ¥Ã¥¯´Ø¿ô¤ò¤¤¤¯¤Ä¤«ÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£ +ËÜÀá¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Î»ÅÍͤò²òÀ⤷¤Þ¤¹¡£ +

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ +

+¤¤¤º¤ì¤Î¥Õ¥Ã¥¯´Ø¿ô¤â¡¢°ú¿ô appendix ¤È container ¤Ë +NULL ¤òÅϤµ¤ì¤Æ¤â¡¢Æ°ºî¤Ë»Ù¾ã¤Ï¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_euc_to_ascii (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_euc_to_ascii() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_NARROW_JISX0208 (Ⱦ³Ñ JIS X 0208 ʸ»ú) ¤Î¤¿¤á¤Î +¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò´Ø¿ô +eb_initialiez_hookset() ¤Ç½é´ü²½¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤¬¼«Æ°Åª¤Ë +ÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢argv[0] ¤È¤·¤ÆÅϤµ¤ì¤¿ JIS X 0208 ¤Îʸ»ú +(¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÏÆüËܸì EUC) ¤òÄ´¤Ù¡¢Âбþ¤¹¤ë ASCII ʸ»ú¤¬Â¸ºß¤¹¤ì¤Ð +¤½¤Î ASCII ʸ»ú¤ò¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ½ñ¤­¹þ¤ß¡¢¤Ê¤±¤ì¤Ð JIS X 0208 ¤Î +ʸ»ú¤ò¤½¤Î¤Þ¤Þ½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_narrow_character_text (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

EB_Error_Code eb_hook_wide_character_text (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_narrow_character_text() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_NARROW_FONT (Ⱦ³Ñ³°»ú) ¤Î¤¿¤á¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +ƱÍÍ¤Ë eb_hook_wide_character_text() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_WIDE_FONT (Á´³Ñ³°»ú) ¤Î¤¿¤á¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò´Ø¿ô +eb_initialiez_hookset() ¤Ç½é´ü²½¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤¬¼«Æ°Åª +¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢appendix ¤ÎÁªÂòÃ椷¤Æ¤¤¤ëÉûËܤ¬¡¢ +argv[0] ¤È¤·¤ÆÅϤµ¤ì¤¿³°»ú¤ÎÂåÂØʸ»úÎó¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤« +Ä´¤Ù¤Þ¤¹¡£ +»ý¤Ã¤Æ¤¤¤ì¤Ð¤½¤Îʸ»úÎó¤ò¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ½ñ¤­¹þ¤ß¡¢»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð +<?> ¤È¤¤¤¦Ê¸»úÎó¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+appendix ¤¬ NULL ¤Î¾ì¹ç¤ä¡¢ÉÕÏ¿¤¬ÉûËܤòÁªÂòÃæ¤Ç +¤Ê¤¤¾ì¹ç¤â¡¢ÂåÂØʸ»úÎó¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤â¤Î¤È¤·¤Æ°·¤¤¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_newline (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_narrow_newline() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_NEWLINE (²þ¹Ô) ¤Î¤¿¤á¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò´Ø¿ô +eb_initialiez_hookset() ¤Ç½é´ü²½¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤¬¼«Æ°Åª +¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë \n ¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_empty (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_empty() ¤Ï¡¢²¿¤â¤·¤Ê¤¤¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿Áàºî´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ + +

int eb_have_text (EB_Book *book)

+ +

int eb_have_menu (EB_Book *book)

+ +

int eb_have_copyright (EB_Book *book)

+ +

+´Ø¿ô eb_have_text() ¤Ï¡¢book ¤ÎÁªÂò¤·¤Æ¤¤¤ëÉûËܤ¬¡¢ +ËÜʸ¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍͤˡ¢eb_have_menu() ¤Ï¥á¥Ë¥å¡¼¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¡¢ +eb_have_copyright() ¤ÏÃøºî¸¢É½¼¨¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¡¢»ý¤Ã¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_text (EB_Book *book, EB_Position *position)

+ +

EB_Error_Code eb_menu (EB_Book *book, EB_Position *position)

+ +

EB_Error_Code eb_copyright (EB_Book *book, EB_Position *position)

+ +

+´Ø¿ô eb_text() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤÎËÜʸ +¤Î³«»Ï°ÌÃÖ¤ò position ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ƱÍͤˡ¢eb_menu() ¤Ï¥á¥Ë¥å¡¼¤Î³«»Ï°ÌÃÖ¤ò¡¢ +eb_have_copyright() ¤ÏÃøºî¸¢É½¼¨¤Î³«»Ï°ÌÃÖ¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢position ¤Ëɬ¤º¥·¡¼¥¯¤¬¼ºÇÔ¤¹¤ë°ÌÃÖ¤ò½ñ¤­¹þ¤ó¤Ç¡¢ +¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤ¬¡¢ÂоݤȤʤë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ +EB_ERR_NO_SUCH_SEARCH ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_seek_text (EB_Book *book, const EB_Position *position)

+ +

+´Ø¿ô eb_seek_text() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤΠ+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ò¥·¡¼¥¯¤·¤Þ¤¹¡£ +¥·¡¼¥¯°ÌÃÖ¤Ï position ¤Ç»ØÄꤷ¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢position ¤Ï¾ï¤Ë¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é¤Î°ÌÃ֤Ȥ·¤Æ²ò¼á +¤µ¤ì¤Þ¤¹¡£ +(ÁêÂаÌÃ֤ؤΥ·¡¼¥¯µ¡Ç½¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¤¢¤ê¤Þ¤»¤ó¡£) +

+ +

+¥·¡¼¥¯¤ò¹Ô¤¦¤È¡¢¤½¤ì¤Þ¤Ç¤Ë¹Ô¤Ã¤¿Æɤ߹þ¤ß¤Î¾õÂÖµ­Ï¿¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +eb_read_text(), eb_read_heading(), +eb_read_rawtext() ¤òÍѤ¤¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤Ë¤Ï¡¢ +Á°¤â¤Ã¤Æ¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤ˥ƥ­¥¹¥È¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Ê¤¤¤È¤­¤Ï¡¢EB_ERR_NO_TEXT +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢½ñÀҤˤè¤Ã¤Æ¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò¼ý¤á¤¿¥Õ¥¡¥¤¥ë¤Ë¤Ï¾¤Î¥Ç¡¼¥¿¤â +°ì½ï¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¥Æ¥­¥¹¥È°Ê³°¤Î¥Ç¡¼¥¿¤Ë¥¢¥¯¥»¥¹ +¤·¤Æ¤â¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¸½ºß°ÌÃÖ¡¢Æɤ߹þ¤ß¤Ë´Ø¤¹¤ë¾õÂÖµ­Ï¿¤ÏÊѲ½¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_tell_text (EB_Book *book, EB_Position *position)

+ +

+´Ø¿ô eb_seek_text() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤΠ+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢position ¤Î»Ø¤¹Îΰè¤Ë¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤ò½ñ¤­¹þ¤ß¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥·¡¼¥¯¤¬É¬¤º¼ºÇÔ¤¹¤ë°ÌÃÖ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤ˥ƥ­¥¹¥È¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Ê¤¤¤È¤­¤Ï¡¢EB_ERR_NO_TEXT +¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_read_text (EB_Book *book, EB_Appendix *appendix, EB_Hookset *hookset, void *container, size_t text_max_length, char *text, ssize_t *text_length)

+ +

EB_Error_Code eb_read_heading (EB_Book *book, EB_Appendix *appendix, EB_Hookset *hookset, void *container, size_t text_max_length, char *text, ssize_t *text_length)

+ +

+´Ø¿ô eb_read_text() ¤È eb_read_heading() ¤Ï¡¢ +book +¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤΥƥ­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤«¤é¥Ç¡¼¥¿ +¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +eb_read_heading() ¤Ï¸«½Ð¤·¤ÎÆɤ߹þ¤ß¤ËÍѤ¤¡¢ +eb_read_text() ¤Ï¤½¤ì°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤ËÍѤ¤¤Þ¤¹¡£ +

+ +

+Æɤ߹þ¤Þ¤ì¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢É¬Íפ˱þ¤¸¤Æʸ»ú¥³¡¼¥É¤ÎÊÑ´¹ +(¡Öʸ»ú¥³¡¼¥É¡× ¤ò»²¾È¤Î¤³¤È) ¤¬¹Ô¤ï¤ì¤¿¸å¤Ë¡¢hookset +¤Î»Ø¤¹¥Õ¥Ã¥¯¥»¥Ã¥È¤Ë¤·¤¿¤¬¤Ã¤Æ²Ã¹©¤µ¤ì¤Þ¤¹¡£ +hookset ¤¬ NULL ¤Î¤È¤­¤Ï¡¢Âå¤ï¤ê¤Ë EB ¥é¥¤¥Ö¥é¥ê¦ +¤ÇÍÑ°Õ¤·¤Æ¤¤¤ë ɸ½à¤Î¥Õ¥Ã¥¯¥»¥Ã¥È (default hookset) ¤¬ +ÍѤ¤¤é¤ì¤Þ¤¹¡£ +¤³¤Î¥Õ¥Ã¥¯¥»¥Ã¥È¤Ï¡¢eb_initialize_hookset() ¤Ë¤è¤Ã¤Æ +½é´ü²½¤·¤¿¤À¤±¤Î¥Õ¥Ã¥¯¥»¥Ã¥È¤ÈÅù²Á¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯¥»¥Ã¥È¤Ë¤è¤Ã¤Æ²Ã¹©¤µ¤ì¤¿¸å¤Ë¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï text ¤Î +»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¡¢½ñ¤­¹þ¤ó¤À¥Ð¥¤¥È¿ô¤¬ text_length ¤Î»Ø¤¹ +Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +text ¤Ï¥Ê¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤Þ¤¹¤¬¡¢text_length ¤Ë¤Ï +¥Ê¥ëʸ»ú¤Îʬ¤Ï´ªÄê¤ËÆþ¤ì¤Þ¤»¤ó¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢text_max_length ¤Ç»ØÄꤵ¤ì¤¿¥Ð¥¤¥È¿ô¤òĶ¤¨¤Æ +½ñ¤­¹þ¤à¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢text_max_length ¤Ë¤â¥Ê¥ëʸ»ú¤Îʬ¤Ï´ªÄê¤ËÆþ¤Ã¤Æ¤¤¤Þ¤»¤ó +¤Î¤Ç¡¢text ¤Ï text_max_length + 1 ¥Ð¥¤¥Èʬ¤Î¥Ç¡¼¥¿ +¤ò³ÊǼ¤Ç¤­¤ëÂ礭¤µ¤¬É¬ÍפǤ¹¡£ +

+ +

+¤É¤Á¤é¤Î´Ø¿ô¤â¡¢À®¸ù¤¹¤ì¤Ð EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ì¤Ð +text_length ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ó¤Ç¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢eb_read_text() ¤È eb_read_heading() ¤ò +¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢ +¤¢¤é¤«¤¸¤á eb_seek_text() ¤Î¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤¬¥»¥Ã¥È¤µ¤ì¤¿¾õÂ֤ˤ·¤Æ¤ª¤«¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¥·¡¼¥¯¤ò¤»¤º¤Ë¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+µÕ¤Ë°ìÅÙ¥·¡¼¥¯¤¹¤ì¤Ð¡¢¶èÀڤꥳ¡¼¥É¤¬¸¡½Ð¤µ¤ì¤ë¤Þ¤Ç¤Î´Ö¤Ê¤é¡¢´Ø¿ô¤ò +·«¤êÊÖ¤·¸Æ¤Ö¤³¤È¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î³¤­¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¶èÀڤꥳ¡¼¥É¤¬¸¡½Ð¤µ¤ì¤ë¤È¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤âÆɤ߹þ¤ß¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£ +¤½¤Î¾ì¹ç¤Ç¤â¡¢Â¾¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Ê¤±¤ì¤Ð EB_SUCCESS ¤¬Ê֤ꡢ +text ¤Ë¤Ï¶õʸ»úÎ󤬽ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢°ìÅÙ eb_read_text() ¤ò¸Æ¤Ó½Ð¤·¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò +Æɤ߹þ¤ß»Ï¤á¤¿¤é¡¢·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹ºÝ¤â¡¢eb_read_text() ¤ò +»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÅÓÃ椫¤é eb_read_heading() ¤ª¤è¤Ó¸å½Ò¤Î +eb_read_rawtext() ¤ËÀÚ¤êÂؤ¨¤Æ¸Æ¤Ó½Ð¤¹¤È +EB_ERR_DIFF_CONTENT ¥¨¥é¡¼¤¬ÊÖ¤ê¤Þ¤¹¡£ +´Ø¿ô eb_read_heading() ¤Ë¤Ä¤¤¤Æ¤âƱÍͤǤ¹¡£ +¤³¤ÎÀ©¸Â¤Ï¡¢ºÆÅÙ eb_seek_text() ¤ò¸Æ¤Ó½Ð¤¹¤«¡¢ +eb_set_subbook() ¤ÇÉûËܤòÁªÂò¤·Ä¾¤¹¤Þ¤Ç³¤­¤Þ¤¹¡£ +

+ +

+ÅϤµ¤ì¤¿ appendix ¤¬¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò»ý¤Ã¤¿ÉûËܤòÁªÂòÃæ +¤Ç¤¢¤ì¤Ð¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤È¤·¤Æ¤½¤ÎÃͤò»ÈÍѤ·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢eb_read_text() ¤¬¶èÀڤꥳ¡¼¥É¤ò¼«Æ°È½Ê̤ò +»î¤ß¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎȽÄê¤Ï´°àú¤Ê¤â¤Î¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢½ñÀҤˤè¤Ã¤Æ¤ÏÊѤʰÌÃÖ¤ÇËÜʸ +¤¬ÀÚ¤ì¤Æ¤·¤Þ¤¦¤«¤âÃΤì¤Þ¤»¤ó¡£ +(ËÜʸ°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë´Ø¤·¤Æ¤Ï¡¢¤³¤Î¤è¤¦¤ÊÌäÂê¤Ïµ¯¤­¤Þ¤»¤ó¡£) +

+ +

+°ú¿ô container ¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¥Õ¥Ã¥¯´Ø¿ô¤Ë +¥Ç¡¼¥¿¤òÅϤ¹¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£ +eb_read_text(), eb_read_heading() ¤Ç¤Ï¡¢Ä¾ÀÜ +¤³¤Î°ú¿ô¤ÎÃͤò»²¾È¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+°ú¿ô appendix, container ¤Ï¡¢¤½¤Î¤Þ¤Þ¥Õ¥Ã¥¯´Ø¿ô¤Ë +ÅϤµ¤ì¤Þ¤¹¡£ +¤³¤ì¤é¤Î°ú¿ô¤Ï NULL ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ +(¸Æ¤Ó½Ð¤µ¤ì¤ë¥Õ¥Ã¥¯´Ø¿ô¤Ç»Ù¾ã¤¬¤Ê¤±¤ì¤Ð¡£) +

+ +

+¤Ê¤ª¡¢¥Õ¥Ã¥¯´Ø¿ô¤ä eb_read_text(), eb_read_heading() +¼«¿È¤¬Ê¸»ú¤Ê¤¤¤·¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹°ì¸Äʬ¤ËÂФ¹¤ë¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤â¤¦¤È +¤·¤¿¤È¤­¤Ë¡¢text ¤Ë½½Ê¬¤Ê¶õ¤­Îΰ褬¤Ê¤¤¤È¤¤¤¦¤³¤È¤¬µ¯¤³¤ê +ÆÀ¤Þ¤¹¡£ +¤½¤Î¾ì¹ç¡¢´Ø¿ô¤ÏÅÓÃæ¤Þ¤Ç text ¤Ë½ñ¤­¹þ¤à¤³¤È¤Ï¤»¤º¤Ë¡¢ +¤¤¤Ã¤¿¤ó½èÍý¤ò½ª¤¨¤ÆÌá¤ê¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤Î¥Ç¡¼¥¿¤¬ÅÓÃæ¤ÇÀڤ줿¤ê¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿Ê¬¤Ï¡¢ÅöÁ³¤Ê¤¬¤é text_length ¤Î´ªÄê¤Ë¤Ï +Æþ¤ê¤Þ¤»¤ó¡£ +½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿¤Ï book ÆâÉô¤ËÊݸ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ +¤â¤¦°ìÅÙ eb_read_text(), eb_read_heading() ¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢Á°²ó¤Î¸Æ¤Ó½Ð¤·¤Ç½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿¤¬¤Þ¤º text +¤ÎÀèƬ¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +½ñ¤­¹þ¤ó¤À¥Ç¡¼¥¿¤Ï text_length ¤Î´ªÄê¤ËÆþ¤ê¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢book ¤¬Êݸ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿¤ÎŤµ¤¬ +text_max_length ¤òĶ¤¨¤Æ¤¤¤ë¤È¡¢²¿¤â½ñ¤­¹þ¤Þ¤º¤Ë´Ø¿ô¤Ï½ªÎ» +¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿¤Ï°ú¤­Â³¤­Êݸ¤µ¤ì¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢text_max_length ¤¬¤¢¤Þ¤ê¤Ë¾®¤µ¤¯¡¢¤«¤ÄÊÝ»ý¤·¤Æ¤¤¤ë +¥Ç¡¼¥¿¤Î¤Û¤¦¤¬Ä¹¤¤¤È¡¢²¿ÅٸƤӽФ·¤Æ¤â text ¤Ø¤Î½ñ¤­¹þ¤ß¤¬ +¿Ê¤ß¤Þ¤»¤ó¤Î¤Ç¡¢Ãí°Õ¤¬É¬ÍפǤ¹¡£ +

+ +

+eb_seek_text() ¤ò¸Æ¤Ó½Ð¤¹¤«¡¢eb_set_subbook() +¤ÇÉûËܤòÁªÂò¤·Ä¾¤¹¤È¡¢Êݸ¤·¤Æ¤¤¤¿¥Ç¡¼¥¿¤ÏÇË´þ¤µ¤ì¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_read_rawtext (EB_Book *book, size_t text_max_length, char *text, ssize_t *text_length)

+ +

+´Ø¿ô eb_read_rawtext() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ë +ÉûËܤΥƥ­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤«¤é¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ +

+eb_read_text() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤Î´Ø¿ô¤Ï¥Õ¥Ã¥¯¥»¥Ã¥È¤Ë¤è¤ë +¥Ç¡¼¥¿¤Î²Ã¹©¤äʸ»ú¥³¡¼¥É¤ÎÊÑ´¹¤ò°ìÀڹԤ鷺¡¢¥Ç¡¼¥¿¤òÆâÉôɽ¸½¤Î¤Þ¤ÞÊÖ¤·¤Þ¤¹¡£ +Æɤ߹þ¤à¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎà¤Ï¡¢²¿¤Ç¤¢¤Ã¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ +

+Æɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï text ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¡¢ +½ñ¤­¹þ¤ó¤À¥Ð¥¤¥È¿ô¤¬ text_length ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢text_max_length ¤Ç»ØÄꤵ¤ì¤¿¥Ð¥¤¥È¿ô¤òĶ¤¨¤Æ +½ñ¤­¹þ¤à¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢eb_read_text() ¤È°Û¤Ê¤ê¡¢text ¤Ï¥Ê¥ëʸ»ú +¤Ç½ªÃ¼¤µ¤ì¤Þ¤»¤ó¡£ +¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤ä¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ÎÅÓÃæ¤Ç text ¤Î»Ä¤êÎΰè +¤¬Â­¤ê¤Ê¤¯¤Ê¤Ã¤¿¾ì¹ç¤â¡¢ÅÓÃæ¤Þ¤Ç¤Ï½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+½èÍý¤¬À®¸ù¤¹¤ì¤Ð EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ì¤Ð +text_length ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ó¤Ç¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢¤¢¤é¤«¤¸¤á eb_seek_text() ¤Î +¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤¬¥»¥Ã¥È¤µ¤ì¤¿¾õÂ֤ˤ·¤Æ +¤ª¤«¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¥·¡¼¥¯¤ò¤»¤º¤Ë¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢Á°²óÆɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î³¤­ +¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤¿¤À¤·¡¢¶èÀڤꥳ¡¼¥É¤Î¸¡½Ð¤ò¹Ô¤¤¤Þ¤»¤ó¤Î¤Ç¡¢¤Ò¤¿¤¹¤é¸Æ¤Ó½Ð¤·¤ò³¤±¤ë¤È¡¢ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ÎËöÈø¤Þ¤Ç¹Ô¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +

+ +

+°ìÅÙ eb_read_rawtext() ¤ò¸Æ¤Ó½Ð¤·¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß +»Ï¤á¤¿¤é¡¢·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹ºÝ¤â¡¢eb_read_rawtext() ¤ò +»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÅÓÃ椫¤é¡¢eb_read_text() ¤ä eb_read_heading() ¤Ë +ÀÚ¤êÂؤ¨¤ë¤È¡¢ +EB_ERR_DIFF_CONTENT ¥¨¥é¡¼¤¬ÊÖ¤ê¤Þ¤¹¡£ +¤³¤ÎÀ©¸Â¤Ï¡¢ºÆÅÙ eb_seek_text() ¤ò¸Æ¤Ó½Ð¤¹¤«¡¢ +eb_set_subbook() ¤ÇÉûËܤòÁªÂò¤·Ä¾¤¹¤Þ¤Ç³¤­¤Þ¤¹¡£ +

+ + +

int eb_is_text_stopped (EB_Book *book)

+ +

+´Ø¿ô eb_is_text_stopped() ¤Ï¡¢ºÇ¸å¤ËÆɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤¬ËöÈø¤Ë㤷¤¿¤«¤É¤¦¤«¤òȽÄꤷ¤Þ¤¹¡£ +

+ +

+book ¤¬ÁªÂòÃæ¤ÎÉûËܤǡ¢ºÇ¸å¤Ë eb_read_text() +¤Þ¤¿¤Ï eb_read_heading() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤ÀºÝ¤Ë¡¢ +¶èÀڤꥳ¡¼¥É¤ò¸¡½Ð¤·¤¿¤«¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿Á´ÂΤΰìÈÖ¸å¤í¤Î°ÌÃÖ¤Ë㤷¤Æ +Æɤ߹þ¤ß¤ò½ª¤¨¤Æ¤¤¤ì¤Ð¡¢¤³¤Î´Ø¿ô¤Ï 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¤È¤­¤Ï¡¢0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤ä¡¢ÁªÂòÃæ¤ÎÉûËܤ˥ƥ­¥¹¥È¥Ç¡¼¥¿ +¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤â 0 ¤¬ÊÖ¤ê¤Þ¤¹¡£ +

+ +

+eb_read_text() ¤Þ¤¿¤Ï eb_read_heading() ¤Ç +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤Ç¤¤¤Ê¤¤¾ì¹ç¤â¡¢Æ±ÍÍ¤Ë 0 ¤¬ÊÖ¤ê¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤À¸å¤Ç¤¢¤Ã¤Æ¤â¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë´Ø¤¹¤ë +¾õÂÖµ­Ï¿¤ò¥ê¥»¥Ã¥È¤¹¤ë´Ø¿ô (eb_read_text() ¤Î¹à¤ò»²¾È) ¤ò¸Æ¤ó¤Ç¤·¤Þ¤¦¤È¡¢ +Æɤ߹þ¤ó¤Ç¤¤¤Ê¤¤¤È¸«¤Ê¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+Ä̾ï¤Ï¤³¤Î´Ø¿ô¤ò»È¤ï¤Ê¤¯¤Æ¤â¡¢eb_read_text() ¤ä +eb_read_heading() ¤¬ 0 ¤òÊÖ¤·¤¿¤é¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎËöÈø¤Ë +㤷¤¿¤È¤ß¤Ê¤·¤Æº¹¤·»Ù¤¨¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +¤¿¤À¤·¤½¤ÎºÝ¤Ï¡¢°ú¿ô text_max_length ¤ÎÃͤò½½Ê¬Â礭¤¯¼è¤Ã¤Æ +²¼¤µ¤¤¡£ +

+ + + +

EB_Error_Code eb_write_text_byte1 (EB_Book *book, int byte1)

+ +

EB_Error_Code eb_write_text_byte2 (EB_Book *book, int byte1, int byte2)

+ +

EB_Error_Code eb_write_text_string (EB_Book *book, const char *string)

+ +

EB_Error_Code eb_write_text (EB_Book *book, const char *stream, size_t stream_length)

+ +

+¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢¤¤¤º¤ì¤â¥Õ¥Ã¥¯´Ø¿ô¤ÎÃ椫¤é¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤à +¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +½ñ¤­¹þ¤à¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¡¢»È¤¤Ê¬¤±¤Æ²¼¤µ¤¤¡£ +

+ +

+eb_write_text_byte1() ¤Ï¡¢byte1 ¤Ç»ØÄꤷ¤¿ +1 ¥Ð¥¤¥È¤ÎÃͤò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +eb_write_text_byte2() ¤Ï¡¢byte1, byte2 +¤Ç»ØÄꤷ¤¿ 2 ¥Ð¥¤¥È¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +eb_write_text_string() ¤Ï¡¢string ¤Ç»ØÄꤷ¤¿ +ʸ»úÎó¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +eb_write_text() ¤Ï¡¢stream ¤«¤é»Ï¤Þ¤ëŤµ +stream_length ¥Ð¥¤¥È¤Î¥Ð¥¤¥ÈÎó¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¤É¤Î´Ø¿ô¤â¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ºÇ½ªÅª¤Ë¡¢½ñ¤­¹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¸µ¤Ç¤¢¤ë +eb_read_text(), eb_read_heading() ¤«¤é +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ËÅϤµ¤ì¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤­¤Ë¡¢¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿¾ì¹ç +¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

const char *eb_current_candidate (EB_Book *book)

+ +

+´Ø¿ô eb_current_candidate() ¤Ï¡¢¥¢¥¯¥»¥¹Ãæ¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î +¸½ºß°ÌÃ֤˽ñ¤«¤ì¤Æ¤¤¤ë¡¢Ê£¹ç¸¡º÷¤Î¸õÊä¤È¤Ê¤ë¸ì¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ÊÖ¤¹Ê¸»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç EB_MAX_WORD_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎŤµ¤Ë¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+¤³¤Î´Ø¿ô¤ÏÈó¾ï¤ËÆüì¤Ç¡¢Ê£¹ç¸¡º÷¤Î¸õÊä¤È¤Ê¤ë¸ì¤Î½ªÎ»¤ò°ÕÌ£¤¹¤ë +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯¤Ç¤¢¤ë EB_HOOK_END_CANDIDATE_LEAF +¤ª¤è¤Ó EB_HOOK_END_CANDIDATE_GROUP ¤ËÂФ¹¤ë¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç +¤Î¤ß¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì½ê¤Ç¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÎÆ°ºî¤Ï¡¢Ì¤ÄêµÁ¤Ç¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·Êý¤Ç¤¹¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤäƤ­¤¿ EB_Book +¥ª¥Ö¥¸¥§¥¯¥È (¤Ø¤Î¥Ý¥¤¥ó¥¿) ¤ò¡¢¤½¤Î¤Þ¤Þ¤³¤Î´Ø¿ô¤Ë°ú¿ô¤È¤·¤ÆÅϤ·¤Æ +¤ä¤ê¤Þ¤¹¡£ +

+ +

+book ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢´Ø¿ô¤ÎÊÖ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¾ì¹ç¤ÏÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +´Ø¿ô¤ÎÊÖ¤¹Ê¸»úÎó¤Ï¡¢Â¾¤Î¥Õ¥Ã¥¯¤Ë¤è¤ë²Ã¹©½èÍý¤Î±Æ¶Á¤ò¼õ¤±¤Þ¤»¤ó¡£ +ʸ»ú¥³¡¼¥É¤ÎÊÑ´¹¤ò¹Ô¤¦°Ê³°¤Ï¡¢ÆâÉô¥Ç¡¼¥¿¤ò¤½¤Î¤Þ¤ÞÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢¤³¤Î´Ø¿ô¤¬ÊÖ¤·¤¿Ê¸»úÎó¤ò»²¾È¤Ç¤­¤ë¤Î¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤«¤éÌá¤ë¤Þ¤Ç¤Î +´Ö¤À¤±¤Ç¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

EB_Error_Code eb_forward_text (EB_Book *book, EB_Appendix *appendix)

+ +

EB_Error_Code eb_backward_text (EB_Book *book, EB_Appendix *appendix)

+ +

+´Ø¿ô eb_forward_text() ¤È eb_backward_text() ¤Ï¡¢ +book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤÎËÜʸ¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤òÁ°¸å¤Ë°ÜÆ°¤µ¤»¡¢ +ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤òñ°Ì¤È¤·¤¿Æ¬½Ð¤·¤ò¹Ô¤¤¤Þ¤¹¡£ +¤Á¤ç¤¦¤É¡¢²»³Ú CD ¤Î¶Ê¤ÎƬ½Ð¤·¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+eb_forward_text() ¤ÏËÜʸ¤ÎËöÈøÊý¸þ¤Ë¸þ¤«¤Ã¤Æ¥¢¥¯¥»¥¹°ÌÃÖ¤ò +¿Ê¤á¡¢eb_backward_text() ¤ÏÀèƬÊý¸þ¤Ë¸þ¤«¤Ã¤Æ¥¢¥¯¥»¥¹°ÌÃÖ¤ò +Ìᤷ¤Þ¤¹¡£ +

+ +

+eb_forward_text() ¤Î¸Æ¤Ó½Ð¤·¤Ç¤Ï¡¢¥¢¥¯¥»¥¹°ÌÃÖ¤Ïɬ¤º¼¡¤Î¸ì¤Î +ÀâÌÀ¤Î³«»Ï°ÌÃ֤ޤǰÜÆ°¤·¤Þ¤¹¡£ +¤½¤ì¤ËÂФ·¤Æ eb_backward_text() ¤Î¸Æ¤Ó½Ð¤·¤Ç¤Ï¡¢°ÜÆ°À褬¾õÂÖ +¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£ +¤â¤·¡¢¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤¬¤½¤Îñ¸ì¤ÎÀâÌÀ¤ÎÀèƬ¤Ë¤¢¤ë¤È¤­¤Ï¡¢ +eb_backward_text() ¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¡¢°ì¤ÄÁ°¤Îñ¸ì¤ÎÀâÌÀ¤Î +ÀèƬ¤Ë¥¢¥¯¥»¥¹°ÌÃÖ¤¬°ÜÆ°¤·¤Þ¤¹¡£ +¥¢¥¯¥»¥¹°ÌÃÖ¤¬Ã±¸ì¤ÎÀâÌÀ¤ÎÅÓÃæ¤äËöÈø¤Ë¤¢¤ë¤È¤­¤Ï¡¢¤½¤Îñ¸ì¤ÎÀâÌÀ¤Î +ÀèƬ¤Ë°ÜÆ°¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+²Ã¤¨¤Æ¡¢¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢¤¢¤é¤«¤¸¤á eb_seek_text() +¤« eb_read_text() ¤ò¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤Æ¤¤¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£ +(eb_read_text() ¤Î¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¤ë¤Ë¤Ï¡¢¤µ¤é¤ËÁ°¤â¤Ã¤Æ +eb_seek_text() ¤Î¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¤ë¤³¤È¤¬¾ò·ï¤È¤Ê¤ê¤Þ¤¹¡£) +

+ +

+eb_read_text() ¤Ç¤Ï¤Ê¤¯¡¢eb_read_heading() ¤ä +eb_read_rawtext() ¤Î¸Æ¤Ó½Ð¤·¤ËÀ®¸ù¤·¤¿¸å¤Ç¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_DIFF_CONTENT ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢Á°¤â¤Ã¤Æ eb_seek_text() ¤Ç¥·¡¼¥¯¤»¤º¤Ë¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ËÜʸ¥Ç¡¼¥¿¤ÎËöÈø¤äÀèƬ¤Ë㤷¤Æ¤·¤Þ¤Ã¤Æ¡¢¤½¤ÎÊý¸þ¤Ë¤â¤¦ËÜʸ¤¬¤Ê¤¤¤È¤­¤Ï¡¢ +EB_ERR_END_OF_CONTENT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+appendix ¤¬ NULL ¤Ç¤Ï¤Ê¤¯¡¢¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò +»ý¤Ã¤¿ÉûËܤòÁªÂòÃæ¤Ç¤¢¤ì¤Ð¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤È¤·¤Æ¤½¤ÎÃͤò»ÈÍѤ·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢eb_read_text() ¤ÈƱ¤¸ÊýË¡¤Ç¶èÀڤꥳ¡¼¥É¤Î +¼«Æ°È½Ê̤ò»î¤ß¤Þ¤¹¡£ +

+ +

+¥¢¥¯¥»¥¹°ÌÃÖ¾å¤Ë¤¢¤ë¤Î¤¬¥á¥Ë¥å¡¼¤äÃøºî¸¢É½¼¨¤Î¤è¤¦¤Ë¡¢ËÜʸ°Ê³°¤Î +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ç¤¢¤Ã¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢ËÜʸ°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉô¤Ë¤Ï¡¢Æ¬½Ð¤·°ÌÃÖ¤¬¥Ç¡¼¥¿¤Î +ÀèƬ°ÌÃ֤ˤ·¤«¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¤³¤Î´Ø¿ô¤¬Ìò¤ËΩ¤Ä¾õ¶·¤Ï¤Û¤È¤ó¤É +¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+(¥á¥Ë¥å¡¼¤Ç¤Ï¡¢¸Ä¡¹¤Î³¬ÁؤΥá¥Ë¥å¡¼¥Ç¡¼¥¿¤¬¡¢¤½¤ì¤¾¤ìÆÈΩ¤·¤¿ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢Æ¬½Ð¤·¤ò¹Ô¤Ã¤Æ¤âÁ°¸å¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿¤Ø¤Ï +°ÜÆ°¤Ç¤­¤Þ¤»¤ó¡£ +Ê£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷¤âƱÍͤǤ¹¡£) +

+ + +

EB_Error_Code eb_forward_heading (EB_Book *book)

+ +

+´Ø¿ô eb_forward_heading() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ë +ÉûËܤθ«½Ð¤·¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤ò¸å¤Ë°ÜÆ°¤µ¤»¡¢¸«½Ð¤·¤Î¶èÀÚ¤ê¤òñ°Ì¤È¤·¤¿Æ¬½Ð¤· +¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+ËÜʸ¤ÎƬ½Ð¤·¤ò¹Ô¤¦´Ø¿ô eb_forward_text() ¤Î¸«½Ð¤·ÈǤǤ¹¡£ +¤¿¤À¤·¡¢¸«½Ð¤·¤ÇƬ½Ð¤·¤ò¹Ô¤¦µ¡²ñ¤Ï¡¢¥¯¥í¥¹¸¡º÷¤ÎËÜʸ¼èÆÀ¤Ë¸Â¤é¤ì¤ë¤¿¤á¡¢ +eb_backward_heading() ¤È¤¤¤¦´Ø¿ô¤ÏÍÑ°Õ¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤È¡¢¥¢¥¯¥»¥¹°ÌÃÖ¤¬¼¡¤Î¸«½Ð¤·¤Î³«»Ï°ÌÃ֤ޤǰÜÆ°¤·¤Þ¤¹¡£ +(¥¯¥í¥¹¸¡º÷¤Ç¤Ï¡¢¸«½Ð¤·Îΰè¤ÎÃæ¤Ë¡Ö¸«½Ð¤·¡×¤È¡ÖËÜʸ¡×¤¬¸ò¸ß¤Ë½ñ¤«¤ì¤Æ +¤¤¤Þ¤¹¤¬¡¢¥Ç¡¼¥¿¹½Â¤¾å¡ÖËÜʸ¡×¤È¡Ö¸«½Ð¤·¡×¤Ï¶èÊ̤¬ÉÕ¤­¤Þ¤»¤ó¡£ +¥¢¥¯¥»¥¹°ÌÃÖ¤¬¥¯¥í¥¹¸¡º÷¤Î¸«½Ð¤·ÎΰèÆâ¤Î¾ì¹ç¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤ÈºÇ¤â¶á¤¤ +¡Ö¸«½Ð¤·¡×¤â¤·¤¯¤Ï¡ÖËÜʸ¡×¤Î³«»Ï°ÌÃ֤ޤǰÜÆ°¤·¤Þ¤¹¡£) +

+ +

+eb_read_heading() ¤Ç¤Ï¤Ê¤¯¡¢eb_read_text() ¤ä +eb_read_rawtext() ¤Î¸Æ¤Ó½Ð¤·¤ËÀ®¸ù¤·¤¿¸å¤Ç¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_DIFF_CONTENT ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢Á°¤â¤Ã¤Æ eb_seek_text() ¤Ç¥·¡¼¥¯¤»¤º¤Ë¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¥¯¥í¥¹¸¡º÷°Ê³°¤Î¸¡º÷¥á¥½¥Ã¥É¤Î¸«½Ð¤·¤Î³ÊǼ°ÌÃÖ¤ËÂФ·¤Æ¡¢¤³¤Î´Ø¿ô¤ò +¸Æ¤Ö¤³¤È¤â²Äǽ¤Ç¤¹¤¬¡¢¤½¤Î¤è¤¦¤ÊɬÍפËÇ÷¤é¤ì¤ëµ¡²ñ¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +

+ + +

³°»ú

+ +

+ʸ»ú¥³¡¼¥É¤Ë¼ýÏ¿¤µ¤ì¤Æ¤¤¤Ê¤¤¡¢»äŪ¤ËÄêµÁ¤·¤¿Ê¸»ú¤Î¤³¤È¤ò¡¢Â¯¤Ë¡Ö³°»ú¡× +¤È¸À¤¤¤Þ¤¹¡£ +³°»ú¤È¤·¤ÆÄêµÁ¤·¤¿¸Ä¡¹¤Îʸ»ú¤ò¼±Ê̤¹¤ë¤¿¤á¤Ë¡¢Ê¸»ú¥³¡¼¥É¤Ë¼ýÏ¿¤µ¤ì¤¿ +ʸ»ú¤È¤Ï½ÅÊ£¤·¤Ê¤¤°ÌÃ֤ˡ¢³Æʸ»ú¤Îʸ»úÈÖ¹æ¤Ë³ä¤ê¿¶¤ë¤Î¤¬ÉáÄ̤Ǥ¹¡£ +(³ä¤êÅö¤Æ¤ëʸ»úÈÖ¹æ¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Öʸ»ú¥³¡¼¥É¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+»ÔÈΤÎÅŻҥ֥寡¢EPWING ¤Ç¤â¡¢¤Û¤È¤ó¤É¤¬³°»ú¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ +³°»ú¤ÎÄêµÁ¾õ¶·¤Ï½ñÀÒƱ»Î¤Ç¥Ð¥é¥Ð¥é¤Ç¡¢¤Þ¤Ã¤¿¤¯Åý°ì´¶¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤Ä¤Þ¤ê¡¢Æ±¤¸Ê¸»úÈÖ¹æ¤ò»È¤Ã¤Æ¤¤¤Æ¤â¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë³°»ú¤Ï½ñÀҤˤè¤Ã¤Æ +°ã¤¤¤Þ¤¹¡£ +³°»ú¤ÏÉûËÜËè¤ËÄêµÁ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¤¬¡¢°ì¤Ä¤Î CD-ROM ½ñÀÒÆâ¤Ç¤âÉûËÜ¤Ë +¤è¤Ã¤ÆÄêµÁ¤¬°Û¤Ê¤ë¤³¤È¤âÄÁ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +ÉûËܤˤè¤Ã¤Æ¤Ï¡¢¿ôÉ´¤«¤é¿ôÀé¤Î³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀҤǤϡ¢ÄêµÁ¤·¤¿³°»ú¤Î»ú·Á¥Ç¡¼¥¿ (¤Ä¤Þ¤ê¥Õ¥©¥ó¥È) ¤òÍÑ°Õ¤·¤Æ +¤¤¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Ç¤¢¤ê¡¢½ñÀҤˤè¤Ã¤Æ¤ÏÂ礭¤µ¤Î°Û¤Ê¤ë¿ô¼ïÎà +¤Î¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+µÕ¤Ë¸À¤¨¤Ð¡¢³°»ú¤ËÂФ·¤ÆÄ󶡤µ¤ì¤ë¥Ç¡¼¥¿¤Ï¡¢¥Õ¥©¥ó¥È¤À¤±¤Ç¤¹¡£ +¤¢¤ëʸ»úÈÖ¹æ¤ò³ä¤êÅö¤Æ¤é¤ì¤¿³°»ú¤¬¡¢´Á»ú¤Ê¤Î¤«¡¢È¯²»µ­¹æ¤Ê¤Î¤«¡¢ +¤½¤¦¤¤¤Ã¤¿Êä½õŪ¤Ê¾ðÊó¤ÏÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬³°»ú¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë¤Ï¡¢³°»ú¤Î¥Õ¥©¥ó¥È +¤ò¤½¤Î¤Þ¤Þɽ¼¨¤¹¤ë°Ê³°¤ËÊýË¡¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +

+ + + +

Ⱦ³Ñ³°»ú¤ÈÁ´³Ñ³°»ú

+ +

+CD-ROM ½ñÀҤˤª¤±¤ë³°»ú¤Ë¤Ï¡¢¡ÖÁ´³Ñ³°»ú¡×¡ÖȾ³Ñ³°»ú¡×¤ÎÆó¼ïÎब¤¢¤ê¤Þ¤¹¡£ +Á´³Ñ³°»ú¤ÏÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤Î²£¤È½Ä¤ÎŤµ¤¬¤ª¤è¤½ 1:1 ¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢ +Ⱦ³Ñ³°»ú¤Ç¤Ï 1:2 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡Á´³Ñ³°»ú¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡È¾³Ñ³°»ú¡¡¡¡
+¡¡¡¡¡¡¡¡¡Ê£±£¶¡ß£±£¶¡Ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ê£¸¡ß£±£¶¡Ë
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢£¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢£¢£¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢¢¢£¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢£¢£¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢
+
+
+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤Ï¡¢È¾³Ñɽ¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬ +¤¢¤ê (¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉô·Á¼°¡× ¤ò»²¾È¤Î¤³¤È)¡¢ +³«»Ï¤È½ªÎ»¤Î´Ö¤ËÃÖ¤«¤ì¤¿¤â¤Î¤ÏȾ³Ñ³°»ú¡¢¤½¤ì°Ê³°¤Î¤È¤³¤í¤Ê¤éÁ´³Ñ³°»ú¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ʸ»úÈÖ¹æ¤ÏƱ¤¸¤Ç¤â¡¢»ú·Á¤¬Á´³Ñ¤ÈȾ³Ñ¤Ç¤Ï¤Þ¤Ã¤¿¤¯°Û¤Ê¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹ +¤Î¤Ç¡¢³°»ú¤Îʸ»úÈÖ¹æ¤À¤±¤«¤é¡¢Á´³Ñ¤ÈȾ³Ñ¤Î¤É¤Á¤é¤«¤òȽÃǤ¹¤ë¤³¤È¤Ï +¤Ç¤­¤Þ¤»¤ó¡£ +¤«¤Ê¤é¤º¡¢Á°Êý¤ËȾ³Ñ³«»Ï¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬½Ð¸½¤·¤Æ¤¤¤¿¤«¤É¤¦¤« +¤È¤¤¤¦¾ðÊó¤Ë´ð¤Å¤¤¤ÆȽÃǤ·¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£ +

+ +

+¤¿¤À¤·¡¢Á´³Ñ¤«È¾³Ñ¤«¤ÎȽÄê¤Ï EB ¥é¥¤¥Ö¥é¥ê¦¤Ç¹Ô¤¤¤Þ¤¹¤Î¤Ç¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬Ê¸Ì®¤Î²òÀϤò¹Ô¤¦É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+CD-ROM ½ñÀÒ¤ÎÉûËܤˤϡ¢È¾³Ñ³°»ú¤¢¤ë¤¤¤ÏÁ´³Ñ³°»ú¤Î¤É¤Á¤é¤«°ìÊý¤À¤±¤ò +ÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¤·¡¢Î¾Êý¤È¤âÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£ +

+ + +

³°»ú¤ÎÂ礭¤µ¤È³°»ú¥³¡¼¥É

+ +

+³ÆÉûËܤˤϡ¢ÄêµÁ¤·¤Æ¤¤¤ë³°»ú¤Î¥Õ¥©¥ó¥È¤¬¥Ó¥Ã¥È¥Þ¥Ã¥×·Á¼°¤Ç¼ýÏ¿¤µ¤ì¤Æ +¤¤¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤ÎÂ礭¤µ¤Ï¡¢½Ä¤Î¥Ô¥¯¥»¥ë¿ô¤ò´ð½à¤Ë¤¹¤ë¤È 16, 24, 30, 48 ¤Î +4 ¼ïÎब¤¢¤ê¡¢Á´³Ñ³°»ú¡¢È¾³Ñ³°»ú¤½¤ì¤¾¤ì¤Î¥Õ¥©¥ó¥È¤ÎÂ礭¤µ +(²£¤Î¥Ô¥¯¥»¥ë¿ô¡ß½Ä¤Î¥Ô¥¯¥»¥ë¿ô) ¤Ï¼¡¤ÎÄ̤ê¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ + + + + + + +
½Ä¤Î¥Ô¥¯¥»¥ë¿ô Á´³ÑÁ´³Ñ Ⱦ³Ñ³°»ú
16 16x16 8x16
24 24x24 16x24
30 32x30 16x30
48 48x48 24x48
+ +

+¤¿¤À¤·¡¢¤¹¤Ù¤Æ¤ÎÉûËܤǤ³¤ì¤é 4 ¼ïÎà¤Î¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +½Ä¤¬ 16 ¥Ô¥¯¥»¥ë¤Î¤â¤Î¤Ïɬ¤ºÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¤½¤ì°Ê³°¤Ï¤Ê¤¤¤³¤È¤â +ÄÁ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +(³°»ú¤¬¤Þ¤Ã¤¿¤¯ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤âÍÑ°Õ¤µ¤ì +¤Þ¤»¤ó¡£) +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¤³¤Î¤è¤¦¤Ë½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô¡¢¤Ä¤Þ¤ê +¥Õ¥©¥ó¥È¤Î¹â¤µ (font height) ¤ò´ð½à¤Ë¡¢³°»ú¥Õ¥©¥ó¥È¤ÎÂ礭¤µ¤ò +¶èÊ̤·¤Æ¤¤¤Þ¤¹¡£ +¤½¤·¤Æ¡¢¤½¤ì¤¾¤ì¤Î¥Õ¥©¥ó¥È¤Î¹â¤µ (16, 24, 30, 48) ¤ËÂФ·¤Æ¡¢ +³°»ú¥³¡¼¥É (font code) ¤È¤¤¤¦¤â¤Î¤ò³ä¤êÅö¤Æ¤Æ¤¤¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤Î¹â¤µ¤ò»ØÄꤹ¤ëºÝ¤Ï¡¢É¬¤º¤³¤Î³°»ú¥³¡¼¥É¤ò»È¤¤¤Þ¤¹¡£ +

+ + + + + + + +
½Ä¤Î¥Ô¥¯¥»¥ë¿ô ³°»ú¥³¡¼¥É
16 EB_FONT_16
24 EB_FONT_24
30 EB_FONT_30
48 EB_FONT_48
+ + +

ÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÇÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë³°»ú¥Õ¥©¥ó¥È +¤Î¹â¤µ¤ÎÃ椫¤é°ì¤ÄÁª¤ó¤Ç¡¢ +ÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ (current font height) ¤È¤·¤Æ»ØÄꤹ¤ë +¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç³°»ú¤Î¥Õ¥©¥ó¥È¥Ç¡¼¥¿ (¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿) ¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢ +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤ò¤¢¤é¤«¤¸¤áÁªÂò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+ÁªÂò¤¹¤ë¤Ë¤Ï¡¢´Ø¿ô eb_set_font() ¤ò»È¤¤¤Þ¤¹¡£ +°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¡¢¹â¤µ 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤òÁªÂò¤¹¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+if (eb_set_font(&book, EB_FONT_24) != EB_SUCCESS) {
+    printf("eb_set_font_() failed\n");
+    return;
+}
+
+
+ +

+¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¹â¤µ 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤òÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ +¤¤¤ë¤â¤Î¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¤¬¡¢¼ÂºÝ¤Ë¤ÏÍÑ°Õ¤·¤Æ¤¤¤Ê¤¤ÉûËܤâÄÁ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +¤â¤·¡¢ÉûËܤ¬¹â¤µ 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ +eb_set_font() ¤Ï EB_ERR_NO_SUCH_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤·¤«¤·¡¢³°»ú¤òÁªÂò¤¹¤ëÁ°¤Ë¡¢Á°¤â¤Ã¤Æ¤½¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤ò +ÃΤꤿ¤¤¤È¤­¤â¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢2 Ä̤ê¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤º 1 ¤ÄÌܤϡ¢ÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤Î¹â¤µ¤Î°ìÍ÷¤ò +eb_font_list() ¤Ç¼èÆÀ¤¹¤ëÊýË¡¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢ÉûËÜ¥³¡¼¥É¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë eb_subbook_list() ¤È +»È¤¤Êý¤¬Îɤ¯»÷¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Font_Code font_list[EB_MAX_FONTS];
+int font_count;
+int i;
+
+if (eb_font_list(&book, font_list, &font_count) != EB_SUCCESS) {
+    printf("eb_font_list() failed\n");
+    return;
+}
+
+for (i = 0; i < font_count; i++) {
+    if (font_list[i] == EB_FONT_24)
+        printf("this subbook has EB_FONT_24\n");
+}
+
+
+ +

+2 ¤ÄÌܤϡ¢eb_have_font() ¤ò»È¤¦¤ä¤êÊý¤Ç¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ÆÃÄê¤Î¹â¤µ¤Î¥Õ¥©¥ó¥È¤ò¡¢ÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë¤«¤É¤¦¤« +Ä´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+if (eb_have_font(&book, EB_FONT_24)) {
+    printf("this subbook has EB_FONT_24\n");
+}
+
+
+ +

+¤Þ¤¿¡¢ÁªÂòÃæ¤ÎÉûËܤ¬È¾³Ñ³°»ú¡¢Á´³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ï¡¢¤½¤ì¤¾¤ì +eb_have_narrow_font(), eb_have_wide_font() +¤ò»È¤Ã¤ÆÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+if (eb_have_narrow_font(&book))
+    printf("this subbook has narrow font\n");
+if (eb_have_wide_font(&book))
+    printf("this subbook has wide font\n");
+
+
+ +

+¤Ê¤ª¡¢¤¢¤é¤«¤¸¤áÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤¤¤È¡¢³°»ú¤Î¹â¤µ¤ÏÁªÂò¤Ç¤­¤Ê¤¤¤Î¤Ç +Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +eb_set_subbook() ¤ÇÁªÂòÃæ¤ÎÉûËܤòÀÚ¤êÂؤ¨¤ë¤È¡¢³°»ú¥Õ¥©¥ó¥È +¤Î¹â¤µ¤Ï¾ï¤Ë̤ÁªÂò¤Î¾õÂÖ¤ËÌá¤ê¤Þ¤¹¡£ +

+ + +

³°»ú¥Õ¥©¥ó¥È¤Î¼è¤ê½Ð¤·

+ +

+³°»ú¤Î¹â¤µ¤òÁªÂò¤·¤¿¾õÂ֤Ǥ¢¤ì¤Ð¡¢³°»ú¤Î¥Õ¥©¥ó¥È¥Ç¡¼¥¿ +(¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿) ¤ò¼è¤ê½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹´Ø¿ô¤Ï¡¢ +Á´³Ñ³°»ú¤Ê¤é eb_wide_font_character_bitmap()¡¢ +Ⱦ³Ñ³°»ú¤Ê¤é eb_narrow_font_character_bitmap() ¤Ç¤¹¡£ +

+ +

+Á´³Ñ³°»ú 0xa121 ¤Î¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¥×¥í¥°¥é¥à¤Ï¡¢ +¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +Ⱦ³Ñ³°»ú¤Î¾ì¹ç¤Ï¡¢¸Æ¤Ó½Ð¤¹´Ø¿ô̾¤¬ÊѤï¤ë¤À¤±¤Ç¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤȳ°»ú¤Î¹â¤µ¤òÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+char bitmap[EB_SIZE_WIDE_FONT_48];
+
+if (eb_wide_font_character_bitmap(book, 0xa121, bitmap)
+    != EB_SUCCESS) {
+    return;
+}
+
+
+ +

+¤³¤³¤Ç¤Ï¡¢bitmap ¤Ë¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤ò³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£ +bitmap ¤ÎÎΰè¤È¤·¤Æ EB_SIZE_WIDE_FONT_48 +¥Ð¥¤¥È¤ò³ÎÊݤ·¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤ì¤Ï¹â¤µ 48 ¥Ô¥¯¥»¥ë¤Î³°»ú¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë +¤¿¤á¤ËɬÍפʥµ¥¤¥º¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤Î¥µ¥¤¥º¤Ï¡¢³°»ú¤Î¹â¤µ¤Ë±þ¤¸¤Æ°ìÄê¤Ç¤¹¡£ +¹â¤µ 48 ¥Ô¥¯¥»¥ë¤Ï³°»ú¤ÎÃæ¤Ç¤âºÇÂç¤Î¥µ¥¤¥º¤Ê¤Î¤Ç¡¢¤³¤Î¥µ¥¤¥º¤ÎÎΰè¤ò +ÍÑ°Õ¤¹¤ì¤Ð¡¢¤É¤Î¹â¤µ¤Î³°»ú¤Ç¤â³ÊǼ¤Ç¤­¤Þ¤¹¡£ +

+ +

+³°»ú¥Ç¡¼¥¿¤Ï¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×·Á¼°¤Î¥Ç¡¼¥¿¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +ÇØ·Ê¿§¤ò¥Ó¥Ã¥ÈÃÍ 0, Á°·Ê¿§¤ò¥Ó¥Ã¥ÈÃÍ 1 ¤È¤·¤Æ¡¢³Æ¥Ô¥¯¥»¥ë¤ÎÃͤòÊÂ¤Ù¤Æ +¤¢¤ê¤Þ¤¹¡£ +ʤÓÊý¤Ç¤¹¤¬¡¢º¸¾å¤«¤é¤Þ¤º¤Ï±¦¤Ë¸þ¤«¤Ã¤Æ¥Ô¥¯¥»¥ë¤ò½¦¤Ã¤Æ¤¤¤­¡¢º¸Ã¼¤Þ¤Ç +Í褿¤é°ì¤Ä²¼¤ÎÃʤ˹ߤê¤Æ¡¢¤Þ¤¿±¦Êý¸þ¤Ë¥Ô¥¯¥»¥ë¤ò½¦¤¤¤Þ¤¹¡£ +°Ê²¼¡¢°ìÈÖ²¼¤ÎÃʤޤǤ³¤ì¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢¥Ð¥¤¥ÈÆâ¤Ç¤Ï¡¢128, 64, 32, ...1 ¤Î·å¤Î½ç¤Ë¥Ó¥Ã¥ÈÃͤò³ÊǼ¤·¤Æ +¤¤¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢128 ¤Î·å¤Ï°ìÈÖº¸¤Î¥Ô¥¯¥»¥ë¡¢1 ¤Î·å¤Ï°ìÈÖ±¦¤Î¥Ô¥¯¥»¥ë¤ËÂбþ +¤·¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ë¡¢16x16 ¤ÎÁ´³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ÎÎã¤È¡¢¤½¤Î¥Ð¥¤¥ÈÎó¤òµ­¤·¤Þ¤¹¡£ +ÇØ·Ê¿§¤¬¢¢¡¢Á°·Ê¿§¤¬¢£¤Ç¤¹¡£ +

+ +
+
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x1f, 0x88,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x00, 0xc8,
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x09, 0x28,
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡0x09, 0xf8,
+¢¢¢¢¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x3e, 0x28,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x00, 0x28,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x10, 0x08,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x10, 0x08,
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡0x1f, 0xf8,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x18, 0x08,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x18, 0x08,
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡0x1f, 0xf8,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+
+
+ + +

³°»ú¥Õ¥©¥ó¥È¤ÎÊÑ´¹

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò XBM, XPM, GIF, BMP, PNG +¤Î³Æ²èÁü·Á¼°¤ËÊÑ´¹¤¹¤ë´Ø¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +ÊÑ´¹¤ò¹Ô¤¦´Ø¿ô¤Ï¡¢¼¡¤Î 5 ¤Ä¤Ç¤¹¡£ +

+ + + + + + + +
eb_bitmap_to_xbm() XBM ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_xpm() XPM ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_gif() GIF ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_bmp() BMP ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_png() PNG ¤Ø¤ÎÊÑ´¹
+ +

+¤É¤Î´Ø¿ô¤â¸Æ¤Ó½Ð¤·Êý¤ÏƱ¤¸¤Ç¤¹¤¬¡¢¤³¤³¤Ç¤Ï XBM ¤Ø¤ÎÊÑ´¹¤Î¥×¥í¥°¥é¥àÎã +¤ò¼¨¤·¤Þ¤¹¡£ +

+ +
+
+/* bitmap ¤Ë¹â¤µ 16 ¤ÎÁ´³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤¬³ÊǼ
+ * ¤µ¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+char bitmap[EB_SIZE_WIDE_FONT_16];
+char xbm[EB_SIZE_WIDE_FONT_16_XBM];
+size_t xbmsize;
+
+if (eb_wide_font_character_bitmap(bitmap, EB_WIDTH_WIDE_FONT_16,
+    EB_HEIGHT_FONT_16, xbm, &xbmsize) != EB_SUCCESS) {
+    return;
+}
+
+
+ +

+XPM, GIF, PNG ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£ +BMP ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÇò¤Ë¤Ê¤ê¤Þ¤¹¡£ +XBM ¤Ï¥â¥Î¥¯¥í¿ÞÈÇÍѤΥǡ¼¥¿·Á¼°¤Ê¤Î¤Ç¡¢¿§¤ÎÀßÄê¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥Æ¥­¥¹¥ÈÃæ¤Î³°»ú

+ +

+³°»ú¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿ (ËÜʸ¡¢¥á¥Ë¥å¡¼¤Ê¤É) ¤ÎÃæ¤Ç»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë½Ð¸½¤¹¤ë³°»ú¤ò¼±Ê̤·¤Æ +½èÍý¤ò¹Ô¤¦¤Ë¤Ï¡¢³°»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤òÀßÄꤷ¤Æ¡¢¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç½èÍý¤¹¤ë +¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+³°»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ï¡¢Á´³Ñ³°»ú¤ËÂФ¹¤ë EB_HOOK_WIDE_FONT ¤È +Ⱦ³Ñ³°»ú¤ËÂФ¹¤ë EB_HOOK_NARROW_FONT ¤ÎÆó¼ïÎब¤¢¤ê¤Þ¤¹¡£ +¤¤¤º¤ì¤â¡¢³°»ú¤¬°ì»ú½Ð¸½¤¹¤ëÅ٤ˡ¢ÀßÄꤷ¤¿¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯¤Î°·¤¤Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Font_Code ·¿

+ +

+³°»ú¥³¡¼¥É¤Ï¡¢³°»ú¤Î¹â¤µ (¥Ô¥¯¥»¥ë¿ô) ¤òɽ¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¹â¤µ¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
    +
  • EB_FONT_16 +
  • EB_FONT_24 +
  • EB_FONT_30 +
  • EB_FONT_48 +
  • EB_FONT_INVALID +
+ +

+³°»ú¥³¡¼¥É¤Î¼ÂÂΤÏÀ°¿ôÃͤǤ¹¤¬¡¢EB_FONT_16 ¤ÎÃÍ¤Ï 16 ¤Ç¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +¾¤âƱÍͤǤ¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+EB_FONT_INVALID ¤ÏÆÃÊ̤ʳ°»ú¥³¡¼¥É¤Ç¡¢ÉÔÀµ¤Ê³°»ú¥³¡¼¥ÉÃͤò +ɽ¤¹¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +

+ + +

Äê¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ëÄê¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/font.h>
+
+
+ + +

Äê¿ô EB_WIDTH_NARROW_FONT_16

+ +

Äê¿ô EB_WIDTH_NARROW_FONT_24

+ +

Äê¿ô EB_WIDTH_NARROW_FONT_30

+ +

Äê¿ô EB_WIDTH_NARROW_FONT_48

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_16

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_24

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_30

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_48

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Ä +ʬ¤ÎÉý (²£Êý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò int ·¿¤Çɽ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ + +

Äê¿ô EB_HEIGHT_NARROW_FONT_16

+ +

Äê¿ô EB_HEIGHT_NARROW_FONT_24

+ +

Äê¿ô EB_HEIGHT_NARROW_FONT_30

+ +

Äê¿ô EB_HEIGHT_NARROW_FONT_48

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_16

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_24

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_30

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_48

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô¤ò int ·¿¤Çɽ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB_HEIGHT_NARROW_FONT_16 ¤ª¤è¤Ó +EB_HEIGHT_WIDE_FONT_16 ¤Î¼ÂºÝ¤ÎÃÍ¤Ï 16 ¤Ç¤¹¡£ +(³°»ú¥³¡¼¥É EB_FONT_16 ¤Î¼ÂºÝ¤ÎÃÍ¤Ï 16 ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢ +Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£) +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë¤Î¤ËɬÍפÊÎΰè¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_XBM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_XBM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_XBM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_XBM

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_xbm() ¤òÍѤ¤¤Æ XBM ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î XBM ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_XPM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_XPM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_XPM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_XPM

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_xpm() ¤òÍѤ¤¤Æ XPM ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î XPM ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_GIF

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_GIF

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_GIF

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_GIF

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_gif() ¤òÍѤ¤¤Æ GIF ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î GIF ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_BMP

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_BMP

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_BMP

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_BMP

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_bmp() ¤òÍѤ¤¤Æ BMP ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î BMP ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_PNG

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_PNG

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_PNG

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_PNG

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_png() ¤òÍѤ¤¤Æ PNG ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î PNG ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/font.h>
+
+
+ + +

EB_Error_Code eb_font (EB_Book *book, EB_Font_Code *font_code)

+ +

+´Ø¿ô eb_font() ¤Ï¡¢ÁªÂò¤·¤Æ¤¤¤ëÉûËܤˤª¤¤¤Æ¡¢ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òɽ¤¹³°»ú¥³¡¼¥É¤ò font_code ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È font_code ¤Î»Ø¤¹Îΰè¤Ë EB_FONT_INVALID +¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +³°»ú¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ½¤Î¤â¤Î¤òÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â¡¢Æ±ÍͤǤ¹¡£ +

+ + +

EB_Error_Code eb_set_font (EB_Book *book, EB_Font_Code font_code)

+ +

+´Ø¿ô eb_set_font() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤˤª¤±¤ë³°»ú¥Õ¥©¥ó¥È¤Î +¹â¤µ¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£ +¥»¥Ã¥È¤¹¤ë³°»ú¥Õ¥©¥ó¥È¤Î¡Ö¹â¤µ¡×¤Ï¡¢Âбþ¤¹¤ë³°»ú¥³¡¼¥É¤ò°ú¿ô +font_code ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢»ØÄꤷ¤¿¡Ö¹â¤µ¡×¤¬ +¡ÖÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¡×¤È¤Ê¤ê¤Þ¤¹¡£ +¤¹¤Ç¤Ë³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó̤ÁªÂò¤Î¾õÂÖ¤Ë +¤·¤Æ¤«¤é¤¢¤é¤¿¤á¤Æ font_code ¤òÁªÂò¤·¤Þ¤¹¡£ +

+ +

+¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¡¢³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ï̤ÁªÂò¤Î +¾õÂ֤ˤʤê¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢¤½¤ÎÉûËܤ¬»ý¤Ã¤Æ¤¤¤Ê¤¤³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤¬»ØÄꤵ¤ì¤ë¤È¡¢ +EB_ERR_NO_SUCH_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_unset_font (EB_Book *book)

+ +

+´Ø¿ô eb_unset_font() ¤Ï¡¢ÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤ò̤ÁªÂò +¤Î¾õÂÖ¤ËÌᤷ¤Þ¤¹¡£ +book ¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤äÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢ +¤â¤·¤¯¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï²¿¤â¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_font_list (EB_Book *book, EB_Font_Code *font_list, int *font_count)

+ +

+´Ø¿ô eb_font_list() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ë³°»ú¤Î +¹â¤µ¤Î°ìÍ÷¤ò EB_Font_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢font_list +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_FONTS ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢½ñÀÒ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤθĿô¤ò font_count ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +(¸½ºß¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï ¡¢EB_MAX_FONTS ¤ÎÃÍ¤Ï 4 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +¹â¤µ 16, 24, 30, 48 ¥Ô¥¯¥»¥ë¤Î 4 ¼ïÎà¤Ç¤¹¡£) +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢font_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_font (EB_Book *book, EB_Font_Code font_code)

+ +

+´Ø¿ô eb_font() ¤Ï¡¢font_code ¤Ç»ØÄꤷ¤¿¹â¤µ¤Î +³°»ú¥Õ¥©¥ó¥È¤ò¡¢ÁªÂòÃæ¤ÎÉûËܤ¬»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+»ý¤Ã¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_font_height (EB_Book *book, int *height)

+ +

+´Ø¿ô eb_font_height() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ (½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò height ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢height ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_font_height2 (EB_Font_Code font_code, int *height)

+ +

+eb_font_height() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢°ú¿ô +font_height ¤Ç»ØÄꤵ¤ì¤¿³°»ú¥³¡¼¥É¤Î¹â¤µ (½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) +¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ + +

int eb_have_narrow_font (EB_Book *book)

+ +

int eb_have_wide_font (EB_Book *book)

+ +

+´Ø¿ô eb_have_narrow_font() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ +¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍͤˡ¢´Ø¿ô eb_have_wide_font() ¤Ï¡¢Á´³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤« +¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÄêµÁ¤·¤Æ¤¤¤ì¤Ð 1 ¤ò¡¢ÄêµÁ¤·¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_width (EB_Book *book, int *width)

+ +

EB_Error_Code eb_wide_font_width (EB_Book *book, int *width)

+ +

+´Ø¿ô eb_narrow_font_width() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ÎÉý (²£Êý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò¡¢ +height ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ƱÍͤˡ¢eb_wide_font_width() ¤ÏÁ´³Ñ³°»ú¤ÎÉý¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢width ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_width2 (EB_Font_Code font_code, int *width)

+ +

EB_Error_Code eb_wide_font_width2 (EB_Font_Code font_code, int *width)

+ +

+eb_narrow_font_width(), eb_wide_font_width() ¤È +»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢°ú¿ôfont_height ¤Ç»ØÄꤵ¤ì¤¿ +³°»ú¥³¡¼¥É¤ÎÉý (²£Êý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_size (EB_Book *book, size_t *size)

+ +

EB_Error_Code eb_wide_font_size (EB_Book *book, size_t *size)

+ +

+´Ø¿ô eb_narrow_font_size() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ë¤ª¤±¤ëȾ³Ñ³°»ú°ì¸Äʬ¤Î¥Ç¡¼¥¿¥µ¥¤¥º (¥Ð¥¤¥È¿ô) ¤ò¡¢ +size ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ƱÍͤˡ¢eb_wide_font_size() ¤ÏÁ´³Ñ³°»ú¤Î¥µ¥¤¥º¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢size ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_size2 (EB_Font_Code font_code, size_t *size)

+ +

EB_Error_Code eb_wide_font_size2 (EB_Font_Code font_code, size_t *size)

+ +

+eb_narrow_font_size(), eb_wide_font_size() ¤È +»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢°ú¿ô font_height ¤Ç»ØÄê +¤µ¤ì¤¿³°»ú¥³¡¼¥É¤Î³°»ú°ì¸Äʬ¤Î¥Ç¡¼¥¿¥µ¥¤¥º¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_start (EB_Book *book, int *start)

+ +

EB_Error_Code eb_wide_font_start (EB_Book *book, int *start)

+ +

+´Ø¿ô eb_narrow_font_start() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤˤª¤±¤ëȾ³Ñ³°»ú¤ÎÀèƬ¤Îʸ»úÈÖ¹æ (Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇ¾®¤Î¤â¤Î) +¤ò¡¢start ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_start() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤ÆÄ´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_start() ¤ÈƱ¤¸ +¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_end (EB_Book *book, int *end)

+ +

EB_Error_Code eb_wide_font_end (EB_Book *book, int *end)

+ +

+´Ø¿ô eb_narrow_font_end() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËÜ +¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ÎºÇ¸å¤Îʸ»úÈÖ¹æ (Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇÂç¤Î¤â¤Î) ¤ò¡¢ +start ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_end() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë¤Ä¤¤¤Æ +Ä´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_end() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_character_bitmap (EB_Book *book, int character_number, char *bitmap)

+ +

EB_Error_Code eb_wide_font_character_bitmap (EB_Book *book, int character_number, char *bitmap)

+ +

+´Ø¿ô eb_narrow_font_character_bitmap() ¤Ï¡¢book +¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤·¤Æ¤¤¤ë¡¢È¾³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¼è¤ê½Ð¤¹³°»ú¤Îʸ»úÈÖ¹æ¤ò¡¢character_number ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò bitmap ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¡¢EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢bitmap ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â¡¢¤ä¤Ï¤ê EB_ERR_NO_CUR_FONT +¤òÊÖ¤·¤Þ¤¹¡£ +ʸ»úÈÖ¹æ character_number ¤¬³°»ú¤ÎÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢ +EB_ERR_NO_SUCH_CHAR_BMP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_character_bitmap() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_narrow_font_character_bitmap() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Î·Á¼°¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö³°»ú¥Õ¥©¥ó¥È¤Î¼è¤ê½Ð¤·¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

EB_Error_Code eb_forward_narrow_font_character (EB_Book *book, int n, int *character_number)

+ +

EB_Error_Code eb_forward_wide_font_character (EB_Book *book, int n, int *character_number)

+ +

+´Ø¿ô eb_forward_narrow_font_character() ¤Ï¡¢book +¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëȾ³Ñ³°»ú¤Îʸ»úÈÖ¹æ character_number +¤În ¸Ä¸å¤í¤Ë°ÌÃÖ¤¹¤ë³°»ú¤Îʸ»úÈÖ¹æ¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë¡¢character_number ¤Î»Ø¤¹Îΰè¤Ë +ʸ»úÈÖ¹æ¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤­¤Þ¤¹¡£ +´Ø¿ô¤Î½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢Ìá¤Ã¤¿¤È¤­¤Ë n ¸Äʬ¤À¤±¸åÊý¤Îʸ»úÈÖ¹æ +¤Ë½ñ¤­´¹¤ï¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¸Ä¸å¤í¤Ë¤â¤¦³°»ú¤¬¤Ê¤¤¾ì¹ç¤ä¡¢¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë +character_number ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ó¤Ç¤¢¤Ã¤¿Ê¸»úÈֹ椬³°»ú¤Î +ÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï EB_ERR_NO_SUCH_CHAR_BMP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¤Ë¤ÏÉé¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¼¡¤Î¸Æ¤Ó½Ð¤·¤ÈÅù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+/* n < 0 ¤È¤¹¤ë */
+eb_backward_narrow_font_character (book, -n, character_number);
+
+
+ +

+´Ø¿ô eb_forward_wide_font_character() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤Ë¤Ä¤¤¤ÆÁàºî¤¹¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_forward_narrow_font_character() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_backward_narrow_font_character (EB_Book *book, int n, int *character_number)

+ +

EB_Error_Code eb_backward_wide_font_character (EB_Book *book, int n, int *character_number)

+ +

+´Ø¿ô eb_backward_narrow_font_character() ¤Ï +eb_forward_narrow_font_character() ¤È¤Ï¤Á¤ç¤¦¤ÉµÕ¤Î´Ø¿ô¤Ç¤¹¡£ +book ¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëȾ³Ñ³°»ú¤Îʸ»úÈÖ¹æ +character_number ¤Î n ¸ÄÁ°Êý¤Ë°ÌÃÖ¤¹¤ë³°»ú¤Î +ʸ»úÈÖ¹æ¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+ƱÍͤˡ¢eb_backward_wide_font_character() ¤Ï¡¢Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤Æ n ¸ÄÁ°Êý¤Î³°»ú¤Îʸ»úÈÖ¹æ¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤Ç¡¢ +eb_forward_wide_font_character() ¤ÈÈ¿ÂФδؿô¤Ç¤¹¡£ +

+ +

+n ¤Ë¤ÏÉé¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¡¢¤½¤ì¤¾¤ì¼¡¤Î¸Æ¤Ó½Ð¤·¤È +Åù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+/* Ⱦ³Ñ³°»ú¤Î¾ì¹ç (n < 0) */
+eb_forward_narrow_font_character (book, -n, character_number);
+
+/* Á´³Ñ³°»ú¤Î¾ì¹ç (n < 0) */
+eb_forward_wide_font_character (book, -n, character_number);
+
+
+ + +

EB_Error_Code eb_narrow_font_xbm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_xpm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_gif_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_bmp_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_png_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_xbm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_xpm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_gif_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_bmp_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_png_size (EB_Font_Code height, size_t *size)

+ +

+ºÇ½é¤Î 5 ¤Ä¤Î´Ø¿ô +(eb_narrow_font_xbm_size() ¡Á +eb_narrow_font_png_size()) ¤Ï¡¢³°»ú¥³¡¼¥É height +¤ÎȾ³Ñ³°»ú°ì¸Ä¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò XBM, XPM, GIF, BMP, PNG ·Á¼°¤Ë¤½¤ì¤¾¤ìÊÑ´¹ +¤·¤¿¤È¤­¤Î¥Ç¡¼¥¿¥µ¥¤¥º¤ò size ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+ƱÍͤˡ¢¸å¤í¤Î 5 ¤Ä¤Î´Ø¿ô +(eb_wide_font_xbm_size() ¡Á +eb_wide_font_png_size()) ¤Ï¡¢Á´³Ñ³°»ú¤òÊÑ´¹¤·¤¿¤È¤­¤Î +¥Ç¡¼¥¿¥µ¥¤¥º¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢size ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_bitmap_to_xbm (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_xpm (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_gif (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_bmp (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_png (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

+¤³¤ì¤é 5 ¤Ä¤Î´Ø¿ô¤Ï¡¢eb_narrow_font_character() ¤Þ¤¿¤Ï +eb_wide_font_character() ¤Ç¼è¤ê½Ð¤·¤¿³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò +XBM, XPM, GIF, BMP, PNG ·Á¼°¤Ë¤½¤ì¤¾¤ìÊÑ´¹¤·¤Þ¤¹¡£ +

+ +

+¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Î»Ø¤¹Îΰè¤ò bitmap ¤Ç»ØÄꤷ¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×¤Î +¹â¤µ¤ÈÉý¤ò width, height ¤ÇÅϤ·¤Þ¤¹¡£ +

+ +

+´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤«¤éÌá¤ë¤È¡¢image ¤Î»Ø¤¹Îΰè¤ËÊÑ´¹¸å¤Î¥Ç¡¼¥¿¤¬ +½ñ¤­¹þ¤Þ¤ì¡¢image_length ¤Î»Ø¤¹Îΰè¤ËÊÑ´¹¸å¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤¬ +½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+XPM, GIF, PNG ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£ +BMP ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÇò¤Ë¤Ê¤ê¤Þ¤¹¡£ +XBM ¤Ï¥â¥Î¥¯¥í¿ÞÈÇÍѤΥǡ¼¥¿·Á¼°¤Ê¤Î¤Ç¡¢¿§¤ÎÀßÄê¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2002-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     font <book-path> <subbook-index>
+ * Îã:
+ *     font /cdrom 0
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢¤½¤Î
+ *     ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñ³°»ú (¹â¤µ 16 ¥Ô¥¯¥»¥ë) ¤ò¤¹¤Ù¤Æ¥¢¥¹¥­¡¼
+ *     ¥¢¡¼¥È¤Çɽ¼¨¤·¤Þ¤¹¡£
+ *
+ *     ¤½¤ÎÉûËܤ¬¡¢¹â¤µ 16 ¥Ô¥¯¥»¥ë¤ÎȾ³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤È¡¢¥¨
+ *     ¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/font.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    int subbook_index;
+    int font_start;
+    unsigned char bitmap[EB_SIZE_NARROW_FONT_16];
+    int i, j;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 3) {
+        fprintf(stderr, "Usage: %s book-path subbook-index\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    error_code = eb_set_subbook(&book, subbook_list[subbook_index]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /*¡Ö¸½ºß¤Î³°»ú¤ÎÂ礭¤µ¡×¤òÀßÄê¡£*/
+    if (eb_set_font(&book, EB_FONT_16) < 0) {
+        fprintf(stderr, "%s: failed to set the font size, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ³°»ú¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/
+    error_code = eb_narrow_font_start(&book, &font_start);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get font information, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    i = font_start;
+    for (;;) {
+        /* ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼èÆÀ¡£*/
+        error_code = eb_narrow_font_character_bitmap(&book, i,
+            (char *)bitmap);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get font data, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+
+        /* ¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò¥¢¥¹¥­¡¼¥¢¡¼¥È¤Ë¤·¤Æ½ÐÎÏ¡£*/
+        printf("code point=%04x\n", i);
+        for (j = 0; j < 16; j++) {
+            fputc((bitmap[j] & 0x80) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x40) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x20) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x10) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x08) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x04) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x02) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x01) ? '*' : ' ', stdout);
+            fputc('\n', stdout);
+        }
+        fputs("--------\n", stdout);
+
+        /* ³°»ú¤Îʸ»úÈÖ¹æ¤ò°ì¤Ä¿Ê¤á¤ë¡£*/
+        error_code = eb_forward_narrow_font_character(&book, 1, &i);
+        if (error_code != EB_SUCCESS)
+            break;
+    }
+        
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿

+ +

+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿ (binary data) ¤È¤Ï¡¢ +¿ÞÈǤäÆ°²è¡¢²»À¼¤È¤¤¤Ã¤¿¥Þ¥ë¥Á¥á¥Ç¥£¥¢¥Ç¡¼¥¿¤Î¤³¤È¤ò»Ø¤·¤Þ¤¹¡£ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï¡¢É¬¤º¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +(¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡× ¤ò»²¾È¤Î¤³¤È) +¤«¤é»²¾È¤µ¤ì¤ë·Á¤ÇÍøÍѤµ¤ì¤Þ¤¹¡£ +

+ +

+º£¤Î¤È¤³¤í EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Á´¼ïÎà¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ò¼è¤ê°·¤¦¤³¤È¤¬ +¤Ç¤­¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +ÅŻҥ֥寤ǰ·¤¨¤ë¤Î¤Ï¡¢2 ³¬Ä´¤Î¥â¥Î¥¯¥í¿ÞÈǤȡ¢¥«¥é¡¼¿ÞÈÇ (JPEG) ¤À¤± +¤Ç¤¹¡£ +EPWING ¤Ç¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈÇ¡¢¥«¥é¡¼¿ÞÈÇ (BMP ¤ª¤è¤Ó JPEG) ¤Ë²Ã¤¨¤Æ¡¢ +WAVE (PCM) ²»À¼¡¢MPEG Æ°²è¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬Ä󶡤·¤Æ¤¤¤ë¤Î¤Ï¡¢¤³¤¦¤·¤¿¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ò +CD-ROM ½ñÀÒ¤«¤é¼èÆÀ¤¹¤ëµ¡Ç½¤À¤±¤Ç¤¹¡£ +ɽ¼¨¤·¤¿¤êºÆÀ¸¤·¤¿¤ê¤¹¤ëµ¡Ç½¤ÏÍÑ°Õ¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢±Ñϼ­½ñ¤ä¹ñ¸ì¼­½ñ¤È¤¤¤Ã¤¿¼­½ñ¤À¤±¤òÂоݤˤ¹¤ë¤Ê¤é¡¢ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Îɽ¼¨¤äºÆÀ¸¤Ë¤ÏÂбþ¤·¤Ê¤¯¤Æ¤â»Ù¾ã¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤·¤«¤·°ìÊý¤Ç¤Ï¡¢¿Þ´Õ¤ä¿ô¼°¤Îɽ¸½¤Ë¥â¥Î¥¯¥í¿ÞÈǤò»È¤Ã¤Æ¤¤¤ë¿ô³Ø¼­Åµ¤Î +¤è¤¦¤Ë¡¢Âбþ¤·¤Ê¤¤¤ÈÉÔÊؤʤâ¤Î¤â¤¢¤ê¤Þ¤¹¡£ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Îɽ¼¨¤äºÆÀ¸¤Îµ¡Ç½¤ò¼ÂÁõ¤¹¤ë¤«¤É¤¦¤«¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó +¤ÎÂоݼ­½ñ¤ò¤É¤ÎÈϰϤޤǤˤ¹¤ë¤Î¤«¤Ë¤è¤Ã¤Æ·è¤á¤ë¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£ +

+ +

+°Ê²¼¡¢¤³¤Î¾Ï¤Ç¤Ï¼ïÎàÊ̤˥Х¤¥Ê¥ê¥Ç¡¼¥¿¤Î°·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ +

+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Î¼ïÎàËè¤Ë¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·Êý¤ÏÈù̯¤Ë°Û¤Ê¤ê¤Þ¤¹¤¬ (¤³¤ì¤Ï +¥Ç¡¼¥¿¤Î¼ýÏ¿ÊýË¡¤¬Èù̯¤Ë°Û¤Ê¤Ã¤Æ¤¤¤ë¤«¤é¤Ë¾¤Ê¤ê¤Þ¤»¤ó)¡¢¤ª¤ª¤è¤½¼ê½ç +¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
    +
  1. +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥Õ¥Ã¥¯¤òÍѤ¤¤Æ¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Î»²¾È¾ðÊó¤ò¼èÆÀ¤¹¤ë¡£ + +
  2. +eb_binary_set_...() ´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢»ØÄꤷ¤¿°ÌÃ֤Π+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ò¤³¤ì¤«¤éÆɤ߹þ¤à»Ý¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤ë¡£ + +
  3. +eb_read_binary() ¤Ç¼ÂºÝ¤Ë¥Ç¡¼¥¿¤òÆɤ߹þ¤à¡£ +
+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÈƱÍͤˡ¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤âÉûËܤË°¤¹¤ë¥Ç¡¼¥¿ +¤Ç¤¹¤Î¤Ç¡¢ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¤È¼èÆÀ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤ÏÊ̤Π+¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤¬³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢ÁÐÊý¤ò¸ò¸ß¤ËÆɤ߹þ¤ó¤Ç¤â¡¢Æ°ºî¤Ë¤Ï±Æ¶Á¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + + +

¥â¥Î¥¯¥í¿ÞÈÇ

+ +

+2 ³¬Ä´¤Î¥â¥Î¥¯¥í¿ÞÈǤϡ¢ÅŻҥ֥寡¢EPWING ÁÐÊý¤Ë¸ºß¤·¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Ç¤Ï¤É¤Á¤é¤â°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +(ÅŻҥ֥寤˸ºß¤¹¤ë 16 ³¬Ä´¤Î¥â¥Î¥¯¥í¿ÞÈǤϡ¢º£¤Î¤È¤³¤í EB ¥é¥¤¥Ö¥é¥ê +¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£) +

+ +

+¥â¥Î¥¯¥í¿ÞÈǥǡ¼¥¿¤ÎÆâÉô·Á¼°¤Ï³°»ú¤ÈƱ¤¸¤Ç¤¹¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢ +1 ¥Ô¥¯¥»¥ë¤Ë 1bit ¤ò³ä¤êÅö¤Æ¤¿ BMP ·Á¼°¤ËÊÑ´¹¤·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë +ÅϤ¹¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤«¤é¤Ï¡¢¤¢¤¿¤«¤â BMP ¤Î¿ÞÈǥǡ¼¥¿¤¬¼ýÏ¿ +¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤Þ¤¹¡£ +

+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿Æ⤫¤é¤Ï¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ç¤¢¤ë¥â¥Î¥¯¥í¿ÞÈǤò»²¾È¤¹¤ë·Á +¤ò¤È¤ê¤Þ¤¹¡£ +¥â¥Î¥¯¥í¿ÞÈǤò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢¤³¤Î»²¾È¾ðÊó¤¬É¬ÍפǤ¹¡£ +»²¾È¾ðÊó¤Î¼èÆÀ¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿½èÍý»þ¤Ë¡¢¥â¥Î¥¯¥í¿ÞÈǤγ«»Ï¤È½ªÎ»¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MONO_GRAPHIC +¤È EB_HOOK_END_MONO_GRAPHIC ¤òÍѤ¤¤Æ¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MONO_GRAPHIC ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô +(argv) ¤Ï 4 ¤Ä¤¢¤ê¡¢¤³¤Î¤¦¤Á¤Î argv[2] ¤È +argv[3] ¤¬¿ÞÈǤÎÉý¤È¹â¤µ (¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢¥Õ¥Ã¥¯ EB_HOOK_END_MONO_GRAPHIC ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +°ú¿ô¤Ï 3 ¤Ä¤Ç¡¢argv[1] ¤È argv[2] ¤¬¡¢ +¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥â¥Î¥¯¥í¿ÞÈǤò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢¾åµ­¤Î¥Õ¥Ã¥¯¤«¤éÆÀ¤¿¿ÞÈǤΥڡ¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¡¢¤ª¤è¤ÓÉý¤È¹â¤µ¤òµ­²±¤·¤Æ¤ª¤­¤Þ¤¹¡£ +

+ +

+¼¡¤Ë¡¢eb_set_binary_mono_graphic() ¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢¤³¤ì¤«¤é +¥â¥Î¥¯¥í¿ÞÈǤΥǡ¼¥¿¤ò¼èÆÀ¤¹¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +eb_set_binary_mono_graphic() ¤Ø¤Î°ú¿ô¤Ë¤Ï¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤È¡¢Àè¤Û¤ÉÆÀ¤¿¿ÞÈǤؤΥڡ¼¥¸Èֹ桢 +¥ª¥Õ¥»¥Ã¥È¡¢Éý¡¢¹â¤µ¤òÅϤ·¤Þ¤¹¡£ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¤³¤ì¤«¤é¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ë¿ÞÈǤò +¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤò¤¢¤é¤«¤¸¤áÁªÂò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+/* eb_set_binary_mono_graphic() ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥× */
+EB_Error_Code
+eb_set_binary_mono_graphic(EB_Book *book, EB_Position *position,
+    int width, int height);
+
+
+ +

+ÅŻҥ֥寤Ǥϡ¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤ëÉý¤È¹â¤µ¤ÎÃÍ¤Ï 0 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢ +¤½¤Î¤Þ¤Þ eb_set_binary_mono_graphic() ¤ËÅϤ·¤Þ¤¹¡£ +(EPWING ¤Ç¤Ï 0 ¤òÅϤ·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£) +

+ +

+°Ê¾å¤Ç¿ÞÈǥǡ¼¥¿¤Î¼èÆÀ½àÈ÷¤¬¤Ç¤­¤¿¤Î¤Ç¡¢¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢eb_read_binary() ¤ò»È¤¤¤Þ¤¹¡£ +

+ +
+
+#define MAX_LENGTH 1000
+char bitmap[MAX_LENGTH];
+ssize_t bitmap_length;
+
+if (eb_read_binary(&book, MAX_LENGTH, bitmap, &bitmap_length)
+    != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+À®¸ù¤¹¤ë¤È¡¢Æɤ߹þ¤ó¤À¿ÞÈǥǡ¼¥¿¤¬ bitmap ¤Ë½ñ¤­¹þ¤Þ¤ì¡¢ +²¿¥Ð¥¤¥È½ñ¤­¹þ¤ó¤À¤Î¤«¤¬ bitmap_length ¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +½ñ¤­¹þ¤Þ¤ì¤ë¥Ð¥¤¥È¿ô¤Ï¡¢ºÇÂç¤Ç MAX_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +

+ +

+ɬ¤º¤·¤â°ì²ó¤Î eb_read_binary() ¤Î¸Æ¤Ó½Ð¤·¤Ç¿ÞÈǥǡ¼¥¿¤ò +½ªÃ¼¤Þ¤ÇÆɤ߹þ¤àɬÍפϤʤ¯¡¢´Ø¿ô¤ò·«¤êÊÖ¤·¸Æ¤Ó½Ð¤»¤Ð¡¢Á°²ó¤Î³¤­¤ò +Æɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +eb_read_binary() ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î½ªÃ¼¤Þ¤ÇÍè¤ë¤È¤½¤ì°Ê¾å +¥Ç¡¼¥¿¤ÏÆɤ߹þ¤ß¤Þ¤»¤ó¤Î¤Ç¡¢eb_read_binary() ¤¬ 0 ¤òÊÖ¤·¤¿ +»þÅÀ¤Ç¿ÞÈǥǡ¼¥¿¤¬½ªÃ¼¤·¤¿¤³¤È¤òǧ¼±¤Ç¤­¤Þ¤¹¡£ +

+ + +

¥«¥é¡¼¿ÞÈÇ

+ +

+¥«¥é¡¼¿ÞÈǤϡ¢ÅŻҥ֥å¯¤Ç¤Ï JPEG ·Á¼°¡¢EPWING ¤Ç¤Ï JPEG ¤È BMP (DIB) +·Á¼°¤Î¤â¤Î¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤ì¤é¤ò¤¹¤Ù¤Æ°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢ÅŻҥ֥寤ؤÎÂбþ +¤Ï¸ÂÄêŪ¤Ê¤â¤Î¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£(¾Ü¤·¤¯¤Ï¸å½Ò¤·¤Þ¤¹¡£) +

+ +

+¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤÈƱÍͤ˥ƥ­¥¹¥È¥Ç¡¼¥¿ +¤«¤é¥«¥é¡¼¿ÞÈǤؤλ²¾È¾ðÊó¤ò¥Õ¥Ã¥¯¤òÄ̤¸¤Æ¼èÆÀ¤·¡¢Â³¤¤¤Æ¼ÂºÝ¤Ë +¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤òÆɤ߹þ¤à¤È¤¤¤¦¼ê½ç¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+eb_set_binary_color_graphic() ¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢¤³¤ì¤«¤é +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤ò¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò +EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +eb_set_binary_color_graphic() ¤Ø¤Î°ú¿ô¤Ë¤Ï¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë²Ã¤¨¤Æ¡¢¥«¥é¡¼¿ÞÈǤΥڡ¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤òÅϤ·¤Þ¤¹¡£ +

+ +
+
+/* eb_set_binary_color_graphic() ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥× */
+EB_Error_Code
+eb_set_binary_color_graphic(EB_Book *book, EB_Position *position);
+
+
+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¤³¤ì¤«¤é¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ë¿ÞÈǤò +¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤò¤¢¤é¤«¤¸¤áÁªÂò¤·¤Æ¤ª¤­¤Þ¤¹¡£ + +¥«¥é¡¼¿ÞÈǤΥڡ¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤Î¾ðÊó¤Ï¡¢¥«¥é¡¼¿ÞÈǤγ«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯¤«¤éÆÀ¤Þ¤¹¡£ +¥Õ¥Ã¥¯¤Ï¡¢¥¤¥ó¥é¥¤¥óɽ¼¨ÍѤÈÈ󥤥ó¥é¥¤¥óÍѤΠ2 ¼ïÎब¤¢¤ê¡¢¤µ¤é¤Ë +¤½¤ì¤¾¤ì³«»Ï¥Õ¥Ã¥¯¤¬ JPEG ÍÑ¤È BMP ÍѤËʬ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_HOOK_BEGIN_COLOR_BMP
+
EB_HOOK_BEGIN_COLOR_JPEG
+
+È󥤥ó¥é¥¤¥óÍÑ BMP, JPEG ¤Î³«»Ï¥Õ¥Ã¥¯ + +
EB_HOOK_END_COLOR_GRAPHIC
+
+È󥤥ó¥é¥¤¥óÍÑ¥«¥é¡¼¿ÞÈÇ (BMP, JPEG ¶¦ÄÌ) ¤Î½ªÎ»¥Õ¥Ã¥¯ + +
EB_HOOK_BEGIN_IN_COLOR_BMP
+
EB_HOOK_BEGIN_IN_COLOR_JPEG
+
+¥¤¥ó¥é¥¤¥óÍÑ BMP, JPEG ¤Î³«»Ï¥Õ¥Ã¥¯ + +
EB_HOOK_END_IN_COLOR_GRAPHIC
+
+È󥤥ó¥é¥¤¥óÍÑ¥«¥é¡¼¿ÞÈÇ (BMP, JPEG ¶¦ÄÌ) ¤Î½ªÎ»¥Õ¥Ã¥¯ +
+ +

+È󥤥ó¥é¥¤¥óÍѤνªÎ»¥Õ¥Ã¥¯ EB_HOOK_END_GRAPHIC ¤Ç¤Ï¡¢ +¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô¤Î argv[2] ¤È argv[3] ¤¬¡¢ +¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤ò +eb_set_binary_color_graphic() ¤ËÅϤ·¤Æ¤ä¤ê¤Þ¤¹¡£ +ƱÍͤˡ¢¥¤¥ó¥é¥¤¥óÍѤνªÎ»¥Õ¥Ã¥¯ EB_HOOK_END_IN_GRAPHIC +¤Ç¤Ï¡¢argv[2] ¤È argv[3] ¤¬¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¤Î¤Ç¡¢¤³¤ì¤òÅϤ·¤Þ¤¹¡£ +

+ +

+¸å¤Ï¡¢¼ÂºÝ¤Ë¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤÈƱÍÍ¤Ë eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +»È¤¤Êý¤Ï¤Þ¤Ã¤¿¤¯°ì½ï¤Ç¤¹¤Î¤Ç¡¢¾Ü¤·¤¯¤Ï +¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¤¿¤À¤·¡¢ÅŻҥ֥寤Υ«¥é¡¼¿ÞÈǤˤĤ¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤Î½ªÎ»°ÌÃÖ¤¬Íè¤Æ¤â +EB ¥é¥¤¥Ö¥é¥ê¤ÏÆɤ߹þ¤ß¤ò»ß¤á¤Ê¤¤¤È¤¤¤¦À©¸Â»ö¹à¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢¥Ç¡¼¥¿¤ÎÂ礭¤µ¤Ë´Ø¤¹¤ë¾ðÊ󤬵­¤µ¤ì¤Æ¤¤¤Ê¤¤¤¿¤á¤Ç¡¢¥Ç¡¼¥¿¤Î +½ªÃ¼°ÌÃ֤ϡ¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬ JPEG ¤Î¥Ç¡¼¥¿¤ò¥Ç¥³¡¼¥É¤·¤Æ³ä¤ê½Ð¤¹¤·¤« +¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈÇ

+ +

+¥«¥é¡¼¿ÞÈǤˤϡ¢²èÁüÆâ¤ÎÆÃÄê¤Î¶ë·ÁÎΰè¤Ë»²¾ÈÀè¤Î¾ðÊó¤òÉÕ¤±²Ã¤¨¤¿¤â¤Î¤¬ +¤¢¤ê¤Þ¤¹¡£ +HTML ¤Ë¤ª¤±¤ë¥¯¥ê¥Ã¥«¥Ö¥ë¡¦¥¤¥á¡¼¥¸ (clickable image) ¤È¤Û¤ÜƱ¤¸¤Ç¡¢¤½¤Î +¶ë·ÁÎΰèÆâ¤Ë¥Þ¥¦¥¹¥Ý¥¤¥ó¥¿¤¬¤¢¤ë´Ö¤Ë¥Þ¥¦¥¹¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤¢¤é¤«¤¸¤á +·è¤á¤é¤ì¤¿¥ê¥ó¥¯Àè¤Ë²èÌ̤¬Á«°Ü¤¹¤ë¤È¤¤¤¦»Å³Ý¤±¤Ç¤¹¡£ +¥ê¥ó¥¯Àè¤È¤Ê¤ë¶ë·ÁÎΰè¤Ï¡¢²èÁü°ì¤Ä¤ËÂФ·¤ÆÊ£¿ô¸ÄÅÐÏ¿¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈǤÎÎã
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¡¡¡¡¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¢¡¡¡¡¶ë·ÁÎΰ裱¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¶ë·ÁÎΰ裲¡¡¡¡¨¢¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¡¡¡¡¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¢¡¡¡¡¶ë·ÁÎΰ裳¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¿ÞÈÇ¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈǤμè¤ê°·¤¤Êý¤Ï¡¢Ä̾ï¤Î¥«¥é¡¼¿ÞÈǤò³ÈÄ¥¤·¤¿·Á¤È +¤Ê¤ê¤Þ¤¹¡£Ä̾ï¤Î¥«¥é¡¼¿ÞÈǤξì¹ç¤Ç¤Ï¡¢¤¿¤È¤¨¤Ð JPEG ¤ÎÈ󥤥ó¥é¥¤¥ó +²èÁü¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ê½çÈ֤ǥե寤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£ +

+ +
    +
  1. EB_HOOK_BEGIN_COLOR_JPEG (È󥤥ó¥é¥¤¥óÍÑ JPEG ³«»Ï) +
  2. EB_HOOK_END_COLOR_GRAPHIC (È󥤥ó¥é¥¤¥óÍÑ JPEG ½ªÎ») +
+ +

+¤³¤ì¤ËÂФ·¤Æ»²¾ÈÀèÉÕ¤­¤Î¥«¥é¡¼¿ÞÈǤǤϡ¢¤³¤Î2¤Ä¤Î¥Õ¥Ã¥¯¤Î´Ö¤Ë¡¢¶ë·ÁÎΰè +¾ðÊó¤Ë´Ø¤¹¤ë¥Õ¥Ã¥¯¤¬ÁÞÆþ¤µ¤ì¤Þ¤¹¡£ +

+ +
    +
  1. EB_HOOK_BEGIN_COLOR_JPEG (È󥤥ó¥é¥¤¥óÍÑ JPEG ³«»Ï) +
  2. EB_HOOK_BEGIN_CLICKABLE_AREA (¶ë·ÁÎΰè1 ³«»Ï) +
  3. EB_HOOK_END_CLICKABLE_AREA (¶ë·ÁÎΰè1 ½ªÎ») +
  4. EB_HOOK_BEGIN_CLICKABLE_AREA (¶ë·ÁÎΰè2 ³«»Ï) +
  5. EB_HOOK_END_CLICKABLE_AREA (¶ë·ÁÎΰè2 ½ªÎ»)
    + °Ê²¼¡¢¶ë·ÁÎΰè3¡¢¶ë·ÁÎΰè4 ... ¤È¶ë·ÁÎΰè¤Î¸Ä¿ôʬ¤À¤±Â³¤¯¡£ +
  6. EB_HOOK_END_COLOR_GRAPHIC (È󥤥ó¥é¥¤¥óÍÑ JPEG ½ªÎ») +
+ +

+¶ë·ÁÎΰè¤Ë´Ø¤¹¤ë¶ñÂÎŪ¤Ê¾ðÊó¤Ï¡¢EB_HOOK_BEGIN_CLICKABLE_AREA +(³«»Ï¥Õ¥Ã¥¯) ¤Î¤Û¤¦¤Ç¼èÆÀ¤·¤Þ¤¹¡£ +¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô¤Î argv[1] ¤È argv[2] ¤¬¡¢ +¤½¤ì¤¾¤ì¶ë·ÁÎΰè¤Î³«»Ï x, y ºÂɸ¤òɽ¤·¤Þ¤¹¡£ +¥«¥é¡¼¿ÞÈǤκ¸¾å¤ÎºÂɸ¤¬ (0, 0) ¤Ç¤¹¡£ +ƱÍͤˡ¢argv[3] ¤È argv[4] ¤¬¶ë·ÁÎΰè¤Î±¦Êý¸þ +¤Ø¤ÎÉý¤È¡¢²¼Êý¸þ¤Ø¤Î¹â¤µ¤òɽ¤·¤Þ¤¹¡£ +ºÇ¸å¤Î argv[5] ¤È argv[6] ¤¬»²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈǤËÂбþ¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¶ë·ÁÎΰè¤Î +³«»Ï¾ðÊó¤È½ªÎ»¾ðÊó¤ò̵»ë¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ì¤Ë¤è¤ê¡¢¿ÞÈǤÏÄ̾ï¤Î (»²¾ÈÀè¤ò»ý¤¿¤Ê¤¤) ¥«¥é¡¼¿ÞÈǤȤޤ俤¯Æ±¤¸¤¯ +°·¤ï¤ì¤Þ¤¹¡£ +

+ + +

WAVE (PCM) ²»À¼

+ +

+WAVE (PCM) ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤Ï EPWING ¤Ë¤À¤±Â¸ºß¤·¤Þ¤¹¡£ +(Âå¤ï¤ê¤ËÅŻҥ֥å¯¤Ë¤Ï CD-DA ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤¬¤¢¤ê¤Þ¤¹¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£) +

+ +

+WAVE ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢¤Þ¤º¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ã椫¤é WAVE ²»À¼ +¤Î»²¾È¾ðÊó¤òÆÀ¤Þ¤¹¡£ +»²¾È³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯ +EB_HOOK_BEGIN_WAVE ¤È EB_HOOK_END_WAVE ¤¬ +¤½¤ì¤¾¤ì¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤òÍѤ¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_WAVE ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô¤Î¤¦¤Á¡¢ +argv[2] ¤È argv[3] ¤¬²»À¼¥Ç¡¼¥¿¤Î³«»Ï°ÌÃ֤Π+¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¡¢argv[4] ¤È argv[5] ¤¬ +½ªÎ»°ÌÃ֤Υڡ¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤³¤Î³«»Ï°ÌÃ֤ȽªÎ»°ÌÃÖ¤ò´Ø¿ô eb_set_binary_wave() ¤ËÅϤ·¤Æ¡¢ +¤½¤Î°ÌÃ֤ˤ¢¤ë²»À¼¥Ç¡¼¥¿¤ò¤³¤ì¤«¤é¼è¤ê½Ð¤¹¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +

+ +
+
+/* eb_set_binary_wave() ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥× */
+EB_Error_Code
+eb_set_binary_wave(EB_Book *book, EB_Position *start_position,
+EB_Position *end_position);
+
+
+ +

+¤½¤·¤Æ¸å¤Ï¡¢¼ÂºÝ¤Ë²»À¼¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢Â¾¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÈƱÍÍ¤Ë eb_read_binary() ¤ò +ÍѤ¤¤Þ¤¹¡£ +eb_read_binary() ¤Î»È¤¤Êý¤Ï¡¢ +¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× ¤ò»²¾È¤Î¤³¤È ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ + +

MPEG1 Æ°²è

+ +

+MPEG1 ·Á¼°¤ÎÆ°²è¥Ç¡¼¥¿¤Ï EPWING ¤Ë¤À¤±Â¸ºß¤·¤Þ¤¹¡£ +Æ°²è¥Ç¡¼¥¿¤Ï EPWING ¤Î CD-ROM ¤Î movie ¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤Ë¡¢ +Æ°²èËè¤Ë°ì¸Ä¤Î¥Õ¥¡¥¤¥ë¤Ë¤·¤¿·Á¤Ç¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë¸ºß¤¹¤ë¡¢MPEG ¥Ç¡¼¥¿¤Î»²¾È³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MPEG ¤È +EB_HOOK_END_MPEG ¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢»²¾ÈÀè¤Î MPEG ¤Î +¥Õ¥¡¥¤¥ë̾¤ò¼èÆÀ¤Ç¤­¤Þ¤¹¡£ +

+ +

+¶ñÂÎŪ¤Ë¤Ï¡¢¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MPEG ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +°ú¿ô¤Î¤¦¤Á¡¢argv[2] ¡Á argv[5] ¤¬¹ç¤ï¤»¤Æ°ì¤Ä +¤Î¥Õ¥¡¥¤¥ë̾¤òɽ¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+MPEG Æ°²è¤Î¥Ç¡¼¥¿¤òÆÀ¤ë¤Ë¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë̾¤ò +eb_set_binary_mpeg() ¤ËÅϤ·¤Æ¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÆ°²è¥Ç¡¼¥¿¤ò +¤³¤ì¤«¤é¼è¤ê½Ð¤¹»Ý¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ argv + 2 +(&argv[2] ¤Ç¤âƱ¤¸) ¤òÅϤ·¤Þ¤¹¡£ +

+ +
+
+if (eb_set_binary_mpeg(&book, argv + 2) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¸å¤Ï¡¢¼ÂºÝ¤ËÆ°²è¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢¤ä¤Ï¤ê¾¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÈƱÍÍ¤Ë eb_read_binary() +¤òÍѤ¤¤Þ¤¹¡£ +eb_read_binary() ¤Î»È¤¤Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× ¤ò»²¾È¤Î¤³¤È ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/binary.h>
+
+
+ + +

EB_Error_Code eb_set_binary_mono_graphic (EB_Book *book, const EB_Position *position, int width, height)

+ +

+´Ø¿ô eb_set_binary_mono_graphic() ¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤΥǡ¼¥¿¤ò +¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô position ¤Ï¿ÞÈǤΰÌÃÖ¡¢width, height +¤Ë¤Ï¿ÞÈǤÎÉý¤È¹â¤µ¤òÅϤ·¤Þ¤¹¡£ +¤³¤ì¤é¤Î¾ðÊó¤Ï¡¢¿ÞÈǤλ²¾È¸µ¤Ç¤¢¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ëµ­ºÜ¤µ¤ì¤Æ¤ª¤ê¡¢Ä̾ï¤Ï +¥Õ¥Ã¥¯´Ø¿ô¤òÄ̤¸¤ÆÆÀ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¤¿¤À¤·¡¢ÅŻҥ֥寤ǤÏÉý¤È¹â¤µ¤ÎÃͤξðÊ󤬥ƥ­¥¹¥È¥Ç¡¼¥¿¤Ëµ­¤µ¤ì¤Æ¤¤¤Ê¤¤ +¤¿¤á¡¢0 ¤òÅϤ¹¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤Ë±þ¤¸¤¿¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢¿ÞÈǤò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¿ÞÈǤΰÌÃÖ¡¢Éý¡¢¹â¤µ¤ÎÃͤ¬ÌÀ¤é¤«¤Ë¤ª¤«¤·¤¤¤È EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿ +¤È¤­¤Ï¡¢EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë¿ÞÈǥǡ¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +¥â¥Î¥¯¥í¿ÞÈǤΥǡ¼¥¿¤Ï¡¢1 ¥Ô¥¯¥»¥ë¤Ë 1bit ¤ò³ä¤êÅö¤Æ¤¿ BMP ·Á¼°¤Ë¤Ê¤Ã¤Æ +¤¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_binary_color_graphic (EB_Book *book, const EB_Position *position)

+ +

+´Ø¿ô eb_set_binary_color_graphic() ¤Ï¡¢EPWING ¤Î¥«¥é¡¼¿ÞÈǤΠ+¥Ç¡¼¥¿¤ò¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô position ¤Ï¿ÞÈǤΰÌÃÖ¤òÅϤ·¤Þ¤¹¡£ +°ÌÃ֤ξðÊó¤Ï¡¢¿ÞÈǤλ²¾È¸µ¤Ç¤¢¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ëµ­ºÜ¤µ¤ì¤Æ¤ª¤ê¡¢Ä̾ï¤Ï +¥Õ¥Ã¥¯´Ø¿ô¤òÄ̤¸¤ÆÆÀ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢¿ÞÈǤò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¿ÞÈǤΰÌÃÖ¤¬ÌÀ¤é¤«¤Ë¤ª¤«¤·¤¤¤È EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿¤È¤­¤Ï¡¢ +EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë¿ÞÈǥǡ¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +¥«¥é¡¼¿ÞÈǥǡ¼¥¿¤Ï¡¢JPEG ¤« BMP (DIB) ¤Î¤¤¤º¤«¤Î·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_binary_wave (EB_Book *book, const EB_Position *start_position, EB_Position *end_position)

+ +

+´Ø¿ô eb_set_binary_wave() ¤Ï¡¢WAVE (PCM) ·Á¼°¤Î²»À¼¤Î¥Ç¡¼¥¿ +¤ò¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô start_position ¤È end_position ¤Ë¤Ï²»À¼¥Ç¡¼¥¿ +¤Î³«»Ï°ÌÃÖ¤òÅϤ·¤Þ¤¹¡£ +°ÌÃ֤ξðÊó¤Ï¡¢²»À¼¥Ç¡¼¥¿¤Î»²¾È¸µ¤Ç¤¢¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ëµ­ºÜ¤µ¤ì¤Æ¤ª¤ê¡¢ +Ä̾ï¤Ï¥Õ¥Ã¥¯´Ø¿ô¤òÄ̤¸¤ÆÆÀ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤Ë±þ¤¸¤¿¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢²»À¼¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB ¤ò +ÊÖ¤·¤Þ¤¹¡£ +²»À¼¥Ç¡¼¥¿¤Î°ÌÃÖ¤¬ÌÀ¤é¤«¤Ë¤ª¤«¤·¤¤¤È EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿¤È¤­¤Ï¡¢ +EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë²»À¼¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_binary_mpeg (EB_Book *book, const unsigned int *argv)

+ +

+´Ø¿ô eb_set_binary_mpeg() ¤Ï¡¢MPEG1 ·Á¼°¤ÎÆ°²è¤Î¥Ç¡¼¥¿¤ò +¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô argv ¤Ë¤ÏÆ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾¤òÅϤ·¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤Î¥Õ¥¡¥¤¥ë̾¤Ïʸ»úÎó¤Ç¤Ï¤Ê¤¯¡¢¥Õ¥Ã¥¯´Ø¿ô +EB_HOOK_BEGIN_MPEG ¤ËÅϤµ¤ì¤¿°ú¿ô argv[2] +¡Á argv[5] ¤ÎÉôʬ¤òÅϤ·¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î°ú¿ô argv + 2 ¤ò¡¢ +eb_set_binary_mpeg() ¤Ø¤Î°ú¿ô argv ¤È¤·¤Æ +ÅϤ·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤Ë±þ¤¸¤¿¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢Æ°²è¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¸ºß¤·¤Ê¤¤Æ°²è¥Õ¥¡¥¤¥ë̾¤ò EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿¤È¤­¤Ï¡¢ +EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤ËÆ°²è¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_read_binary (EB_Book *book, size_t binary_max_length, char *binary, ssize_t *binary_length)

+ +

+´Ø¿ô eb_read_binary() ¤Ï¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +Æɤ߹þ¤â¤¦¤È¤·¤Æ¤¤¤ë¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï¡¢»öÁ°¤Ë +

+ +
    +
  • eb_set_binary_mono_graphic() +
  • eb_set_binary_color_graphic() +
  • eb_set_binary_wave() +
  • eb_set_binary_mpeg() +
+ +

+¤Î¤¤¤º¤ì¤«¤Î´Ø¿ô¤Ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤ËÄÌÃΤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+Æɤ߹þ¤ó¤À¥Ç¡¼¥¿¤Ï°ú¿ô binary ¤Î»Ø¤¹Àè¤ÎÎΰè¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¤Þ¤¿¡¢¤³¤Î¤È¤­½ñ¤­¹þ¤Þ¤ì¤¿¥Ð¥¤¥È¿ô¤Ï¡¢binary_length ¤Î»Ø¤¹ +Àè¤ÎÎΰè¤Ë¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +¤¿¤À¤·¡¢½ñ¤­¹þ¤Þ¤ì¤ë¥Ð¥¤¥È¿ô¤Ï¡¢ºÇŤǤâ°ú¿ô binary_max_length +¤Ë»ØÄꤷ¤¿ÃͤޤǤȤʤê¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢ÆäËÆɤ߹þ¤ó¤À¥Ç¡¼¥¿¤Î½ªÃ¼¤Ë¥Ê¥ëʸ»ú¤òÉղ乤ë¤è¤¦¤Ê»ö¤Ï +¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤Þ¤ì¤ë¥Ç¡¼¥¿¤â¥Ð¥¤¥Ê¥ê·Á¼°¤Ê¤Î¤Ç¡¢ÅÓÃæ¤Ë¥Ê¥ëʸ»ú¤¬½Ð¸½¤¹¤ë»ö¤â +¤¢¤ê¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò°ì²ó¸Æ¤Ó½Ð¤·¤À¤À¤±¤Ç¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿Á´ÂΤò°ìµ¤¤Ë¼èÆÀ¤¹¤ë +ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +·«¤êÊÖ¤·¸Æ¤Ó½Ð¤»¤Ð¡¢Á°²ó¤Î³¤­¤«¤é¥Ç¡¼¥¿¤¬Æɤ߹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢°Ê²¼¤Ëµó¤²¤¿´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë´Ø¤¹¤ë +¾õÂÖµ­Ï¿¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤½¤ì°Ê¾å¤ÎÆɤ߹þ¤ß¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +
    +
  • eb_set_subbook() +
  • eb_unset_subbook() +
  • eb_load_all_subbooks() +
  • eb_bind() +
  • eb_finalize_book() +
  • eb_set_binary_mono_graphic() +
  • eb_set_binary_color_graphic() +
  • eb_set_binary_wave() +
  • eb_set_binary_mpeg() +
+ +

+eb_read_binary() ¤ò·«¤êÊÖ¤·¸Æ¤ó¤À¾ì¹ç¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï +¤½¤ÎÅÔÅÙ binary ¤ÎÀèƬ¤«¤é½ñ¤­¹þ¤Þ¤ì¡¢*binary_length +¤ÎÃͤ⡢¤½¤Î²ó¤Î eb_read_binary() ¤Î¸Æ¤Ó½Ð¤·¤Ç½ñ¤­¹þ¤Þ¤ì¤¿ +¥Ð¥¤¥È¿ô¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Ç¡¼¥¿¤Î½ªÃ¼¤ËÍè¤ë¤È¡¢¤½¤ì°Ê¾å¤³¤Î´Ø¿ô¤ò¸Æ¤ó¤Ç¤â´Ø¿ô¤Ï binary +¤Ë¤Ï²¿¤â½ñ¤­¹þ¤Þ¤º¡¢*binary_length ¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢binary_length ¤¬»Ø¤¹Îΰè¤Ë -1 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¾õÂ֤ε­Ï¿¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢ +¥Ç¡¼¥¿¤Î³¤­¤òÆɤ߹þ¤à¤³¤È¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢ËÁƬ¤Ëµó¤²¤¿´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥ³¤Î´Ø¿ô¤ò¸Æ¤Ö¤È¡¢ +EB_ERR_NO_CUR_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_compose_movie_file_name (const unsigned int *argv, char *composed_file_name)

+ +

+´Ø¿ô eb_compose_movie_file_name() ¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾ +¤òÄ̾ï¤Îʸ»úÎó¤ËÊÑ´¹¤·¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾¤Ï¥Õ¥Ã¥¯´Ø¿ô +EB_HOOK_BEGIN_MPEG ¤ËÅϤµ¤ì¤¿ 4 ¤Ä¤Î int ·¿°ú¿ô +(argv[2] ¡Á argv[5]) ¤Ë¤è¤Ã¤Æɽ¸½¤µ¤ì¤Þ¤¹¡£ +

+ +

+Æ°²è¥Ç¡¼¥¿¤òÆɤ߹þ¤àºÝ¤Ï¡¢¤³¤ì¤ò¤½¤Î¤Þ¤Þ eb_set_binary_mpeg() +¤ËÅϤ»¤ÐÎɤ¤¤Î¤Ç¤¹¤¬¡¢¥Õ¥¡¥¤¥ë̾¤òÄ̾ï¤Îʸ»úÎó¤ÇÆÀ¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤Î´Ø¿ô¤ò +ÍѤ¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¸Ä¡¹¤ÎÆ°²è¤Ë°ì°Õ¤Î ID ¤Î¤è¤¦¤Ê¤â¤Î¤ò¿¶¤ê¤¿¤¤¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë +̾¤ò ID ¤È¤·¤Æ»È¤¦¤ÈÎɤ¤¤«¤âÃΤì¤Þ¤»¤ó¡£ +¤Ê¤ª¡¢¤³¤Î´Ø¿ô¤ÇÊÑ´¹¤·¤ÆÆÀ¤é¤ì¤ë¥Õ¥¡¥¤¥ë̾¤Ë¤Ï¥Ñ¥¹¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤Î°ú¿ô argv + 2 ¤ò¤³¤Î´Ø¿ô¤Ø¤Î°ú¿ô argv +¤È¤·¤ÆÅϤ¹¤È¡¢composed_file_name ¤¬»Ø¤¹Àè¤ÎÎΰè¤Ë¡¢Ê¸»úÎó·Á¼° +¤ËÊÑ´¹¤µ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤¬³ÊǼ¤µ¤ì¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤ÏºÇĹ¤Ç EB_MAX_DIRECTORY_NAME_LENGTH (= 8) ¥Ð¥¤¥È +¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¤Ï½ªÃ¼¤Î¥Ê¥ëʸ»ú¤Îʬ¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó¤Î¤Ç¡¢³ÊǼÎΰè¤Ë¤Ï¤â¤¦ +1 ¥Ð¥¤¥È;͵¤¬Íפê¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢³ÊǼ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤Ï¡¢¼ÂºÝ¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë̾¤È¤Ï¼ã´³°Û¤Ê¤Ã¤Æ +¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢±Ñ»ú¤ÎÂçʸ»ú¤È¾®Ê¸»ú¡¢ÀÜÈø»Ò¤Î̵ͭ¤Ê¤É¤Î°ã¤¤¤¬¤³¤ì¤ËÅö¤¿¤ê¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¤¢¤¯¤Þ¤Çʸ»úÎó¤Ëµ¡³£Åª¤ËÊÑ´¹¤¹¤ë¤À¤±¤Ê¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¤¬¼Âºß +¤¹¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤Ï¤·¤Þ¤»¤ó¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_compose_movie_path_name (EB_Book *book, const unsigned int *argv, char *composed_path_name)

+ +

+´Ø¿ô eb_compose_movie_path_name() ¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾ +¤òÄ̾ï¤Îʸ»úÎó¤ËÊÑ´¹¤·¤Þ¤¹¡£ +Ư¤­¤Ï¡¢Á°½Ò¤Î´Ø¿ô eb_compose_movie_file_name() ¤ËÎɤ¯ +»÷¤Æ¤¤¤Þ¤¹¤¬¡¢eb_compose_movie_path_name() ¤¬ÊÖ¤¹¥Õ¥¡¥¤¥ë̾ +¤Ï¡¢ÀäÂХѥ¹¤Î·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤ëÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢eb_compose_movie_path_name() ¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤¬¼Âºß +¤¹¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤ò¹Ô¤¦¤È¤¤¤¦ÅÀ¤â¡¢Â礭¤Ê°ã¤¤¤Ç¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤òʸ»úÎó¤ËÊÑ´¹¤·¤¿¾å¤Ç¡¢±Ñ»ú¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Î°ã¤¤¤äÀÜÈø»Ò¤Î +̵ͭ¤Ï¡¢¼Âºß¤Î¥Õ¥¡¥¤¥ë¤Ë¹ç¤ï¤»¤ÆÄ´À°¤·¤¿¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥Ñ¥¹¤ò½ü¤¤¤¿Éôʬ¤ÇÈæ³Ó¤·¤Æ¤â¡¢ +eb_compose_movie_file_name() ¤¬ÊÖ¤¹¥Õ¥¡¥¤¥ë̾¤È¤Ïɬ¤º¤·¤â +°ìÃפ·¤Þ¤»¤ó¡£ +

+ +

+°ú¿ô book ¤Ï¡¢Æ°²è¥Õ¥¡¥¤¥ë¤ò¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ +¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+°ú¿ô argv ¤Î°ÕÌ£¤Ï¡¢eb_compose_movie_file_name() +¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+¥Õ¥¡¥¤¥ë̾¤ÎÊÑ´¹¤¬À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï composed_path_name ¤¬ +»Ø¤¹Àè¤ÎÎΰè¤Ë¡¢Ê¸»úÎó·Á¼°¤ËÊÑ´¹¤µ¤ì¤¿Æ°²è¥Õ¥¡¥¤¥ë̾¤ò³ÊǼ¤·¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤ÏºÇĹ¤Ç EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¤Ï½ªÃ¼¤Î¥Ê¥ëʸ»ú¤Îʬ¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó¤Î¤Ç¡¢³ÊǼÎΰè¤Ë¤Ï¤â¤¦ +1 ¥Ð¥¤¥È;͵¤¬Íפê¤Þ¤¹¡£ +

+ +

+¥Õ¥¡¥¤¥ë̾¤¬¼Âºß¤·¤Ê¤¤¤È¡¢EB_ERR_BAD_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_decompose_movie_file_name (unsigned int *argv, const char *composed_file_name)

+ +

+´Ø¿ô eb_compose_movie_file_name() ¤Ï¡¢ +eb_compose_movie_file_name() ¤È¤Á¤ç¤¦¤ÉµÕ¤ÎƯ¤­¤ò¤·¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ä̾ï¤Îʸ»úÎó¤ËÊÑ´¹¤µ¤ì¤¿Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾ +composed_file_name ¤ò¡¢4 ¤Ä¤Î int ·¿°ú¿ô argv ¤Ë +Ìᤷ¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢argv ¤Î»Ø¤¹Îΰè¤Ï¡¢¾¯¤Ê¤¯¤È¤â int ·¿¤ÎÃͤò 4 ¤Ä +³ÊǼ¤Ç¤­¤ëÂ礭¤µ¤¬É¬ÍפǤ¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

appendix ¥Ç¡¼¥¿

+ +

+appendix (ÉÕÏ¿) ¤È¤Ï CD-ROM ½ñÀÒ¤ÎÊä½õ¥Ç¡¼¥¿¤Î +¤³¤È¤Ç¤¹¡£ +appendix ¤Ï CD-ROM ½ñÀҤνÐÈǼҤ«¤éÄ󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Ë¸ÇÍ­¤Î¤â¤Î¤Ç¤¹¡£ +ebappendix ¥³¥Þ¥ó¥É¤òÍѤ¤¤ÆÀ¸À®¤·¤Þ¤¹ +(¾Ü¤·¤¯¤Ï ebappendix ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öappendix (ÉÕÏ¿) ¤È¤Ï¡×¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+appendix ¤Ï°Ê²¼¤Î¥Ç¡¼¥¿¤ò CD-ROM ½ñÀÒ¤ËÂФ·¤ÆÄ󶡤·¤Þ¤¹¡£ +

+ +
    +
  • ËÜʸ¤Î¶èÀڤꥳ¡¼¥É +
  • ³°»ú¤ÎÂåÂØʸ»úÎó +
+ +

+appendix ¤Î¥ì¥¤¥¢¥¦¥È¤Ï CD-ROM ½ñÀҤΤâ¤Î¤È¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï catalog ¤â¤·¤¯¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¡¢³ÆÉûËܤΥǡ¼¥¿¤ÏÂбþ¤¹¤ë +¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÇÛÃÖ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï appendix ¤ËÂбþ¤·¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò»È¤¨¤ë +¤è¤¦¤Ë¤¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ +³°»ú¤ÎÂåÂØʸ»úÎó¤Ë¤Ä¤¤¤Æ¤Ï¡¢³°»ú¤Î¥Õ¥©¥ó¥È¤ò¤½¤Î¤Þ¤Þɽ¼¨¤Ç¤­¤ë¤Î¤Ç +¤¢¤ì¤Ð¡¢Âбþ¤¹¤ëɬÍ×À­¤Ï¤«¤Ê¤ê˳¤·¤¤¤Ç¤¹¤¬¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤Ï¡¢ +°·¤¨¤Ê¤¤¤ÈÀµ¤·¤¯ËÜʸ¤òɽ¼¨¤Ç¤­¤Ê¤¤½ñÀÒ¤ËÂбþ¤Ç¤­¤Þ¤»¤ó +(¶èÀڤꥳ¡¼¥É¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¶èÀڤꥳ¡¼¥É¤ÎÌäÂê¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ + + +

EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+CD-ROM ½ñÀÒËÜÂΤò°·¤¦¤Ë¤Ï EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò +ÍѤ¤¤Þ¤·¤¿¤¬¡¢appendix ¤ò°·¤¦¤Ë¤Ï EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤ò»È¤¤¤Þ¤¹¡£ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤òÁàºî¤¹¤ë¤¿¤á¤Î´Ø¿ô¤Ï¡¢ +EB_Book ¤Î¤â¤Î¤È¤Ï°Û¤Ê¤ê¤Þ¤¹¤¬¡¢Áàºî¼ê½ç¤Ï¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¸Ä¡¹¤Î appendix ¤ËÂФ·¤Æ 1 ¸Ä +¤º¤Äºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+EB_Appendix app;
+
+
+ +

+¤â¤Á¤í¤ó¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤Ï¡¢malloc() ¤Ç³ÎÊݤ·¤Æ¤â +¹½¤¤¤Þ¤»¤ó¡£ +

+ +
+
+EB_Appendix *app_pointer;
+
+app_pointer = (EB_Appendix *) malloc(sizeof(EB_Appendix));
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢»È¤¦Á°¤Ëɬ¤º eb_initialize_appendix() +¤È¤¤¤¦´Ø¿ô¤ÇÃæ¿È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤â eb_initialize_book() +¤Ç½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢¤½¤ì¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +
+
+eb_initialize_appendix(&app);
+eb_initialize_appendix(app_pointer);
+
+
+ +

+³¤¤¤Æ¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò appendix ¤Î¼ÂÂΤ˷ë¤ÓÉÕ¤±¤ë¤¿¤á¤Ë¡¢ +eb_bind_appendix() ¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î eb_bind() ¤Ë +ÁêÅö¤·¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Á£ð£ð£å£î£ä£é£ø¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£á£ð£ð£å£î£ä£é£ø
+¥ª¥Ö¥¸¥§¥¯¥È¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨£¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¨¼¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¾¡¡¡¿£í£î£ô¡¿£ä£é£ã£ô¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¥¡¡£å£â¡²£â£é£î£ä¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡²£á£ð£ð£å£î£ä£é£ø¡Ê¡Ë¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind_appendix(&app, "/mnt/dict") != EB_SUCCESS) {
+    printf("eb_bind_appendix() failed\n");
+    return;
+}
+
+
+ +

+eb_bind_appendix() ¤ËÅϤ¹ appendix ¤Î¥Ñ¥¹ +(¤³¤ÎÎã¤Ç¤Ï /mnt/dict) ¤Ï appendix ¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¡¢ +¤Ä¤Þ¤ê catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤Î¤¢¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¥Ñ¥¹¤Ë¤Ï¡¢±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò (Îã: ebnet://localhost/dict.app) +¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢ +eb_finalize_appendix() ¤ò¸Æ¤ó¤Ç¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤Ï appendix ¤È¤Î·ë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂÖ¤ËÌá¤ê¡¢ +ÆâÉô¤Ç³ä¤êÅö¤Æ¤é¤ì¤¿¥á¥â¥ê¤Ï²òÊü¤µ¤ì¡¢³«¤¤¤Æ¤¤¤¿¥Õ¥¡¥¤¥ë¤â¤¹¤Ù¤Æ +ÊĤ¸¤é¤ì¤Þ¤¹¡£ +

+ +
+
+eb_finalize_appendix(&app);
+eb_finalize_appendix(app_pointer);
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò malloc() ¤Ç³ÎÊݤ·¤¿¾ì¹ç¤Ï¡¢ +eb_finalize_appendix() ¤ò¸Æ¤ó¤À¸å¤Ê¤é¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Î +Îΰè¤ò°ÂÁ´¤Ë²òÊü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+free(app_pointer);
+
+
+ + +

ÉûËÜ

+ +

+CD-ROM ¤ÈƱÍͤˡ¢appendix ¤Ë¤âÉûËܤ¬Â¸ºß¤·¤Þ¤¹¡£ +appendix ¤ÎÉûËܤ⡢ÉûËÜ¥³¡¼¥É¤ò»È¤Ã¤Æ¼±Ê̤·¤Þ¤¹¡£ +¸Ä¡¹¤ÎÉûËÜ¥³¡¼¥É¤Ï¡¢appendix Æâ¤ÇƱ¤¸¤â¤Î¤¬¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤ÎÉûËܤÎÉûËÜ¥³¡¼¥É¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤È¤·¤Æ +eb_subbook_list() ¤¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢appendix ¤Ë¤â +eb_appendix_subbook_list() ¤È¤¤¤¦Æ±Íͤδؿô¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+/* app ¤¬ EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢
+ * ¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Subbook_Code sub_codes[EB_MAX_SUBBOOKS];
+int sub_count;
+
+if (eb_appendix_subbook_list(&app, sub_codes, &sub_count)
+    != EB_SUCCESS) {
+    printf("eb_appendix_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+eb_appendix_subbook_list() ¤¬À®¸ù¤¹¤ë¤È¡¢½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤Î +ÉûËÜ¥³¡¼¥É¤¬ ÇÛÎó sub_codes[] ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +ÇÛÎó¤ÎÀèƬ¤ÎÉûËÜ¥³¡¼¥É¤Ï sub_codes[0] ¤Èɽ¤µ¤ì¡¢¼¡¤Î +¥³¡¼¥É¤Ï sub_codes[1]¡¢¤È¤¤¤¦¶ñ¹ç¤Ë¤Ê¤ê¤Þ¤¹¡£ +ÉûËܤθĿô¤Ï¡¢sub_count ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +

+ +

+EB_Book ¤ÈƱÍÍ¤Ë EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤Ç¤â¡¢·ë¤Ó¤Ä¤±¤é¤ì¤¿ CD-ROM ½ñÀÒ¤ÎÃæ¤ÎǤ°Õ¤ÎÉûËܤ«¤é°ì¤ÄÁª¤ó¤Ç¡¢ +ÁªÂòÃæ¤ÎÉûËÜ (current subbook) ¤È¤·¤Æ»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ê£¿ô¤ÎÉûËܤò¡¢Æ±»þ¤ËÁªÂò¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +¶èÀڤꥳ¡¼¥É¤ä³°»ú¤ÎÂåÂØʸ»úÎó¤È¤¤¤Ã¤¿ appendix Æâ¤Î¥Ç¡¼¥¿¤Ø¤Î¥¢¥¯¥»¥¹ +¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤËÂФ·¤Æ¤À¤±¹Ô¤¨¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢ÀèƬ¤ÎÉûËÜ (sub_codes[0]) ¤òÁªÂò¤¹¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£ +

+ +
+
+/* app ¤¬ EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢
+ * ¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+if (eb_set_appendix_subbook(&app, sub_codes[0]) != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+eb_bind_appendix() ¤Ç EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤ò appendix ¤Ë·ë¤ÓÉÕ¤±¤¿Ä¾¸å¤Ï¡¢¤¤¤º¤ì¤ÎÉûËܤâÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂÖ¤Ë +¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ + +

ËÜʸ¤Î¶èÀڤꥳ¡¼¥É

+ +

+CD-ROM ½ñÀҤˤè¤Ã¤Æ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬ËÜʸ¤Îɽ¼¨¤òÀµ¤·¤¤°ÌÃÖ¤Ç +»ß¤á¤é¤ì¤Ê¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¶èÀڤꥳ¡¼¥É¤ÎÌäÂê¡× ¤ò»²¾È¤Î¤³¤È)¡£ +¤³¤ì¤Ï¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤Î¿ä¬¤ò EB ¥é¥¤¥Ö¥é¥ê¤¬¸í¤Ã¤¿¤¿¤á¤Ëµ¯¤³¤ë +¤Î¤Ç¤¹¤¬¡¢appendix ¥Ç¡¼¥¿¤ò»È¤¦¤³¤È¤Ç¡¢Àµ¤·¤¤¶èÀڤꥳ¡¼¥É¤ò EB ¥é¥¤¥Ö¥é¥ê +¤Ë¶µ¤¨¤Æ¤ä¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒ¤ÎËÜʸ¤ò¼èÆÀ¤¹¤ë´Ø¿ô eb_read_text() ¤Ï +Âè 2 °ú¿ô¤Ë EB_Appendix * ¤ò¤È¤ë¤Î¤Ç¤¹¤¬¡¢¤³¤³¤Ë appendix +¥ª¥Ö¥¸¥§¥¯¥È¤òÅϤ·¤Æ¤ä¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+/* book, app ¤Ï¡¢¤½¤ì¤¾¤ì EB_Book
+ * ¤ª¤è¤Ó EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤É¤Á¤é¤â¤¹¤Ç¤Ë
+ * ÉûËܤòÁªÂòÃæ¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+#define MAX_LENGTH 1000
+char buffer[MAX_LENGTH + 1];
+ssize_t text_length;
+
+if (eb_read_text(&book, &app, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+eb_read_text() ¤Ï¡¢ÅϤµ¤ì¤¿ appendix ¥ª¥Ö¥¸¥§¥¯¥È¤¬ÉûËܤò +ÁªÂòºÑ¤ß¤Ç¡¢¤«¤Ä¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò»ý¤Ã¤Æ¤¤¤ì¤Ð¡¢¤½¤Î¶èÀڤꥳ¡¼¥É¤ò +»ÈÍѤ·¤Þ¤¹¡£ +

+ + +

³°»ú¤ÎÂåÂØʸ»úÎó

+ +

+CD-ROM ½ñÀҤϡ¢ÄêµÁ¤·¤Æ¤¤¤ë³°»ú¤Î¾ðÊó¤È¤·¤Æ¥Õ¥©¥ó¥È¤Î¥Ç¡¼¥¿¤·¤«ÍÑ°Õ¤·¤Æ +¤¤¤Þ¤»¤ó¡£ +¤Ä¤Þ¤ê¡¢¤½¤Î³°»ú¤¬¤É¤Î¤è¤¦¤Êʸ»ú¤Ê¤Î¤«¤ò¥æ¡¼¥¶¤Ëʬ¤«¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¥Õ¥©¥ó¥È¤òɽ¼¨¤¹¤ë¤·¤«¤¢¤ê¤Þ¤»¤ó¡£ +¤·¤«¤·¤³¤ì¤Ç¤Ï¡¢¥Æ¥­¥¹¥È¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍѤ¤¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢ +ËÜʸÃæ¤Î³°»ú¤ÎÉôʬ¤¬¤Þ¤Ã¤¿¤¯Ê¬¤«¤ê¤Þ¤»¤ó¡£ +³°»ú¤ò¿ÍѤ·¤Æ¤¤¤ë½ñÀҤǤϡ¢ËÜʸ¤¬²òÆÉÉÔǽ¤Ë¶á¤¤¾õÂ֤ˤʤ뤫¤âÃΤì¤Þ¤»¤ó¡£ +

+ +

+¤½¤³¤Ç EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢³°»ú¤ÎÂåÂؤȤʤëʸ»úÎó¤ò appendix Æâ¤ÇÄêµÁ +¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ +appendix ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¸Â¤ê¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï³°»ú¤Î¥Õ¥©¥ó¥È +¤òÉÁ²è¤¹¤ëÂå¤ï¤ê¤Ë¤½¤ÎÂåÂØʸ»úÎó¤ò½ÐÎϤ¹¤ë¤³¤È¤Ë¤¹¤ì¤Ð¡¢ +¥Æ¥­¥¹¥È¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍѤ¤¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤â½ñÀÒ¤¬Æɤ߰פ¯ +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+appendix ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ëÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤¹´Ø¿ô¤Ï¡¢2 ¤Ä¤¢¤ê¤Þ¤¹¡£ +Ⱦ³Ñ³°»úÍѤΠeb_narrow_alt_character_text() ¤ÈÁ´³Ñ³°»úÍѤΠ+eb_wide_alt_character_text() ¤Ç¤¹¡£ +¤É¤Á¤é¤â¡¢»È¤¤Êý¤ÏÊѤï¤ê¤Þ¤»¤ó¡£ +

+ +

+°Ê²¼¤ÎÎã¤Ç¤Ï¡¢È¾³Ñ³°»ú¤Îʸ»úÈÖ¹æ 0xa121 ¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò +buffer ¤Ë³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/* app ¤¬ EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢
+ * ¤¹¤Ç¤ËÉûËܤòÁªÂòÃæ¤Ç¤¢¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+char buffer[EB_MAX_ALTERNATION_TEXT_LENGTH + 1];
+
+if (eb_narrow_alt_character_text(&app, buffer, 0xa121)
+    != EB_SUCCESS) {
+    printf("eb_narrow_alt_character_text() failed\n");
+    return;
+}
+
+
+ +

+³°»ú¤Ï¸Ä¡¹¤ÎÉûËܤËÂФ·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢ +¤¢¤é¤«¤¸¤áÉûËܤòÁªÂò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +³°»ú¤Î¥Õ¥©¥ó¥È¤ò¼è¤ê½Ð¤¹ºÝ¤Ï¡¢¤³¤ì¤Ë²Ã¤¨¤Æ³°»ú¤Î¡Ö¹â¤µ¡×¤âÁªÂò¤·¤Æ¤ª¤¯ +ɬÍפ¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢ÂåÂØʸ»úÎó¤Ë¤Ï¹â¤µ¤Î³µÇ°¤¬¤Ê¤¤¤Î¤ÇɬÍפ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+ÂåÂØʸ»úÎó¤ÏºÇĹ¤Ç EB_MAX_ALTERNATION_TEXT_LENGTH ¥Ð¥¤¥È +(= 31 ¥Ð¥¤¥È) ¤Ç¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎŤµ¤Ë¤Ï¥Ê¥ëʸ»ú¤Îʬ¤Ï´Þ¤ó¤Ç¤¤¤Ê¤¤¤Î¤Ç¡¢buffer +¤Ï¤â¤¦ 1 ¥Ð¥¤¥Èʬ;͵¤ò»ý¤¿¤»¤Æ¤¤¤Þ¤¹¡£ +

+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/appendix.h>
+
+
+ + +

EB_Appendix ·¿

+ +

+EB_Appendix ·¿¤Ï¡¢°ìºý¤Î CD-ROM ½ñÀÒ¤òɽ¤·¤Þ¤¹¡£ +CD-ROM ½ñÀҤؤΥ¢¥¯¥»¥¹¤Ï¡¢¤¹¤Ù¤Æ¤³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤Æ¹Ô¤¤¤Þ¤¹¡£ +Ʊ»þ¤ËÊ£¿ô¤Î CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ëºÝ¤Ï¡¢½ñÀÒ°ìºýËè¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò +ºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ï¡¢¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¤¬ +ÍÑ°Õ¤·¤Æ¤¤¤ë´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤Î¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È +¤ËÂФ·¤Æ eb_initialize_book() ¤ò¸Æ¤ó¤Ç½é´ü²½¤·¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/appendix.h>
+
+
+ + +

void eb_initialize_appendix (EB_Appendix *app)

+ +

+´Ø¿ô eb_initialize_appendix() ¤Ï¡¢app ¤Î»Ø¤¹ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò +¸Æ¤ÖÁ°¤Ë¡¢É¬¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ +ºÆÅÙ eb_initialize_appendix() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

void eb_finalize_appendix (EB_Appendix *app)

+ +

+´Ø¿ô eb_finalize_appendix() ¤Ï¡¢app ¤¬»Ø¤¹ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¤¹¤Ù¤Æ²òÊü¤µ¤ì¡¢ +¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬ appendix ¤È·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢·ë¤ÓÉÕ¤­¤¬²ò¤«¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_bind_appendix() ¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ +¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_bind_appendix (EB_Appendix *app, const char *path)

+ +

+´Ø¿ô eb_bind_appendix() ¤Ï¡¢app ¤Î»Ø¤¹ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢¥Ñ¥¹ path ¤Ë¤¢¤ë +appendix ¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +¥Ñ¥¹¤Ë¤Ï¡¢appendix ¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤«±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò»ØÄꤷ¤Þ¤¹¡£ +appendix ¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤È¤Ï¡¢catalog ¤¢¤ë¤¤¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤Î¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤·¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ëappendix ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤Î appendix ¤È¤Î +·ë¤ÓÉÕ¤­¤ò²ò¤¤¤Æ¤«¤é¡¢path ¤Ë¤¢¤ë appendix ¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢ÉûËܤÏ̤ÁªÂò¤Î¾õÂ֤ˤʤê¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò appendix ¤È¤Î·ë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂ֤ˤ·¤Æ¡¢ +¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ï¡¢EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¼ý¤Þ¤Æ +¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤µ¤é¤Ë¡¢path ¤¬ÁêÂХѥ¹¤Î¤È¤­¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤·¤¿·ë²Ì¤¬ +¤³¤ÎŤµ¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì¤òĶ¤¨¤ë¤È¡¢EB_ERR_TOO_LONG_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_is_appendix_bound (EB_Appendix *app)

+ +

+´Ø¿ô eb_is_appendix_bound() ¤Ï¡¢app ¤¬ appendix ¤Ë +·ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +·ë¤ÓÉÕ¤¤¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_path (EB_Appendix *app, char *path)

+ +

+´Ø¿ô eb_appendix_path() ¤Ï¡¢app ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤ë +appendix ¤Î¥Ñ¥¹¤â¤·¤¯¤Ï±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò¡¢path ¤Î»Ø¤¹Îΰè +¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢path ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+app ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ë½ñ¤­¹þ¤à¥Ñ¥¹Ì¾¤Î¥Ð¥¤¥È¿ô¤Ï¡¢ºÇĹ¤Ç +EB_MAX_PATH_LENGTH ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ï¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤ò´Þ¤ß¤Þ¤»¤ó¡£ +´Ø¿ô¤¬ÊÖ¤¹¥Ñ¥¹¤ÏÀµµ¬²½¤µ¤ì¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢ +eb_bind_appendix() ¤ËÅϤ·¤¿¤È¤­¤Î¤â¤Î¤ÈƱ¤¸¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢ÁêÂХѥ¹¤À¤Ã¤¿¾ì¹ç¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_load_all_appendix_subbooks (EB_Appendix *app)

+ +

+´Ø¿ô eb_load_all_appendix_subbooks() ¤Ï¡¢app Æâ +¤Î¤¹¤Ù¤Æ¤ÎÉûËܤò½é´ü²½¤·¤Þ¤¹¡£ +Ä̾ÉûËܤνé´ü²½¤Ï¡¢¤½¤ÎÉûËܤ¬½é¤á¤ÆÁªÂò¤µ¤ì¤¿¤È¤­¤Ë¼«Æ°Åª¤Ë +¹Ô¤ï¤ì¤Þ¤¹¤¬¡¢¤³¤Î´Ø¿ô¤Ï½é´ü²½¤òÁ°Åݤ·¤Ç¹Ô¤¤¤Þ¤¹¡£ +½é´ü²½¤ÎÂоݤȤʤë¤Î¤Ï¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿»þÅÀ¤Ç¤Þ¤À½é´ü²½¤·¤Æ¤¤¤Ê¤¤ +¤¹¤Ù¤Æ¤ÎÉûËܤǤ¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¥¹¥¿¥ó¥É¥¢¥í¥ó¤ÇÆ°ºî¤¹¤ë¥µ¡¼¥Ð¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ê¤É¤ÇÍ­¸ú¤Ç¤¹¡£ +¥¯¥é¥¤¥¢¥ó¥È¤«¤é¤ÎÀܳ¤ò¼õ¤±¤ëÁ°¤Ë¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ÉûËܤνé´ü²½¤Î +¤¿¤á¤Ë¥¯¥é¥¤¥¢¥ó¥È¤òÂÔ¤¿¤»¤Ê¤¯¤ÆºÑ¤ß¤Þ¤¹¡£ +

+ +

+½é´ü²½¤ÎÂоݤȤʤ俤¹¤Ù¤Æ¤ÎÉûËܤνé´ü²½¤ËÀ®¸ù¤¹¤ì¤Ð¡¢´Ø¿ô¤Ï +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +°ìºý¤Ç¤â½é´ü²½¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢»Ä¤ê¤ÎÉûËܤνé´ü²½¤òÄü¤á¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+app ¤Ï¡¢¤¢¤é¤«¤¸¤á appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢app ¤Ï¡¢ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾õÂÖ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook_list (EB_Book *app, EB_Subbook_Code *subbook_list, int *subbook_count)

+ +

+´Ø¿ô eb_appendix_subbook_list() ¤Ï¡¢app Æâ¤Î +¤¹¤Ù¤ÆÉûËܤÎÉûËÜ¥³¡¼¥É¤ò EB_Subbook_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢ +subbook_list ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_SUBBOOKS ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢appendix ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤθĿô¤ò subbook_count ¤Î +»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+app ¤Ï¡¢¤¢¤é¤«¤¸¤á appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook (EB_Book *app, EB_Subbook_Code *subbook_code)

+ +

+´Ø¿ô eb_appendix_subbook() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤Î +ÉûËܤÎÉûËÜ¥³¡¼¥É¤ò subbook_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_code ¤Î»Ø¤¹Îΰè¤Ë +EB_SUBBOOK_INVALID ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook_directory (EB_Book *app, char *directory)

+ +

+´Ø¿ô eb_appendix_subbook_directory() ¤Ï¡¢app Æâ +¤Ç¸½ºßÁªÂòÃæ¤ÎÉûËܤΥǡ¼¥¿¥Õ¥¡¥¤¥ë¤ò¼ý¤á¤¿¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¡¢ +directory ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤Îʸ»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç +EB_MAX_DIRECTORY_NAME_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï ASCII ¤Î¿ô»ú¡¢±Ñ¾®Ê¸»ú¡¢¥¢¥ó¥À¡¼¥¹¥³¥¢¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢directory ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤Ë +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook_directory2 (EB_Book *app, EB_Subbook_Code subbook_code, char *directory)

+ +

+eb_appendix_subbook_directory() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤Î +ÉûËܤǤϤʤ¯¡¢°ú¿ô subbook_code ¤Ç»ØÄꤵ¤ì¤¿ÉûËܤΠ+¥Ç¥£¥ì¥¯¥È¥ê̾¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢¤¢¤é¤«¤¸¤á +appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_appendix_subbook (EB_Book *app, EB_Subbook_Code code)

+ +

+´Ø¿ô eb_set_appendix_subbook() ¤Ï¡¢app ¤ÎÉûËÜ +code ¤òÁªÂò¤·¤Þ¤¹¡£ +¤¹¤Ç¤ËÉûËܤòÁªÂò¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¤«¤éÉûËÜ +subbook_code ¤òÁªÂò¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢³°»ú¤Ï̤ÁªÂò¤Î¾õÂ֤Ȥʤꡢ¸¡º÷¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¡¢ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë¤Ä¤¤¤Æ¤Î¾õÂÖµ­Ï¿¤Ï¡¢¤¹¤Ù¤Æ¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢ÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤Ï appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_unset_appendix_subbook (EB_Book *app)

+ +

+´Ø¿ô eb_unset_appendix_subbook() ¤Ï¡¢app ¤¬ÁªÂò +¤·¤Æ¤¤¤ëÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Þ¤¹¡£ +app ¤¬ appendix ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¤«¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤ +¾ì¹ç¤Ï¡¢²¿¤â¤·¤Þ¤»¤ó¡£ +

+ + +

int eb_have_stop_code (EB_Book *app)

+ +

+´Ø¿ô eb_have_stop_code() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËÜ¤Ç +¶èÀڤꥳ¡¼¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÄêµÁ¤·¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¤Þ¤¹¡£ +ÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_stop_code (EB_Book *app, int *stop_code)

+ +

+´Ø¿ô eb_stop_code() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ +¤·¤Æ¤¤¤ë¶èÀڤꥳ¡¼¥É¤ò stop_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +stop_code[0], stop_code[1] ¤Ë¡¢¶èÀڤꥳ¡¼¥É¤ÎÃÍ +¤È¤·¤Æ¤½¤ì¤¾¤ì 0x0000 ¡Á 0xffff ¤¬½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢´Ø¿ô¤Ï stop_code[0] ¤È stop_code[1] +¤Ë -1 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬¶èÀڤꥳ¡¼¥É¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_STOPCODE +¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_narrow_alt (EB_Book *app)

+ +

int eb_have_wide_alt (EB_Book *app)

+ +

+´Ø¿ô eb_have_narrow_alt() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ë +ÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍͤˡ¢´Ø¿ô eb_have_wide_alt() ¤Ï¡¢Á´³Ñ³°»ú¤ËÂФ¹¤ë +ÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÄêµÁ¤·¤Æ¤¤¤ì¤Ð 1 ¤ò¡¢ÄêµÁ¤·¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +app ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_alt_start (EB_Book *app, int *start)

+ +

EB_Error_Code eb_wide_alt_start (EB_Book *app, int *start)

+ +

+´Ø¿ô eb_narrow_alt_start() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËÜ +¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ÎÄêµÁÈϰϤòÄ´¤Ù¡¢ÀèƬ¤Îʸ»úÈÖ¹æ +(Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇ¾®¤Î¤â¤Î) ¤ò start ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_start() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤ÆÄ´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_start() ¤ÈƱ¤¸ +¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_alt_end (EB_Book *app, int *end)

+ +

EB_Error_Code eb_wide_alt_end (EB_Book *app, int *end)

+ +

+´Ø¿ô eb_narrow_alt_end() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËÜ +¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ÎÄêµÁÈϰϤòÄ´¤Ù¡¢ºÇ¸å¤Îʸ»úÈÖ¹æ +(Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇÂç¤Î¤â¤Î) ¤ò start ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_start() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤ÆÄ´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_start() ¤ÈƱ¤¸ +¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_alt_character_text (EB_Book *app, int character_number, char *text)

+ +

EB_Error_Code eb_wide_alt_character_text (EB_Book *app, int character_number, char *text)

+ +

+´Ø¿ô eb_narrow_alt_character_text() ¤Ï¡¢book ¤¬ +ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤·¤Æ¤¤¤ë¡¢È¾³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +³°»ú¤Îʸ»úÈÖ¹æ¤ò¡¢character_number ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤ÏÂåÂØʸ»úÎó¤ò text ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢text ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ÂåÂØʸ»úÎó¤ÏºÇĹ¤Ç EB_MAX_ALTERNATION_TEXT_LENGTH ¥Ð¥¤¥È +(= 31 ¥Ð¥¤¥È) ¤Ç¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎŤµ¤Ë¤Ï¥Ê¥ëʸ»ú¤Îʬ¤Ï´Þ¤ó¤Ç¤¤¤Ê¤¤¤Î¤Ç¡¢text ¤Î +Îΰè¤Ë¤Ï¤â¤¦ 1 ¥Ð¥¤¥ÈʬɬÍפǤ¹¡£ +

+ +

+ÂåÂØʸ»úÎ󤬤ɤÎʸ»ú¥³¡¼¥É¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¤«¤Ï¡¢appendix ¤ÎÃæ¤Ë¤Ï +µ­Ï¿¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +¤·¤«¤·¡¢appendix ¤Ïɬ¤ºÆÃÄê¤Î½ñÀÒ¤ËÂбþ¤·¤ÆºîÀ®¤µ¤ì¤ë¤â¤Î¤Ê¤Î¤Ç¡¢½ñÀҤΠ+ʸ»ú¥³¡¼¥É¤«¤é¼¡¤Î¤è¤¦¤ËȽÃǤ¹¤ì¤Ð¡¢ÌäÂê¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +

+ +
    +
  • ½ñÀÒ¤¬ ISO 8859-1 ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ÂåÂØʸ»úÎó¤â ISO 8859-1 +
  • ¤½¤ì°Ê³°¤Î¾ì¹ç¡¢ÂåÂØʸ»úÎó¤ÏÆüËܸì EUC +
+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ʸ»úÈÖ¹æ character_number ¤¬³°»ú¤ÎÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢ +EB_ERR_NO_SUCH_CHAR_TEXT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò (character_number ¤Ë¸Â¤é¤º +¤Þ¤Ã¤¿¤¯) ÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +¤½¤¦¤Ç¤Ï¤Ê¤¯¡¢°ìÉô¤Îʸ»úÈÖ¹æ¤Ë¤Ä¤¤¤Æ¤ÏȾ³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò +ÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤Î¡¢character_number ¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤Ï +¸ºß¤·¤Ê¤¤¾ì¹ç¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¡¢text +¤Î»Ø¤¹Îΰè¤Ë¤Ï¶õʸ»úÎ󤬽ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_alt_character_text() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤¹¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_narrow_alt_character_text() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_backward_narrow_alt_character (EB_Book *book, int n, int *character_number)

+ +

EB_Error_Code eb_backward_wide_alt_character (EB_Book *book, int n, int *character_number)

+ +

+´Ø¿ô eb_forward_narrow_alt_character() ¤Ï¡¢app +¤¬ÁªÂòÃæ¤ÎÉûËܤˤª¤¤¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡¢È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤Î +ʸ»úÈÖ¹æ character_number ¤Î n ¸Ä¸å¤í¤Ë°ÌÃÖ¤¹¤ë +ʸ»ú¤Îʸ»úÈÖ¹æ¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë¡¢character_number ¤Î»Ø¤¹Îΰè¤Ë +ʸ»úÈÖ¹æ¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤­¤Þ¤¹¡£ +´Ø¿ô¤Î½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢Ìá¤Ã¤¿¤È¤­¤Ë n ¸Äʬ¤À¤±¸åÊý¤Îʸ»úÈÖ¹æ +¤Ë½ñ¤­´¹¤ï¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¸Ä¸å¤í¤Ë¤â¤¦³°»ú¤¬¤Ê¤¤¾ì¹ç¤ä¡¢¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë +character_number ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ó¤Ç¤¢¤Ã¤¿Ê¸»úÈֹ椬³°»ú¤Î +ÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï EB_ERR_NO_SUCH_CHAR_TEXT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¤Ë¤ÏÉé¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¼¡¤Î¸Æ¤Ó½Ð¤·¤ÈÅù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+/* n < 0 ¤È¤¹¤ë */
+eb_backward_narrow_font_character (book, -n, character_number);
+
+
+ +

+´Ø¿ô eb_forward_wide_alt_character() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤Ë¤Ä¤¤¤ÆÁàºî¤¹¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_forward_narrow_alt_character() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2003-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     font <appendix-path> <subbook-index>
+ * Îã:
+ *     font /cdrom 0
+ * ÀâÌÀ:
+ *     <appendix-path> ¤Ç»ØÄꤷ¤¿ appendix ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢¤½
+ *     ¤ÎÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¤¹¤Ù¤Æɽ¼¨¤·¤Þ¤¹¡£
+ *
+ *     ¤½¤Î appendix ¤¬¡¢È¾³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤È¡¢¥¨
+ *     ¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢ÁàºîÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/appendix.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Appendix app;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    int subbook_index;
+    int alt_start;
+    char text[EB_MAX_ALTERNATION_TEXT_LENGTH + 1];
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 3) {
+        fprintf(stderr, "Usage: %s appendix-path subbook-index\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `app' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_appendix(&app);
+
+    /* appendix ¤ò `app' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind_appendix(&app, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the app, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_appendix_subbook_list(&app, subbook_list,
+        &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    if (eb_set_appendix_subbook(&app, subbook_list[subbook_index])
+        < 0) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ³°»ú¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/
+    error_code = eb_narrow_alt_start(&app, &alt_start);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get font information, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    i = alt_start;
+    for (;;) {
+        /* ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼èÆÀ¡£*/
+        error_code = eb_narrow_alt_character_text(&app, i, text);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get font data, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+
+        /* ¼èÆÀ¤·¤¿ÂåÂØʸ»úÎó¤ò½ÐÎÏ¡£*/
+        printf("%04x: %s\n", i, text);
+
+        /* ³°»ú¤Îʸ»úÈÖ¹æ¤ò°ì¤Ä¿Ê¤á¤ë¡£*/
+        error_code = eb_forward_narrow_alt_character(&app, 1, &i);
+        if (error_code != EB_SUCCESS)
+            break;
+    }
+        
+    /* appendix ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_appendix(&app);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_appendix(&app);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

¥µ¡¼¥Ð¾å¤Î½ñÀÒ°ìÍ÷

+ +

+EBNET ¥µ¡¼¥Ð¤«¤é±ó³Ö¥¢¥¯¥»¥¹¤ò¹Ô¤¦ºÝ¡¢¥µ¡¼¥Ð¤¬¤½¤Î¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ +¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤ë½ñÀÒ¤ä appendix ¥Ç¡¼¥¿¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤³¤Î¤È¤­¡¢EBNET ¥µ¡¼¥Ð¤ò»ØÄꤹ¤ë±ó³Ö¥¢¥¯¥»¥¹µ­½Ò»Ò¤Ë¤Ï¡¢ÆÃÄê¤Î½ñÀÒ¤ä +appendix ¥Ç¡¼¥¿¤ËÂФ¹¤ë¥¢¥¯¥»¥¹¤È¤Ï°Û¤Ê¤ê¡¢½ñÀÒ̾¤Ï»ØÄꤷ¤Þ¤»¤ó¡£ +¤¹¤Ê¤ï¤Á¡¢°ìÈÌ·Á¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ebnet://¥Û¥¹¥È:¥Ý¡¼¥È/
+
+
+ +

+ËöÈø¤Î `/' ¤Ï¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +: ¤È¤½¤ì¤Ë³¤¯¥Ý¡¼¥ÈÈÖ¹æ¤Ï¾Êά²Äǽ¤Ç¡¢¤½¤Î¾ì¹ç¤Ï +22010 È֥ݡ¼¥È¤òÍøÍѤ¹¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ +

+ +

+ebinfo ¥³¥Þ¥ó¥É¤Î --book-list ¥ª¥×¥·¥ç¥ó»ØÄê»þ¤ÎµóÆ°¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Î¤³¤Îµ¡Ç½¤Ë¤è¤Ã¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +(ebinfo ¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +@pxref{Book list on EBNET server, , EBNET ¥µ¡¼¥Ð¤Î½ñÀÒ°ìÍ÷, ebinfo-ja, ebinfo-ja}¡£) +

+ +
+
+% ebinfo --book-list ebnet://localhost
+̾Á°             Âê̾
+encycl           ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ
+encycl.app       ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ (appendix)
+crossword        ¥¯¥í¥¹¥ï¡¼¥É¥Ñ¥º¥ë¼­Åµ
+travel           ¥ï¡¼¥ë¥É¥È¥é¥Ù¥ë¥¬¥¤¥É
+
+
+ +

+̾Á°¤ÎËöÈø¤¬ .app ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤â¤Î¤Ï appendix ¥Ç¡¼¥¿¤Ç¡¢ +¤½¤Î¾¤Ï½ñÀÒËÜÂΤǤ¹¡£ +¤³¤ÎÎã¤Î½ñÀÒ encycl ¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤¹¤ë¤Ê¤é¡¢ +±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò¤Ï ebnet://localhost/encycl ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤Ê¤¤½ñÀÒ¤ä appendix ¥Ç¡¼¥¿ +¤Ï¡¢¥µ¡¼¤¬Â¦¤Ç°ìÍ÷¤«¤é½ü³°¤µ¤ì¤Þ¤¹¡£ +

+ + + +

EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+EBNET ¥µ¡¼¥Ð¤ÎÄ󶡤¹¤ë½ñÀÒ¤ª¤è¤Ó appendix ¥Ç¡¼¥¿¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢ +¤Þ¤º EB_BookList ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+EB_BookList bl;
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤Ï¡¢malloc() ¤Ç³ÎÊݤ·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ +
+
+EB_BookList *bl_pointer;
+
+bl_pointer = (EB_BookList *) malloc(sizeof(EB_BookList));
+
+
+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈƱÍͤˡ¢EB_BookList +¥ª¥Ö¥¸¥§¥¯¥È¤â»È¤¦Á°¤ËÃæ¿È¤ò½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢eb_initialize_booklist() ¤È¤¤¤¦´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +

+ +
+
+eb_initialize_booklist(&bl);
+eb_initialize_booklist(bl_pointer);
+
+
+ +

+½é´ü²½¤¬´°Î»¤·¤¿¤é¡¢ÆÃÄê¤Î¥µ¡¼¥Ð¤È¥ª¥Ö¥¸¥§¥¯¥È¤ò·ë¤Ó¤Ä¤±¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ebnet://localhost ¤Çɽ¤µ¤ì¤ë¥µ¡¼¥Ð¤ËÂФ·¤Æ¡¢ +¥ª¥Ö¥¸¥§¥¯¥È¤ò·ë¤Ó¤Ä¤±¤ë¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind_booklist(&bl, "ebnet://localhost") != EB_SUCCESS) {
+    printf("eb_bind_booklist() failed\n");
+    return;
+}
+
+
+ +

+¤³¤ì¤Ï¤Á¤ç¤¦¤É¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ +eb_bind() ¤ò¸Æ¤Ö¤Î¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+¤³¤¦¤·¤Æ¡¢¤è¤¦¤ä¤¯½ñÀÒ°ìÍ÷¤Î¾ðÊó¤ò¼è¤ê½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï eb_booklist_book_count(), +eb_booklist_book_name(), eb_booklist_book_title() +¤È¤¤¤¦ 3 ¤Ä¤Î´Ø¿ô¤ò»ÈÍѤ·¤Þ¤¹¡£ +¤³¤ì¤é¤Î´Ø¿ô¤Ï¤½¤ì¤¾¤ì¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬¥¢¥¯¥»¥¹²Äǽ¤Ê½ñÀҤοô¡¢³Æ½ñÀÒ +¤ª¤è¤Ó appendix ¥Ç¡¼¥¿¤Î̾¾Î (¥¢¥¯¥»¥¹¼±Ê̻ҤȤ·¤Æ»ØÄꤹ¤ë̾Á°)¡¢³Æ½ñÀÒ +¤È appendix ¥Ç¡¼¥¿¤ÎÂê̾¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+char *name, *title;
+int count, i;
+
+count = eb_booklist_book_count(&bl);
+for (i = 0; i < count; i++) {
+    if (eb_booklist_book_name(&bl, i, &name) != EB_SUCCESS) {
+        printf("eb_booklist_book_name(%d) failed\n", i);
+        return;
+    }
+    if (eb_booklist_book_title(&bl, i, &title) != EB_SUCCESS) {
+        printf("eb_booklist_book_title(%d) failed\n", i);
+        return;
+    }
+    printf("name = %s, title = %s\n", name, title);
+}
+
+
+ +

+EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢É¬¤º¸å»ÏËö¤ò +¹Ô¤¤¤Þ¤¹¡£ +

+ +
+
+eb_finalize_booklist(&bl);
+eb_finalize_booklist(bl_pointer);
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò malloc() ¤Ç³ÎÊݤ·¤¿¾ì¹ç¤Ï¡¢ +eb_finalize_booklist() ¤ò¸Æ¤ó¤À¸å¤Ê¤é¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè +¤ò°ÂÁ´¤Ë²òÊü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+free(bl_pointer);
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/booklist.h>
+
+
+ + +

EB_BookList ·¿

+ +

+EB_BookList ·¿¤Ï¡¢EBNET ¥µ¡¼¥Ð¾å¤¬»È¤Ã¤Æ¤¤¤ë½ñÀÒ¤ª¤è¤Ó +appendix ¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ëºÝ¤ËÍѤ¤¤ë¥ª¥¯¥¸¥§¥¯¥È¤Î·¿¤Ç¤¹¡£ +

+ +

+EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È +¤ËÂФ·¤Æ eb_initialize_booklist() ¤ò¸Æ¤ó¤Ç½é´ü²½¤¹¤ëɬÍפ¬ +¤¢¤ê¤Þ¤¹¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/booklist.h>
+
+
+ + +

void eb_initialize_booklist (EB_BookList *bl)

+ +

+´Ø¿ô eb_initialize_booklist() ¤Ï¡¢bl ¤Î»Ø¤¹ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò +¸Æ¤ÖÁ°¤Ë¡¢É¬¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ +ºÆÅÙ eb_initialize_booklist() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_bind_booklist (EB_BookList *bl, const char *path)

+ +

+´Ø¿ô eb_bind_booklist() ¤Ï¡¢app ¤Î»Ø¤¹ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢±ó³Ö¥¢¥¯¥»¥¹µ­½Ò»Ò path +¤Ç»ØÄꤵ¤ì¤¿ EBNET ¥µ¡¼¥Ð¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ë¥µ¡¼¥Ð¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤Î¥µ¡¼¥Ð¤È¤Î·ë¤ÓÉÕ¤­ +¤ò²ò¤¤¤Æ¤«¤é¡¢path ¤Ë¤¢¤ë¥µ¡¼¥Ð¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò¥µ¡¼¥Ð¤È¤Î·ë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂ֤ˤ·¤Æ¡¢¸¶°ø +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ï¡¢EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¼ý¤Þ¤Æ +¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì¤òĶ¤¨¤ë¤È¡¢EB_ERR_TOO_LONG_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢½ñÀÒ̾¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤±ó³Ö¥¢¥¯¥»¥¹µ­½Ò»Ò¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤Î·Á¼°¤À¤È¡¢EB_ERR_BAD_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+»ÈÍѤ·¤Æ¤¤¤ë EB ¥é¥¤¥Ö¥é¥ê¤Î¥Ð¥¤¥Ê¥ê¤¬¡¢±ó³Ö¥¢¥¯¥»¥¹¤ËÈóÂбþ¤Î¤â¤Î¤Ç +¤¢¤ë¾ì¹ç¡¢EB_ERR_EBNET_UNSUPPORTED ¤¬ÊÖ¤ê¤Þ¤¹¡£ +

+ + +

void eb_finalize_booklist (EB_BookList *bl)

+ +

+´Ø¿ô eb_finalize_booklist() ¤Ï¡¢bl ¤¬»Ø¤¹ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¤¹¤Ù¤Æ²òÊü¤µ¤ì¡¢ +¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬ EBNET ¥µ¡¼¥Ð¤È·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢·ë¤ÓÉÕ¤­¤¬²ò¤«¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_bind_booklist() ¤ò¸Æ¤Ö +¤³¤È¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

int eb_booklist_book_count (EB_BookList *bl)

+ +

+´Ø¿ô eb_booklist_book_count() ¤Ï¡¢EBNET ¥µ¡¼¥Ð¤¬¤³¤Î +¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤ë½ñÀÒ¤ª¤è¤Ó appendix ¥Ç¡¼¥¿¤Î¿ô +¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È bl ¤Î»Ø¤¹ EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢ +¤¢¤é¤«¤¸¤á EBNET ¥µ¡¼¥Ð¤Ë·ë¤Ó¤Ä¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOKLIST ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_booklist_book_name (EB_BookList *bl, int i, char **name)

+ +

EB_Error_Code eb_booklist_book_title (EB_BookList *bl, int i, char **title)

+ +

+´Ø¿ô eb_booklist_book_name() ¤Ï¡¢EBNET ¥µ¡¼¥Ð¤Î½ñÀÒ¤ä +appendix ¥Ç¡¼¥¿¤Î̾¾Î¤ò¼èÆÀ¤·¤Þ¤¹¡£ +¤³¤³¤Ç¸À¤¦¡Ö̾¾Î¡×¤È¤Ï¡¢±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤǻØÄꤹ¤ë½ñÀÒ̾¤Î¤³¤È¤Ç¤¹¡£ +¤Ä¤Þ¤ê¡¢ebnet://localhost/dict ¤Î dict ¤ÎÉôʬ +¤ò»Ø¤·¤Þ¤¹¡£ +ƱÍͤˡ¢´Ø¿ô eb_booklist_book_title() ¤Ï¡¢½ñÀÒ¤ä appendix +¤ÎÂê̾¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¡¢EBNET ¥µ¡¼¥Ð¾å¤Î²¿ÈÖÌܤνñÀҤ⤷¤¯¤Ï appendix ¤Î¾ðÊó¤ò +¼èÆÀ¤¹¤ë¤Î¤«¤ò¡¢°ú¿ô i ¤Ç»ØÄꤷ¤Þ¤¹¡£ +ÀèƬ¤Ï 1 ÈÖÌܤǤϤʤ¯ 0 ÈÖÌܤˤʤê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï½ñÀÒ¤Î̾¾Î¡¢Âê̾¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò *name, +*title ¤Ë½ñ¤­¹þ¤ß¡¢EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤Ê¤ª¡¢¤³¤Î¥Ý¥¤¥ó¥¿ÃÍ¤Ï ¥ª¥Ö¥¸¥§¥¯¥È bl ¤¬ÊÝ»ý¤·¤Æ¤¤¤ë +ʸ»úÎó¤ò»Ø¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +bl ¤ËÂФ·¤Æ eb_finalize_booklist() ¤ò¸Æ¤ó¤Ç +¤·¤Þ¤¦¤È¡¢¤³¤Îʸ»úÎó¤â»²¾ÈÉÔ²Äǽ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È bl ¤Î»Ø¤¹ EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È +¤Ï¡¢¤¢¤é¤«¤¸¤á EBNET ¥µ¡¼¥Ð¤Ë·ë¤Ó¤Ä¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOKLIST ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢i ¤Ï 0 °Ê¾å¤«¤Ä¥µ¡¼¥Ð¤¬Ä󶡤·¤Æ¤¤¤ë½ñÀÒ¤ª¤è¤Ó appendix +¤ÎÁí¿ô̤Ëþ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì°Ê³°¤ÎÃͤΤȤ­¤Ï¡¢EB_ERR_NO_SUCH_BOOK ¤¬ÊÖ¤ê¤Þ¤¹¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2003-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     booklist <remote-access-ideintifier>
+ * Îã:
+ *     booklist ebnet://localhost
+ * ÀâÌÀ:
+ *     <remote-access-ideintifier> ¤Ç»ØÄꤷ¤¿ EBNET ¥µ¡¼¥Ð¤ËÀܳ¤·
+ *     ¤Æ¡¢¥µ¡¼¥Ð¤ÎÄ󶡤¹¤ë½ñÀÒ¡¢appendix ¤Î°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/booklist.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_BookList bl;
+    int book_count;
+    char *name, *title;
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s book-path remote-access-identifier\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `bl' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_booklist(&bl);
+
+    /* EBNET ¥µ¡¼¥Ð¤ò `bl' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind_booklist(&bl, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the EBNET server, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ¥µ¡¼¥Ð¾å¤Î½ñÀÒ¡¢appendix ¤Î¸Ä¿ô¤ò¼èÆÀ¡£*/
+    error_code = eb_booklist_book_count(&bl, &book_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the number of books, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    for (i = 0; i < book_count; i++) {
+        /* ½ñÀÒ¡¢appendix ¤Î̾¾Î¤ò¼èÆÀ¡£*/
+        error_code = eb_booklist_book_name(&bl, i, &name);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get book name #%d, %s\n",
+                argv[0], i, eb_error_message(error_code));
+            goto die;
+        }
+
+        /* ½ñÀÒ¡¢appendix ¤ÎÂê̾¤ò¼èÆÀ¡£*/
+        error_code = eb_booklist_book_name(&bl, i, &title);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get book title #%d, %s\n",
+                argv[0], i, eb_error_message(error_code));
+            goto die;
+        }
+
+        printf("%-20s  %s\n", name, title);
+    }
+        
+    /* `bl' ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_booklist(&bl);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_booklist(&bl);
+    eb_finalize_library();
+    exit(1);
+}
+
+
+ + +

º÷°ú

+ + +

¥Ç¡¼¥¿·¿¤Îº÷°ú

+ +

+·¿Ì¾¤ÎÀèƬ¤Î EB_ ¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
A +
Appendix +
B +
Book +
BookList +
D +
Disc_Code +
E +
EB_Character_Code +
Error_Code +
F +
Font_Code +
H +
Hit +
Hook +
Hook_Code +
Hookset +
M +
Multi_Search_Code +
P +
Position +
S +
Subbook_Code +
+ + +

´Ø¿ô¤Îº÷°ú

+ +

+´Ø¿ô̾¤ÎÀèƬ¤Î eb_ ¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
A +
appendix_path +
appendix_subbook +
appendix_subbook_directory +
appendix_subbook_directory2 +
appendix_subbook_list +
B +
backward_narrow_alt_character +
backward_narrow_font_character +
backward_text +
backward_wide_alt_character +
backward_wide_font_character +
bind +
bind_appendix +
bind_booklist +
bitmap_to_bmp +
bitmap_to_gif +
bitmap_to_png +
bitmap_to_xbm +
bitmap_to_xpm +
booklist_book_count +
booklist_book_name +
booklist_book_title +
C +
character_code +
compose_movie_file_name +
compose_movie_path_name +
copyright +
current_candidate +
D +
decompose_movie_file_name +
disc_type +
E +
error_message +
error_string +
F +
finalize_appendix +
finalize_book +
finalize_booklist +
finalize_hookset +
finalize_library +
font +
font_height +
font_height2 +
font_list +
forward_heading +
forward_narrow_font_character +
forward_text +
forward_wide_font_character +
H +
have_copyright +
have_endword_search +
have_exactword_search +
have_font +
have_keyword_search +
have_menu +
have_multi_search +
have_narrow_alt +
have_narrow_font +
have_stop_code +
have_text +
have_wide_alt +
have_wide_font +
have_word_search +
hit_list +
hook_empty +
hook_euc_to_ascii +
hook_narrow_character_text +
hook_newline +
hook_wide_character_text +
I +
initialize_appendix +
initialize_book +
initialize_booklist +
initialize_hookset +
initialize_library +
is_appendix_bound +
is_bound +
is_text_stopped +
L +
load_all_appendix_subbooks +
load_all_subbooks +
M +
menu +
multi_entry_candidates +
multi_entry_count +
multi_entry_have_candidates +
multi_entry_label +
multi_search_list +
multi_title +
N +
narrow_alt_character_text +
narrow_alt_end +
narrow_alt_start +
narrow_font_bmp_size +
narrow_font_character_bitmap +
narrow_font_end +
narrow_font_gif_size +
narrow_font_png_size +
narrow_font_size +
narrow_font_size2 +
narrow_font_start +
narrow_font_width +
narrow_font_width2 +
narrow_font_xbm_size +
narrow_font_xpm_size +
P +
path +
R +
read_binary +
read_heading +
read_rawtext +
read_text +
S +
search_cross +
search_endword +
search_exactword +
search_keyword +
search_multi +
search_word +
seek_text +
set_appendix_subbook +
set_binary_color_graphic +
set_binary_mono_graphic +
set_binary_mpeg +
set_binary_wave +
set_font +
set_hook +
set_hooks +
set_subbook +
stop_code +
subbook +
subbook_directory +
subbook_directory2 +
subbook_list +
subbook_title +
subbook_title2 +
T +
tell_text +
text +
U +
unset_appendix_subbook +
unset_font +
unset_subbook +
W +
wide_alt_character_text +
wide_alt_end +
wide_alt_start +
wide_font_bmp_size +
wide_font_character_bitmap +
wide_font_end +
wide_font_gif_size +
wide_font_png_size +
wide_font_size +
wide_font_size2 +
wide_font_start +
wide_font_width +
wide_font_width2 +
wide_font_xbm_size +
wide_font_xpm_size +
write_text +
write_text_byte1 +
write_text_byte2 +
write_text_string +
+ + +

Äê¿ô¤Îº÷°ú

+ +

+Äê¿ô̾¤ÎÀèƬ¤Î EB_ ¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
E +
ERR_BAD_DIR_NAME +
ERR_BAD_FILE_NAME +
ERR_BAD_WORD +
ERR_DIFF_CONTENT +
ERR_EBNET_FAIL_CONNECT +
ERR_EBNET_NO_PERMISSION +
ERR_EBNET_SERVER_BUSY +
ERR_EBNET_UNSUPPORTED +
ERR_EMPTY_WORD +
ERR_END_OF_CONTENT +
ERR_FAIL_GETCWD +
ERR_FAIL_OPEN_APP +
ERR_FAIL_OPEN_BINARY +
ERR_FAIL_OPEN_CAT +
ERR_FAIL_OPEN_CATAPP +
ERR_FAIL_OPEN_FONT +
ERR_FAIL_OPEN_TEXT +
ERR_FAIL_READ_APP +
ERR_FAIL_READ_BINARY +
ERR_FAIL_READ_CAT +
ERR_FAIL_READ_CATAPP +
ERR_FAIL_READ_FONT +
ERR_FAIL_READ_TEXT +
ERR_FAIL_SEEK_APP +
ERR_FAIL_SEEK_BINARY +
ERR_FAIL_SEEK_CAT +
ERR_FAIL_SEEK_CATAPP +
ERR_FAIL_SEEK_FONT +
ERR_FAIL_SEEK_TEXT +
ERR_MEMORY_EXHAUSTED +
ERR_NO_APPSUB +
ERR_NO_CANDIDATES +
ERR_NO_CUR_APPSUB +
ERR_NO_CUR_BINARY +
ERR_NO_CUR_FONT +
ERR_NO_CUR_SUB +
ERR_NO_FONT +
ERR_NO_PREV_SEARCH +
ERR_NO_PREV_SEEK +
ERR_NO_SUB +
ERR_NO_SUCH_APPSUB +
ERR_NO_SUCH_BINARY +
ERR_NO_SUCH_BOOK +
ERR_NO_SUCH_CHAR_BMP +
ERR_NO_SUCH_CHAR_TEXT +
ERR_NO_SUCH_ENTRY_ID +
ERR_NO_SUCH_FONT +
ERR_NO_SUCH_HOOK +
ERR_NO_SUCH_MULTI_ID +
ERR_NO_SUCH_SEARCH +
ERR_NO_SUCH_SUB +
ERR_NO_TEXT +
ERR_NO_WORD +
ERR_TOO_LONG_FILE_NAME +
ERR_TOO_LONG_WORD +
ERR_TOO_MANY_WORDS +
ERR_UNBOUND_APP +
ERR_UNBOUND_BOOK +
ERR_UNBOUND_BOOKLIST +
ERR_UNEXP_APP +
ERR_UNEXP_BINARY +
ERR_UNEXP_CAT +
ERR_UNEXP_CATAPP +
ERR_UNEXP_FONT +
ERR_UNEXP_TEXT +
H +
HEIGHT_NARROW_FONT_16 +
HEIGHT_NARROW_FONT_24 +
HEIGHT_NARROW_FONT_30 +
HEIGHT_NARROW_FONT_48 +
HEIGHT_WIDE_FONT_16 +
HEIGHT_WIDE_FONT_24 +
HEIGHT_WIDE_FONT_30 +
HEIGHT_WIDE_FONT_48 +
HOOK_BEGIN_CANDIDATE +
HOOK_BEGIN_CLICKABLE_AREA +
HOOK_BEGIN_COLOR_BMP +
HOOK_BEGIN_COLOR_JPEG +
HOOK_BEGIN_DECORATION +
HOOK_BEGIN_EMPHASIS +
HOOK_BEGIN_GRAY_GRAPHIC +
HOOK_BEGIN_IN_COLOR_BMP +
HOOK_BEGIN_IN_COLOR_JPEG +
HOOK_BEGIN_KEYWORD +
HOOK_BEGIN_MONO_GRAPHIC +
HOOK_BEGIN_MPEG +
HOOK_BEGIN_NARROW +
HOOK_BEGIN_NO_NEWLINE +
HOOK_BEGIN_REFERENCE +
HOOK_BEGIN_SUBSCRIPT +
HOOK_BEGIN_SUPERSCRIPT +
HOOK_BEGIN_WAVE +
HOOK_END_CANDIDATE_GROUP +
HOOK_END_CANDIDATE_LEAF +
HOOK_END_CLICKABLE_AREA +
HOOK_END_COLOR_GRAPHIC +
HOOK_END_DECORATION +
HOOK_END_EMPHASIS +
HOOK_END_GRAY_GRAPHIC +
HOOK_END_IN_COLOR_GRAPHIC +
HOOK_END_KEYWORD +
HOOK_END_MONO_GRAPHIC +
HOOK_END_MPEG +
HOOK_END_NARROW +
HOOK_END_NO_NEWLINE +
HOOK_END_REFERENCE +
HOOK_END_SUBSCRIPT +
HOOK_END_SUPERSCRIPT +
HOOK_END_WAVE +
HOOK_GB2312 +
HOOK_INITIALIZE +
HOOK_ISO8859_1 +
HOOK_NARROW_FONT +
HOOK_NARROW_JISX0208 +
HOOK_NEWLINE +
HOOK_NULL +
HOOK_SET_INDENT +
HOOK_WIDE_FONT +
HOOK_WIDE_JISX0208 +
S +
SIZE_NARROW_FONT_16 +
SIZE_NARROW_FONT_16_BMP +
SIZE_NARROW_FONT_16_GIF +
SIZE_NARROW_FONT_16_PNG +
SIZE_NARROW_FONT_16_XBM +
SIZE_NARROW_FONT_16_XPM +
SIZE_NARROW_FONT_24 +
SIZE_NARROW_FONT_24_BMP +
SIZE_NARROW_FONT_24_GIF +
SIZE_NARROW_FONT_24_PNG +
SIZE_NARROW_FONT_24_XBM +
SIZE_NARROW_FONT_24_XPM +
SIZE_NARROW_FONT_30 +
SIZE_NARROW_FONT_30_BMP +
SIZE_NARROW_FONT_30_GIF +
SIZE_NARROW_FONT_30_PNG +
SIZE_NARROW_FONT_30_XBM +
SIZE_NARROW_FONT_30_XPM +
SIZE_NARROW_FONT_48 +
SIZE_NARROW_FONT_48_BMP +
SIZE_NARROW_FONT_48_GIF +
SIZE_NARROW_FONT_48_PNG +
SIZE_NARROW_FONT_48_XBM +
SIZE_NARROW_FONT_48_XPM +
SIZE_WIDE_FONT_16 +
SIZE_WIDE_FONT_16_BMP +
SIZE_WIDE_FONT_16_GIF +
SIZE_WIDE_FONT_16_PNG +
SIZE_WIDE_FONT_16_XBM +
SIZE_WIDE_FONT_16_XPM +
SIZE_WIDE_FONT_24 +
SIZE_WIDE_FONT_24_BMP +
SIZE_WIDE_FONT_24_GIF +
SIZE_WIDE_FONT_24_PNG +
SIZE_WIDE_FONT_24_XBM +
SIZE_WIDE_FONT_24_XPM +
SIZE_WIDE_FONT_30 +
SIZE_WIDE_FONT_30_BMP +
SIZE_WIDE_FONT_30_GIF +
SIZE_WIDE_FONT_30_PNG +
SIZE_WIDE_FONT_30_XBM +
SIZE_WIDE_FONT_30_XPM +
SIZE_WIDE_FONT_48 +
SIZE_WIDE_FONT_48_BMP +
SIZE_WIDE_FONT_48_GIF +
SIZE_WIDE_FONT_48_PNG +
SIZE_WIDE_FONT_48_XBM +
SIZE_WIDE_FONT_48_XPM +
SUCCESS +
W +
WIDTH_NARROW_FONT_16 +
WIDTH_NARROW_FONT_24 +
WIDTH_NARROW_FONT_30 +
WIDTH_NARROW_FONT_48 +
WIDTH_WIDE_FONT_16 +
WIDTH_WIDE_FONT_24 +
WIDTH_WIDE_FONT_30 +
WIDTH_WIDE_FONT_48 +
+ + + diff --git a/lib/ebu/doc/eb-index-const.html b/lib/ebu/doc/eb-index-const.html new file mode 100644 index 0000000..568ff2c --- /dev/null +++ b/lib/ebu/doc/eb-index-const.html @@ -0,0 +1,181 @@ +
+
E +
ERR_BAD_DIR_NAME +
ERR_BAD_FILE_NAME +
ERR_BAD_WORD +
ERR_DIFF_CONTENT +
ERR_EBNET_FAIL_CONNECT +
ERR_EBNET_NO_PERMISSION +
ERR_EBNET_SERVER_BUSY +
ERR_EBNET_UNSUPPORTED +
ERR_EMPTY_WORD +
ERR_END_OF_CONTENT +
ERR_FAIL_GETCWD +
ERR_FAIL_OPEN_APP +
ERR_FAIL_OPEN_BINARY +
ERR_FAIL_OPEN_CAT +
ERR_FAIL_OPEN_CATAPP +
ERR_FAIL_OPEN_FONT +
ERR_FAIL_OPEN_TEXT +
ERR_FAIL_READ_APP +
ERR_FAIL_READ_BINARY +
ERR_FAIL_READ_CAT +
ERR_FAIL_READ_CATAPP +
ERR_FAIL_READ_FONT +
ERR_FAIL_READ_TEXT +
ERR_FAIL_SEEK_APP +
ERR_FAIL_SEEK_BINARY +
ERR_FAIL_SEEK_CAT +
ERR_FAIL_SEEK_CATAPP +
ERR_FAIL_SEEK_FONT +
ERR_FAIL_SEEK_TEXT +
ERR_MEMORY_EXHAUSTED +
ERR_NO_APPSUB +
ERR_NO_CANDIDATES +
ERR_NO_CUR_APPSUB +
ERR_NO_CUR_BINARY +
ERR_NO_CUR_FONT +
ERR_NO_CUR_SUB +
ERR_NO_FONT +
ERR_NO_PREV_SEARCH +
ERR_NO_PREV_SEEK +
ERR_NO_SUB +
ERR_NO_SUCH_APPSUB +
ERR_NO_SUCH_BINARY +
ERR_NO_SUCH_BOOK +
ERR_NO_SUCH_CHAR_BMP +
ERR_NO_SUCH_CHAR_TEXT +
ERR_NO_SUCH_ENTRY_ID +
ERR_NO_SUCH_FONT +
ERR_NO_SUCH_HOOK +
ERR_NO_SUCH_MULTI_ID +
ERR_NO_SUCH_SEARCH +
ERR_NO_SUCH_SUB +
ERR_NO_TEXT +
ERR_NO_WORD +
ERR_TOO_LONG_FILE_NAME +
ERR_TOO_LONG_WORD +
ERR_TOO_MANY_WORDS +
ERR_UNBOUND_APP +
ERR_UNBOUND_BOOK +
ERR_UNBOUND_BOOKLIST +
ERR_UNEXP_APP +
ERR_UNEXP_BINARY +
ERR_UNEXP_CAT +
ERR_UNEXP_CATAPP +
ERR_UNEXP_FONT +
ERR_UNEXP_TEXT +
H +
HEIGHT_NARROW_FONT_16 +
HEIGHT_NARROW_FONT_24 +
HEIGHT_NARROW_FONT_30 +
HEIGHT_NARROW_FONT_48 +
HEIGHT_WIDE_FONT_16 +
HEIGHT_WIDE_FONT_24 +
HEIGHT_WIDE_FONT_30 +
HEIGHT_WIDE_FONT_48 +
HOOK_BEGIN_CANDIDATE +
HOOK_BEGIN_CLICKABLE_AREA +
HOOK_BEGIN_COLOR_BMP +
HOOK_BEGIN_COLOR_JPEG +
HOOK_BEGIN_DECORATION +
HOOK_BEGIN_EMPHASIS +
HOOK_BEGIN_GRAY_GRAPHIC +
HOOK_BEGIN_IN_COLOR_BMP +
HOOK_BEGIN_IN_COLOR_JPEG +
HOOK_BEGIN_KEYWORD +
HOOK_BEGIN_MONO_GRAPHIC +
HOOK_BEGIN_MPEG +
HOOK_BEGIN_NARROW +
HOOK_BEGIN_NO_NEWLINE +
HOOK_BEGIN_REFERENCE +
HOOK_BEGIN_SUBSCRIPT +
HOOK_BEGIN_SUPERSCRIPT +
HOOK_BEGIN_WAVE +
HOOK_END_CANDIDATE_GROUP +
HOOK_END_CANDIDATE_LEAF +
HOOK_END_CLICKABLE_AREA +
HOOK_END_COLOR_GRAPHIC +
HOOK_END_DECORATION +
HOOK_END_EMPHASIS +
HOOK_END_GRAY_GRAPHIC +
HOOK_END_IN_COLOR_GRAPHIC +
HOOK_END_KEYWORD +
HOOK_END_MONO_GRAPHIC +
HOOK_END_MPEG +
HOOK_END_NARROW +
HOOK_END_NO_NEWLINE +
HOOK_END_REFERENCE +
HOOK_END_SUBSCRIPT +
HOOK_END_SUPERSCRIPT +
HOOK_END_WAVE +
HOOK_GB2312 +
HOOK_INITIALIZE +
HOOK_ISO8859_1 +
HOOK_NARROW_FONT +
HOOK_NARROW_JISX0208 +
HOOK_NEWLINE +
HOOK_NULL +
HOOK_SET_INDENT +
HOOK_WIDE_FONT +
HOOK_WIDE_JISX0208 +
S +
SIZE_NARROW_FONT_16 +
SIZE_NARROW_FONT_16_BMP +
SIZE_NARROW_FONT_16_GIF +
SIZE_NARROW_FONT_16_PNG +
SIZE_NARROW_FONT_16_XBM +
SIZE_NARROW_FONT_16_XPM +
SIZE_NARROW_FONT_24 +
SIZE_NARROW_FONT_24_BMP +
SIZE_NARROW_FONT_24_GIF +
SIZE_NARROW_FONT_24_PNG +
SIZE_NARROW_FONT_24_XBM +
SIZE_NARROW_FONT_24_XPM +
SIZE_NARROW_FONT_30 +
SIZE_NARROW_FONT_30_BMP +
SIZE_NARROW_FONT_30_GIF +
SIZE_NARROW_FONT_30_PNG +
SIZE_NARROW_FONT_30_XBM +
SIZE_NARROW_FONT_30_XPM +
SIZE_NARROW_FONT_48 +
SIZE_NARROW_FONT_48_BMP +
SIZE_NARROW_FONT_48_GIF +
SIZE_NARROW_FONT_48_PNG +
SIZE_NARROW_FONT_48_XBM +
SIZE_NARROW_FONT_48_XPM +
SIZE_WIDE_FONT_16 +
SIZE_WIDE_FONT_16_BMP +
SIZE_WIDE_FONT_16_GIF +
SIZE_WIDE_FONT_16_PNG +
SIZE_WIDE_FONT_16_XBM +
SIZE_WIDE_FONT_16_XPM +
SIZE_WIDE_FONT_24 +
SIZE_WIDE_FONT_24_BMP +
SIZE_WIDE_FONT_24_GIF +
SIZE_WIDE_FONT_24_PNG +
SIZE_WIDE_FONT_24_XBM +
SIZE_WIDE_FONT_24_XPM +
SIZE_WIDE_FONT_30 +
SIZE_WIDE_FONT_30_BMP +
SIZE_WIDE_FONT_30_GIF +
SIZE_WIDE_FONT_30_PNG +
SIZE_WIDE_FONT_30_XBM +
SIZE_WIDE_FONT_30_XPM +
SIZE_WIDE_FONT_48 +
SIZE_WIDE_FONT_48_BMP +
SIZE_WIDE_FONT_48_GIF +
SIZE_WIDE_FONT_48_PNG +
SIZE_WIDE_FONT_48_XBM +
SIZE_WIDE_FONT_48_XPM +
SUCCESS +
W +
WIDTH_NARROW_FONT_16 +
WIDTH_NARROW_FONT_24 +
WIDTH_NARROW_FONT_30 +
WIDTH_NARROW_FONT_48 +
WIDTH_WIDE_FONT_16 +
WIDTH_WIDE_FONT_24 +
WIDTH_WIDE_FONT_30 +
WIDTH_WIDE_FONT_48 +
diff --git a/lib/ebu/doc/eb-index-func.html b/lib/ebu/doc/eb-index-func.html new file mode 100644 index 0000000..4a88019 --- /dev/null +++ b/lib/ebu/doc/eb-index-func.html @@ -0,0 +1,166 @@ +
+
A +
appendix_path +
appendix_subbook +
appendix_subbook_directory +
appendix_subbook_directory2 +
appendix_subbook_list +
B +
backward_narrow_alt_character +
backward_narrow_font_character +
backward_text +
backward_wide_alt_character +
backward_wide_font_character +
bind +
bind_appendix +
bind_booklist +
bitmap_to_bmp +
bitmap_to_gif +
bitmap_to_png +
bitmap_to_xbm +
bitmap_to_xpm +
booklist_book_count +
booklist_book_name +
booklist_book_title +
C +
character_code +
compose_movie_file_name +
compose_movie_path_name +
copyright +
current_candidate +
D +
decompose_movie_file_name +
disc_type +
E +
error_message +
error_string +
F +
finalize_appendix +
finalize_book +
finalize_booklist +
finalize_hookset +
finalize_library +
font +
font_height +
font_height2 +
font_list +
forward_heading +
forward_narrow_font_character +
forward_text +
forward_wide_font_character +
H +
have_copyright +
have_endword_search +
have_exactword_search +
have_font +
have_keyword_search +
have_menu +
have_multi_search +
have_narrow_alt +
have_narrow_font +
have_stop_code +
have_text +
have_wide_alt +
have_wide_font +
have_word_search +
hit_list +
hook_empty +
hook_euc_to_ascii +
hook_narrow_character_text +
hook_newline +
hook_wide_character_text +
I +
initialize_appendix +
initialize_book +
initialize_booklist +
initialize_hookset +
initialize_library +
is_appendix_bound +
is_bound +
is_text_stopped +
L +
load_all_appendix_subbooks +
load_all_subbooks +
M +
menu +
multi_entry_candidates +
multi_entry_count +
multi_entry_have_candidates +
multi_entry_label +
multi_search_list +
multi_title +
N +
narrow_alt_character_text +
narrow_alt_end +
narrow_alt_start +
narrow_font_bmp_size +
narrow_font_character_bitmap +
narrow_font_end +
narrow_font_gif_size +
narrow_font_png_size +
narrow_font_size +
narrow_font_size2 +
narrow_font_start +
narrow_font_width +
narrow_font_width2 +
narrow_font_xbm_size +
narrow_font_xpm_size +
P +
path +
R +
read_binary +
read_heading +
read_rawtext +
read_text +
S +
search_cross +
search_endword +
search_exactword +
search_keyword +
search_multi +
search_word +
seek_text +
set_appendix_subbook +
set_binary_color_graphic +
set_binary_mono_graphic +
set_binary_mpeg +
set_binary_wave +
set_font +
set_hook +
set_hooks +
set_subbook +
stop_code +
subbook +
subbook_directory +
subbook_directory2 +
subbook_list +
subbook_title +
subbook_title2 +
T +
tell_text +
text +
U +
unset_appendix_subbook +
unset_font +
unset_subbook +
W +
wide_alt_character_text +
wide_alt_end +
wide_alt_start +
wide_font_bmp_size +
wide_font_character_bitmap +
wide_font_end +
wide_font_gif_size +
wide_font_png_size +
wide_font_size +
wide_font_size2 +
wide_font_start +
wide_font_width +
wide_font_width2 +
wide_font_xbm_size +
wide_font_xpm_size +
write_text +
write_text_byte1 +
write_text_byte2 +
write_text_string +
diff --git a/lib/ebu/doc/eb-index-type.html b/lib/ebu/doc/eb-index-type.html new file mode 100644 index 0000000..df40ec0 --- /dev/null +++ b/lib/ebu/doc/eb-index-type.html @@ -0,0 +1,25 @@ +
+
A +
Appendix +
B +
Book +
BookList +
D +
Disc_Code +
E +
EB_Character_Code +
Error_Code +
F +
Font_Code +
H +
Hit +
Hook +
Hook_Code +
Hookset +
M +
Multi_Search_Code +
P +
Position +
S +
Subbook_Code +
diff --git a/lib/ebu/doc/eb-sample-appendix.html b/lib/ebu/doc/eb-sample-appendix.html new file mode 100644 index 0000000..9d7a87a --- /dev/null +++ b/lib/ebu/doc/eb-sample-appendix.html @@ -0,0 +1,144 @@ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2003-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     font <appendix-path> <subbook-index>
+ * Îã:
+ *     font /cdrom 0
+ * ÀâÌÀ:
+ *     <appendix-path> ¤Ç»ØÄꤷ¤¿ appendix ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢¤½
+ *     ¤ÎÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¤¹¤Ù¤Æɽ¼¨¤·¤Þ¤¹¡£
+ *
+ *     ¤½¤Î appendix ¤¬¡¢È¾³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤È¡¢¥¨
+ *     ¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢ÁàºîÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/appendix.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Appendix app;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    int subbook_index;
+    int alt_start;
+    char text[EB_MAX_ALTERNATION_TEXT_LENGTH + 1];
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 3) {
+        fprintf(stderr, "Usage: %s appendix-path subbook-index\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `app' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_appendix(&app);
+
+    /* appendix ¤ò `app' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind_appendix(&app, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the app, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_appendix_subbook_list(&app, subbook_list,
+        &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    if (eb_set_appendix_subbook(&app, subbook_list[subbook_index])
+        < 0) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ³°»ú¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/
+    error_code = eb_narrow_alt_start(&app, &alt_start);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get font information, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    i = alt_start;
+    for (;;) {
+        /* ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼èÆÀ¡£*/
+        error_code = eb_narrow_alt_character_text(&app, i, text);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get font data, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+
+        /* ¼èÆÀ¤·¤¿ÂåÂØʸ»úÎó¤ò½ÐÎÏ¡£*/
+        printf("%04x: %s\n", i, text);
+
+        /* ³°»ú¤Îʸ»úÈÖ¹æ¤ò°ì¤Ä¿Ê¤á¤ë¡£*/
+        error_code = eb_forward_narrow_alt_character(&app, 1, &i);
+        if (error_code != EB_SUCCESS)
+            break;
+    }
+        
+    /* appendix ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_appendix(&app);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_appendix(&app);
+    eb_finalize_library();
+    exit(1);
+}
+
+
diff --git a/lib/ebu/doc/eb-sample-booklist.html b/lib/ebu/doc/eb-sample-booklist.html new file mode 100644 index 0000000..463bc00 --- /dev/null +++ b/lib/ebu/doc/eb-sample-booklist.html @@ -0,0 +1,115 @@ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2003-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     booklist <remote-access-ideintifier>
+ * Îã:
+ *     booklist ebnet://localhost
+ * ÀâÌÀ:
+ *     <remote-access-ideintifier> ¤Ç»ØÄꤷ¤¿ EBNET ¥µ¡¼¥Ð¤ËÀܳ¤·
+ *     ¤Æ¡¢¥µ¡¼¥Ð¤ÎÄ󶡤¹¤ë½ñÀÒ¡¢appendix ¤Î°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/booklist.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_BookList bl;
+    int book_count;
+    char *name, *title;
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s book-path remote-access-identifier\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `bl' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_booklist(&bl);
+
+    /* EBNET ¥µ¡¼¥Ð¤ò `bl' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind_booklist(&bl, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the EBNET server, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ¥µ¡¼¥Ð¾å¤Î½ñÀÒ¡¢appendix ¤Î¸Ä¿ô¤ò¼èÆÀ¡£*/
+    error_code = eb_booklist_book_count(&bl, &book_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the number of books, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    for (i = 0; i < book_count; i++) {
+        /* ½ñÀÒ¡¢appendix ¤Î̾¾Î¤ò¼èÆÀ¡£*/
+        error_code = eb_booklist_book_name(&bl, i, &name);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get book name #%d, %s\n",
+                argv[0], i, eb_error_message(error_code));
+            goto die;
+        }
+
+        /* ½ñÀÒ¡¢appendix ¤ÎÂê̾¤ò¼èÆÀ¡£*/
+        error_code = eb_booklist_book_name(&bl, i, &title);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get book title #%d, %s\n",
+                argv[0], i, eb_error_message(error_code));
+            goto die;
+        }
+
+        printf("%-20s  %s\n", name, title);
+    }
+        
+    /* `bl' ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_booklist(&bl);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_booklist(&bl);
+    eb_finalize_library();
+    exit(1);
+}
+
+
diff --git a/lib/ebu/doc/eb-sample-disctype.html b/lib/ebu/doc/eb-sample-disctype.html new file mode 100644 index 0000000..f45d0f6 --- /dev/null +++ b/lib/ebu/doc/eb-sample-disctype.html @@ -0,0 +1,104 @@ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     disctype <book-path>
+ * Îã:
+ *     disctype /cdrom
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤵ¤ì¤¿ CD-ROM ½ñÀҤμïÎब¡¢EB ¤« EPWING ¤«
+ *     ¤òÄ´¤Ù¤Æɽ¼¨¤·¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Disc_Code disc_code;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s book-path\n", argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    error_code = eb_initialize_library();
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+    eb_initialize_book(&book);
+
+    /* `book' ¤ò½ñÀҤ˷ë¤ÓÉÕ¤±¤ë¡£¼ºÇÔ¤·¤¿¤é½ªÎ»¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ½ñÀҤμïÎà¤òÄ´¤Ù¤Æɽ¼¨¡£*/
+    error_code = eb_disc_type(&book, &disc_code);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get disc type, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    if (disc_code == EB_DISC_EB) {
+        fputs("EB\n", stdout);
+    } else if (disc_code == EB_DISC_EPWING) {
+        fputs("EPWING\n", stdout);
+    } else {
+        fputs("unknown\n", stdout);
+    }
+
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
diff --git a/lib/ebu/doc/eb-sample-font.html b/lib/ebu/doc/eb-sample-font.html new file mode 100644 index 0000000..9361996 --- /dev/null +++ b/lib/ebu/doc/eb-sample-font.html @@ -0,0 +1,164 @@ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2002-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     font <book-path> <subbook-index>
+ * Îã:
+ *     font /cdrom 0
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢¤½¤Î
+ *     ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñ³°»ú (¹â¤µ 16 ¥Ô¥¯¥»¥ë) ¤ò¤¹¤Ù¤Æ¥¢¥¹¥­¡¼
+ *     ¥¢¡¼¥È¤Çɽ¼¨¤·¤Þ¤¹¡£
+ *
+ *     ¤½¤ÎÉûËܤ¬¡¢¹â¤µ 16 ¥Ô¥¯¥»¥ë¤ÎȾ³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤È¡¢¥¨
+ *     ¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/font.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    int subbook_index;
+    int font_start;
+    unsigned char bitmap[EB_SIZE_NARROW_FONT_16];
+    int i, j;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 3) {
+        fprintf(stderr, "Usage: %s book-path subbook-index\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    error_code = eb_set_subbook(&book, subbook_list[subbook_index]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /*¡Ö¸½ºß¤Î³°»ú¤ÎÂ礭¤µ¡×¤òÀßÄê¡£*/
+    if (eb_set_font(&book, EB_FONT_16) < 0) {
+        fprintf(stderr, "%s: failed to set the font size, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ³°»ú¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/
+    error_code = eb_narrow_font_start(&book, &font_start);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get font information, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    i = font_start;
+    for (;;) {
+        /* ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼èÆÀ¡£*/
+        error_code = eb_narrow_font_character_bitmap(&book, i,
+            (char *)bitmap);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get font data, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+
+        /* ¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò¥¢¥¹¥­¡¼¥¢¡¼¥È¤Ë¤·¤Æ½ÐÎÏ¡£*/
+        printf("code point=%04x\n", i);
+        for (j = 0; j < 16; j++) {
+            fputc((bitmap[j] & 0x80) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x40) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x20) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x10) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x08) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x04) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x02) ? '*' : ' ', stdout);
+            fputc((bitmap[j] & 0x01) ? '*' : ' ', stdout);
+            fputc('\n', stdout);
+        }
+        fputs("--------\n", stdout);
+
+        /* ³°»ú¤Îʸ»úÈÖ¹æ¤ò°ì¤Ä¿Ê¤á¤ë¡£*/
+        error_code = eb_forward_narrow_font_character(&book, 1, &i);
+        if (error_code != EB_SUCCESS)
+            break;
+    }
+        
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
diff --git a/lib/ebu/doc/eb-sample-initexit.html b/lib/ebu/doc/eb-sample-initexit.html new file mode 100644 index 0000000..0c4413f --- /dev/null +++ b/lib/ebu/doc/eb-sample-initexit.html @@ -0,0 +1,64 @@ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 2001-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     initexit
+ * Îã:
+ *     initexit
+ * ÀâÌÀ:
+ *     EB ¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¡¢¸å»ÏËö¤ò¤·¤Æ¤ß¤Þ¤¹¡£
+ *     ¥×¥í¥°¥é¥à¤Î³°Â¦¤«¤é¸«¤ì¤Ð¡¢¤³¤ì¤Ï²¿¤Î°ÕÌ£¤â¤Ê¤¤Æ°ºî¤Ç¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¡£*/
+    error_code = eb_initialize_library();
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_library();
+    exit(0);
+}
+
+
diff --git a/lib/ebu/doc/eb-sample-subbook.html b/lib/ebu/doc/eb-sample-subbook.html new file mode 100644 index 0000000..b2b1508 --- /dev/null +++ b/lib/ebu/doc/eb-sample-subbook.html @@ -0,0 +1,110 @@ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     subbook <book-path>
+ * Îã:
+ *     subbook /cdrom
+ * ÀâÌÀ:
+ *     <boook-path> ¤Ç»ØÄꤵ¤ì CD-ROM ½ñÀҤ˴ޤޤì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎÉûËܤÎ
+ *     Âê̾¤òɽ¼¨¤·¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    char title[EB_MAX_TITLE_LENGTH + 1];
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s book-path\n", argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    error_code = eb_initialize_library();
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ½ñÀҤ˴ޤޤì¤Æ¤¤¤ëÉûËܤÎÂê̾¤ò½ÐÎÏ¡£*/
+    for (i = 0; i < subbook_count; i++) {
+        error_code = eb_subbook_title2(&book, subbook_list[i], title);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get the title, %s\n",
+                argv[0], eb_error_message(error_code));
+            continue;
+        }
+        printf("%d: %s\n", i, title);
+    }
+
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
diff --git a/lib/ebu/doc/eb-sample-text.html b/lib/ebu/doc/eb-sample-text.html new file mode 100644 index 0000000..4ecbb6a --- /dev/null +++ b/lib/ebu/doc/eb-sample-text.html @@ -0,0 +1,163 @@ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     text <book-path> <subbook-index> <number>
+ * Îã:
+ *     text /cdrom 0 10
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢ËÜʸ
+ *     ¤ÎÀèƬ¤«¤é <number> ¸Äʬ¤Îñ¸ì¤ÎÀâÌÀ¤ò½ÐÎϤ·¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/text.h>
+
+#define MAXLEN_TEXT 1023
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    int subbook_count;
+    int subbook_index;
+    EB_Position text_position;
+    char text[MAXLEN_TEXT + 1];
+    ssize_t text_length;
+    int text_count;
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 4) {
+        fprintf(stderr, "Usage: %s book-path subbook-index number\n",
+            argv[0]);
+        exit(1);
+    }
+    text_count = atoi(argv[3]);
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    error_code = eb_set_subbook(&book, subbook_list[subbook_index]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ¥Æ¥­¥¹¥È¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/
+    error_code = eb_text(&book, &text_position);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get text information, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ¥Æ¥­¥¹¥È¤ò¥·¡¼¥¯¡£*/
+    error_code = eb_seek_text(&book, &text_position);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to seek text, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    i = 0;
+    while (i < text_count) {
+        /* ¥Æ¥­¥¹¥È¤ò¼èÆÀ¡£*/
+        error_code = eb_read_text(&book, NULL, NULL, NULL, MAXLEN_TEXT,
+            text, &text_length);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to read text, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+        fputs(text, stdout);
+
+        if (!eb_is_text_stopped(&book))
+            continue;
+
+        fputs("\n----------------------------------------\n", stdout);
+
+        /* ¼¡¤Îñ¸ì¤ÎÀâÌÀ¤Ø°ÜÆ°¡£*/
+        error_code = eb_forward_text(&book, NULL);
+        if (error_code == EB_ERR_END_OF_CONTENT)
+            fputs("\n[END]\n", stdout);
+        else if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to read text, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+        i++;
+    }
+        
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
diff --git a/lib/ebu/doc/eb-sample-word.html b/lib/ebu/doc/eb-sample-word.html new file mode 100644 index 0000000..eccf2df --- /dev/null +++ b/lib/ebu/doc/eb-sample-word.html @@ -0,0 +1,159 @@ +
+
+/*                                                            -*- C -*-
+ * Copyright (c) 1999-2006  Motoyuki Kasahara
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * »ÈÍÑÊýË¡:
+ *     word <book-path> <subbook-index> <word>
+ * Îã:
+ *     word /cdrom 0 apple
+ * ÀâÌÀ:
+ *     <book-path> ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤ÎÆÃÄê¤ÎÉûËܤÎÃ椫¤é <word>
+ *     ¤È¤¤¤¦Ã±¸ì¤ò´°Á´°ìÃ׸¡º÷¤Çõ¤·¡¢¥Ò¥Ã¥È¤·¤¿¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤Î
+ *     ¸«½Ð¤·¤òɽ¼¨¤·¤Þ¤¹¡£
+ *
+ *     <subbook-index> ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ
+ *     ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë
+ *     ¤Ê¤ê¤Þ¤¹¡£
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <eb/eb.h>
+#include <eb/error.h>
+#include <eb/text.h>
+
+#define MAX_HITS 50
+#define MAXLEN_HEADING 127
+
+int
+main(int argc, char *argv[])
+{
+    EB_Error_Code error_code;
+    EB_Book book;
+    EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS];
+    EB_Hit hits[MAX_HITS];
+    char heading[MAXLEN_HEADING + 1];
+    int subbook_count;
+    int subbook_index;
+    int hit_count;
+    ssize_t heading_length;
+    int i;
+
+    /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/
+    if (argc != 4) {
+        fprintf(stderr, "Usage: %s book-path subbook-index word\n",
+            argv[0]);
+        exit(1);
+    }
+
+    /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/
+    eb_initialize_library();
+    eb_initialize_book(&book);
+
+    /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/
+    error_code = eb_bind(&book, argv[1]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to bind the book, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[1]);
+        goto die;
+    }
+
+    /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/
+    error_code = eb_subbook_list(&book, subbook_list, &subbook_count);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to get the subbbook list, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/
+    subbook_index = atoi(argv[2]);
+
+    /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/
+    error_code = eb_set_subbook(&book, subbook_list[subbook_index]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to set the current subbook, %s\n",
+            argv[0], eb_error_message(error_code));
+        goto die;
+    }
+
+    /* ñ¸ì¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤òÁ÷½Ð¡£*/
+    error_code = eb_search_exactword(&book, argv[3]);
+    if (error_code != EB_SUCCESS) {
+        fprintf(stderr, "%s: failed to search for the word, %s: %s\n",
+            argv[0], eb_error_message(error_code), argv[3]);
+        goto die;
+    }
+
+    for (;;) {
+        /* »Ä¤Ã¤Æ¤¤¤ë¥Ò¥Ã¥È¥¨¥ó¥È¥ê¤ò¼èÆÀ¡£*/
+        error_code = eb_hit_list(&book, MAX_HITS, hits, &hit_count);
+        if (error_code != EB_SUCCESS) {
+            fprintf(stderr, "%s: failed to get hit entries, %s\n",
+                argv[0], eb_error_message(error_code));
+            goto die;
+        }
+        if (hit_count == 0)
+            break;
+
+        for (i = 0; i < hit_count; i++) {
+            /* ¸«½Ð¤·¤Î°ÌÃ֤ذÜÆ°¡£*/
+            error_code = eb_seek_text(&book, &(hits[i].heading));
+            if (error_code != EB_SUCCESS) {
+                fprintf(stderr, "%s: failed to seek the subbook, %s\n",
+                    argv[0], eb_error_message(error_code));
+                goto die;
+            }
+
+            /* ¸«½Ð¤·¤ò¼èÆÀ¤·¤Æɽ¼¨¡£*/
+            error_code = eb_read_heading(&book, NULL, NULL, NULL,
+                MAXLEN_HEADING, heading, &heading_length);
+            if (error_code != EB_SUCCESS) {
+                fprintf(stderr, "%s: failed to read the subbook, %s\n",
+                    argv[0], eb_error_message(error_code));
+                goto die;
+            }
+            printf("%s\n", heading);
+        }
+    }
+        
+    /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(0);
+
+    /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/
+  die:
+    eb_finalize_book(&book);
+    eb_finalize_library();
+    exit(1);
+}
+
+
diff --git a/lib/ebu/doc/eb-toc.html b/lib/ebu/doc/eb-toc.html new file mode 100644 index 0000000..f5f22f5 --- /dev/null +++ b/lib/ebu/doc/eb-toc.html @@ -0,0 +1,127 @@ + diff --git a/lib/ebu/doc/eb.css b/lib/ebu/doc/eb.css new file mode 100644 index 0000000..06131af --- /dev/null +++ b/lib/ebu/doc/eb.css @@ -0,0 +1,51 @@ +body { + color: #000000; + background-color: #ffffff; +} + +td { + border-style: solid; + border-width: 1px; +} + +table { + border-style: solid; + border-width: 2px; +} + +h2 { + color: #000000; + font-size: x-large; + padding: 3px; +} + +h3 { + color: #ffffff; + background-color: #8787a7; + font-size: large; + padding: 5px; + border-style: solid; + border-width: 4px; + border-bottom-color: #3f3f5f; + border-right-color: #3f3f5f; + border-top-color: #dfdfff; + border-left-color: #dfdfff; +} + +h4 { + color: #000000; + background-color: #dfdfff; + font-size: medium; + border-color: #3f3f5f; + border-left-style: solid; + border-bottom-style: solid; + border-left-width: 8px; + border-bottom-width: 2px; + padding: 6px; +} + +blockquote.program { + border-style: dotted; + border-width: 1px; + padding-left: 8px; +} diff --git a/lib/ebu/doc/eb.html b/lib/ebu/doc/eb.html new file mode 100644 index 0000000..ce1a938 --- /dev/null +++ b/lib/ebu/doc/eb.html @@ -0,0 +1,165 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

+[¼¡¤Ø] [Ìܼ¡] +

+
+

EB ¥é¥¤¥Ö¥é¥ê

+

+¤³¤Îʸ½ñ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 2001-2006 Motoyuki Kasahara +

+ + +
+

+[¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/eb.html.in b/lib/ebu/doc/eb.html.in new file mode 100644 index 0000000..48bcdc8 --- /dev/null +++ b/lib/ebu/doc/eb.html.in @@ -0,0 +1,9431 @@ + + + + + + + +EB ¥é¥¤¥Ö¥é¥ê + + + +

EB ¥é¥¤¥Ö¥é¥ê

+

+¤³¤Îʸ½ñ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó + +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 2001-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î C ¤Î¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£ +UNIX ·Ï OS ¤ª¤è¤Ó Windows (2000°Ê¹ß) ¤Î¥·¥¹¥Æ¥à¾å¤ÇÆ°ºî¤µ¤»¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï EB, EBG, EBXA, EBXA-C, S-EBXA ¤ª¤è¤Ó EPWING ·Á¼°¤Î +CD-ROM ½ñÀÒ¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤Ï¡¢¼ç¤ËÆüËܤÇÈÎÇ䤵¤ì¤Æ¤¤¤ë¼­½ñ¤Ë»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¼«ÂÎ¤Ï ISO 9660 ·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Â¾¤Î ISO 9660 ·Á¼° +¤ÈƱ¤¸Í×ÎΤǥޥ¦¥ó¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+Ëܽñ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤òºîÀ®¤¹¤ë +³«È¯¼Ô¸þ¤±¤Ë¡¢¥é¥¤¥Ö¥é¥ê¤Î»ÅÍͤò²òÀ⤷¤¿Ê¸½ñ¤Ç¤¹¡£ +¤½¤·¤Æ¡¢¥é¥¤¥Ö¥é¥ê¤Î¸ø¼°¤Ê»²¾È¥Þ¥Ë¥å¥¢¥ë¤Ç¤â¤¢¤ê¤Þ¤¹¡£ +Æɤ߿ʤá¤ë¤Ë¤¢¤¿¤Ã¤Æ¡¢ÆÉ¼Ô¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ª¤è¤Ó CD-ROM ½ñÀÒ¤ÎÆâÉô¹½Â¤ +¤Ë¤Ä¤¤¤ÆÃΤäƤ¤¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¤¬¡¢ÅŻҥ֥寤« EPWING ¤òÍøÍѤ·¤Æ¡¢ +¼ÂºÝ¤Ë CD-ROM ½ñÀÒ¤¬¤É¤Î¤è¤¦¤Ê¤â¤Î¤«¤òÍý²ò¤·¤Æ¤ª¤¯¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢C ¸À¸ì¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Ï¡¢½½Ê¬¤ËÍý²ò¤·¤Æ¤¤¤ë¤³¤È¤òÁ°Äó +¤È¤·¤Þ¤¹¡£ +

+ +

+Ëܽñ¤ÎÆâÍƤ˱è¤Ã¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ò +ºîÀ®¤¹¤ë¤Ë¤Ï¡¢¤ª»ÈÍѤ¤¤Î¥·¥¹¥Æ¥à¤Ë EB ¥é¥¤¥Ö¥é¥ê¤È C ¥³¥ó¥Ñ¥¤¥é¤ò +¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¤¤Æ²¼¤µ¤¤¡£ +¤Ê¤ª¡¢Ëܽñ¤Ç¤Ï¼ç¤Ë UNIX ·Ï OS ¤ò»ÈÍѤ·¤¿¾ì¹ç¤Ë¤Ä¤¤¤Æ¡¢µ­½Ò¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¥½¡¼¥¹¥³¡¼¥É¤ª¤è¤Ó¥Ð¥¤¥Ê¥ê¤ò¡¢ +¤¤¤ï¤æ¤ë Modified BSD ¥é¥¤¥»¥ó¥¹¤Î²¼¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ +(¥Ð¡¼¥¸¥ç¥ó 4.1 ¤è¤ê¤âÁ°¤Î¤â¤Î¤Ï¡¢GPL ¤òºÎÍѤ·¤Æ¤¤¤Þ¤·¤¿¡£) +¾Ü¤·¤¯¤Ï¡¢¥½¡¼¥¹¥³¡¼¥É¤ËÉÕ°¤·¤Æ¤¤¤ë COPYING ¤È¤¤¤¦±Ñʸ¤Î¥Õ¥¡¥¤¥ë¤ò»²¾È +¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ÅŻҥ֥å¯¤È EPWING ¤Ë¤Ä¤¤¤Æ

+ +

+ÅŻҥ֥å¯¤È EPWING ¤Ï¡¢¤¤¤º¤ì¤â¼ç¤ËÆüËܤǻȤï¤ì¤Æ¤¤¤ëÅŻҽñÀҤΠ+¥Ç¡¼¥¿·Á¼°¤Î̾¾Î¤Ç¡¢CD-ROM ¤Ë¼ý¤á¤¿·Á¤Ç¿ô¡¹¤Î½ñÀÒ¤¬»ÔÈΤµ¤ì¤Æ¤¤¤Þ¤¹¡£ +CD-ROM ¤Ï ISO 9660 ·Á¼° ¤Ê¤Î¤Ç¡¢CD-ROM ¥É¥é¥¤¥Ö¤¬°·¤¨¤ë¥·¥¹¥Æ¥à¤Ç¤¢¤ì¤Ð¡¢ +Íưפ˥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +ÅŻҽñÀҤΥǡ¼¥¿·Á¼°¤È¤Ï¤¤¤Ã¤Æ¤â¡¢¼ÂºÝ¤Ï¼­½ñ¸þ¤±¤ËÆò½¤·¤¿¹½Â¤¤È¤Ê¤Ã¤Æ +¤ª¤ê¡¢»ÔÈΤµ¤ì¤Æ¤¤¤ë½ñÀҤ⼭½ñ¤ÎÎब°µÅÝŪ¤Ë¿¤¤¤è¤¦¤Ç¤¹¡£ +

+ +

+ÅŻҥ֥寡¢EPWING ¤È¤â¤Ë¡¢¥Ç¡¼¥¿·Á¼°¤Ë´Ø¤¹¤ëµ¬³Ê¤ÎÁ´ÍƤϰìÈ̸ø³«¤µ¤ì¤Æ +¤¤¤Þ¤»¤ó¤¬¡¢EPWING ¤Ä¤¤¤Æ¤Ïµ¬³Ê¤Î°ìÉô¤¬ÆüËܹ©¶Èµ¬³Ê JIS X 4081 +¡ÖÅŻҽÐÈǸ¡º÷¥Ç¡¼¥¿¹½Â¤¡×¤È¤·¤Æ¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¤µ¤é¤Ë¡¢EPWING ¤ÈÅŻҥ֥寤Υǡ¼¥¿·Á¼°¤Ï¡¢¹ó»÷¤·¤Æ¤¤¤ë¤³¤È¤¬ÃΤé¤ì¤Æ +¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î³«È¯¼Ô¤â¡¢ÅŻҥ֥寡¢EPWING µ¬³Ê¤ÎÁ´ÍƤÏÃΤê¤Þ¤»¤ó¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï JIS X 4081 ¤Îµ­½Ò¤ò¤â¤È¤Ë¡¢ÅŻҥ֥寡¢EPWING ¤òÆɤá¤ë +¤è¤¦¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£ +¤·¤«¤·¤Ê¤¬¤é¡¢µ¬³Ê¤ÎÁ´ÍƤ¬Ê¬¤«¤é¤Ê¤¤¾õÂ֤dz«È¯¤·¤Æ¤¤¤ë¤¿¤á¡¢»ÄÇ°¤Ê¤¬¤é +°ìÉô¤ËÀµ¤·¤¯Æɤá¤Ê¤¤½ñÀÒ¤¬Â¸ºß¤·¤Þ¤¹¡£ +

+ + +

Ëܽñ¤Î¹½À®¤Ë¤Ä¤¤¤Æ

+ +

+¼¡¾Ï¡ÖEB ¥é¥¤¥Ö¥é¥ê¤ÎÆÃħ¡×¤Ç¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬Âбþ¤·¤Æ¤¤¤ëµ¡Ç½¡¢Âбþ +¤·¤Æ¤¤¤Ê¤¤µ¡Ç½¤Ë¤Ä¤¤¤Æ¡¢´Êñ¤ËÀâÌÀ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢¥é¥¤¥Ö¥é¥ê¤Î³µÎ¬¤Ë´Ø¤·¤Æ¡¢ºÇ½é¤ËÃΤäƤª¤¤¤¿¤Û¤¦¤¬Îɤ¤¤È»×¤ï¤ì¤ë +»öÊÁ¤ò¤¤¤¯¤Ä¤«ÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤µ¤é¤Ë¼¡¤Î¾Ï¡Ö¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡¡×¤Ç¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤¿ +¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡¤òÀâÌÀ¤·¤Þ¤¹¡£ +Ëܽñ¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤ËɬÍפʾðÊó¤â¡¢¤³¤Î¾Ï¤Ë +µ­¤·¤Æ¤¢¤ê¤Þ¤¹¡£ +

+ +

+¤½¤·¤Æ¡¢¤½¤Î¼¡¤Î¾Ï¡Ö¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤È¸å»ÏËö¡×¤«¤é¤¬¡¢¼ÂºÝ¤Î +EB ¥é¥¤¥Ö¥é¥ê¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Î²òÀâ¤È¤Ê¤ê¤Þ¤¹¡£ +¤½¤ì¤¾¤ì¤Î¾Ï¤Ï¡¢¼¡¤Î¤è¤¦¤ÊÀᤫ¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢¾Ï¤Ë¤è¤Ã¤Æ¤Ï°ìÉô¤ÎÀ᤬¤Ê¤¤¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ +

+ +
+
²òÀâ
+
+¤½¤Î¾Ï¤Ç²òÀ⤹¤ëµ¡Ç½¤ä³µÇ°¤Ë¤Ä¤¤¤Æ¤Î´ðÁÃÃμ±¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î»ÅÍͤΠ+³µÍפˤĤ¤¤Æ²òÀ⤷¤Æ¤¤¤Þ¤¹¡£ + +
¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à
+
+¡Ö²òÀâ¡×¤Ç¤Ï¥×¥í¥°¥é¥à¤ÎÃÇÊÒ¤À¤±¤ò¼¨¤¹¤³¤È¤¬Â¿¤¤¤Î¤Ç¡¢Æ°ºî²Äǽ¤Ê +¥×¥í¥°¥é¥à¤Î¥µ¥ó¥×¥ë¤ò¤³¤³¤Ç¼¨¤·¤Þ¤¹¡£ + +
¥Ç¡¼¥¿·¿¤Î¾ÜºÙ
+
+¥Ç¡¼¥¿·¿¤ä´Ø¿ô¡¢Äê¿ôÃͤʤɤˤĤ¤¤Æ¤Î»²¾È¥Þ¥Ë¥å¥¢¥ë¤Ç¤¹¡£ +
+ + +

EB ¥é¥¤¥Ö¥é¥ê¤ÎÆÃħ

+ +

+Á°¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢ÅŻҥ֥å¯ (EB, EBG, EBXA, EBXA-C, S-EBXA) +¤È EPWING ·Á¼°¤Î CD-ROM ½ñÀÒ¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢¤³¤ì¤é¤Î CD-ROM ½ñÀÒ¤ËÂФ·¤Æ¡¢¼¡¤Î½èÍý¤ò¹Ô¤¦¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +
    +
  • Á°Êý°ìÃ׸¡º÷ +
  • ¸åÊý°ìÃ׸¡º÷ +
  • ´°Á´°ìÃ׸¡º÷ +
  • ¾ò·ï¸¡º÷ +
  • Ê£¹ç¸¡º÷ +
  • ¸«½Ð¤·¥Ç¡¼¥¿¤Î¼èÆÀ +
  • ËÜʸ¥Ç¡¼¥¿¤Î¼èÆÀ +
  • ¥á¥Ë¥å¡¼¤Î¼èÆÀ +
  • Ãøºî¸¢É½¼¨¤Î¼èÆÀ +
  • ¥«¥é¡¼¿ÞÈǥǡ¼¥¿¤Î¼èÆÀ (¤¿¤À¤· EPWING ¤Î¤ß) +
  • ¥â¥Î¥¯¥í¿ÞÈǥǡ¼¥¿¤Î¼èÆÀ +
  • ³°»ú¥Ç¡¼¥¿¤Î¼èÆÀ +
  • Æ°²è¥Ç¡¼¥¿¤Î¼èÆÀ +
+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î³µÍפ˴ؤ·¤Æ¡¢¤¢¤é¤«¤¸¤áÃΤäƤª¤¤¤Æ夤¤¿ +¤Û¤¦¤¬Îɤ¤¤È»×¤ï¤ì¤ë¤½¤Î¾¤Î»öÊÁ¤Ë¤Ä¤¤¤Æ¡¢²¿ÅÀ¤«ÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
appendix.h
+
+appendix (ÉÕÏ¿) ¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
binary.h
+
+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
eb.h
+
+EB ¥é¥¤¥Ö¥é¥ê¤Î´ðËܥإåÀ¥Õ¥¡¥¤¥ë¡£ +
error.h
+
+¥¨¥é¡¼¥³¡¼¥É¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
font.h
+
+³°»ú¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
text.h
+
+¥Æ¥­¥¹¥È¥Ç¡¼¥¿ (ËÜʸ¡¢¸«½Ð¤·¤Ê¤É) ¤Ë´ØÏ¢¤·¤¿Àë¸À¡¢ÄêµÁ¤ò¹Ô¤¦¡£ +
+ +

+¤³¤ì°Ê³°¤Ë¤â¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¤¬¡¢¾å¤Ëµó¤²¤¿ +¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤«¤éÆɤ߹þ¤Þ¤ì¤ë¤â¤Î¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬ +ľÀÜÆɤ߹þ¤àɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦ºÝ¤Ë¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë +¤ò¥Õ¥¡¥¤¥ë¤ÎÀèƬÉÕ¶á¤ÇÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ +
+
+#include <eb/eb.h>
+#include <eb/error.h>
+
+
+ +

+eb.h ¤Ç¤Ï¤Ê¤¯¡¢eb/eb.h ¤òÆɤ߹þ¤à¤è¤¦¤Ë¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ʸ»ú¥³¡¼¥É

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢CD-ROM ½ñÀÒÆâ¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤Ë¤·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó +¤ËÅϤ¹ºÝ¤Îʸ»ú¥³¡¼¥É¤òµ¬Äꤷ¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EBG (³¤³°¤ÎÅŻҥ֥å¯) ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤¬ ISO 8859-1 (¥é¥Æ¥óʸ»ú 1¡¢ +¤¿¤À¤·À©¸æʸ»ú¤ò½ü¤¯) ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¤¿¤á¡¢¥Ç¡¼¥¿¤Î¤ä¤ê¼è¤ê¤â ISO 8859-1 +¤Ç¹Ô¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢³°»ú¤À¤±¤Ï 2 ¥Ð¥¤¥È¤Çɽ¸½¤·¡¢0x0101 ¡Á 0x1efe ¤ÎÎΰè¤ò»ÈÍѤ·¤Þ¤¹¡£ +(³°»úÎΰè¤Î²¼°Ì 16 ¥Ó¥Ã¥È¤Ï 0x01 ¡Á 0xfe ¤ÎÈϰϤò»ÈÍѤ·¤Þ¤¹¡£) +

+ +

+EBG, EBXA-C ¤ò½ü¤¤¤¿ÅŻҥ֥寡¢¤ª¤è¤Ó EPWING ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤¬ +JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤Ç½ñ¤«¤ì¤Æ¤ª¤ê¡¢JIS X 0208 ¤ò 0x2121 ¡Á +0x7e7e ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤·¡¢0xa121 ¡Á 0xfe7e ¤ò³°»úÎΰè¤Ë¤·¤Æ¤¤¤Þ¤¹ (²¼¿Þ)¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¾å°Ì£¸¥Ó¥Ã¥È
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¡¡£²£±¡¡¡¡¡¡¡¡£·£å¡¡£á£±¡¡¡¡¡¡¡¡£æ£å
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¨£¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¤
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£²£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£Ê£É£Ó¡¡£Ø¨¢¡¡¡¡¨¢¡¡³°»ú¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£°£²£°£¸¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£·£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+²¼°Ì£¸¥Ó¥Ã¥È¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£á£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£æ£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¥
+
+
+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï JIS X 0208 Éôʬ¤òÆüËܸì EUC (EUC-JP) ¤Ë¥¨¥ó¥³¡¼¥É +¤·¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È¤Î¤ä¤ê¼è¤ê¤âÆüËܸì EUC ¤Ç¹Ô¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢JIS X 0208 Éôʬ¤Ï 0xa1a1 ¡Á 0xfefe ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤Þ¤¹¡£ +

+ +

+EBXA-C (ÃæÆü¡¦ÆüÃæ¼­½ñ¤ÎÅŻҥ֥å¯) ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤¬ JIS X 0208 +(ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤È GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ¤Ç½ñ¤«¤ì¤Æ¤ª¤ê¡¢ +JIS X 0208 ¤ò 0x2121 ¡Á 0x7e7e ¤Ë¥Þ¥Ã¥Ô¥ó¥°¡¢ +GB 2312 ¤ò 0x21a1 ¡Á 0x7efe ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤·¡¢ +0xa121 ¡Á 0xfe7e ¤ò³°»úÎΰè¤Ë¤·¤Æ¤¤¤Þ¤¹ (²¼¿Þ)¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¾å°Ì£¸¥Ó¥Ã¥È
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¡¡£²£±¡¡¡¡¡¡¡¡£·£å¡¡£á£±¡¡¡¡¡¡¡¡£æ£å
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£°£°¨£¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¨¨¤
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£²£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£Ê£É£Ó¡¡£Ø¨¢¡¡¡¡¨¢¡¡³°»ú¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£°£²£°£¸¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£·£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+²¼°Ì£¸¥Ó¥Ã¥È¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£á£±¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£Ç£Â¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢£²£³£±£²¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¨¢¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡£æ£å¨§¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨¡¨¡¨«¨¡¨¡¨¡¨¡¨¡¨«¨©
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨ª¨¥
+
+
+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È¤Î¤ä¤ê¼è¤ê¤Ë»È¤¦Ê¸»ú¥³¡¼¥É¤Ï¡¢ +ÆüËܸì EUC ¤ª¤è¤ÓÃæ¹ñ¸ì EUC (EUC-ZH) ¤Ç¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¤½¤Î¤Þ¤Þ¤Ç¤Ï JIS X 0208 ¤È GB 2312 ¤¬ 0xa1a1 ¡Á 0xfefe ¤Ë +¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¡¢¾×Æͤ·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +¤³¤ÎÌäÂê¤ò¤É¤¦²óÈò¤¹¤ë¤Î¤«¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤Ç·è¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¥Õ¥Ã¥¯¤Èʸ»ú¥³¡¼¥É¤Î´Ø·¸¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ÅŻҥ֥寡¢EPWING ¤È¤â¤Ë¡¢³°»ú¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤Ç¤É¤¦ +°·¤¦¤«¤ò·è¤á¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +³°»ú¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯¤Ï ¡Ö³°»ú¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

°µ½Ì¤µ¤ì¤¿½ñÀҤˤĤ¤¤Æ

+ +

+EB ¥é¥¤¥Ö¥é¤Ï¡¢¥Ç¡¼¥¿¤ò°µ½Ì¤·¤Æ¼ýÏ¿¤·¤¿½ñÀÒ¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +º£¤Î¤È¤³¤í¡¢¼¡¤Î 4 ¼ïÎà¤Î°µ½ÌÊýË¡¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
ebzip °µ½Ì·Á¼°
+
+EB ¥é¥¤¥Ö¥é¥êÆȼ«¤Î°µ½Ì·Á¼°¤Ç¤¹¡£ +ÉÕ°¤Î ebzip ¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿½ñÀÒ¤òºî¤ì¤Þ¤¹¡£ + +
EPWING V4, V5 ·Á¼°
+
+»ÔÈΤΠEPWING V4, V5 ¤Î½ñÀҤΰìÉô¤Ë¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ + +
EPWING V6 ·Á¼°
+
+»ÔÈΤΠEPWING V6 ¤Î½ñÀҤΰìÉô¤Ë¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +EPWING V4, V5 ·Á¼°¤Î²þÎÉ·¿¤Ç¤¹¡£ + +
S-EBXA ·Á¼°
+
+»ÔÈΤΠS-EBXA ¤Î½ñÀҤΰìÉô¤Ë¡¢¤³¤Î·Á¼°¤Ç°µ½Ì¤·¤¿¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +
+ +

+¥Ç¡¼¥¿¤Î¿­Ä¹¤Ï EB ¥é¥¤¥Ö¥é¥ê¦¤Ç¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤ë¤¿¤á¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¤Ï¡¢¥¢¥¯¥»¥¹¤·¤Æ¤¤¤ë½ñÀÒ¤¬°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤« +¤É¤¦¤«Ê¬¤«¤ê¤Þ¤»¤ó¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢½ñÀÒ¤¬°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ç½èÍý¤òÊѤ¨¤ë +ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ + +

±ó³Ö¥Û¥¹¥È¾å¤Î½ñÀҤˤĤ¤¤Æ

+ +

+¥Ð¡¼¥¸¥ç¥ó 4.0 ¤«¤é¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¾¤Î¥Û¥¹¥È¤Î½ñÀҤ˥¢¥¯¥»¥¹¤Ç¤­¤ë +¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£ +

+ +

+±ó³Ö¥¢¥¯¥»¥¹¤Î½èÍý¤Ï¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¦¤Ç¹Ô¤ï¤ì¤Þ¤¹¤Î¤Ç¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢½ñÀÒ¤¬¼«Ê¬¤Î¥Û¥¹¥È¾å¤Ë¤¢¤ë¤«¤É¤¦¤«¤Ç¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Î¸Æ¤Ó½Ð¤·¼ê½ç¤òÊѤ¨¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¤¿¤À¤·¡¢Â¾¤Î¥Û¥¹¥È¤«¤é¥¢¥¯¥»¥¹¤¹¤ë¤È¡¢½èÍý®ÅÙ¤ÏÈó¾ï¤ËÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£ +¤½¤Î¤¿¤á¡¢¸úΨÎɤ¯½èÍý¤Ç¤­¤ë¤è¤¦¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î½èÍýÊýË¡¤ò¹©Éפ¹¤Ù¤­ +¾õ¶·¤¬À¸¤¸¤ë¤³¤È¤Ï¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ + +

¥·¥¹¥Æ¥à¤ÎÍ×·ï

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ë¤ËÍѤ¤¤ë¥³¥ó¥Ñ¥¤¥é¤Ë¤Ï¡¢ +ANSI (ANSI X3.159-1989, ISO/IEC 9899-1990) Âбþ¤Î¤â¤Î¤òÂоݤȤ·¤Æ¤¤¤Þ¤¹¡£ +¤Þ¤¿¡¢¥·¥¹¥Æ¥à¤Ë¤Ï POSIX.1 (IEEE Std. 1003.2-1990, ISO/IEC 9945-1:1990) +½àµò¤Ê¤¤¤·¸ß´¹¤Î¤â¤Î¤òÂоݤȤ·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+±Ê¤é¤¯ EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¸Å¤¤¥³¥ó¥Ñ¥¤¥é¤ä UNIX ·Ï¥·¥¹¥Æ¥à¤Ø¤ÎÂбþ¤â +¤½¤ì¤Ê¤ê¤Ë¹Ô¤ï¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢¥Ð¡¼¥¸¥ç¥ó 4.1 ¤«¤é¤ÏÂбþ¤òÂǤÁÀڤäƤ¤¤Þ¤¹¡£ +ÆÃ¤Ë ANSI Âбþ¤Î¥³¥ó¥Ñ¥¤¥é¤Ïɬ¿Ü¤Ç¤¹¤Î¤Ç¡¢¤´Ãí°Õ¤¯¤À¤µ¤¤¡£ +

+ + +

¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÊýË¡

+ +

+ËܾϤǤϡ¢EB ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤¿¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ë¤Î»ÅÊý¤Ë¤Ä¤¤¤Æ¡¢ +2 Ä̤ê¤ÎÊýË¡¤òÀâÌÀ¤·¤Þ¤¹¡£ +

+ +

+°ì¤ÄÌܤϡ¢¤´¤¯»äŪ¤Ê¡¢¾®µ¬ÌÏ¤Î¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ëºÝ¤Ë¸þ¤¤¤Æ¤¤¤ë +¤Æ¤Ã¤È¤êÁ᤯¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤ÎÊýË¡¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î»È¤¤Êý¤ò³Ð¤¨¤ëÌÜŪ¤Ç´Êñ¤Ê¥×¥í¥°¥é¥à¤òÁȤàºÝ¤Ï¡¢¤³¤Á¤é +¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£ +

+ +

+Æó¤ÄÌܤϡ¢EB ¥é¥¤¥Ö¥é¥ê¤òÁȤ߹þ¤ó¤À¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢ +¤È¤·¤Æ¥ê¥ê¡¼¥¹¤¹¤ëºÝ¤Ë¸þ¤¤¤Æ¤¤¤ëÊýË¡¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢GNU Autoconf, Automake, Libtool ¤òÊ»ÍѤ¹¤ë»ÅÁȤߤò +ÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤é¤ò»È¤Ã¤¿¥³¥ó¥Ñ¥¤¥ëÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¤Æ¤Ã¤È¤êÁᤤ¥³¥ó¥Ñ¥¤¥ëÊýË¡

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ëºÝ¤Ï¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î +¥Ç¥£¥ì¥¯¥È¥ê°ÌÃÖ¤ò C ¥³¥ó¥Ñ¥¤¥é¤Ë¶µ¤¨¤Æ¤ä¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +°ìÈÌ¤Ë UNIX ¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¡¢-I ¥ª¥×¥·¥ç¥ó¤Ç°ÌÃÖ¤ò»ØÄê +¤·¤Þ¤¹¡£ +

+ +
+
+cc -I/usr/local/include -c sample.c
+
+
+ +

+/usr/local/include/eb ¤Ç¤Ï¤Ê¤¯¡¢¤½¤Î°ì¤Ä¾å¤ò»ØÄꤷ¤Þ¤¹ +(¡Ö¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+¼¡¤Ë¡¢¥ê¥ó¥¯¤·¤Æ¼Â¹Ô¥Ð¥¤¥Ê¥ê¤òÀ¸À®¤¹¤ë¹©Äø¤Ç¤¹¤¬¡¢ +°Ê²¼¤Ëµ­¤·¤¿¥é¥¤¥Ö¥é¥ê¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´Éô¤ò¥ê¥ó¥¯¤·¤Þ¤¹¡£ +³ç¸ÌÆâ¤Ï¡¢¥é¥¤¥Ö¥é¥ê¤Î¥Õ¥¡¥¤¥ë̾¤Ç¤¹ (¤¿¤À¤·¡¢.a ¤ä +.so ¤È¤¤¤Ã¤¿ÀÜÈø»Ò¤Ï¾Êά)¡£ +

+ +
+
EB ¥é¥¤¥Ö¥é¥ê (libeb)
+
+EB ¥é¥¤¥Ö¥é¥ê¤ÎËÜÂΤǤ¹¡£¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ïɬ¿Ü¤Ç¤¹¡£ + +
zlib (libz)
+
+°µ½Ì¤È¿­Ä¹¤ò¹Ô¤¦¥é¥¤¥Ö¥é¥ê¤Ç¤¹ +(¾Ü¤·¤¯¤Ï @url{http://www.gzip.org/zlib/})¡£ +ebzip ¥³¥Þ¥ó¥É¤Ç°µ½Ì¤·¤¿¼­½ñ¤ò°·¤¦¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£ +¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ïɬ¿Ü¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î¥½¡¼¥¹¥³¡¼¥É¤Ë¤Ï zlib ¤â¼ýÏ¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¥·¥¹¥Æ¥à¤Ë zlib ¤¬ ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò +¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëºÝ¤Ë¡¢zlib ¤â¼«Æ°Åª¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£ + +
gettext ¥é¥¤¥Ö¥é¥ê (libintl)
+
+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤òÄ󶡤¹¤ë¥é¥¤¥Ö¥é¥ê¤Ç¤¹ +¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤ë +¾ì¹ç¤Ï¡¢É¬Íפˤʤ뤫¤âÃΤì¤Þ¤»¤ó¡£ +gettext ¤Î¼ÂÁõ¤Ï²¿¼ïÎफ¤¢¤ê¤Þ¤¹¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç»ÈÍѤǤ­¤ë¤Î¤Ï +¥á¥Ã¥»¡¼¥¸¥«¥¿¥í¥°¤Î·Á¼°¤¬ GNU gettext ¸ß´¹¤Î¤â¤Î¤À¤±¤Ç¤¹¡£ + +¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ¤¤¤ë¾ì¹ç¤Ç¤â¡¢OS ¤Îɸ½à C ¥é¥¤¥Ö¥é¥ê +¤È¤·¤Æ glibc ¤òºÎÍѤ·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ + +
iconv ¥é¥¤¥Ö¥é¥ê
+
+ʸ»ú¥³¡¼¥ÉÊÑ´¹¤Î¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£ +gettext ¥é¥¤¥Ö¥é¥ê¤ò¥ê¥ó¥¯¤¹¤ë¾ì¹ç¡¢°ì½ï¤ËɬÍפȤʤ뤫¤âÃΤì¤Þ¤»¤ó¡£ +iconv ¤Î¼ÂÁõ¤â²¿¼ïÎफ¤¢¤ê¡¢OS ¤Ë¤è¤Ã¤Æ¤ÏºÇ½é¤«¤éźÉÕ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +
+ +

+ɬÍפʥ饤¥Ö¥é¥ê¥Õ¥¡¥¤¥ë¤Î̾¾Î¤ò¡¢C ¥³¥ó¥Ñ¥¤¥é¤Ë»ØÄꤷ¤Æ¤ä¤ê¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢¥Õ¥¡¥¤¥ë¤ÎÃÖ¤«¤ì¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê°ÌÃÖ¤ò¡¢C ¥³¥ó¥Ñ¥¤¥é¤Ë¶µ¤¨¤ë +ɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +°ìÈÌ¤Ë UNIX ¤Î C ¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¡¢-L ¥ª¥×¥·¥ç¥ó¤Ç¥Ç¥£¥ì¥¯¥È¥ê +°ÌÃÖ¤ò»ØÄꤷ¡¢-l ¥ª¥×¥·¥ç¥ó¤Ç¥é¥¤¥Ö¥é¥ê¤Î¥Õ¥¡¥¤¥ë̾¤ò»ØÄê +¤·¤Þ¤¹¡£ +

+ +
+
+cc sample.o -L/usr/local/lib -leb -lz -lintl -liconv
+
+
+ +

+¤¿¤À¤·¡¢¶¦Í­¥é¥¤¥Ö¥é¥ê¤ò¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤Ï¡¢¼Â¹Ô»þ¤Ë¤ª¤±¤ë¥é¥¤¥Ö¥é¥ê¤Î +¸¡º÷¥Ñ¥¹¤â¹ç¤ï¤»¤Æ»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+cc sample.o -R/usr/local/lib -L/usr/local/lib -leb -lz -lintl -liconv
+
+
+ +

+C ¥³¥ó¥Ñ¥¤¥é¤Î»È¤¤Êý¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢C ¥³¥ó¥Ñ¥¤¥é¤Î¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È +¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

Autoconf ¤òÊ»ÍѤ·¤¿¥³¥ó¥Ñ¥¤¥ëÊýË¡

+ +

+ºî¶È¤ÎÁ°¤Ë¡¢Autoconf, Automake, Libtool ¤Ï¡¢¤¢¤é¤«¤¸¤á¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ +¤ª¤¤¤Æ²¼¤µ¤¤¡£ +Autoconf ¤Ï¥Ð¡¼¥¸¥ç¥ó 2.50 °Ê¹ß¤¬É¬ÍפǤ¹¡£ +

+ +

+¤Þ¤º¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î configure.ac +(¤â¤·¤¯¤Ï configure.in) ¤Ë¡¢¼¡¤Î¹Ô¤ò²Ã¤¨¤Þ¤¹¡£ +

+ +
+
+eb_LIB_EB4
+
+
+ +

+¥Þ¥¯¥í eb_LIB_EB4 ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î»ÈÍѤËɬÍפʰìÀڤΠ+¥Á¥§¥Ã¥¯¤ò¹Ô¤¤¡¢¤µ¤é¤Ë configure ¤Ë¼¡¤Î¥ª¥×¥·¥ç¥ó¤òÄɲà +¤·¤Þ¤¹¡£ +

+ +
+
+  --with-eb-conf=FILE     eb.conf file is FILE [SYSCONFDIR/eb.conf]
+
+
+ +

+eb.conf ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤È¤­¤Î¾ðÊó¤òµ­Ï¿ +¤·¤¿¥Õ¥¡¥¤¥ë¤Ç¡¢¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£ +eb_LIB_EB4 ¤Ï¤³¤Î¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç¡¢C ¥³¥ó¥Ñ¥¤¥é¤Ë +ÅϤµ¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤¥ª¥×¥·¥ç¥ó¤Ê¤É¤Î¾ðÊó¤òÆÀ¤Þ¤¹¡£ +--eb-conf-file ¤Ï¡¢eb.conf ¤Î¥Õ¥¡¥¤¥ë̾¤ò +ÌÀ¼¨Åª¤Ë»ØÄꤹ¤ë¥ª¥×¥·¥ç¥ó¤Ç¤¹¡£ +

+ +

+¥Þ¥¯¥í eb_LIB_EB4 ¤Ï¡¢eb4.m4 ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ç +Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤ò /usr/local ¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢¸Ä¡¹¤Î¥Õ¥¡¥¤¥ë +¤Î¥¤¥ó¥¹¥È¡¼¥ëÀè¤òÊѹ¹¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢/usr/local/share/aclocal +¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£ +¤³¤Î eb4.m4 ¤ò¥½¡¼¥¹¥³¡¼¥É¤ÎŬÅö¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼ (¤¿¤È¤¨¤Ð +m4) ¤Ë¥³¥Ô¡¼¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+aclocal ¥³¥Þ¥ó¥É¤Ç aclocal.m4 ¤òºÆÀ¸À®¤¹¤ëºÝ¤Ï¡¢ +-I ¥ª¥×¥·¥ç¥ó¤Ç¥Þ¥¯¥í¥Õ¥¡¥¤¥ë¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +
+
+aclocal -I m4
+
+
+ +

+²Ã¤¨¤Æ¡¢¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Î Makefile.am ¤ÎÃæ¤Ë¤â +aclocal ¤ØÅϤ¹¥ª¥×¥·¥ç¥ó¤ò½ñ¤¤¤Æ¤ª¤­¤Þ¤¹¡£ +

+ +
+
+ACLOCAL_AMFLAGS = -I m4
+
+
+ +

+¤Þ¤¿¡¢¥½¡¼¥¹¥³¡¼¥É¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë Libtool ¥Ñ¥Ã¥±¡¼¥¸¤¬¤Þ¤ÀÍÑ°Õ¤µ¤ì¤Æ +¤¤¤Ê¤±¤ì¤Ð¡¢ÍÑ°Õ¤·¤Þ¤¹¡£ +libtoolize ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ²¼¤µ¤¤¡£ +Libtool ¥Ñ¥Ã¥±¡¼¥¸¤¬¡¢¥½¡¼¥¹¥³¡¼¥É¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ +

+ +
+
+libtoolize
+
+
+ +

+ºÇ¸å¤Ë¡¢¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Î Makefile.am ¥Õ¥¡¥¤¥ë +¤Î _LDFLAGS ¤È INCLUDES ¤Ë¡¢¼¡¤Î¤è¤¦¤ÊÃͤòÄɲà +¤·¤Þ¤¹¡£ +

+ +
+
+program_LDFLAGS = $(EBCONF_EBLIBS) $(EBCONF_ZLIBLIBS) $(EBCONF_INTLLIBS)
+INCLUDES = $(EBCONF_EBINCS)
+
+
+ +

+(program_LDFLAGS ¤Î program ¤Î¤È¤³¤í¤Ï¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¼ÂºÝ¤Î¥³¥Þ¥ó¥É̾¤Ë¤·¤Þ¤¹¡£) +

+ + +

EB ¥é¥¤¥Ö¥é¥êËÜÂΤΥǥХå°

+ +

+¡Ö¼«Ê¬¤¬ºî¤Ã¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬Àµ¤·¤¯Æ°¤«¤Ê¤¤¤Î¤Ï¡¢¤Ò¤ç¤Ã¤È¤¹¤ë¤È +EB ¥é¥¤¥Ö¥é¥ê¤Î¥Ð¥°¤¬¸¶°ø¤Ç¤Ï¤Ê¤¤¤«?¡×¤È¤¤¤¦µ¿Ìä¤òÊú¤­¡¢EB ¥é¥¤¥Ö¥é¥ê +¤ÎµóÆ°¤ò³Îǧ¤·¤¿¤¤¤È»×¤¦¤³¤È¤¬¤¢¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +

+¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ï¡¢´Ä¶­ÊÑ¿ô EB_DEBUG ¤ò¥»¥Ã¥È¤·¤¿¾õÂÖ¤Ç +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¼Â¹Ô¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ïɸ½à¥¨¥é¡¼½ÐÎϤˡ¢¼¡¤Î¤è¤¦¤Ê¥í¥°¤ò (¤«¤Ê¤êÂçÎ̤Ǥ¹¤¬) +½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+[EB] in: eb_set_font(book=0, font_code=0)
+[EB] in: eb_load_narrow_font(book=0)
+[EB] out: eb_load_narrow_font()
+[EB] in: eb_load_wide_font(book=0)
+[EB] out: eb_load_wide_font()
+[EB] out: eb_set_font() = EB_SUCCESS
+
+
+ +

+¤³¤ì¤é¤Î¥í¥°¤Ï¡¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·»þ¤Î°ú¿ôÎ󡢤ª¤è¤Ó´Ø¿ô¤«¤é¤ÎÌá¤êÃͤò +¼¨¤·¤Æ¤¤¤Þ¤¹¡£ +ebfixlog ¤È¤¤¤¦ Perl5 ¥¹¥¯¥ê¥×¥È¤ò»È¤¦¤È¡¢¥í¥°¤òÀ°·Á¤¹¤ë¤³¤È +¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¥¹¥¯¥ê¥×¥È¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¥½¡¼¥¹¥³¡¼¥É¤Î misc +¥Ç¥£¥ì¥¯¥È¥ê¤Ë¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+ebfixlog ¤Ï¡¢¥³¥Þ¥ó¥É¹Ô¤Î°ú¿ô¤È¤·¤ÆÍ¿¤¨¤é¤ì¤¿¥Õ¥¡¥¤¥ë +(°ú¿ô¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ðɸ½àÆþÎÏ) ¤«¤é¥á¥Ã¥»¡¼¥¸¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¡¢ +¼¡¤Î¤è¤¦¤Ë»ú²¼¤²¤·¤Æ½ÐÎϤ·¤Þ¤¹¡£ +

+ +
+
+[EB] in: eb_set_font(book=0, font_code=0)
+[EB]   in: eb_load_narrow_font(book=0)
+[EB]   out: eb_load_narrow_font()
+[EB]   in: eb_load_wide_font(book=0)
+[EB]   out: eb_load_wide_font()
+[EB] out: eb_set_font() = EB_SUCCESS
+
+
+ +

+Ä̾ï ebfixlog ¥¹¥¯¥ê¥×¥È¤Ï¡¢zio ¤ª¤è¤Ó ebnet ¤È¸Æ¤Ð¤ì¤ë¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¥Õ¥¡¥¤¥ëÆþ½ÐÎϤò¼õ¤±»ý¤Ä½èÍýÉô¤Î¥í¥°¤ÏÆɤ߼ΤƤë¤è¤¦¤Ë +¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤Ë¤è¤ê¡¢¥í¥°¤ÎÎ̤¬¤«¤Ê¤ê¸º¤ê¤Þ¤¹¡£ +

+ +

+zio ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ÎÄã¥ì¥Ù¥ëÆþ½ÐÎϤνèÍýÉô¤Ç¡¢ÉÑÈˤ˸ƤӽФµ¤ì¤Þ¤¹¡£ +ÌäÂê¤Î¸¶°ø¤òÄ´¤Ù¤ëºÝ¤â¡¢¤Þ¤º¤ÏÆɤ߼ΤƤ¿Êý¤¬¥é¥¤¥Ö¥é¥ê¤ÎÆâÉôÆ°ºî¤òÄÉÀ× +¤·¤ä¤¹¤¤¤Ç¤·¤ç¤¦¡£ +

+ +

+ebfixlog ¤Î -z ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢zio ¤Î +¥á¥Ã¥»¡¼¥¸¤òÆɤ߼ΤƤº¤Ë½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebnet ¤Ï±ó³Ö¥¢¥¯¥»¥¹¤ÎÆþ½ÐÎϤò½èÍý¤¹¤ëÉôʬ¤Ç¡¢zio ¤è¤ê¤â¤µ¤é¤Ë +²¼°Ì¥ì¥Ù¥ë¤Ë°ÌÃÖ¤·¤Þ¤¹¡£ +±ó³Ö¥¢¥¯¥»¥¹¤ÎµóÆ°¤òÄÉÀפ¹¤ë¤È¤­°Ê³°¤Ï¡¢Æɤ߼ΤƤ¿Êý¤¬Îɤ¤¤È»×¤¤¤Þ¤¹¡£ +

+ +

+ebfixlog ¤Î -n ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢ebnet, +zio ξÊý¤Î¥á¥Ã¥»¡¼¥¸¤òÆɤ߼ΤƤº¤Ë½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ + +

¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤È¸å»ÏËö

+ +

+¤³¤Î¾Ï¤«¤é¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Î²òÀâ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é EB ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ¹¤ë¤Ë¤Ï¡¢ +ºÇ½é¤Ë¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤ò¹Ô¤¦¤Ë¤Ï¡¢eb_initialize_library() +¤È¤¤¤¦´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_initialize_library() != EB_SUCCESS) {
+    printf("eb_initialize_library() failed\n");
+    exit(1);
+}
+
+
+ +

+ƱÍͤˡ¢¥é¥¤¥Ö¥é¥ê¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢eb_finalize_library() +¤È¤¤¤¦´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +

+ +
+
+eb_finalize_library();
+
+
+ + + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ + + + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤Î¹à¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢eb/eb.h ¤òÆɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Error_Code eb_initialize_library ()

+ +

+´Ø¿ô eb_initialize_library() ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¤·¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë¡¢É¬¤º +°ì²ó¤À¤±¤³¤Î´Ø¿ô¤ò¸Æ¤ÖɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë +¤·¤¿¾ì¹ç¡¢eb_initialize_library() ¤Ï bindtextdomain() ¤ò +¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬ setlocale() ¤ò +¸Æ¤Ó½Ð¤¹¤Î¤Ï¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¤»¤º¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï +̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤òºÑ¤Þ¤»¤¿¾õÂ֤ǡ¢ºÆÅÙ eb_initialize_library() +¤ò¸Æ¤ó¤Ç¤â¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

void eb_finalize_library ()

+ +

+´Ø¿ô eb_finalize_library() ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤¤½ª¤ï¤Ã¤¿ +ºÝ¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¦¤Ç»ÈÍѤ·¤¿ +EB_Book¡¢EB_Hookset¡¢EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤ò¸å»ÏËö¤¹¤ë¤Ë¤Ï¡¢¤½¤ì¤¾¤ìÀìÍѤδؿô +eb_finalize_book()¡¢eb_finalize_hookset()¡¢ +eb_finalize_appendix() ¤ò³Æ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤ÆÊÌÅÓ +¸Æ¤ó¤Ç¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¥é¥¤¥Ö¥é¥ê¤Î¸å»ÏËö¤ò¤·¤¿¸å¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¤¤¤«¤Ê¤ë´Ø¿ô¤â¸Æ¤ó¤Ç¤Ï +¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢CD-ROM ½ñÀҤؤΥ¢¥¯¥»¥¹¤Ï¡¢¤¹¤Ù¤Æ EB_Book ·¿ +¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤Æ¹Ô¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¤Û¤È¤ó¤É¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢ËܾϤǵ­½Ò¤·¤Æ¤¤¤ë +½èÍý¤òɬÍפȤ¹¤ë¤Ï¤º¤Ç¤¹¡£ +

+ +

+ËÜ¾Ï¤Ç¤Ï EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½¡¢¸å»ÏËö¤È¤¤¤Ã¤¿´ðËÜŪ¤Ê +¼è¤ê°·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

EB_Book ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+CD-ROM ½ñÀҤإ¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢¤Þ¤º EB_Book ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò +ÍÑ°Õ¤·¤Þ¤¹¡£ +Ʊ»þ¤ËÊ£¿ô¤Î CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ë¤Ê¤é¡¢½ñÀÒ°ìºýËè¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò +ºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+EB_Book book;
+
+
+ +

+¤â¤Á¤í¤ó¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤Ï¡¢malloc() ¤Ç³ÎÊݤ·¤Æ¤â +¹½¤¤¤Þ¤»¤ó¡£ +

+ +
+
+EB_Book *book_pointer;
+
+book_pointer = (EB_Book *) malloc(sizeof(EB_Book));
+
+
+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÃæ¿È (ÊÑ¿ô book ¤ÎÃæ¿È +¤ª¤è¤Ó book_pointer ¤Î»Ø¤¹Îΰè) ¤Ï¤Þ¤À½é´ü²½¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢ +¼¡¤ÎÍ×ÎΤǥª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +

+ +
+
+eb_initialize_book(&book);
+eb_initialize_book(book_pointer);
+
+
+ +

+eb_initialize() ¤ØÅϤ¹°ú¿ô¤Ï EB_Book ¥ª¥Ö¥¸¥§¥¯¥È +¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤Ã¤Æ¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤½¤Î¤â¤Î¤Ç¤Ï +¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ +(EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤â¡¢¤¹¤Ù¤Æ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Ý¥¤¥ó¥¿¤ÇÅϤ·¤Þ¤¹¡£) +

+ +

+CD-ROM ½ñÀÒ¤ò»È¤¦¤Ë¤Ï¡¢Â³¤¤¤Æ EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò +CD-ROM ½ñÀҤμÂÂΤ˷ë¤ÓÉÕ¤±¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢´Ø¿ô eb_bind() ¤Ë¤è¤Ã¤Æ¹Ô¤¤¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Â£ï£ï£ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¥ª¥Ö¥¸¥§¥¯¥È¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨£¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¨¼¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¾¡¡¡¿£í£î£ô¡¿£ã£ä£ò£ï£í¡¡¨¢
+¨¦¨¡¨¡¨¡¨¥¡¡£å£â¡²£â£é£î£ä¡Ê¡Ë¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind(&book, "/mnt/cdrom") != EB_SUCCESS) {
+    printf("eb_bind() failed\n");
+    return;
+}
+
+
+ +

+eb_bind() ¤ËÅϤ¹½ñÀҤΥѥ¹ (¤³¤ÎÎã¤Ç¤Ï /mnt/cdrom) +¤Ï½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê catalog ¤Þ¤¿¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢ +eb_finalize_book() ¤ò¸Æ¤ó¤Ç¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤Ï½ñÀҤȤηë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂÖ¤ËÌá¤ê¡¢ÆâÉô¤Ç³ä¤êÅö¤Æ¤é¤ì¤¿ +¥á¥â¥ê¤Ï²òÊü¤µ¤ì¡¢³«¤¤¤Æ¤¤¤¿¥Õ¥¡¥¤¥ë¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +

+ +
+
+eb_finalize_book(&book);
+eb_finalize_book(book_pointer);
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò malloc() ¤Ç³ÎÊݤ·¤¿¾ì¹ç¤Ï¡¢ +eb_finalize_book() ¤ò¸Æ¤ó¤À¸å¤Ê¤é¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò +°ÂÁ´¤Ë²òÊü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+free(book_pointer);
+
+
+ + +

±ó³Ö¥Û¥¹¥È¤Ø¤Î eb_bind()

+ +

+Á°Àá¤ÇÀâÌÀ¤·¤¿ eb_bind() ¤òÍѤ¤¤Æ¡¢EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò±ó³Ö¥Û¥¹¥È¤Î½ñÀҤ˷ë¤Ó¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢½ñÀҤΥѥ¹¤ÎÂå¤ï¤ê¤Ë¡¢±ó³Ö¥¢¥¯¥»¥¹ÍѤμ±Ê̻Ҥò»ØÄꤷ¤Þ¤¹¡£ +¼±Ê̻Ҥϡ¢¼¡¤Î¤è¤¦¤Ê·Á¼°¤ò¤È¤ê¤Þ¤¹¡£ +

+ +
+
+ebnet://¥Û¥¹¥È:¥Ý¡¼¥È/½ñÀÒ̾
+
+
+ +

+¥Û¥¹¥È ¤Ï±ó³Ö¥Û¥¹¥È¤Î IP ¥¢¥É¥ì¥¹¤â¤·¤¯¤Ï¥Û¥¹¥È̾¤Ç¤¹¡£ +¤¿¤À¤·¡¢IPv6 ¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë¾ì¹ç¤Ï¡¢¥¢¥É¥ì¥¹¤ò [ ¤È +] ¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¥Ý¡¼¥È ¤Ï¡¢¤½¤Î¥Û¥¹¥È¤¬ÂÔ¤Á¼õ¤±¤Æ¤¤¤ë¥Ý¡¼¥È¤ÎÈÖ¹æ¤Ç¤¹¡£ +¥Û¥¹¥È¤¬ÂÔ¤Á¼õ¤±¤Æ¤¤¤ë¥Ý¡¼¥È¤¬É¸½à¤Î 22010 È֤Ǥ¢¤ì¤Ð¡¢:¥Ý¡¼¥È +¤ÎÉôʬ¤Ï¾Êά²Äǽ¤Ç¤¹¡£ +

+ +

+°Ê²¼¤Ë eb_bind() ¤Î¥³¡¼¥ÉÎã¤òµ­¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind(&book, "ebnet://localhost/cdrom") != EB_SUCCESS) {
+    printf("eb_bind() failed\n");
+    return;
+}
+
+
+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ +

+¤³¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ç¤Ï¡¢CD-ROM ½ñÀҤμïÎà¤òÄ´¤Ù¤ë¤¿¤á¤Ë¡¢ +eb_disc_code() ¤È¤¤¤¦´Ø¿ô¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö´Ø¿ô¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + + + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Book ·¿

+ +

+EB_Book ·¿¤Ï¡¢°ìºý¤Î CD-ROM ½ñÀÒ¤òɽ¤·¤Þ¤¹¡£ +CD-ROM ½ñÀҤؤΥ¢¥¯¥»¥¹¤Ï¡¢¤¹¤Ù¤Æ¤³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤Æ¹Ô¤¤¤Þ¤¹¡£ +Ʊ»þ¤ËÊ£¿ô¤Î CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ëºÝ¤Ï¡¢½ñÀÒ°ìºýËè¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò +ºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ï¡¢¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¤¬ÍÑ°Õ +¤·¤Æ¤¤¤ë´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë +ÂФ·¤Æ eb_initialize_book() ¤ò¸Æ¤ó¤Ç½é´ü²½¤·¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +

+ + +

EB_Disc_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Disc_Code ¤Ï¡¢CD-ROM ½ñÀҤηÁ¼°¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢¼¡¤ÎÃͤ¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_DISC_EB
+
+ÅŻҥ֥å¯ (EB, EBG, EBXA, EBXA-C, S-EBXA) ¤Ç¤¢¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ + +
EB_DISC_EPWING
+
+EPWING ¤Ç¤¢¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ + +
EB_DISC_INVALID
+
+ÉÔÀµ¤Ê·Á¼°¥³¡¼¥ÉÃͤòɽ¤·¤Þ¤¹¡£ +
+ +

+¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

EB_Character_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Character_Code ¤Ï¡¢CD-ROM ½ñÀҤǻÈÍѤµ¤ì¤ë +ʸ»ú¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢¼¡¤ÎÃͤ¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_CHARCODE_ISO8859_1
+
+ISO 8859-1 (¥é¥Æ¥óʸ»ú 1) ¤ò»ÈÍѤ·¤Æ¤¤¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ +ÅŻҥ֥寤ΠEBG ¤Ï¤³¤ì¤Ç¤¹¡£ + +
EB_CHARCODE_JISX0208
+
+JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤ò»ÈÍѤ·¤Æ¤¤¤ë¤³¤È¤òɽ¤·¤Þ¤¹¡£ +EBG, EBXA-C °Ê³°¤ÎÅŻҥ֥寡¢¤ª¤è¤Ó EPWING ¤Ï¤¹¤Ù¤Æ¤³¤ì¤Ç¤¹¡£ + +
EB_CHARCODE_JISX0208_GB2312
+
+JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤È GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ¤òÊ»ÍѤ·¤Æ¤¤¤ë +¤³¤È¤òɽ¤·¤Þ¤¹¡£ +ÅŻҥ֥寤ΠEBXA-C ¤Ï¤³¤ì¤Ç¤¹¡£ + +
EB_CHARCODE_INVALID
+
+ÉÔÀµ¤Êʸ»ú¥³¡¼¥ÉÃͤòɽ¤·¤Þ¤¹¡£ +
+ +

+¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

void eb_initialize_book (EB_Book *book)

+ +

+´Ø¿ô eb_initialize_book() ¤Ï¡¢book ¤Î»Ø¤¹ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë¡¢ +ɬ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ºÆÅÙ +eb_initialize_book() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_bind (EB_Book *book, const char *path)

+ +

+´Ø¿ô eb_bind() ¤Ï¡¢book ¤Î»Ø¤¹ EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢¥Ñ¥¹ path ¤Ë¤¢¤ë CD-ROM ½ñÀҤ˷ë¤ÓÉÕ¤±¤Þ¤¹¡£ +¥Ñ¥¹¤Ë¤Ï¡¢½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤«±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò»ØÄꤷ¤Þ¤¹¡£ +½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤È¤Ï¡¢catalog ¤¢¤ë¤¤¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤Î¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤·¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤Î½ñÀҤȤηë¤ÓÉÕ¤­¤ò +²ò¤¤¤Æ¤«¤é¡¢path ¤Ë¤¢¤ë½ñÀҤ˷ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢ÉûËܤÏ̤ÁªÂò¤Î¾õÂ֤ˤʤê¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò½ñÀҤȤηë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂ֤ˤ·¤Æ¡¢¸¶°ø +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ï¡¢EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¼ý¤Þ¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +¤µ¤é¤Ë¡¢path ¤¬ÁêÂХѥ¹¤Î¤È¤­¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤·¤¿·ë²Ì¤¬¤³¤ÎŤµ +¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì¤òĶ¤¨¤ë¤È¡¢EB_ERR_TOO_LONG_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_finalize_book (EB_Book *book)

+ +

+´Ø¿ô eb_finalize_book() ¤Ï¡¢book ¤¬»Ø¤¹ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¤¹¤Ù¤Æ²òÊü¤µ¤ì¡¢ +¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬½ñÀҤȷë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢·ë¤ÓÉÕ¤­¤¬²ò¤«¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_bind() ¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ +¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

int eb_is_bound (EB_Book *book)

+ +

+´Ø¿ô eb_is_bound() ¤Ï¡¢book ¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤« +¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +·ë¤ÓÉÕ¤¤¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_path (EB_Book *book const char *path)

+ +

+´Ø¿ô eb_path() ¤Ï¡¢book ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤ë½ñÀҤΥѥ¹ +¤â¤·¤¯¤Ï±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò¡¢path ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢path ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ë½ñ¤­¹þ¤à¥Ñ¥¹Ì¾¤Î¥Ð¥¤¥È¿ô¤Ï¡¢ºÇĹ¤Ç +EB_MAX_PATH_LENGTH ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ï¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤ò´Þ¤ß¤Þ¤»¤ó¡£ +´Ø¿ô¤¬ÊÖ¤¹¥Ñ¥¹¤ÏÀµµ¬²½¤µ¤ì¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢eb_bind() ¤Ë +ÅϤ·¤¿¤È¤­¤Î¤â¤Î¤ÈƱ¤¸¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢ÁêÂХѥ¹¤À¤Ã¤¿¾ì¹ç¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_disc_type (EB_Book *book, EB_Disc_Code *disc_code)

+ +

+´Ø¿ô eb_disc_type() ¤Ï¡¢book ¤Î¥Ç¥£¥¹¥¯¤Î·Á¼°¤ò +disc_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +½ñ¤­¹þ¤à¥Ç¥£¥¹¥¯¤Î·Á¼°¤ÎÃͤϡ¢EB_Disc_Code ·¿ +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î¤¤¤º¤ì¤«¤ÎÄê¿ôÃͤǤ¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢disc_code ¤Î»Ø¤¹Îΰè¤Ë EB_DISC_INVALID +¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_character_code (EB_Book *book, EB_Character_Code *character_code)

+ +

+´Ø¿ô eb_character_code() ¤Ï¡¢book ¤¬½ñ¤«¤ì¤Æ¤¤¤ë +ʸ»ú¥³¡¼¥É¤ò character_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +½ñ¤­¹þ¤àʸ»ú¥³¡¼¥É¤ÎÃͤϡ¢EB_Character_Code ·¿ +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î¤¤¤º¤ì¤«¤ÎÄê¿ôÃͤǤ¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢character_code ¤Î»Ø¤¹Îΰè¤Ë +EB_CHARCODE_INVALID ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

¥¨¥é¡¼½èÍý

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢¾ï¤ËÀ®¸ù¤¹¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò½ñÀҤ˷ë¤Ó¤Ä¤±¤ë´Ø¿ô +eb_bind() ¤Ë¤Ï¡¢°ú¿ô¤È¤·¤Æ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤òÅϤ·¤Þ¤¹¤¬¡¢ +¸ºß¤·¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤¿¾ì¹ç¡¢½èÍý¤Ï¼ºÇԤ˽ª¤ï¤ê¤Þ¤¹¡£ +

+ +

+°ìÈ̤ˤ³¤¦¤·¤¿»ö¾Ý¤Ï¡¢¥æ¡¼¥¶¤¬¸í¤Ã¤¿¥Ñ¥¹¤ò»ØÄꤷ¤¿¤È¤­¤Ëµ¯¤³¤ê¤Þ¤¹¤¬¡¢ +¥á¥â¥êÉÔ­¤Î¤è¤¦¤Ë¡¢¥æ¡¼¥¶¤Î¥ß¥¹¤¬¸¶°ø¤Ç¤Ï¤Ê¤¤¼ºÇԤⵯ¤³¤ê¤¨¤Þ¤¹¡£ +

+ +

+ËܾϤǤϡ¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤Î½èÍý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¥¨¥é¡¼¥³¡¼¥É¤È¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Î¿¤¯¤Ï¡¢Ìá¤êÃͤȤ·¤Æ EB_Error_Code +·¿¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£ +½èÍý¤¬À®¸ù¤·¤¿¤È¤­¤ËÊÖ¤¹ÃÍ¤Ï EB_SUCCESS ¤Ç¤¹¤¬¡¢¼ºÇÔ¤·¤¿¤È¤­¤Ï +¥¨¥é¡¼¤Î¸¶°ø¤Ë±þ¤¸¤ÆÍÍ¡¹¤ÊÃͤòÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤¿¤á¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¼¡¤Î¤è¤¦¤Ê EB_SUCCESS ¤È¤ÎÈæ³Ó½èÍý +¤¬¤è¤¯¹Ô¤ï¤ì¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code error_code;
+
+error_code = eb_bind(&book, "/mnt/cdrom");
+if (error_code != EB_SUCCESS) {
+    printf("eb_bind() failed\n");
+    return;
+}
+
+
+ +

+¥¨¥é¡¼¥³¡¼¥É¤ÎÃͤϡ¢´Ø¿ô eb_error_message() ¤Ë¤è¤Ã¤Æ +¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ËÊÑ´¹¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢¥¨¥é¡¼¤Î¸¶°ø¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥æ¡¼¥¶¤Ë +¤â¤¦¾¯¤·Ê¬¤«¤ê¤ä¤¹¤¯ÅÁ¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+error_code = eb_bind(&book, "/mnt/cdrom");
+if (error_code != EB_SUCCESS) {
+    printf("eb_bind() failed, %s\n",
+        eb_error_message(error_code));
+    return;
+}
+
+
+ +

+error_code ¤¬ EB_ERR_TOO_LONG_FILENAME ¤Ë +¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢¼¡¤Î¤è¤¦¤Ê¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ +

+ +
+
+too long filename
+
+
+ +

+¤¢¤ë¤¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÆüËܸì¤Î¥á¥Ã¥»¡¼¥¸¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+¥Õ¥¡¥¤¥ë̾¤¬Ä¹¤¹¤®¤Þ¤¹
+
+
+ +

+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤ò̵¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë +¤·¤¿¾ì¹ç¤Ï¡¢¾ï¤Ë±Ñ¸ì¤Î¥á¥Ã¥»¡¼¥¸¤¬ÊÖ¤ê¤Þ¤¹¡£ +Í­¸ú¤Ë¤·¤¿¾ì¹ç¤Ï¡¢¥í¥±¡¼¥ë¤ÎÀßÄê¤Ë¤è¤Ã¤Æ¤É¤Á¤é¤Î¸À¸ì¤Î¥á¥Ã¥»¡¼¥¸¤¬ +Ê֤뤫¤¬·è¤Þ¤ê¤Þ¤¹¡£ +

+ +

+Ëܽñ¤Ç¤Ï¥×¥í¥°¥é¥à¤ò´Ê·é¤Ë¤¹¤ë¤¿¤á¤Ë¡¢¥¨¥é¡¼½èÍý¤ÏºÇÄã¸Â¤·¤«¹Ô¤Ã¤Æ +¤¤¤Þ¤»¤ó¡£ +¤±¤ì¤É¤â°ìÈ̤Υ¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ç¤Ï¡¢´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù +¤·¤¿¤«¤É¤¦¤«¤ò¾ï¤Ë¥Á¥§¥Ã¥¯¤·¡¢½èÍý¤¬¼ºÇÔ¤·¤¿ºÝ¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ +¤·¤Æ¡¢¥æ¡¼¥¶¤Ë¥¨¥é¡¼¤Î¸¶°ø¤òÅÁ¤¨¤ë¤Î¤¬Ë¾¤Þ¤·¤¤¤È¤¤¤¨¤Þ¤¹¡£ +

+ + +

¥¨¥é¡¼¤ËÂФ¹¤ë´²ÍƤµ

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¾õÂ֤˴ؤ¹¤ë¥Ñ¥é¥á¥¿¤ò¤¤¤¯¤Ä¤«»ý¤Ã¤Æ +¤¤¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬ CD-ROM ½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤«¤É¤¦¤«¤â¡¢¤³¤¦¤·¤¿¥Ñ¥é¥á¥¿ +¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹¡£ +

+ +

+°ú¿ô¤Ë EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò¼è¤ë´Ø¿ô¤Ë¤Ï¡¢ +¤¢¤é¤«¤¸¤á¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆÃÄê¤Î¥Ñ¥é¥á¥¿¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤³¤È¤òÁ°Äó¤È +¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢eb_path() ¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤³¤È +¤òÁ°Äó¤È¤·¤Æ¤¤¤Þ¤¹¡£ +¤Ç¤Ï¡¢¤â¤·¤â½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ò eb_path() ¤Ë +ÅϤ·¤¿¤é¤É¤¦¤Ê¤ë¤Ç¤·¤ç¤¦¤«¡£ +

+ +
+
+EB_Book book;
+EB_Error_Code error_code;
+char path[EB_MAX_PATH_LENGTH + 1];
+
+eb_initialize_library();
+eb_initialize(&book);
+error_code = eb_path(&book, path);    /* ¤É¤¦¤Ê¤ë? */
+
+
+ +

+¤³¤Î¾ì¹ç¡¢eb_path() ¤Ï EB_ERR_UNBOUND_BOOK ¤ò +ÊÖ¤·¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢É¬Íפʥѥé¥á¥¿¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ò +¸¡ÃΤ·¤ÆµñÀ䤷¤Þ¤¹¡£ +

+ +

+¤·¤«¤·¤Ê¤¬¤é¡¢»²¾È¥Þ¥Ë¥å¥¢¥ë¤ÇÌÀ¼¨¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤ò½ü¤¤¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Î´Ø¿ô¤Ï¡¢Í¿¤¨¤é¤ì¤¿¥Ý¥¤¥ó¥¿¤¬ NULL ¤«¤É¤¦¤«¤Þ¤Ç¤ÏÄ´¤Ù¤Þ¤»¤ó¡£ +¼¡¤Î¤è¤¦¤Ê¤³¤È¤ò¤¹¤ë¤È¡¢¥×¥í¥°¥é¥à¤ò°Û¾ï½ªÎ»¤µ¤»¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +

+ +
+
+eb_bind(NULL, "/mnt/cdrom");    /* °Û¾ï½ªÎ»! */
+eb_bind(&book, NULL);           /* ¤³¤ì¤â°Û¾ï½ªÎ»! */
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/error.h>
+
+
+ + +

EB_Error_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Error_Code ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¥¨¥é¡¼¥³¡¼¥É¤ò +ɽ¤·¤Þ¤¹¡£ +¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Á´Éô¤Ç EB_NUMBER_OF_ERRORS ¸Ä¤Î +¥Õ¥Ã¥¯¥³¡¼¥É¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +¥¨¥é¡¼¥³¡¼¥É¤Î°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¼¡¤ÎÀá (¡Ö¥¨¥é¡¼¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È) +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

¥¨¥é¡¼¥³¡¼¥É¤Î°ìÍ÷

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥¨¥é¡¼¥³¡¼¥É¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/error.h>
+
+
+ + +

Äê¿ô EB_SUCCESS

+ +

+À®¸ù¡£ +¥¨¥é¡¼¤Ïµ¯¤­¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_MEMORY_EXHAUSTED

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬ malloc() ¤ò¸Æ¤Ó½Ð¤·¤¿¤¬¡¢NULL +¤¬Ê֤äƤ­¤¿¡£ +

+ + +

Äê¿ô EB_ERR_TOO_LONG_FILE_NAME

+ +

+Í¿¤¨¤é¤ì¤¿½ñÀҤΥѥ¹Ì¾¤¬Ä¹¤¹¤®¤ë¡£ +

+ + +

Äê¿ô EB_ERR_BAD_FILE_NAME

+ +

+½ñÀҤΥѥ¹Ì¾¤¬ÉÔÀµ¤Ç¤¢¤ë¡£ +

+ + +

Äê¿ô EB_ERR_BAD_DIR_NAME

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤¬ÉÔÀµ¤Ç¤¢¤ë¡£ +(EB ¥é¥¤¥Ö¥é¥ê¤ÎÆâÉô½èÍýÍѤʤΤǡ¢ +¤³¤Î¥¨¥é¡¼¥³¡¼¥É¤¬¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ËÊ֤뤳¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£) +

+ + +

Äê¿ô EB_ERR_TOO_LONG_WORD

+ +

+Í¿¤¨¤é¤ì¤¿¸¡º÷¸ì¤ÏŤ¹¤®¤ë¡£ +

+ + +

Äê¿ô EB_ERR_BAD_WORD

+ +

+Í¿¤¨¤é¤ì¤¿¸¡º÷¸ì¤ËÉÔÀµ¤Êʸ»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£ +

+ + +

Äê¿ô EB_ERR_EMPTY_WORD

+ +

+Í¿¤¨¤é¤ì¤¿¸¡º÷¸ì¤Ï¶õ¤Ç¤¢¤ë¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_GETCWD

+ +

+getcwd() ¤â¤·¤¯¤Ï getwd() ¤¬¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_OPEN_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ë¤òÆɤळ¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥á¥¤¥ó¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_READ_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥХ¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤à¤³¤È¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥á¥¤¥ó¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_FAIL_SEEK_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥХ¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¥·¡¼¥¯¤Ë¼ºÇÔ¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_CAT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢´üÂԤȤϰۤʤë¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_CATAPP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_TEXT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀÒ¤ÎËÜʸ¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_FONT

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤγ°»ú¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_APP

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢appendix ¤Î¥á¥¤¥ó¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNEXP_BINARY

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤¬¡¢½ñÀҤΥХ¤¥Ê¥ê¥Ç¡¼¥¿¥Õ¥¡¥¤¥ëÆâ¤Ç¡¢ÁÛÄê³°¤Î¥Ç¡¼¥¿Îó¤ò +¸«¤Ä¤±¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNBOUND_BOOK

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿ EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤¿ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ï +½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNBOUND_APP

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿ EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿ +¥ª¥Ö¥¸¥§¥¯¥È¤Ï appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUB

+ +

+½ñÀÒ¤ÏÉûËܤò°ì¤Ä¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_APPSUB

+ +

+appendix ¤ÏÉûËܤò°ì¤Ä¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_FONT

+ +

+ÁªÂòÃæ¤ÎÉûËܤϡ¢³°»ú¤ò°ì¼ïÎà¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_TEXT

+ +

+ÁªÂòÃæ¤ÎÉûËܤϡ¢ËÜʸ¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_SUB

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤È¤·¤Æ¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤ÏÁªÂò¤µ¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_APPSUB

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë EB_Appendix +¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤ÏÁªÂò¤µ¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_FONT

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢³°»ú¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë EB_Book +¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤ÏÁªÂò¤µ¤ì¤Æ +¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_CUR_BINARY

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿´Ø¿ô¤Ï¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ßÍ×µá¤ò¥»¥Ã¥È¤·¤Æ¤¤¤ë +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï +¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_SUB

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÉûËÜ¥³¡¼¥É¤¬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë½ñÀҤϡ¢¤½¤Î +ÉûËÜ¥³¡¼¥É¤Ë°ìÃפ¹¤ëÉûËܤò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_APPSUB

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÉûËÜ¥³¡¼¥É¤¬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë appendix ¤Ï¡¢ +¤½¤ÎÉûËÜ¥³¡¼¥É¤Ë°ìÃפ¹¤ëÉûËܤò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_FONT

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤È³°»ú¤Î½Ä¤Î¥µ¥¤¥º¤¬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤Ó¤Ä¤±¤é¤ì¤Æ¤¤¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢ +¤½¤Î¥µ¥¤¥º¤Î³°»ú¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_CHAR_BMP

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Èʸ»úÈֹ椬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢ +¤½¤ÎÈÖ¹æ¤Î³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_CHAR_TEXT

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Èʸ»úÈֹ椬´Ø¿ô¤ËÍ¿¤¨¤é¤ì¤¿¤¬¡¢ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë appendix ¤Ç +ÁªÂòÃæ¤ÎÉûËܤϡ¢¤½¤ÎÈÖ¹æ¤Î³°»ú¤ÎÂåÂØʸ»úÎó¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_SEARCH

+ +

+ÁªÂòÃæ¤ÎÉûËܤϡ¢»ØÄꤵ¤ì¤¿¸¡º÷¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢¸¡º÷¤Ï¹Ô¤¨¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_HOOK

+ +

+ÉÔÀµ¤Ê¥Õ¥Ã¥¯¥³¡¼¥É¤¬´Ø¿ô¤ËÅϤµ¤ì¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_BINARY

+ +

+»ØÄꤵ¤ì¤¿°ÌÃ֤ˡ¢»ØÄꤵ¤ì¤¿·Á¼°¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï¸ºß¤·¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_DIFF_CONTENT

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤òÍ׵ᤵ¤ì¤¿¤¬¡¢»ØÄê +¤µ¤ì¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎब¡¢Á°²ó¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¤È¤­¤È°ìÃפ·¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_PREV_SEARCH

+ +

+eb_hit_list() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¤¬¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à +¤«¤éÁ°¤â¤Ã¤Æ¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤¬¤Ê¤µ¤ì¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_MULTI_ID

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÊ£¹ç¸¡º÷¥³¡¼¥É¤¬´Ø¿ô¤ËÅϤµ¤ì¤¿¤¬¡¢ +·ë¤ÓÉÕ¤±¤é¤ì¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢¤½¤Î¥³¡¼¥É¤Ë°ìÃפ¹¤ëÊ£¹ç¸¡º÷¤ò»ý¤Ã¤Æ +¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_ENTRY_ID

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÊ£¹ç¸¡º÷¥¨¥ó¥È¥ê¥³¡¼¥É¤¬´Ø¿ô¤Ë +ÅϤµ¤ì¤¿¤¬¡¢·ë¤ÓÉÕ¤±¤é¤ì¤¿½ñÀÒ¤ÇÁªÂòÃæ¤ÎÉûËܤϡ¢¤½¤Î¥¨¥ó¥È¥ê¥³¡¼¥É¤Ë +°ìÃפ¹¤ëÊ£¹ç¸¡º÷¥¨¥ó¥È¥ê¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_TOO_MANY_WORDS

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¾ò·ï¸¡º÷¤â¤·¤¯¤ÏÊ£¹ç¸¡º÷¤Î¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È +¤µ¤ì¤¿¤¬¡¢¸¡º÷¸ì¤Î¸Ä¿ô¤¬Â¿¤¹¤®¤ë¡£ +

+ + +

Äê¿ô EB_ERR_NO_WORD

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¾ò·ï¸¡º÷¤â¤·¤¯¤ÏÊ£¹ç¸¡º÷¤Î¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È +¤µ¤ì¤¿¤¬¡¢¸¡º÷¸ì¤¬¤¹¤Ù¤Æ¶õ¤Ç¤¢¤ë¡£ +

+ + +

Äê¿ô EB_ERR_NO_CANDIDATES

+ +

+eb_multi_entry_candidates() ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¤¬¡¢ +»ØÄꤵ¤ì¤¿Ê£¹ç¸¡º÷¥¨¥ó¥È¥ê¤Ï¡¢¸¡º÷¸ì¤Î¸õÊä°ìÍ÷¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_END_OF_CONTENT

+ +

+eb_forward_text() ¤¢¤ë¤¤¤Ï eb_backward_text() +¤ÇËÜʸ¤ÎƬ½Ð¤·¤ò¹Ô¤ª¤¦¤È¤·¤¿¤¬¡¢¤¹¤Ç¤ËËÜʸ¤ÎËöÈø¤Ê¤¤¤·ÀèƬ¤Ë㤷¤Æ¤¤¤Æ¡¢ +¤½¤ì°Ê¾åÀè¤Ë¿Ê¤à¤³¤È¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_PREV_SEEK

+ +

+¤¢¤é¤«¤¸¤á eb_seek_text() ¤Ç¥·¡¼¥¯¤ò¹Ô¤Ã¤Æ¤¤¤Ê¤¤¾õÂ֤ǡ¢ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤äƬ½Ð¤·¤ò¹Ô¤ª¤¦¤È¤·¤¿¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_UNSUPPORTED

+ +

+¤³¤Î EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢±ó³Ö¥Û¥¹¥È¤Ø¤Î¥¢¥¯¥»¥¹¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_FAIL_CONNECT

+ +

+±ó³Ö¥Û¥¹¥È¤Ø¤Î¥¢¥¯¥»¥¹¤ò»î¤ß¤¿¤¬¡¢¥µ¡¼¥Ð (EBNETD) ¤ËÀܳ¤Ç¤­¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_SERVER_BUSY

+ +

+±ó³Ö¥Û¥¹¥È¤Ø¤ÎÀܳ¤ò¹Ô¤Ã¤¿¤¬¡¢½ñÀҤ˥¢¥¯¥»¥¹¤·¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È¤Î¿ô¤¬ +¤¹¤Ç¤Ë¾å¸Â¤Ë㤷¤Æ¤¤¤ë¤¿¤á¡¢¤½¤Î½ñÀÒ¤òÍøÍѤǤ­¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_EBNET_NO_PERMISSION

+ +

+±ó³Ö¥Û¥¹¥È¤Ø¤ÎÀܳ¤ò¹Ô¤Ã¤¿¤¬¡¢¤½¤Î½ñÀҤؤÎÍøÍѸ¢¸Â¤¬¤Ê¤¤¤¿¤á¡¢¥µ¡¼¥Ð +¤«¤é¥¢¥¯¥»¥¹¤òµñÈݤµ¤ì¤¿¡£ +

+ + +

Äê¿ô EB_ERR_UNBOUND_BOOKLIST

+ +

+¸Æ¤Ó½Ð¤µ¤ì¤¿ EB ¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤Ï¡¢±ó³Ö¥Û¥¹¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò°ú¿ô¤Ë¤È¤ë¤¬¡¢Í¿¤¨¤é¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È +¤Ï±ó³Ö¥Û¥¹¥È¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ +

+ + +

Äê¿ô EB_ERR_NO_SUCH_BOOK

+ +

+EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤È½ñÀÒ¤ÎÍ×ÁÇÈÖ¹æ¤ò´Ø¿ô¤ËÅϤµ¤ì¤¿¤¬¡¢ +EB_BookList ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿±ó³Ö¥Û¥¹¥È¾å¤Ë¤Ï¡¢¤½¤ÎÍ×ÁÇÈÖ¹æ¤Ë +³ºÅö¤¹¤ë½ñÀҤϸºß¤·¤Ê¤¤¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/error.h>
+
+
+ + +

const char *eb_error_string (EB_Error_Code error_code)

+ +

+´Ø¿ô eb_error_string() ¤Ï¡¢¥¨¥é¡¼¥³¡¼¥É error_code +¤òʸ»úÎó¤ËÊÑ´¹¤·¤¿¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£ +ʸ»úÎó¤Îʸ»ú¥³¡¼¥É¤Ï¡¢ASCII ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¥¨¥é¡¼¥³¡¼¥ÉÃÍ EB_SUCCESS ¤òÅϤ¹¤Èʸ»úÎó +"EB_SUCCESS" ¤òÊÖ¤·¤Þ¤¹¡£ +̤ÃΤΥ¨¥é¡¼¥³¡¼¥É¤òÅϤ·¤¿¤È¤­¤Ï¡¢"EB_ERR_UNKNOWN" ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

const char *eb_error_message (EB_Error_Code error_code)

+ +

+´Ø¿ô eb_error_message() ¤Ï¡¢¥¨¥é¡¼¥³¡¼¥É error_code +¤ËÂбþ¤·¤¿¥á¥Ã¥»¡¼¥¸¤òʸ»úÎó¤Ë¤·¤ÆÊÖ¤·¤Þ¤¹¡£ +´Ø¿ô¤ÎÊÖ¤¹¥á¥Ã¥»¡¼¥¸¤Ï¡¢±Ñ¸ì¤«ÆüËܸì¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¹ñºÝ²½µ¡Ç½¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¾ï¤Ë +±Ñ¸ì¤Î¥á¥Ã¥»¡¼¥¸¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¤Î¥á¥Ã¥»¡¼¥¸¤Îʸ»ú¥³¡¼¥É¤Ï¡¢ASCII ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥á¥Ã¥»¡¼¥¸¤Î¹ñºÝ²½µ¡Ç½ (NLS) ¤òÍ­¸ú¤Ë¤·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤ò¥³¥ó¥Ñ¥¤¥ë +¤·¤¿¾ì¹ç¤Ï¡¢¥í¥±¡¼¥ë¤ÎÀßÄê¤Ë±þ¤¸¤Æ¤É¤Á¤é¤Î¸À¸ì¤Î¥á¥Ã¥»¡¼¥¸¤òÊÖ¤¹¤Î¤« +¤¬·è¤Þ¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢GNU gettext ¥Ð¡¼¥¸¥ç¥ó 0.36 °Ê¹ß¤Ç¤Ï iconv() ¤ÈÏ¢·È¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢ +¥á¥Ã¥»¡¼¥¸¤Îʸ»ú¥³¡¼¥É¤â¥í¥±¡¼¥ë¤Ë±þ¤¸¤ÆÊѲ½¤·¤Þ¤¹¡£ +gettext ¤¬ iconv() ¤È¤ÎÏ¢·È¤ò¹Ô¤ï¤Ê¤±¤ì¤Ð¡¢±Ñ¸ì¤Î¥á¥Ã¥»¡¼¥¸¤Ï ASCII¡¢ +ÆüËܸì¤Î¥á¥Ã¥»¡¼¥¸¤ÏÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¡¢gettext ¤Î¥Æ¥­¥¹¥È¥É¥á¥¤¥ó¤ÎÀßÄê¤ÏÊѲ½ +¤·¤Þ¤»¤ó¡£ +

+ +

+̤ÃΤΥ¨¥é¡¼¥³¡¼¥É¤òÅϤ·¤¿¤È¤­¤ËÊÖ¤¹¥á¥Ã¥»¡¼¥¸¤Ï¡¢±Ñ¸ì¤Ç¤Ï +"unknown error"¡¢ÆüËܸì¤Ç¤Ï "̤ÃΤΥ¨¥é¡¼¤Ç¤¹" +¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ + +

ÉûËÜ

+ +

+»æ¤Ë°õºþ¤µ¤ì¤¿ËܤǤÏÊÌ¡¹¤Î½ñÀҤˤʤäƤ¤¤ë¤â¤Î¤Ç¤â¡¢ÅŻҥ֥寤ä EPWING +¤Ç¤Ï 1 Ëç¤Î CD-ROM ¤Ë¤Þ¤È¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢¤¢¤ë CD-ROM ½ñÀҤϡ¢¹ñ¸ì¼­½ñ¡¢±Ñ¡¹¼­Åµ¡¢É´²Ê»öŵ¤È¤¤¤¦ 3 ¤Ä +¤Î (°õºþ¤µ¤ì¤¿ËܤǸÀ¤¦¤È¤³¤í¤Î) ¡Ö½ñÀҡפò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤â¤¢¤êÆÀ¤Þ¤¹¡£ +ʶ¤é¤ï¤·¤µ¤òÈò¤±¤ë¤¿¤á¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¤³¤³¤Ç¸À¤¦¡Ö½ñÀҡפΤ³¤È¤ò +ÉûËÜ (subbook) ¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢¡¡ÉûËÜ£°¡§¡¡¡Î¹ñ¸ì¼­Åµ¡Ï¡¡¨¢
+¨¢¡¡ÉûËÜ£±¡§¡¡¡Î±Ñ¡¹¼­Åµ¡Ï¡¡¨¢
+¨¢¡¡ÉûËÜ£²¡§¡¡¡ÎÉ´²Ê»öŵ¡Ï¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+CD-ROM ½ñÀҤǤϡ¢¤½¤ì¤¾¤ì¤ÎÉûËܤϤ½¤ì¼«ÂΤ¬ÆÈΩ¤·¤¿½ñÀҤˤʤäƤ¤¤Þ¤¹¡£ +¤Þ¤¿¡¢ÉûËܤΥǡ¼¥¿¤â¡¢ÉûËÜËè¤ËÊÌ¡¹¤Î¥Õ¥¡¥¤¥ë¤Ë¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤â¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¼çÍפʽèÍý +¤Ç¤¢¤ëñ¸ì¤Î¸¡º÷¤äËÜʸ¥Ç¡¼¥¿¤Î¼èÆÀ¤Ê¤É¤Ï¡¢¤¹¤Ù¤ÆÉûËÜñ°Ì¤Ç¹Ô¤¦¤è¤¦¤Ë +¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+ËܾϤǤϡ¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤ÎÉûËܤΰ·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

ÉûËÜ¥³¡¼¥É

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¤½¤ì¤¾¤ì¤ÎÉûËܤËÂФ·¤Æ ÉûËÜ¥³¡¼¥É (subbook code) +¤ò³ä¤êÅö¤Æ¤Þ¤¹¡£ +¤³¤Î¥³¡¼¥É¤Ï EB ¥é¥¤¥Ö¥é¥ê¤¬ÉûËܤò¼±Ê̤¹¤ë¤¿¤á¤ËÍѤ¤¤Þ¤¹¤Î¤Ç¡¢¸Ä¡¹¤Î +ÉûËÜ¥³¡¼¥É¤Ï¡¢½ñÀÒÆâ¤ÇƱ¤¸¤â¤Î¤¬¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Î¥½¡¼¥¹¥³¡¼¥É¤Ï¡¢eb_subbook_list() ¤È¤¤¤¦´Ø¿ô¤Î +»ÈÍÑÎã¤Ç¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤ÎÉûËܤÎÉûËÜ¥³¡¼¥É¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Subbook_Code sub_codes[EB_MAX_SUBBOOKS];
+int sub_count;
+
+if (eb_subbook_list(&book, sub_codes, &sub_count)
+    != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+eb_subbook_list() ¤¬À®¸ù¤¹¤ë¤È¡¢½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤ÎÉûËÜ¥³¡¼¥É¤¬ +ÇÛÎó sub_codes[] ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +ÇÛÎó¤ÎÀèƬ¤ÎÉûËÜ¥³¡¼¥É¤Ï sub_codes[0] ¤Èɽ¤µ¤ì¡¢¼¡¤Î +¥³¡¼¥É¤Ï sub_codes[1]¡¢¤È¤¤¤¦¶ñ¹ç¤Ë¤Ê¤ê¤Þ¤¹¡£ +ÉûËܤθĿô¤Ï¡¢sub_count ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +

+ +

+¸Ä¡¹¤ÎÉûËܤˤϡ¢É¬¤ºÂê̾¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +ÀèƬ¤ÎÉûËÜ (sub_codes[0]) ¤ÎÂê̾¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ +ÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+char title[EB_MAX_TITLE_LENGTH + 1];
+
+if (eb_subbook_title2(&book, sub_codes[0], title)
+    != EB_SUCCESS) {
+    printf("eb_subbook_title2() failed\n");
+    return;
+}
+
+
+ +

+eb_subbook_title2() ¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù¤¹¤ë¤È¡¢ +title ¤ËÂê̾¤òɽ¤¹Ê¸»úÎ󤬳ÊǼ¤µ¤ì¤Þ¤¹¡£ +

+ +

+¼Ø­¤Ç¤¹¤¬¡¢(ÉûËܤǤϤʤ¯) CD-ROM ¤ÎÂê̾¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤Ê¤¼¤Ê¤é¡¢Âê̾¤ò¼¨¤¹¥Ç¡¼¥¿¤¬ CD-ROM ¤ÎÃæ¤Ë¤Ï²¿½è¤Ë¤â¤Ê¤¤¤«¤é¤Ç¤¹¡£ +

+ + +

ÁªÂòÃæ¤ÎÉûËÜ

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢·ë¤Ó¤Ä¤±¤é¤ì¤¿ CD-ROM ½ñÀÒ¤ÎÃæ¤Î +Ǥ°Õ¤ÎÉûËܤ«¤é°ì¤ÄÁª¤ó¤Ç¡¢ÁªÂòÃæ¤ÎÉûËÜ (current subbook) +¤È¤·¤Æ»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ê£¿ô¤ÎÉûËܤò¡¢Æ±»þ¤ËÁªÂò¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +ñ¸ì¤Î¸¡º÷¤ä¡¢ËÜʸ¥Ç¡¼¥¿¤Î¼èÆÀ¤Ê¤É¡¢¤Û¤È¤ó¤É¤ÎÁàºî¤Ï¡¢ÁªÂòÃæ¤ÎÉûËÜ¤Ë +ÂФ·¤Æ¤À¤±¹Ô¤¨¤Þ¤¹¡£ +

+ +

+eb_bind() ¤Ç EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò½ñÀÒ¤Ë +·ë¤ÓÉÕ¤±¤¿Ä¾¸å¤Ï¡¢¤¤¤º¤ì¤ÎÉûËܤâÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂ֤ˤʤäƤ¤¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Â£ï£ï£ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¥ª¥Ö¥¸¥§¥¯¥È
+¨£¨¡¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢ÁªÂòÃæ¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£°¡§¡¡¡Î¹ñ¸ì¼­Åµ¡Ï¡¡¨¢
+¨¢¤ÎÉûËÜ¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£±¡§¡¡¡Î±Ñ¡¹¼­Åµ¡Ï¡¡¨¢
+¨¢¡ã¤Ê¤·¡ä¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£²¡§¡¡¡ÎÉ´²Ê»öŵ¡Ï¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+ÉûËܤÎÁªÂò¤ò¹Ô¤¦¤Ë¤Ï¡¢´Ø¿ô eb_set_subbook() ¤ò»ÈÍѤ·¤Þ¤¹¡£ +eb_set_subbook() ¤Ï¡¢°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤¿ÉûËÜ¥³¡¼¥É¤Ë +¤·¤¿¤¬¤Ã¤ÆÉûËܤòÁªÂò¤·¤Þ¤¹¡£ +°Ê²¼¤Ï¡¢ÀèƬ¤ÎÉûËÜ (sub_codes[0]) ¤òÁªÂò¤¹¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Subbook_Code sub_codes[EB_MAX_SUBBOOKS];
+int sub_count;
+
+if (eb_subbook_list(&book, sub_codes, &sub_count)
+    != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+if (eb_set_subbook(&book, sub_codes[0]) != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+À®¸ù¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤ËÉûËܤ¬ÁªÂò¤µ¤ì¤¿¾õÂ֤ˤʤê¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Â£ï£ï£ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Ã£Ä¡Ý£Ò£Ï£Í½ñÀÒ
+¥ª¥Ö¥¸¥§¥¯¥È
+¨£¨¡¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢ÁªÂòÃæ¡¡¨¢¡¡¡¡¨®¨¬¨¬¨¬¨¬¨»¨¬ÉûËÜ£°¡§¡¡¡Î¹ñ¸ì¼­Åµ¡Ï¡¡¨¢
+¨¢¤ÎÉûËÜ¡¡¨¢¡¡¡¡¨­¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£±¡§¡¡¡Î±Ñ¡¹¼­Åµ¡Ï¡¡¨¢
+¨¢¡¡¡ö¨¬¨¬¨»¨¬¨¬¨°¡¡¡¡¡¡¡¡¨¢¡¡ÉûËÜ£²¡§¡¡¡ÎÉ´²Ê»öŵ¡Ï¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ + + + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Subbook_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Subbook_Code ¤ÏÉûËÜ¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +°ìºý¤Î½ñÀÒ¤ÎÃæ¤ÎÉûËܤϡ¢¤½¤ì¤¾¤ì°ì°Õ¤ÎÉûËÜ¥³¡¼¥É¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢ÉÔÀµ¤ÊÉûËÜ¥³¡¼¥ÉÃͤòɽ¤¹ EB_SUBBOOK_INVALID ¤È¤¤¤¦ +ÆÃÊ̤ÊÉûËÜ¥³¡¼¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +ÍøÍѲÄǽ¤ÊÉûËܤËÂФ·¤Æ¡¢¤³¤ÎÉûËÜ¥³¡¼¥É¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Error_Code eb_load_all_subbooks (EB_Book *book)

+ +

+´Ø¿ô eb_load_all_subbooks() ¤Ï¡¢book Æâ¤Î¤¹¤Ù¤Æ¤Î +ÉûËܤò½é´ü²½¤·¤Þ¤¹¡£ +Ä̾ÉûËܤνé´ü²½¤Ï¡¢¤½¤ÎÉûËܤ¬½é¤á¤ÆÁªÂò¤µ¤ì¤¿¤È¤­¤Ë¼«Æ°Åª¤Ë¹Ô¤ï¤ì¤Þ¤¹¤¬¡¢ +¤³¤Î´Ø¿ô¤Ï½é´ü²½¤òÁ°Åݤ·¤Ç¹Ô¤¤¤Þ¤¹¡£ +½é´ü²½¤ÎÂоݤȤʤë¤Î¤Ï¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿»þÅÀ¤Ç¤Þ¤À½é´ü²½¤·¤Æ¤¤¤Ê¤¤ +¤¹¤Ù¤Æ¤ÎÉûËܤǤ¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¥¹¥¿¥ó¥É¥¢¥í¥ó¤ÇÆ°ºî¤¹¤ë¥µ¡¼¥Ð¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ê¤É¤ÇÍ­¸ú¤Ç¤¹¡£ +¥¯¥é¥¤¥¢¥ó¥È¤«¤é¤ÎÀܳ¤ò¼õ¤±¤ëÁ°¤Ë¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ÉûËܤνé´ü²½¤Î +¤¿¤á¤Ë¥¯¥é¥¤¥¢¥ó¥È¤òÂÔ¤¿¤»¤Ê¤¯¤ÆºÑ¤ß¤Þ¤¹¡£ +

+ +

+½é´ü²½¤ÎÂоݤȤʤ俤¹¤Ù¤Æ¤ÎÉûËܤνé´ü²½¤ËÀ®¸ù¤¹¤ì¤Ð¡¢´Ø¿ô¤Ï +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +°ìºý¤Ç¤â½é´ü²½¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢»Ä¤ê¤ÎÉûËܤνé´ü²½¤òÄü¤á¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢book ¤Ï¡¢ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾õÂ֤ˤʤê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_list (EB_Book *book, EB_Subbook_Code *subbook_list, int *subbook_count)

+ +

+´Ø¿ô eb_subbook_list() ¤Ï¡¢book Æâ¤Î¤¹¤Ù¤ÆÉûËܤΠ+ÉûËÜ¥³¡¼¥É¤ò EB_Subbook_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢ +subbook_list ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_SUBBOOKS ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢½ñÀÒ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤθĿô¤ò subbook_count ¤Î»Ø¤¹ +Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook (EB_Book *book, EB_Subbook_Code *subbook_code)

+ +

+´Ø¿ô eb_subbook() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËܤΠ+ÉûËÜ¥³¡¼¥É¤ò subbook_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_code ¤Î»Ø¤¹Îΰè¤Ë +EB_SUBBOOK_INVALID ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_title (EB_Book *book, char *title)

+ +

+´Ø¿ô eb_subbook_title() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËܤΠ+Âê̾¤ò title ¤Î»Ø¤¹Îΰè¤Ëʸ»úÎó¤È¤·¤Æ½ñ¤­¹þ¤ß¤Þ¤¹¡£ +Âê̾¤Îʸ»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç EB_MAX_TITLE_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +¤³¤ÎŤµ¤Ï¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤ò´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢Âê̾¤òɽ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ê¤éÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢title ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_title2 (EB_Book *book, EB_Subbook_Code subbook_code, char *title)

+ +

+eb_subbook_title() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢ +°ú¿ô subbook_code ¤Ç»ØÄꤵ¤ì¤¿ÉûËܤÎÂê̾¤ò½ñ¤­¹þ¤àÅÀ¤¬ +°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢¤¢¤é¤«¤¸¤á½ñÀÒ +¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_directory (EB_Book *book, char *directory)

+ +

+´Ø¿ô eb_subbook_directory() ¤Ï¡¢book Æâ¤Ç¸½ºß +ÁªÂòÃæ¤ÎÉûËܤΥǡ¼¥¿¥Õ¥¡¥¤¥ë¤ò¼ý¤á¤¿¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¡¢directory +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤Îʸ»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç +EB_MAX_DIRECTORY_NAME_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï ASCII ¤Î¿ô»ú¡¢±Ñ¾®Ê¸»ú¡¢¥¢¥ó¥À¡¼¥¹¥³¥¢¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢directory ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤Ë +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_subbook_directory2 (EB_Book *book, EB_Subbook_Code subbook_code, char *directory)

+ +

+eb_subbook_directory() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢ +°ú¿ô subbook_code ¤Ç»ØÄꤵ¤ì¤¿ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò½ñ¤­¹þ¤àÅÀ +¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢¤¢¤é¤«¤¸¤á +½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_subbook (EB_Book *book, EB_Subbook_Code code)

+ +

+´Ø¿ô eb_set_subbook() ¤Ï¡¢book ¤ÎÉûËÜ +code ¤òÁªÂò¤·¤Þ¤¹¡£ +¤¹¤Ç¤ËÉûËܤòÁªÂò¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¤«¤éÉûËÜ +subbook_code ¤òÁªÂò¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢³°»ú¤Ï̤ÁªÂò¤Î¾õÂ֤Ȥʤꡢ¸¡º÷¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¡¢ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë¤Ä¤¤¤Æ¤Î¾õÂÖµ­Ï¿¤Ï¡¢¤¹¤Ù¤Æ¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢ÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_unset_subbook (EB_Book *book)

+ +

+´Ø¿ô eb_unset_subbook() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ë +ÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Þ¤¹¡£ +book ¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¤«¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +²¿¤â¤·¤Þ¤»¤ó¡£ +

+ + +

¸¡º÷

+ +

+CD-ROM ½ñÀҤˤª¤¤¤Æ¡¢¸¡º÷¤ÏÈó¾ï¤Ë½ÅÍפʵ¡Ç½¤Ç¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѤǤ­¤Þ¤¹¡£ +

+ +
    +
  • Á°Êý°ìÃ׸¡º÷ (word search) +
  • ¸åÊý°ìÃ׸¡º÷ (end-word search) +
  • ´°Á´°ìÃ׸¡º÷ (exact-word search) +
  • ¾ò·ï¸¡º÷ (keyword search) +
  • ¥¯¥í¥¹¸¡º÷ (cross search) +
  • Ê£¹ç¸¡º÷ (multi search) +
+ +

+¤¿¤À¤·¡¢¤¹¤Ù¤Æ¤Î CD-ROM ½ñÀÒ¡¢¤¹¤Ù¤Æ¤ÎÉûËܤǡ¢¤³¤³¤Ëµó¤²¤¿¤¹¤Ù¤Æ¤Î +¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤Ê¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +ÉûËܤÎÃæ¤Ë¤Ï¡¢¤¤¤º¤ì¤Î¸¡º÷¥á¥½¥Ã¥É¤âÄ󶡤·¤Ê¤¤¤â¤Î¤â¸ºß¤·¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¸¡º÷¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¤Î¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤËÂФ·¤Æ +¤À¤±¤Ç¤¹¡£ +

+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢¤½¤ì¤¾¤ì¤Î¸¡º÷¥á¥½¥Ã¥É¤Î´Êñ¤ÊÀâÌÀ¤È¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Î +°·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷

+ +

+Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷¤Ï¡¢¤¤¤º¤ì¤â°ì¸Ä¤ÎÆþÎϸì¤Ë°ìÃפ¹¤ë +¥¨¥ó¥È¥ê¤òõ¤·½Ð¤¹¸¡º÷¥á¥½¥Ã¥É¤Ç¤¹¡£ +

+ +

+Á°Êý°ìÃ׸¡º÷¤Ï¡¢ÆþÎϸì¤ÈÀèƬÉôʬ¤¬°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¡Ö¹¾¸Í¡×¤È¤¤¤¦¸ì¤Ï¡¢¡Ö¹¾¸Í¡×¡Ö¹¾¸Í»þÂå¡×¡Ö¹¾¸Í¤Ã»Ò¡×¤È¤¤¤Ã¤¿ +¥¨¥ó¥È¥ê¤Ë°ìÃפ·¤Þ¤¹¡£ +

+ +

+¸åÊý°ìÃ׸¡º÷¤Ï¡¢ÆþÎϸì¤ÈËöÈø¤¬°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢`bye' ¤È¤¤¤¦¸ì¤Ï¡¢`bye'¡¢`good bye'¡¢`bye bye' ¤È¤¤¤Ã¤¿ +¥¨¥ó¥È¥ê¤Ë°ìÃפ·¤Þ¤¹¡£ +

+ +

+´°Á´°ìÃ׸¡º÷¤Ï¡¢°ì¸Ä¤Î¸¡º÷¸ì¤È´°Á´¤Ë°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤À¤±¤ò¸¡º÷¤·¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢Á°Êý°ìÃ׸¡º÷¤Î¥×¥í¥°¥é¥à¤ÎÎã¤Ç¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤÎÃ椫¤é¡¢ÀèƬ¤¬ librar ¤Ç»Ï¤Þ¤ë¥¨¥ó¥È¥ê¤òõ¤·¤Æ +¤¤¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+#define MAX_HITS 50
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_search_word(&book, "librar") != EB_SUCCESS) {
+    printf("eb_search_word() failed\n");
+    return;
+}
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    printf("eb_hit_list() failed\n");
+    return;
+}
+
+
+ +

+eb_search_word() ¤ÏÁ°Êý°ìÃ׸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë´Ø¿ô¤Ç¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢librar ¤È¤¤¤¦¸¡º÷ʸ»úÎó¤òÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤Î´Ø¿ô¤Ï°ìÃפ·¤¿¥¨¥ó¥È¥ê¤òÊÖ¤¹¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +

+ +

+°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï¡¢Â³¤¯ eb_hit_list() ´Ø¿ô¤ò +¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë¹Ô¤ï¤ì¤Þ¤¹¡£ +eb_hit_list() ¤Ï°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î°ìÍ÷¤òÇÛÎó +hits[] ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¡¢¸«¤Ä¤«¤Ã¤¿°ìÃ×¥¨¥ó¥È¥ê¤Î¸Ä¿ô +¤ò &hit_count ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢eb_hit_list() ¤ÏºÇÂç¤Ç MAX_HITS +(= 50) ¸Ä ¤Î¥¨¥ó¥È¥ê¤òõ¤·¤Þ¤¹¡£ +(¤Ä¤Þ¤ê¡¢50 ¸Ä¸«¤Ä¤«¤Ã¤¿¤é¸¡º÷¤ò»ß¤á¤Þ¤¹¡£) +

+ +

+¤â¤·¡¢ÁªÂòÃæ¤ÎÉûËܤ¬±Ñ¡¹¼­Åµ¤À¤È¤¹¤ë¤È¡¢¾¯¤Ê¤¯¤È¤â library +¤È librarian ¤È¤¤¤¦ 2 ¤Ä¤Î¥¨¥ó¥È¥ê¤Ë´Ø¤¹¤ë¾ðÊó¤¬ÆÀ¤é¤ì¤ë +¤Ç¤·¤ç¤¦¡£ +¤³¤Î¤È¤­¡¢ÇÛÎó hits[] ¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +(¤¿¤À¤·¡¢library ¤È librarian ¥¨¥ó¥È¥ê¤Î +½ç½ø¤Ï¡¢²¼¤Î³¨¤È¤Ï°Û¤Ê¤Ã¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£) +

+ +
+
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¨¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¨¨¡
+¨¢¡¡£ì£é£â£ò£á£ò£é£á£î¡¡¨¢¡¡¡¡£ì£é£â£ò£á£ò£ù¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨ª¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨ª¨¡
+¡¡¡¡¡¡£è£é£ô£ó¡Î£°¡Ï¡¡¡¡¡¡¡¡¡¡£è£é£ô£ó¡Î£±¡Ï
+
+
+ +

+hits[] ¤ÎÃæ¿È¤Ë¤Ä¤¤¤Æ¤Ï¡¢ËܾϤθå¤í¤ÎÀá¤Ç¤â¤¦¾¯¤·¾Ü¤·¤¯ +ÀâÌÀ¤·¤Þ¤¹¡£ +

+ +

+¤³¤³¤Þ¤Ç¤ÏÁ°Êý°ìÃ׸¡º÷¤òÎã¤Ë¤È¤ê¤Þ¤·¤¿¤¬¡¢¸åÊý°ìÃפξì¹ç¤Ï +eb_search_word() ¤ÎÂå¤ï¤ê¤Ë eb_search_endword() +¤ò¸Æ¤Ö¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¾¤Ï¤¹¤Ù¤ÆƱ¤¸¤Ç¤¹¡£ +

+ +
+
+if (eb_search_endword(&book, "nalization") != EB_SUCCESS) {
+    printf("eb_search_endword() failed\n");
+    return;
+}
+
+
+ +

+´°Á´°ìÃפξì¹ç¤âƱÍͤǤ¹¡£ +eb_search_exactword() ¤ò¸Æ¤Ö¤è¤¦¤Ë¤¹¤ë°Ê³°¤Ï¡¢¤¹¤Ù¤ÆƱ¤¸ +¤Ç¤¹¡£ +

+ +
+
+if (eb_search_exactword(&book, "library") != EB_SUCCESS) {
+    printf("eb_search_exactword() failed\n");
+    return;
+}
+
+
+ + +

¾ò·ï¸¡º÷

+ +

+¾ò·ï¸¡º÷¤Ï¡¢Ê£¿ô¸Ä¤ÎÆþÎϸì¤Ë¤¹¤Ù¤Æ°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¸¡º÷¤·¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢±Ñ¡¹¼­Åµ¤Î¾ò·ï¸¡º÷¤Ç¤Ï¡¢ÆþÎϸì¤ò¤¹¤Ù¤Æ´Þ¤ó¤ÀÎãʸ¤ò¸¡º÷¤¹¤ë +¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +

+°Ê²¼¤Ï¡¢¾ò·ï¸¡º÷¤Ç make, with ¤È¤¤¤¦¸ì¤ÎÁÐÊý¤È +°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò¡¢ÁªÂòÃæ¤ÎÉûËܤÎÃ椫¤éõ¤·½Ð¤¹¥×¥í¥°¥é¥à¤ÎÃÇÊҤǤ¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+static const char *keywords[3] = {"make", "with", NULL};
+
+if (eb_search_word(&book, keywords) != EB_SUCCESS) {
+    printf("eb_search_word() failed\n");
+    return;
+}
+
+
+ +

+¾ò·ï¸¡º÷¤ò¹Ô¤¦´Ø¿ô¤Ï¡¢eb_search_keyword() ¤Ç¤¹¡£ +Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷¤Î´Ø¿ô¤È´ðËÜŪ¤Ë°·¤¤Êý¤Ï°ì½ï¤Ç¤¹¤¬¡¢ +Ê£¿ô¤ÎÆþÎϸì¤ò¼õ¤±ÉÕ¤±¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ë¤Ï¡¢ÆþÎϸì¤Îʸ»úÎó (¤Ø¤Î¥Ý¥¤¥ó¥¿) ¤òÇÛÎó¤Ë¤·¤¿¤â¤Î¤òÅϤ·¤Þ¤¹¡£ +ÇÛÎó¤ÎºÇ¸å¤Ë¤Ï NULL ¤òÃÖ¤­¡¢ÇÛÎó¤Î½ªÃ¼¤òÌÀ¼¨¤¹¤ëɬÍפ¬ +¤¢¤ëÅÀ¤ËÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃ׸¡º÷¤ÈƱÍͤˡ¢eb_search_keyword() +¤â¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤ò¹Ô¤¦¤À¤±¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ë¤Ï¡¢¤ä¤Ï¤êƱÍÍ¤Ë eb_hit_list() ´Ø¿ô¤ò +»È¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    printf("eb_hit_list() failed\n");
+    return;
+}
+
+
+ + +

¥¯¥í¥¹¸¡º÷

+ +

+¥¯¥í¥¹¸¡º÷¤Ï¡¢¾ò·ï¸¡º÷¤Î°¡¼ï¤È¤â¸À¤¦¤Ù¤­¸¡º÷¥á¥½¥Ã¥É¤Ç¤¹¡£ +EPWING ¤äÅŻҥ֥寤ò¤ß¤Æ¤â¡¢¤É¤¦¤¤¤¦¥ë¡¼¥ë¤Ç»È¤¤Ê¬¤±¤¬¤Ê¤µ¤ì¤Æ¤¤¤ë¤Î¤« +ʬ¤«¤é¤Ê¤¤Äø¡¢Î¾¼Ô¤Ï¼Â¤Ë¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¥¯¥í¥¹¸¡º÷¤ò¹Ô¤¦´Ø¿ô¤Ï eb_search_cross() +¤Ç¤¹¤¬¡¢»È¤¤Êý¤Ï¾ò·ï¸¡º÷¤Î´Ø¿ô eb_search_keyword() ¤È +¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£ +»È¤¤Êý¤Î¾ÜºÙ¤Ï¡¢¡Ö¾ò·ï¸¡º÷¡× ¤ò¤´Í÷²¼¤µ¤¤¡£ +

+ + +

Ê£¹ç¸¡º÷

+ +

+Ê£¹ç¸¡º÷¤Ï¡¢¾ò·ï¸¡º÷¤ÈƱ¤¸¤¯¡¢Ê£¿ô¸Ä¤ÎÆþÎϸì¤Ë¤¹¤Ù¤Æ°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò +¸¡º÷¤·¤Þ¤¹¤¬¡¢¸Ä¡¹¤ÎÆþÎϸì¤Ë¤¢¤é¤«¤¸¤áÂêÌܤ¬ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢Á°Êý°ìÃס¢¸åÊý°ìÃס¢´°Á´°ìÃס¢¾ò·ï¸¡º÷¤Ï¤¹¤Ù¤Æ¡¢³ÆÉûËܤˤĤ­ +°ì¼ïÎष¤«¤¢¤ê¤Þ¤»¤ó¤¬¡¢Ê£¹ç¸¡º÷¤À¤±¤Ï°ì¤Ä¤ÎÉûËܤÎÃæ¤ÇÊ£¿ô¤Î¼ïÎबÍÑ°Õ +¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¤¢¤ëÀ¤³¦¿Í̾»öŵ¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¿Í̾¸¡º÷ÍѤÈÉѽÐÍѸì¤Î¸¡º÷ÍÑ +¤Î 2 ¼ïÎà¤ÎÊ£¹ç¸¡º÷¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+(Ê£¹ç¸¡º÷¤½¤Î 1: ¿Í̾¤ò¸¡º÷¤¹¤ë)
+    ÆþÎϸì 0: ¹ñ¡¦ÃÏ°è
+    ÆþÎϸì 1: »þÂå
+    ÆþÎϸì 2: À­ÊÌ
+    ÆþÎϸì 3: ¥­¡¼¥ï¡¼¥É
+    ÆþÎϸì 4: ¥­¡¼¥ï¡¼¥É
+
+
+ +
+
+(Ê£¹ç¸¡º÷¤½¤Î 2: ÉѽÐÍѸì¤ò¸¡º÷¤¹¤ë)
+    ÆþÎϸì 0: ÍѸì
+    ÆþÎϸì 1: ¥­¡¼¥ï¡¼¥É
+    ÆþÎϸì 2: ¥­¡¼¥ï¡¼¥É
+
+
+ +

+¤³¤ÎÎã¤Î¤è¤¦¤Ë¡¢¸Ä¡¹¤ÎÊ£¹ç¸¡º÷¤Ï¡¢ÆþÎϸì¤ÎÂêÌܤÀ¤±¤Ç¤Ê¤¯¡¢ÆþÎϸì¤Î¿ô¤â +¤Þ¤Á¤Þ¤Á¤Ç¤¹¡£ +¤Þ¤¿¡¢¸¡º÷¤¹¤ëºÝ¤Ï¤¹¤Ù¤Æ¤ÎÆþÎϸì¤òËä¤á¤ëɬÍפϤʤ¯¡¢¾¯¤Ê¤¯¤È¤â°ì¸Ä¤Î +ÆþÎϸ줬¶õ¤Ç¤Ê¤±¤ì¤Ð¡¢¸¡º÷¤ÏÀ®¸ù¤·¤Þ¤¹¡£ +

+ +

+ÉûËÜÆâ¤ÎÊ£¹ç¸¡º÷¤Ï¡¢¼ïÎàËè¤Ë Ê£¹ç¸¡º÷¥³¡¼¥É (multi search code) +¤Ë¤è¤Ã¤Æ¼±Ê̤µ¤ì¤Þ¤¹¡£ +´Ø¿ô eb_multi_search_list() ¤ò»È¤¦¤È¡¢ÁªÂòÃæ¤ÎÉûËܤÇÍøÍѲÄǽ +¤ÊÊ£¹ç¸¡º÷¤Î°ìÍ÷¤¬ÆÀ¤é¤ì¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Multi_Search_Code multi_codes[EB_MAX_MULTI_SEARCHES];
+int multi_count;
+
+if (eb_multi_search_list(&book, multi_codes, &multi_count)
+    != EB_SUCCESS) {
+    printf("eb_multi_search_list() failed\n");
+    return;
+}
+
+
+ +

+¤³¤ÎÊ£¹ç¸¡º÷¥³¡¼¥É¤Ï¡¢Ê£¹ç¸¡º÷¤Î¤¿¤á¤Î´Ø¿ô¤ÇɬÍפȤʤê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢eb_multi_title() ¤Ï¡¢»ØÄꤷ¤¿Ê£¹ç¸¡º÷¤ÎÂê̾ +(Îã:¡Ö¿Í̾¸¡º÷¡×¡ÖÉѽÐÍѸ측º÷¡×) ¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤Ç¤¹¤¬¡¢¤³¤Î¤È¤­¤Î +Ê£¹ç¸¡º÷¤Î»ØÄê¤Ë¤Ï¡¢Ê£¹ç¸¡º÷¥³¡¼¥É¤òÍѤ¤¤Þ¤¹¡£ +°Ê²¼¤ÎÎã¤Ç¤Ï¡¢°ìÍ÷¤ÎÀèƬ¤ËºÜ¤Ã¤Æ¤¤¤ëÊ£¹ç¸¡º÷ (multi_codes[0]) +¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+char title[EB_MAX_MULTI_TITLE_LENGTH + 1];
+
+if (eb_multi_title(&book, multi_codes[0], title)
+    != EB_SUCCESS) {
+    printf("eb_multi_title() failed\n");
+    return;
+}
+
+
+ +

+¤µ¤é¤Ë´Ø¿ô¤Ë¤è¤Ã¤Æ¤Ï¡¢Ê£¹ç¸¡º÷¥³¡¼¥É¤Ë²Ã¤¨¤Æ¡¢²¿ÈÖÌܤÎÆþÎϸ줫¤â»ØÄê +¤·¤Æ¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ÆÃÄê¤ÎÆþÎϸì¤ÎÂêÌܤòÆÀ¤ë´Ø¿ô eb_multi_entry_label() +¤¬¡¢¤³¤ì¤Ë³ºÅö¤·¤Þ¤¹¡£ +0 ÈÖÌܤÎÆþÎϸì (¤Ä¤Þ¤êÀèƬ¤ÎÆþÎϸì) ¤ÎÂêÌܤò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë +¤·¤Þ¤¹¡£ +

+ +
+
+char label[EB_MAX_MULTI_LABEL_LENGTH + 1];
+
+if (eb_multi_entry_label(&book, multi_code[0], 0, label)
+    != EB_SUCCESS) {
+    printf("eb_multi_entry_label() failed\n");
+    return;
+}
+
+
+ +

+Ê£¹ç¸¡º÷¤ò¹Ô¤¦´Ø¿ô¤Ï¡¢eb_search_multi() ¤Ç¤¹¡£ +»È¤¤Êý¤Ï¾ò·ï¸¡º÷¤È¤Û¤ÜƱ¤¸¤Ç¡¢ÆþÎϸì¤Îʸ»úÎó¤òÇÛÎó¤Ë¤·¤¿¤â¤Î¤ò°ú¿ô +¤È¤·¤ÆÅϤ·¡¢ÇÛÎó¤ÎºÇ¸å¤Ë¤Ï NULL ¤òÃÖ¤¤¤Æ²¼¤µ¤¤¡£ +Ëä¤á¤é¤ì¤Æ¤¤¤Ê¤¤ÆþÎϸì¤Î¤È¤³¤í¤Ë¤Ï¡¢¶õʸ»úÎó¤òÃÖ¤­¤Þ¤¹¡£ +

+ +

+eb_search_multi() ¤â¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤ò¹Ô¤¦¤À¤±¤Ç¡¢°ìÃפ·¤¿ +¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +¼èÆÀ¤¹¤ë¤Ë¤Ï eb_hit_list() ¤ò»È¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¤Ê¤ª¡¢Ê£¹ç¸¡º÷¤ÎÆþÎϸì¤Ë¤è¤Ã¤Æ¤Ï +¸õÊä°ìÍ÷ (candidates) ¤¬¤¢¤é¤¸¤áÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤ò¤¢¤é¤«¤¸¤áÎóµó¤·¤Æ¤ª¤­¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥æ¡¼¥¶¤ËÁªÂò¤µ¤»¤ë»ÅÁȤߤǤ¹¡£ +¸õÊä°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤³¤Î¾Ï¤Ç¤Ï¤Ê¤¯¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡×¤Î¾Ï¤ÇÀâÌÀ¤·¤Þ¤¹ +(¡ÖÊ£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ + +

°ìÃ×¥¨¥ó¥È¥ê¤Î¾ðÊó

+ +

+eb_hit_list() ¤Ï¡¢¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¸¡º÷ (Á°Êý°ìÃס¢¸åÊý°ìÃס¢ +´°Á´°ìÃס¢¾ò·ï¡¢Ê£¹ç) ¤Ë°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤È¸«¤Ä¤«¤Ã¤¿¥¨¥ó¥È¥ê¤Î +¸Ä¿ô¤ò¡¢¤½¤ì¤¾¤ì EB_Hit ·¿¤ÎÇÛÎóÎΰ褪¤è¤Ó int ·¿¤Î +Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤±
+ * ¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Hit hits[MAX_HITS];
+int hit_count;
+
+if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+    != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+EB_Hit ÇÛÎó¤Î¸Ä¡¹¤ÎÍ×ÁǤˤϡ¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î +¸«½Ð¤· (heading) ¤È ËÜʸ (text) ¤Î³«»Ï°ÌÃÖ¤¬ +½ñ¤­¹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¸«½Ð¤·
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¡¡£Å£Â¡²£È£é£ô¡¡¡¡¡¡¨®¨¬¨»£ì£é£â£ò£á£ò£é£á£î¡¡£î¡¥¨¢
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤¡¡¨­¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+¨¢£è£å£á£ä£é£î£ç¨»¨¬¨°¡¡¡¡ËÜʸ
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢¡¡¡¡¡¡£ô£å£ø£ô¨»¨¬¨¬¨¬¨»£ì£é£â£ò£á£ò£é£á£î¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥¡¡¡¡¡¡¨¢£î¡¥¡Ê£±¡Ë£Á¡¡£ð£å£ò£ó£ï£î¡¡£÷£è£ï¡¡£é£ó¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢£á¡¡£ó£ð£å£ã£é£á£ì£é£ó£ô¡¡£é£î¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢£ì£é£â£ò£á£ò£ù¡¡£÷£ï£ò£ë¡¥¡Ê£²¡Ë¡¥¡¥¡¥¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¸«½Ð¤·¤ÈËÜʸ¤Ë¤Ä¤¤¤Æ¤Î¤è¤ê¾Ü¤·¤¤²òÀâ¤È¼èÆÀÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

»Ä¤Ã¤Æ¤¤¤ë¥¨¥ó¥È¥ê¤Î¼èÆÀ

+ +

+Á°¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢eb_hit_list() ¤ò¸Æ¤Ó½Ð¤¹¤È¤­¤Ï¡¢°ìÃפ¹¤ë +¥¨¥ó¥È¥ê¤òºÇÂç¤Ç²¿¸Ä¤Þ¤Çõ¤¹¤Î¤«¤ò°ú¿ô¤Ç»ØÄꤷ¤Þ¤¹¡£ +¤Þ¤¿¡¢eb_hit_list() ¤Ï½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢¼ÂºÝ¤Ë¸«¤Ä¤«¤Ã¤¿ +¥¨¥ó¥È¥ê¤Î¿ô¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ë¶µ¤¨¤Þ¤¹¡£ +

+ +
+
+error_code = eb_hit_list(&book, MAX_HITS, hits, &hit_count);
+if (error_code == EB_SUCCESS)
+    printf("%d entries found\n", hit_count);
+
+
+ +

+»ØÄꤷ¤¿ºÇÂç¸Ä¿ô¤è¤ê¤â¿¤¯¤Î°ìÃ×¥¨¥ó¥È¥ê¤¬ÉûËܤ˸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ +eb_hit_list() ¤ò·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢»Ä¤ê¤Î¥¨¥ó¥È¥ê¤ò +¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+for (;;) {
+    if (eb_hit_list(&book, MAX_HITS, hits, &hit_count)
+        != EB_SUCCESS) {
+        fprintf(stderr, "an error occurs.\n");
+        return;
+    }
+    if (hit_count == 0)
+        break;
+    /* ¼èÆÀ¤·¤¿°ìÃ×¥¨¥ó¥È¥ê¤Î½èÍý */
+}
+
+
+ +

+°ìÃ×¥¨¥ó¥È¥ê¤¬¤â¤¦»Ä¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢eb_hit_list() ¤Ï +&hit_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ó¤Ç¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢ÅÓÃæ¤Ç eb_hit_list() ¤¬¼ºÇÔ¤¹¤ë¤È +(EB_SUCCESS °Ê³°¤ÎÃͤòÊÖ¤¹¤È)¡¢¸¡º÷¥ê¥¯¥¨¥¹¥È¤Ë´Ø¤¹¤ë +¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È¤µ¤ì¤ë¤¿¤á¡¢°ìÃ×¥¨¥ó¥È¥ê¤Î¼èÆÀ¤ò¤½¤ì°Ê¾å³¤±¤ë¤³¤È¤Ï +¤Ç¤­¤Þ¤»¤ó¡£ +

+ + +

½ÅÊ£¥¨¥ó¥È¥ê¤Îºï½ü

+ +

+eb_hit_list() ¤òÍѤ¤¤Æ°ìÃפ·¤¿¥¨¥ó¥È¥ê¤ò¼èÆÀ¤¹¤ë¤È¡¢Ãæ¿È¤¬ +¼Â¼ÁŪ¤ËÊѤï¤é¤Ê¤¤¥¨¥ó¥È¥ê¤¬Ê£¿ô´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢¤³¤¦¤·¤¿½ÅÊ£¥¨¥ó¥È¥ê¤Îºï½ü¤Ï¹Ô¤¤¤Þ¤»¤ó¡£ +ɬÍפʤ顢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤Ç¹Ô¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+½ÅÊ£¤ò´°àú¤Ë¼è¤ê½ü¤¯¤Ê¤é¡¢°Ê²¼¤Î¤¹¤Ù¤Æ¤Î¾ò·ï¤Ë°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤ò +½ÅÊ£¥¨¥ó¥È¥ê¤È¤ß¤Ê¤·¡¢ÆóÅÙÌܰʹߤ˽и½¤·¤¿¥¨¥ó¥È¥ê¤òºï½ü¤·¤Þ¤¹¡£ +

+ +
    +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹ËÜʸ¤Î°ÌÃÖ¤¬Æ±¤¸ +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹¸«½Ð¤·¤Îʸ»úÎó (°ÌÃ֤ǤϤʤ¯Ê¸»úÎ󤽤Τâ¤Î) ¤¬Æ±¤¸ +
+ +

+(¸«½Ð¤·Ê¸»úÎó¤Î¼èÆÀÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+½ÅÊ£¤Ï¡¢Ä¾Á°¤Î¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¤Î¤ßµ¯¤³¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢eb_hit_list() ¤Ç°ìÃ×¥¨¥ó¥È¥ê¤¬ 50 ¸ÄÆÀ¤é¤ì¤¿¾ì¹ç¡¢ +ºÇ¸å¤Î 50 ¸ÄÌܤÏÁ°Êý¤Î 49 ¸Ä¤È½ÅÊ£¸¡ºº¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢Á´ÂΤǤϥ¨¥ó¥È¥êƱ»Î¤ÎÈæ³Ó¤ò 1 + 2 + ... + 49 = 1225 ²ó +¹Ô¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+½ñÀҤˤè¤Ã¤Æ¤Ï½ÅÊ£¥¨¥ó¥È¥ê¤¬¼è¤ê¤­¤ì¤Ê¤¤²ÄǽÀ­¤â¤¢¤ê¤Þ¤¹¤¬¡¢¤â¤¦¾¯¤· +´Êñ¤ÊÊýË¡¤â¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£ +½èÍý¤ò´Êñ¤Ë¤¹¤ëÂè°ì¤ÎÊýË¡¤Ï¡¢½ÅÊ£¥¨¥ó¥È¥ê¤ÎȽÄê¾ò·ï¤ò¼¡¤Î¤è¤¦¤ËÊѤ¨¤ë +¤³¤È¤Ç¤¹¡£ +

+ +
    +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹ËÜʸ¤Î°ÌÃÖ¤¬Æ±¤¸ +
  • ¥¨¥ó¥È¥ê¤Î»Ø¤¹¸«½Ð¤·¤Îʸ»úÎó¤Î°ÌÃÖ¤¬Æ±¤¸ +
+ +

+¤µ¤é¤Ë½èÍý¤ò´Êñ¤Ë¤¹¤ë¤Ë¤Ï¡¢Ä¾Á°¤Î 1¸Ä¤Î¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¤À¤±½ÅÊ£¸¡ºº¤ò +¹Ô¤¦¤È¤¤¤¦ÊýË¡¤â¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ê¤é¡¢50 ¸Ä¤Î°ìÃ×¥¨¥ó¥È¥ê¤ËÂФ·¤Æ¡¢Èæ³Ó¤Ï 49 ²ó¤ÇºÑ¤ß¤Þ¤¹¡£ +¤¿¤À¤·¤³¤ÎÊýË¡¤Ï¡¢½ñÀҤˤè¤Ã¤Æ¤Ï¤Þ¤Ã¤¿¤¯¸ú²Ì¤¬¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ + + + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Hit ·¿

+ +

+EB_Hit ¤Ï¡¢¸¡º÷¤Ë°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤ò³ÊǼ¤¹¤ë¤¿¤á¤Î +¥Ç¡¼¥¿·¿¤Ç¤¹¡£ +ÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Hit_Struct EB_Hit;
+
+struct EB_Hit_Struct {
+    EB_Position heading;  /* ¸«½Ð¤·¤Î°ÌÃÖ */
+    EB_Position text;     /* ËÜʸ¤Î°ÌÃÖ   */
+};
+
+
+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Hit ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ + +

EB_Position ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Position ¤Ï¡¢ÉûËܤΥǡ¼¥¿¤Î°ÌÃÖ¤òɽ¤·¤Þ¤¹¡£ +ÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Position_Struct EB_Position;
+
+struct EB_Position_Struct {
+    int page;     /* ¥Ú¡¼¥¸ÈÖ¹æ */
+    int offset;   /* ¥Ú¡¼¥¸Æâ¤Î¥ª¥Õ¥»¥Ã¥È */
+};
+
+
+ +

+¥Ú¡¼¥¸ÈÖ¹æ¤Ï 1 ¤«¤é»Ï¤Þ¤ê¡¢¥Ú¡¼¥¸Æâ¤Î¥ª¥Õ¥»¥Ã¥È¤Ï 0 ¡Á 2047 ¤ÎÈÏ°Ï¤È +¤Ê¤ê¤Þ¤¹¡£ +¤¿¤À¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤òºîÀ®¤¹¤ë¾å¤Ç¡¢¤³¤Î¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¯ +ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +¤Î¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ + +

EB_Multi_Search_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Multi_Search_Code ¤ÏÊ£¹ç¸¡º÷¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷¤Ï¡¢¤½¤ì¤¾¤ì°ì°Õ¤ÎÊ£¹ç¸¡º÷¥³¡¼¥É¤ò +»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢ÉÔÀµ¤ÊÊ£¹ç¸¡º÷¥³¡¼¥ÉÃͤòɽ¤¹ EB_MULTI_INVALID ¤È¤¤¤¦ +ÆÃÊ̤ÊÉûËÜ¥³¡¼¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +ÍøÍѲÄǽ¤ÊÊ£¹ç¸¡º÷¤ËÂФ·¤Æ¡¢¤³¤ÎÊ£¹ç¸¡º÷¥³¡¼¥É¤¬³ä¤êÅö¤Æ¤é¤ì¤ë¤³¤È¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

int eb_have_word_search (EB_Book *book)

+ +

int eb_have_endword_search (EB_Book *book)

+ +

int eb_have_exactword_search (EB_Book *book)

+ +

+´Ø¿ô eb_have_word_search() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤÇÁ°Êý°ìÃ׸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍÍ¤Ë eb_have_endword_search() ¤Ï¸åÊý°ìÃ׸¡º÷¥á¥½¥Ã¥É¤Ë +¤Ä¤¤¤Æ¡¢eb_have_exactword_search() ¤Ï´°Á´°ìÃ׸¡º÷¥á¥½¥Ã¥É¤Ë +¤Ä¤¤¤ÆÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÍøÍѲÄǽ¤Ê¤é 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_keyword_search (EB_Book *book)

+ +

+´Ø¿ô eb_have_keyword_search() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤǾò·ï¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÍøÍѲÄǽ¤Ê¤é 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_multi_search (EB_Book *book)

+ +

+´Ø¿ô eb_have_multi_search() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤÇÊ£¹ç¸¡º÷¥á¥½¥Ã¥É¤¬ÍøÍѲÄǽ¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ºÇÄã 1 ¼ïÎà¤Ç¤âÍøÍѲÄǽ¤Ê¤é 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_search_list (EB_Book *book, EB_Multi_Search_Code *multi_list, int *multi_count)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷¤òÄ´¤Ù¡¢Ê£¹ç¸¡º÷¥³¡¼¥É¤Î°ìÍ÷¤ò +EB_Multi_Search_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢multi_list +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_MULTI_SEARCHES ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢Ê£¹ç¸¡º÷¤Î¼ïÎà¿ô¤ò multi_count ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_entry_count (EB_Book *book, EB_Multi_Search_Code multi_id, int *entry_count)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ÆþÎϸì¤Î +¸Ä¿ô¤ò entry_count ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­½ñ¤­¹þ¤Þ¤ì¤ëÆþÎϸì¤Î¸Ä¿ô¤Ï¡¢1 °Ê¾å EB_MAX_MULTI_ENTRIES +°Ê²¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢entry_count ¤Î»Ø¤¹Îΰè¤Ë¤Ï 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_title (EB_Book *book, EB_Multi_Search_Code multi_id, char *title)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤ÎÂê̾¤ò title +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÂêÌܤϺÇĹ¤Ç EB_MAX_MULTI_TITLE_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢ÂêÌܤòɽ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ê¤éÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+½ñÀҤˤè¤Ã¤Æ¤Ï¡¢Ê£¹ç¸¡º÷¤ÏÍÑ°Õ¤·¤Æ¤¤¤Æ¤â¡¢Ê£¹ç¸¡º÷¤ÎÂê̾¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ +¤¤¤Ê¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤½¤Î¾ì¹ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬Âå¤ï¤ê¤ËÉÕ¤±¤¿Âê̾¤¬ title ¤Ë +½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤¬ÉÕ¤±¤ëÂê̾¤Ï¡¢"Multi Search 1", "Multi Search 2", ... +¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ç¤¢¤ì¤Ð¡¢Âê̾¤ÏÆüËܸì EUC ¤Ç½ñ¤«¤ì¤¿¡ÖÊ£¹ç¸¡º÷ 1¡× +¡ÖÊ£¹ç¸¡º÷ 2¡×... ¤È¤¤¤¦Ê¸»úÎó¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢label ¤Î»Ø¤¹Îΰè¤Ë¤Ï¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_entry_label (EB_Book *book, EB_Multi_Search_Code multi_id, int entry_index, char *label)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ +entry_index ÈÖÌܤθ¡º÷¸ì¤ÎÂêÌܤò label ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +entry_index ¤Ï¡¢ÀèƬ¤Î¸¡º÷¸ì¤ò 0 ÈÖÌܤȿô¤¨¤Þ¤¹¡£ +ÂêÌܤϺÇĹ¤Ç EB_MAX_MULTI_LABEL_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢ÂêÌܤòɽ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Ê¤éÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢label ¤Î»Ø¤¹Îΰè¤Ë¤Ï¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_multi_entry_have_candidates (EB_Book *book, EB_Multi_Search_Code multi_id, int entry_index)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ +entry_index ÈÖÌܤθ¡º÷¸ì¤¬¸õÊä°ìÍ÷¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤Þ¤¹¡£ +entry_index ¤Ï¡¢ÀèƬ¤Î¸¡º÷¸ì¤ò 0 ÈÖÌܤȿô¤¨¤Þ¤¹¡£ +

+ +

+»ý¤Ã¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¤Þ¤¹¡£ +»ý¤Ã¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤¢¤ë¤¤¤Ï +multi_id, ¤ä entry_index ¤¬ÉÔÀµ¤ÊÃͤÀ¤Ã¤¿¾ì¹ç¤Ï +0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_multi_entry_candidates (EB_Book *book, EB_Multi_Search_Code multi_id, int entry_index, EB_Position *position)

+ +

+´Ø¿ô eb_multi_search_list() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊ£¹ç¸¡º÷ multi_id ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¡¢ +entry_index ÈÖÌܤθ¡º÷¸ì¤Î¸õÊä°ìÍ÷¤Î°ÌÃÖ¤ò position +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÀèƬ¤Î¸¡º÷¸ì¤¬ 0 ÈÖÌܤˤʤê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢positin ¤Î»Ø¤¹Îΰè¤Ë¤Ï eb_seek_text() +¤¬É¬¤º¼ºÇÔ¤¹¤ë°ÌÃÖ¾ðÊó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_search_word (EB_Book *book, const char *input_word)

+ +

EB_Error_Code eb_search_endword (EB_Book *book, const char *input_word)

+ +

EB_Error_Code eb_search_exactword (EB_Book *book, const char *input_word)

+ +

+´Ø¿ô eb_search_word() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËÜ¤Ë +ÂФ¹¤ëÁ°Êý°ìÃ׸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +ƱÍÍ¤Ë eb_search_endword() ¤Ï¸åÊý°ìÃ׸¡º÷¤ò¡¢ +eb_search_exactword() ¤Ï´°Á´°ìÃ׸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +

+ +

+¸¡º÷¤¹¤ë¸ì¤Ï¡¢°ú¿ô input_word ¤Ç»ØÄꤷ¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë¤À¤±¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î +¾ðÊó¤òÊÖ¤¹¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ë¤Ï eb_hit_list() ¤ò»È¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤¿¸¡º÷¤Î¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È +¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤½¤Î¾õÂÖ¤Î¤Þ¤Þ eb_hit_list() ¤ò¸Æ¤Ó½Ð¤·¤Æ¤â¡¢ +¤ä¤Ï¤ê¼ºÇԤ˽ª¤ï¤ê¤Þ¤¹¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢´Ø¿ô¤ËÅϤ¹¸¡º÷¸ì¤Ï ISO 8859-1 +¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¾ì¹ç¤Ï¡¢ÆüËܸì EUC ¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÉÔÀµ¤Êʸ»úÈÖ¹æ¤ò´Þ¤ó¤Ç¤¤¤¿¾ì¹ç¡¢´Ø¿ô¤Ï EB_ERR_BAD_WORD ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+²Ã¤¨¤Æ¡¢¸¡º÷¸ì¤Ï 1 ¥Ð¥¤¥È°Ê¾å¡¢EB_MAX_WORD_LENGTH (= 255) +¥Ð¥¤¥È°Ê²¼¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +Ť¹¤®¤ë¾ì¹ç¤Ï¡¢EB_ERR_TOO_LONG_WORD ¤ò¡¢ +Ťµ¤¬ 0 (¶õʸ»úÎó) ¤Î¾ì¹ç¤Ï EB_ERR_EMPTY_WORD ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Ê¤ª¡¢°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤¬ºÇÄã 1 ¸Ä¤¢¤ë¤«¤É¤¦¤«¤Ï¡¢Ìá¤êÃͤˤϱƶÁ¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_search_keyword (EB_Book *book, const char * const input_words[])

+ +

EB_Error_Code eb_search_cross (EB_Book *book, const char * const input_words[])

+ +

EB_Error_Code eb_search_multi (EB_Book *book, EB_Multi_Search_Code multi_id, const char * const input_words[])

+ +

+´Ø¿ô eb_search_keyword() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤËÂФ¹¤ë¾ò·ï¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +ƱÍÍ¤Ë eb_search_cross() ¤Ï¥¯¥í¥¹¸¡º÷¤ò¡¢ +eb_search_multi() ¤ÏÊ£¹ç¸¡º÷¤ò¤½¤ì¤¾¤ì¥ê¥¯¥¨¥¹¥È¤·¤Þ¤¹¡£ +

+ +

+¸¡º÷¤¹¤ë¸ì¤Ï¡¢°ú¿ô input_words ¤Ç»ØÄꤷ¤Þ¤¹¡£ +¾ò·ï¸¡º÷¤ÈÊ£¹ç¸¡º÷¤Ï¤¤¤º¤ì¤âÊ£¿ô¸Ä¤Î¸¡º÷¸ì¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¤Î¤Ç¡¢¸¡º÷¸ì¤ò +ÇÛÎó¤Ë¤·¤ÆÅϤ·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢ÇÛÎó¤ÎËöÈø¤ÎÍ×ÁÇ¤Ë¤Ï NULL ¤òÃÖ¤­¡¢ÇÛÎó¤Î½ªÃ¼¤ò +ÌÀ¼¨¤·¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¸¡º÷¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë¤À¤±¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤ò +ÊÖ¤¹¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ë¤Ï eb_hit_list() ¤ò»È¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤¿¸¡º÷¤Î¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È +¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤½¤Î¾õÂÖ¤Î¤Þ¤Þ eb_hit_list() ¤ò¸Æ¤Ó½Ð¤·¤Æ¤â¡¢ +¤ä¤Ï¤ê¼ºÇԤ˽ª¤ï¤ê¤Þ¤¹¡£ +

+ +

+½ñÀÒ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢´Ø¿ô¤ËÅϤ¹¸¡º÷¸ì¤Ï ISO 8859-1 +¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¾ì¹ç¤Ï¡¢ÆüËܸì EUC ¤Ç½ñ¤«¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÉÔÀµ¤Êʸ»úÈÖ¹æ¤ò´Þ¤ó¤Ç¤¤¤¿¾ì¹ç¡¢´Ø¿ô¤Ï EB_ERR_BAD_WORD ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+²Ã¤¨¤Æ¡¢¸Ä¡¹¤Î¸¡º÷¸ì¤Ï EB_MAX_WORD_LENGTH (= 255) ¥Ð¥¤¥È°Ê²¼ +¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ÎŤµ¤Ë¡¢¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +Ť¹¤®¤ë¾ì¹ç¤Ï¡¢EB_ERR_TOO_LONG_WORD ¤òÊÖ¤·¤Þ¤¹¡£ +Ťµ¤¬ 0 ¥Ð¥¤¥È¤Î¸¡º÷¸ì¤Ï̵»ë¤µ¤ì¤Þ¤¹¤¬¡¢¾¯¤Ê¤¯¤È¤â 1 ¸Ä¤Î¸¡º÷¸ì¤ÏŤµ +¤¬ 1 °Ê¾å¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£ +Ťµ¤¬ 1 °Ê¾å¤Î¸¡º÷¸ì¤¬ 1 ¤Ä¤â¤Ê¤¤¤È¤­¤Ï¡¢EB_ERR_NO_WORD ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+ËöÈø¤Î NULL ¤ò½ü¤¤¤¿ÇÛÎó¤ÎÍ×ÁÇ¿ô¤Ï¡¢¾ò·ï¸¡º÷¤Ç¤Ï EB_MAX_KEYWORDS +°Ê²¼¡¢¥¯¥í¥¹¸¡º÷¤Ç¤Ï EB_MAX_CROSS_ENTRIES °Ê²¼¡¢ +Ê£¹ç¸¡º÷¤Ç¤Ï EB_MAX_MULTI_ENTRIES °Ê²¼¤Ç¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +¸Ä¿ô¤¬Â¿¤¹¤®¤ë¤È EB_ERRO_TOO_MANY_WORDS ¤òÊÖ¤·¤Þ¤¹¡£ +¶õʸ»úÎó¤ÎÍ×ÁǤòº¹¤·°ú¤¤¤¿¸Ä¿ô¤Ç¤Ï¤Ê¤¯¡¢Ã±½ã¤ËÅϤµ¤ì¤¿Í×ÁÇ¿ô¤¬¾å¸Â¤ò +Ķ¤¨¤Æ¤¤¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤¬É¬ÍפǤ¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Ê¤ª¡¢°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤¬ºÇÄã 1 ¸Ä¤¢¤ë¤«¤É¤¦¤«¤Ï¡¢Ìá¤êÃͤˤϱƶÁ¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_hit_list (EB_Book *book, int max_hit_count, EB_Hit *hit_list, int *hit_count)

+ +

+´Ø¿ô eb_hit_list() ¤Ï¡¢¤¢¤é¤«¤¸¤á°Ê²¼¤Î¤¤¤º¤ì¤«¤Î´Ø¿ô¤Ç +¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¸¡º÷¤ò¼Â¹Ô¤·¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +
    +
  • eb_search_word() (Á°Êý°ìÃ׸¡º÷) +
  • eb_search_endword() (¸åÊý°ìÃ׸¡º÷) +
  • eb_search_exactword() (´°Á´°ìÃ׸¡º÷) +
  • eb_search_keyword() (¾ò·ï¸¡º÷) +
  • eb_search_cross() (¥¯¥í¥¹¸¡º÷) +
  • eb_search_multi() (Ê£¹ç¸¡º÷) +
+ +

+¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤ÖÁ°¤Ë¡¢¾åµ­¤Î¤¤¤º¤ì¤«¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤ËÀ®¸ù¤·¤Æ +¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +

+ +

+eb_hit_list() ¤ÏºÇÂç¤Ç max_hit_count ¸Ä¤Î +°ìÃ×¥¨¥ó¥È¥ê¤ò hit_list ¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤½¤·¤Æ¡¢½ñ¤­¹þ¤ó¤À°ìÃ×¥¨¥ó¥È¥ê¤Î¿ô¤ò hit_count ¤¬»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤½¤ì°Ê¾å¤Î¸Ä¿ô¤Î°ìÃ×¥¨¥ó¥È¥ê¤¬Â¸ºß¤¹¤ë¾ì¹ç¡¢»Ä¤Ã¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤Ï¡¢ +¤³¤Î´Ø¿ô¤ò·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤ÇÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢°Ê²¼¤Ëµó¤²¤¿´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¥ê¥¯¥¨¥¹¥È¤·¤¿¸¡º÷¤Ë´Ø¤¹¤ë¾õÂÖµ­Ï¿ +¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¼èÆÀ¤Ï·Ñ³¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +
    +
  • eb_set_subbook() +
  • eb_unset_subbook() +
  • eb_load_all_subbooks() +
  • eb_bind() +
  • eb_finalize_book() +
  • eb_search_word() +
  • eb_search_endword() +
  • eb_search_exactword() +
  • eb_search_keyword() +
  • eb_search_cross() +
  • eb_search_multi() +
+ +

+·«¤êÊÖ¤·¸Æ¤ó¤À¾ì¹ç¤â¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤Ï¤½¤ÎÅÔÅÙ hit_list +¤ÎÀèƬ¤«¤é½ñ¤­¹þ¤ß¡¢hit_count ¤¬»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤àÃͤ⡢¤½¤Î²ó +¤Î eb_hit_list() ¤Î¸Æ¤Ó½Ð¤·¤Ç½ñ¤­¹þ¤ó¤À°ìÃ×¥¨¥ó¥È¥ê¤Î¿ô¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤¿¤È¤¨°ìÃפ·¤¿¥¨¥ó¥È¥ê¤¬¤Ê¤¯¤Æ¤â¡¢½èÍý¤¬Àµ¾ï¤Ë½ªÎ»¤¹¤ì¤Ð¡¢´Ø¿ô¤Ï +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¼ºÇÔ¤¹¤ë¤È¡¢hit_count ¤¬»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¥ê¥¯¥¨¥¹¥È¤·¤Æ¤¤¤¿¸¡º÷¤Î¾õÂÖµ­Ï¿¤Ï¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢ +¤³¤ì°Ê¾å eb_hit_list() ¤ò¸Æ¤ó¤Ç¡¢»Ä¤Ã¤¿°ìÃ×¥¨¥ó¥È¥ê¤ò¼èÆÀ +¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢Àè¤Ëµó¤²¤¿¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤¬À®¸ù¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥ³¤Î´Ø¿ô¤ò¸Æ¤Ö¤È¡¢ +EB_ERR_NO_PREV_SEARCH ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿

+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤Ï¡¢¸¡º÷¤ÈʤֽÅÍפʵ¡Ç½¤Ç¤¹¡£ +

+ +

+¤³¤³¤Ç¸À¤¦ ¥Æ¥­¥¹¥È¥Ç¡¼¥¿ (text data) ¤Ï¡¢ +ËÜʸ (text body) ¤È¤¤¤¦°ÕÌ£¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +CD-ROM ½ñÀҤˤϳΤ«¤ËËÜʸ¤â¸ºß¤·¤Þ¤¹¤¬¡¢ËÜʸ¤ÈƱ¤¸¥Ç¡¼¥¿·Á¼°¤òÍѤ¤¤Æ +½ñ¤«¤ì¤¿¥Ç¡¼¥¿¤¬¿ô¼ïÎढ¤ê¤Þ¤¹¡£ +Ëܽñ¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥Ç¡¼¥¿¤ò¤Þ¤È¤á¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤¬°·¤¨¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤Ï¡¢¼¡¤Î¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
    +
  • ¸«½Ð¤· +
  • ËÜʸ +
  • ¥á¥Ë¥å¡¼ +
  • Ãøºî¸¢É½¼¨ +
  • Ê£¹ç¸¡º÷¤ÎÆþÎϸì¤Î¸õÊä°ìÍ÷ +
+ +

+ËܾϤǤϡ¢¤³¤ì¤é¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤È²Ã¹©ÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥·¡¼¥¯¤ÈÆɤ߹þ¤ß

+ +

+UNIX ¤Ç¥×¥í¥°¥é¥à¤òÁȤó¤À·Ð¸³¤Î¤¢¤ëÊý¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤òÆɤ߹þ¤à +ºÝ¤ËÍѤ¤¤ë lseek(), read() ¤È¤¤¤¦¥·¥¹¥Æ¥à¥³¡¼¥ë +¤ò¤´Â¸¤¸¤ÎÊý¤â¿¤¤¤Ç¤·¤ç¤¦¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤â¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼èÆÀ¤Ë¤Ï¡¢¥·¡¼¥¯ (seek) ¤È +Æɤ߹þ¤ß (read) ¤È¤¤¤¦ 2 ¤Ä¤ÎÁàºî¤Ç¹Ô¤¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤ä¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï¤Ê¤¯¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤òÄ̤¸¤Æ¥·¡¼¥¯¤äÆɤ߹þ¤ß¤ÎÁàºî¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢¥·¡¼¥¯»þ¤Ë»ØÄꤹ¤ë°ÌÃÖ¤â off_t ·¿¤Ç¤Ï¤Ê¤¯¡¢ +EB_Position ·¿ (¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÍѤ¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ËÜʸ¤ÎÀèƬ°ÌÃ֤ϡ¢eb_text() ¤È¤¤¤¦´Ø¿ô¤ò»È¤Ã¤Æ +¼¡¤Î¤è¤¦¤Ë¼èÆÀ¤Ç¤­¤Þ¤¹¤¬¡¢¤³¤Î¤È¤­¤â°ÌÃ֥ǡ¼¥¿¤Ï EB_Position +·¿¥ª¥Ö¥¸¥§¥¯¥È¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +
+
+EB_Position position;
+
+/* ´Ø¿ô¤Î½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢position ¤ËËÜʸ¤Î³«»Ï°ÌÃÖ¤¬
+ * ½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ */
+if (eb_text(&book, &position) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+»²¹Í¤Þ¤Ç¤Ë¡¢EB_Position ·¿¤ÎÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Position_Struct EB_Position;
+
+struct EB_Position_Struct {
+    int page;     /* ¥Ú¡¼¥¸ÈÖ¹æ */
+    int offset;   /* ¥Ú¡¼¥¸Æâ¤Î¥ª¥Õ¥»¥Ã¥È */
+};
+
+
+ +

+¸¡º÷¤·¤Æ¸«¤Ä¤«¤Ã¤¿°ìÃ×¥¨¥ó¥È¥ê¤Î¸«½Ð¤·¤äËÜʸ¤òÆɤ߹þ¤àºÝ¤Ë¤â¡¢°ÌÃÖ¾ðÊó +¤Î»ØÄê¤Ë¤Ï EB_Position ·¿¤¬»È¤ï¤ì¤Þ¤¹¡£ +°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î¾ðÊó¤Ï¡¢´Ø¿ô eb_hit_list() ¤Ë¤è¤Ã¤Æ +EB_Hit ¤È¤¤¤¦·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¤¬¡¢ +EB_Hit ·¿¤Ï¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +
+
+typedef struct {
+    EB_Position heading;   /* ¸«½Ð¤·¤Î°ÌÃÖ */
+    EB_Position text;      /* ËÜʸ¤Î°ÌÃÖ   */
+} EB_Hit;
+
+
+ +

+¤Ä¤Þ¤ê¡¢¤³¤Î¤È¤­¤Î¸«½Ð¤·¤ÈËÜʸ¤Î°ÌÃ֤⡢EB_Position ·¿¤Ç +ɽ¸½¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¹¡£ +

+ +

+¤Ç¤Ï¡¢¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤òÎã¤Ë¤·¤Æ¡¢¥·¡¼¥¯¤ÈÆɤ߹þ¤ß¤ò¹Ô¤Ã¤Æ¤ß¤Þ¤¹¡£ +¤Þ¤º¤Ï¡¢¥·¡¼¥¯¤«¤é¤Ç¤¹¡£ +¤³¤ì¤Ë¤Ï´Ø¿ô eb_seek_text() ¤òÍѤ¤¤Þ¤¹¡£ +¤³¤³¤Ç¤â¤ä¤Ï¤ê¡¢°ÌÃÖ¤Ï EB_Position ·¿¤ÇÅϤ·¤Þ¤¹¡£ +

+ +
+
+if (eb_seek_text(&book, &position) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¥Ç¡¼¥¿¤Î¼ïÎà (¸«½Ð¤·¡¢ËÜʸ ...) ¤Ë¤è¤é¤º¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥·¡¼¥¯¤Ï +¤¹¤Ù¤Æ eb_seek_text() ¤Ç¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎàÊÌ¤Ë +Æɤ߹þ¤ß°ÌÃÖ¤ò³Ð¤¨¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¯¡¢Á´¼ïÎà¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ç¶¦Í­¤¹¤ë +°ÌÃÖ¾ðÊó¤ò°ì¤Ä³Ð¤¨¤Æ¤¤¤ë¤À¤±¤Ç¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ËÜʸ¤òÆɤ߹þ¤ó¤À¸å¤Ç¡¢Ê̤ΰÌÃ֤˥·¡¼¥¯¤·¤Æ¸«½Ð¤·¤òÆɤ߹þ¤à¤È¡¢ +EB_Book ¤ÏËÜʸ¤ÎÆɤ߹þ¤ß°ÌÃ֤Τ³¤È¤Ï˺¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +

+ +

+¤µ¤Æ¡¢¥·¡¼¥¯¤¬½ª¤ï¤Ã¤¿¤é¡¢¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +Æɤ߹þ¤â¤¦¤È¤¹¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¡¢»ÈÍѤ¹¤ë´Ø¿ô¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +¸«½Ð¤·¤À¤±¤Ï eb_read_heading() ¤ò»È¤¤¤Þ¤¹¤¬¡¢¤½¤ì°Ê³°¤Ç¤Ï +eb_read_text() ¤ò»È¤¤¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢eb_read_text() ¤Î»ÈÍÑÎã¤Ç¤¹¡£ +

+ +
+
+#define MAX_LENGTH 1000
+char buffer[MAX_LENGTH + 1];
+ssize_t text_length;
+
+if (eb_read_text(&book, NULL, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+À®¸ù¤¹¤ë¤È¡¢text ¤Ë¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬¡¢ +text_length ¤Ë¤Ï¼ÂºÝ¤ËÆɤ߹þ¤ó¤À¥Ð¥¤¥È¿ô¤¬½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¤ÏºÇÂç¤Ç MAX_LENGTH ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¤µ¤é¤Ë¥Ê¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢buffer ¤Ë¤Ï +¤â¤¦ 1 ¥Ð¥¤¥Èʬ¤ÎÎΰ褬ɬÍפˤʤê¤Þ¤¹¡£ +

+ +

+eb_read_heading() ¤Î¸Æ¤Ó½Ð¤·Êý¤â¡¢eb_read_text() +¤È¤Þ¤Ã¤¿¤¯ÊѤï¤ê¤Þ¤»¤ó¡£ +

+ +
+
+if (eb_read_heading(&book, NULL, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+eb_read_text() ¤ä eb_read_heading() ¤ÇÆɤ߹þ¤ó¤À +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ïʿʸ¤Î¥Æ¥­¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¥Ê¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+printf("%s\n", text);   /* ½ÐÎϤ·¤Æ¤ß¤ë */
+
+
+ +

+Æɤ߹þ¤ß¤¿¤¤¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬Ä¹¤¹¤®¤Æ¡¢eb_read_text() +¤¢¤ë¤¤¤Ï eb_read_heading() ¤ò°ì²ó¸Æ¤Ó½Ð¤·¤¿¤À¤±¤Ç¤ÏÁ´Éô +Æɤ߹þ¤á¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢ºÆÅٸƤӽФ¹¤³¤È¤Ç³¤­¤Î¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉô·Á¼°

+ +

+Á°Àá¤ÎÎã¤Ç¤Ï¡¢Æɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢Ê¿Ê¸¥Æ¥­¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£ +¤±¤ì¤É¤â¡¢CD-ROM ½ñÀÒÆâ¤Ëʿʸ¥Æ¥­¥¹¥È¤Î¥Ç¡¼¥¿¤¬¡¢¤½¤Î¤Þ¤Þ¼ýÏ¿¤µ¤ì¤Æ¤¤¤ë +¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¼ÂºÝ¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÎã¤ò¡¢°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£ +º¸Â¦¤Î¥Ö¥í¥Ã¥¯¤Ï 16 ¿Ê¿ô¤Ç¥À¥ó¥×¤·¤¿ÍͻҤǡ¢±¦Â¦¤Ï¤½¤ì¤ò´ð¤Ë JIS X 0208 +(ÆüËܸì¤Î¤«¤Ê´Á»ú) ¤Îʸ»ú¤òɽ¤·¤Æ¤¤¤ëÉôʬ¤ò [¡¡] ¤È¤¤¤¦·Á¤Ë +ľ¤·¤¿¤â¤Î¤Ç¤¹¡£ +

+ +
+
+     (16¿Ê¿ô¤Ë¤è¤ë¥À¥ó¥×)            (²Äǽ¤ÊÉôʬ¤ò¤«¤Ê´Á»ú¤ËÊÑ´¹)
+1f0900011f41010026321f611f042121   1f0900011f410100[¦²]1f611f04[¡¡]
+212721211f053e704a734a541f0a1f04   [¡§][¡¡]1f05[¾ð][Êó][ÊÔ]1f0a1f04
+214e1f0525372530255e1f04214f2121   [¡Î]1f05[¥·][¥°][¥Þ]1f04[¡Ï][¡¡]
+214a237323692367236d236121212370   [¡Ê][£ó][£é][£ç][£í][£á][¡¡][£ð]
+2372236f236a236523632374214b1f05   [£ò][£ï][£ê][£å][£ã][£ô][¡Ë]1f05
+
+
+ +

+±¦Â¦¤Î¥Ö¥í¥Ã¥¯¤ò¸«¤ë¤È¡¢¤ª¤ª¤è¤½Ê¿Ê¸¤Ë¶á¤¤·Á¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬¼ý¤á¤é¤ì¤Æ +¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¤¬¡¢¤È¤³¤í¤É¤³¤í¤Ë¡Öʸ»ú¡×¤Ç¤Ï¤Ê¤¤¥Ç¡¼¥¿¤â´Þ¤Þ¤ì¤Æ +¤¤¤Þ¤¹¡£ +

+ +

+ʸ»ú¤Ç¤Ï¤Ê¤¤Éôʬ¤Ï¡¢¤¹¤Ù¤Æ¡Ö¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¡×¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¤¹¡£ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤È¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò½ÐÎϤ¹¤ëºÝ¤Ë¡¢²þ¹Ô¤Î¶Ø»ß¤ä +¶¯Ä´½¤¾þ¤È¤¤¤Ã¤¿À©¸æ¾ðÊó¤òÅÁ¤¨¤ë¤¿¤á¤Î»ÅÁȤߤǤ¹¡£ +16 ¿Ê¿ô¤Î 1f ¤¬¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î³«»Ï¤ò°ÕÌ£¤·¤Þ¤¹¡£ +

+ +

+»²¹Í¤Þ¤Ç¤Ë¡¢¾å¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ç»È¤ï¤ì¤Æ¤¤¤ë¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ò +¤¹¤Ù¤ÆÎóµó¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
1f09 0001
+
+»ú²¼¤² (¥¤¥ó¥Ç¥ó¥È) ¤ÎÎ̤ò»ØÄê¡£ +(°ú¿ô¤¬ 0001 ¤Ê¤Î¤Ç¡¢»ú²¼¤²ÎÌ¤Ï 1¡£) +
1f41 0100
+
+¸¡º÷¥­¡¼¤Î³«»Ï¡£ +(°ú¿ô 0100 ¤Î°ÕÌ£¤Ë¤Ä¤¤¤Æ¤Ï¡¢JIS X 4081 ¤Ëµ­½Ò¤¬¤Ê¤¤¤¿¤áÉÔÌÀ¡£) +
1f61
+
+¸¡º÷¥­¡¼¤Î½ªÎ»¡£ +
1f04
+
+Ⱦ³Ñɽ¼¨¤Î³«»Ï¡£ +
1f05
+
+Ⱦ³Ñɽ¼¨¤Î½ªÎ»¡£ +
1f0a
+
+²þ¹Ô +
+ +

+Á°Àá¤Î¥×¥í¥°¥é¥à¤Ç¡¢Æɤ߹þ¤ó¤À¥Ç¡¼¥¿¤¬Ê¿Ê¸¥Æ¥­¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤Î¤Ï¡¢ +¼Â¤Ï EB ¥é¥¤¥Ö¥é¥ê¤¬²Ã¹©½èÍý¤ò¤·¤¿¤«¤é¤Ç¤¹¡£ +¤Ä¤Þ¤ê¡¢¡Ö²þ¹Ô¡×¤Î¤è¤¦¤Ëʿʸ¥Æ¥­¥¹¥È¤Ç¤âɽ¸½²Äǽ¤Ê¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹ +¤Ë¤Ä¤¤¤Æ¤Ï½èÍý¤·¡¢¡Ö¸¡º÷¥­¡¼¤Î³«»Ï¡×¤Î¤è¤¦¤Ëɽ¸½¤Ç¤­¤Ê¤¤¤â¤Î¤Ë¤Ä¤¤¤Æ¤Ï +̵»ë¤¹¤ë¤è¤¦¤Ë¤·¤Æ¡¢Ê¿Ê¸¥Æ¥­¥¹¥È¤Ë¤Ê¤ë¤è¤¦¤Ë²Ã¹©¤·¤Æ¤¤¤¿¤Î¤Ç¤¹¡£ +

+ +

+¤·¤«¤·¡¢Ê¿Ê¸¥Æ¥­¥¹¥È¤Ïɽ¸½ÎϤ¬Ë³¤·¤¤¤Î¤Ç¡¢¸µ¤Î¥Ç¡¼¥¿¤Ë¤Ï´Þ¤Þ¤ì¤Æ¤¤¤ë +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¿¤¯¤ò̵»ë¤¹¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +HTML ¤Î¤è¤¦¤Ë¡¢¤â¤Ã¤Èɽ¸½ÎϤΤ¢¤ë·Á¼°¤Ç½ÐÎϤ¹¤ë¤Ê¤é¡¢Ìµ»ë¤»¤º¤ËºÑ¤à +¥·¡¼¥±¥ó¥¹¤òÁý¤ä¤»¤½¤¦¤Ç¤¹¡£ +¤Ç¤Ï¡¢HTML ·Á¼°¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤¬ EB ¥é¥¤¥Ö¥é¥ê¤ËÍÑ°Õ¤µ¤ì¤Æ +¤¤¤ë¤«¤È¤¤¤¦¤È¡¢»ÄÇ°¤Ê¤¬¤é¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¤½¤ÎÂå¤ï¤ê¤Ë¡¢¤«¤Ê¤ê¼ê´Ö¤Ï¤«¤«¤ê¤Þ¤¹¤¬¡¢¼«Í³¤Ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò²Ã¹©¤Ç¤­¤ë +¤¿¤á¤Î»ÅÁȤߤ¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +¤½¤ì¤¬¡¢¼¡¤ÎÀá¤ÇÀâÌÀ¤¹¤ë ¥Õ¥Ã¥¯ (hook) ¤Ç¤¹¡£ +¥Õ¥Ã¥¯¤ò»È¤¦¤³¤È¤Ç¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò½ÀÆð¤Ë²Ã¹©¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

¥Õ¥Ã¥¯

+ +

+Æä˲¿¤â»ØÄꤷ¤Ê¤±¤ì¤Ð¡¢eb_read_text(), +eb_read_heading() ¤¬ÊÖ¤¹¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î²Ã¹©¤Ï¡¢¤¢¤é¤«¤¸¤á +·è¤á¤é¤ì¤¿Ä̤ê¤ÎÊýË¡¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¡Ö²þ¹Ô¡×¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¤Ï¡¢\n ¤ò +½ñ¤­¹þ¤à¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ (hook) ¤ò»È¤¦¤È¡¢¤³¤¦¤·¤¿²Ã¹©ÊýË¡¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¥Õ¥Ã¥¯¤Ï¡¢¤¢¤é¤«¤¸¤á·è¤á¤é¤ì¤¿¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤ËÂФ·¤Æ¡¢¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿ +¤¹¤ë¤³¤È¤ÇÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£ +¥Õ¥Ã¥¯´Ø¿ô¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤È¡¢eb_read_text() ¤ä +eb_read_heading() ¤Ï¡¢¤¢¤é¤«¤¸¤á·è¤Þ¤Ã¤¿¤ä¤êÊý¤Ç¥Ç¡¼¥¿¤ò +½ñ¤­¹þ¤àÂå¤ï¤ê¤Ë¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +¸Æ¤Ó½Ð¤µ¤ì¤¿¥Õ¥Ã¥¯´Ø¿ô¤¬¥Ç¡¼¥¿¤Î½ñ¤­¹þ¤ß½èÍý¤ò¹Ô¤¦¤³¤È¤Ç¡¢ +eb_read_text() ¤ä eb_read_heading() ¤«¤éÊÖ¤ë +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬ÊѲ½¤¹¤ë¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢Â¿¿ô¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +³Æ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¤Ï¡¢¤½¤ì¤¾¤ìÀìÍѤ˥ե寤¬ÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¡¢ +¤½¤ì°Ê³°¤Ë¤âʸ»ú¤Î¤¿¤á¤Î¥Õ¥Ã¥¯¤¬Â¸ºß¤·¤Þ¤¹¡£ +(¤É¤Î¤è¤¦¤Ê¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤¬¤¢¤ë¤«¡¢¾Ü¤·¤¯¤Ï +¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+¤½¤ì¤¾¤ì¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃ֤ϡ¢¥Õ¥Ã¥¯¥³¡¼¥É (hook code) ¤È +¸Æ¤Ð¤ì¤ë¥³¡¼¥ÉÃͤǼ±Ê̤µ¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢Á°½Ò¤Î¡Ö²þ¹Ô¡×¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂбþ¤¹¤ë¥Õ¥Ã¥¯¥³¡¼¥É +¤Ï EB_HOOK_NEWLINE ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¥Õ¥Ã¥¯¤ò°·¤¦¤Ë¤Ï¡¢¥Õ¥Ã¥¯¤Î½¸¹ç¤Ç¤¢¤ë +¥Õ¥Ã¥¯¥»¥Ã¥È (hook set) ¤òÍÑ°Õ¤·¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤ÇÍøÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤ËÂФ·¤Æ¡¢¤É¤Î +¥Õ¥Ã¥¯´Ø¿ô¤ò»È¤¦¤Î¤«¤òµ­Ï¿¤¹¤ë¤¿¤á¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£ +

+ +

+¤Ç¤Ï¡¢¼ÂºÝ¤Ë¤É¤¦¤ä¤Ã¤Æ¥Õ¥Ã¥¯¥»¥Ã¥È¤ò°·¤¦¤Î¤«¡¢ÀâÌÀ¤·¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£ +¥Õ¥Ã¥¯¥»¥Ã¥È¤Ï EB_Hookset ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Çɽ¤·¤Þ¤¹¤Î¤Ç¡¢ +¤Þ¤º EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤·¤Þ¤¹¡£ +

+ +
+
+EB_Hookset hookset;
+
+
+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È +¤ÈƱÍͤˡ¢»ÈÍÑÁ°¤Ëɬ¤º½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+eb_initialize_hookset(&hookset);
+
+
+ +

+¼ÂºÝ¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç eb_write_text_string() ¤È¤¤¤¦ +´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢<br> ¤È¤¤¤¦Ê¸»úÎó¤ò¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤È¤·¤Æ½ñ¤­¹þ¤ó¤Ç¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code
+hook_newline(EB_Book *book, EB_Appendix *appendix, void *container,
+    EB_Hook_Code code, int argc, const unsigned int *argv) {
+    eb_write_text_string(book, "<br>");
+    return 0;
+}
+
+
+ +

+´Ø¿ô eb_set_hook() ¤òÍѤ¤¤ë¤³¤È¤Ç¡¢¤³¤Î¥Õ¥Ã¥¯´Ø¿ô¤ò +¥Õ¥Ã¥¯¥»¥Ã¥È¤ËÅÐÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤Þ¤º EB_Hook ¤È¤¤¤¦·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¤¤Ã¤¿¤ó +¥Õ¥Ã¥¯¥³¡¼¥É¤È¥Õ¥Ã¥¯´Ø¿ô¤òÀßÄꤷ¡¢¤½¤ì¤ò eb_set_hook() ¤ò +ÅϤ·¤Æ¤ä¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¤³¤³¤Ç¤Ï¡¢¡Ö²þ¹Ô¡×¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¡¢¾åµ­¤Î¥Õ¥Ã¥¯´Ø¿ô +¤òÅÐÏ¿¤·¤Æ¤ß¤Þ¤¹¡£ +

+ +
+
+EB_Hook hook;
+
+hook.code = EB_HOOK_NEWLINE;   # ¥Õ¥Ã¥¯¥³¡¼¥É¤ò¥»¥Ã¥È
+hook.function = hook_newline;  # ¥Õ¥Ã¥¯´Ø¿ô¤ò¥»¥Ã¥È
+eb_set_hook(&hookset, &hook);
+
+
+ +

+¤Ê¤ª¡¢Æ±¤¸¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ (¥Õ¥Ã¥¯¥³¡¼¥É) ¤ËÊ£¿ô²ó¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤â¡¢ +Í­¸ú¤Ë¤Ê¤ë¤Î¤ÏºÇ¸å¤ËÅÐÏ¿¤·¤¿¤â¤Î¤À¤±¤Ç¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ NULL ¤ò»ØÄꤹ¤ë¤È¡¢ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥Õ¥Ã¥¯¤¬ +²ò½ü¤µ¤ì¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_set_hooks() (ºÇ¸å¤Ë s ¤¬ÉÕ¤¯) ¤ò»È¤¨¤Ð¡¢ +Ê£¿ô¤Î¥Õ¥Ã¥¯´Ø¿ô¤ò°ìÅÙ¤ËÅÐÏ¿¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+static const EB_Hook hooks[] = {
+    {EB_HOOK_NEWLINE,        hook_newline},
+    {EB_HOOK_SET_INDENT,     hook_set_indent},
+    {EB_HOOK_WIDE_JISX0208,  hook_set_jisx0208},
+    {EB_HOOK_NULL,           NULL}
+};
+
+eb_set_hooks(&hookset, &hooks);
+
+
+ +

+ÇÛÎó¤ÎËöÈø¤òÌÀ¼¨¤¹¤ë¤¿¤á¤Ë¡¢EB_HOOK_NULL ¤È¤¤¤¦Æüì¤Ê +¥Õ¥Ã¥¯¥³¡¼¥É¤òÃÖ¤­¤Þ¤¹¡£ +¤³¤ÎÅÀ¤âÃí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¤³¤¦¤·¤Æ¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤¿¥Õ¥Ã¥¯¥»¥Ã¥È¤ò¡¢eb_raed_text(), +eb_raed_heading() ¤Ø¤Î°ú¿ô¤È¤·¤ÆÅϤ·¤Þ¤¹¡£ +Á°Àá¤Þ¤Ç¤ÎÎã¤Ç¤Ï¡¢NULL ¤òÅϤ·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢Âå¤ï¤ê¤Ë +&hookset ¤òÅϤ·¤Æ¤ß¤Þ¤¹¡£ +

+ +
+
+if (eb_read_text(&book, NULL, &hookset, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¤³¤ì¤Ë¤è¤Ã¤Æ¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë²þ¹Ô¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬¤¢¤ë¤È¡¢ +\n ¤ÎÂå¤ï¤ê¤Ë <br> ¤È¤¤¤¦Ê¸»úÎó¤¬ +½ñ¤­¹þ¤Þ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢ +eb_finalize_hookset() ¤ò¸Æ¤ó¤Ç¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +

+ +
+
+eb_finalize_hookset(&hookset);
+
+
+ + +

¥Õ¥Ã¥¯¤Èʸ»ú¥³¡¼¥É¤Î´Ø·¸

+ +

+Á°Àá¤Ç¤Ï¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤òÎã¤Ë¤È¤ê¤Þ¤·¤¿¤¬¡¢¤³¤Î¾ +¤Ë¤â¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ïʸ»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_HOOK_ISO8859_1
+
+ISO 8859-1 (¥é¥Æ¥óʸ»ú 1) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£¤¿¤À¤·À©¸æʸ»ú¤ò½ü¤­¤Þ¤¹¡£ +°ú¿ô¤È¤·¤Æ¡¢ISO 8859-1 ¤Îʸ»úÈֹ椬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_NARROW_JISX0208
+
+Ⱦ³Ñ¤Î JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢ÆüËܸì EUC ¤Çɽ¸½¤·¤¿¾ì¹ç¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_WIDE_JISX0208
+
+Á´³Ñ¤Î JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢ÆüËܸì EUC ¤Çɽ¸½¤·¤¿¾ì¹ç¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_GB2312
+
+GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ʸ»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢Ãæ¹ñ¸ì EUC ¤Çɽ¸½¤·¤¿¾ì¹ç¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_NARROW_FONT
+
+Ⱦ³Ñ¤Î³°»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢³°»ú¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ + +
EB_HOOK_WIDE_FONT
+
+Ⱦ³Ñ¤Î³°»ú¤Ø¤Î¥Õ¥Ã¥¯¡£ +°ú¿ô¤È¤·¤Æ¡¢³°»ú¤Îʸ»úÈֹ椬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£ +
+ +

+¤¤¤º¤ì¤â¡¢¤½¤Îʸ»ú¤¬¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë¸½¤ì¤ëÅ٤ˡ¢¥Õ¥Ã¥¯´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì +¤Þ¤¹¡£ +

+ +

+¾å¤Îµ­½Ò¤ò¸«¤Æ¤âʬ¤«¤ë¤è¤¦¤Ë¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤ëʸ»úÈÖ¹æ¤Ï¡¢½ñÀÒ¤Îʸ»ú +¥³¡¼¥É¤Ë±þ¤¸¤Æ¡¢ISO 8859-1, ÆüËܸì EUC¡¢Ãæ¹ñ¸ì EUC ¤Î¤¤¤º¤ì¤«¤Îʸ»ú¥³¡¼¥É +¤Çɽ¸½¤µ¤ì¤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Ê¤±¤ì¤Ð¡¢¤½¤Îʸ»úÈֹ椬¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ¤½¤Î¤Þ¤Þ +½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤â¤·¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê¤ÎÆâÉô¥³¡¼¥É¤È¤Ï°Û¤Ê¤ë +ʸ»ú¥³¡¼¥É¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Î¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¡¢ +¥³¡¼¥ÉÊÑ´¹½èÍý¤ò¤¹¤ë¤Î¤â¼ê¤Ç¤¹¡£ +¤¿¤À¤·¡¢°ìʸ»úËè¤Ë¥Õ¥Ã¥¯´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¤Î¤Ç¡¢Áê±þ¤ÎÉé²Ù¤¬¤«¤«¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢EBXA-C ¤ò°·¤¦¤Ë¤Ï¡¢ÆÃÊ̤ʽèÍý¤¬É¬ÍפǤ¹¡£ +EBXA-C ¤Ç¤Ï¡¢Ê¸»ú¥³¡¼¥É¤È¤·¤Æ GB 2312 ¤È JIS X 0208 ¤¬»È¤ï¤ì¤Þ¤¹¤¬ +(¡Öʸ»ú¥³¡¼¥É¡× ¤ò»²¾È¤Î¤³¤È)¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë¤è¤ëɸ½à¤Î½èÍý +¤Ç¤Ï¡¢¤É¤Á¤é¤â 0xa1a1 ¡Á 0xfefe ¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤Æ¾×Æͤ¹¤ë¤¿¤á¡¢ºÇÄã +¤Ç¤â¤É¤Á¤é¤«°ìÊý¤ò¥Õ¥Ã¥¯¤·¤Æʸ»ú¤Îɽ¸½ÊýË¡¤òÊѤ¨¤Ê¤¤¤È¡¢Àµ¤·¤¯½ÐÎÏ +¤Ç¤­¤Þ¤»¤ó¡£ +

+ + +

¥¯¥í¥¹¸¡º÷¤Î¸¡º÷·ë²Ì

+ +

+¤¹¤Ç¤Ë ¡Ö¸¡º÷¡× ¤Î¾Ï¤Ç½Ò¤Ù¤¿¤è¤¦¤Ë¡¢CD-ROM ½ñÀÒ +¤Ë¤ÏÁ°Êý°ìÃ׸¡º÷¡¢¸åÊý°ìÃ׸¡º÷¤È¤¤¤Ã¤¿Ê£¿ô¤Î¸¡º÷¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç¸¡º÷¤ò¹Ô¤¦¤È¡¢¤É¤Î¸¡º÷¥á¥½¥Ã¥É¤Ç¤â¡¢°ìÃפ·¤¿¥¨¥ó¥È¥ê¤Î +¾ðÊó¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê EB_Hit ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ +¼õ¤±¼è¤ê¤Þ¤¹¡£ +

+ +
+
+typedef struct {
+    EB_Position heading;   /* ¸«½Ð¤·¤Î°ÌÃÖ */
+    EB_Position text;      /* ËÜʸ¤Î°ÌÃÖ   */
+} EB_Hit;
+
+
+ +

+¤·¤«¤·¥¯¥í¥¹¸¡º÷¤Ç¤Ï¡¢EB_Hit ¤Î¸«½Ð¤·¤ÈËÜʸ¤Î°ÌÃÖ¤Ï +¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¸«½Ð¤·¤ÈËÜʸ¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤Ë¤Ï¡¢Â¾¤Î¸¡º÷¥á¥½¥Ã¥É +¤Î¤è¤¦¤Ë¤½¤ì¤¾¤ì¤Î°ÌÃ֤˥·¡¼¥¯¤·¤ÆÆɤ߹þ¤à¤È¤¤¤¦¤ä¤êÊý¤Ç¤Ï¤¦¤Þ¤¯ +¤¤¤­¤Þ¤»¤ó¡£ +

+ +

+°Ê²¼¤Ë¡¢¥¯¥í¥¹¸¡º÷¤Î¸«½Ð¤·¤ÈËÜʸ¤òÆɤ߹þ¤à¥×¥í¥°¥é¥àÎã¤ò¼¨¤·¤Þ¤¹¡£ +

+ +
+
+/* ¸«½Ð¤·°ÌÃ֤ؤΥ·¡¼¥¯¤ò¹Ô¤¦ */
+if (eb_seek_text(&book, &hits[0].heading) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+/* ¸«½Ð¤·¤ÎÆɤ߹þ¤ß¤ò¹Ô¤¦ */
+if (eb_read_heading(&book, NULL, NULL, NULL, MAX_LENGTH,
+    heading, &heading_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+/* Àè¤Û¤ÉÆɤ߹þ¤ó¤À¸«½Ð¤·¤Î¡¢¼¡¤ÎÉôʬ¤ØÈô¤Ö */
+if (eb_forward_heading(&book) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+/* ËÜʸ¤ÎÆɤ߹þ¤ß¤ò¹Ô¤¦ */
+if (eb_read_heading(&book, NULL, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¥¯¥í¥¹¸¡º÷¤Ç¤â¡¢¸«½Ð¤·¤ÎÆâÍƤòÆɤ߹þ¤àÊýË¡¤Ï¾¤Î¸¡º÷¥á¥½¥Ã¥É¤ÈÊѤï¤ê +¤Ï¤Ê¤¯¡¢eb_read_heading() ¤ò»È¤¤¤Þ¤¹¡£ +ÊѤï¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ËÜʸ¤ÎÆɤ߹þ¤ß¤Ç¤¹¡£ +eb_read_text() ¤Ç¤Ï¤Ê¤¯¡¢eb_read_heading() +¤ò»È¤¤¤Þ¤¹¡£ +¸«½Ð¤·¤òÆɤ߹þ¤à¤¿¤á¤Î´Ø¿ô eb_read_heading() ¤ò¡¢ËÜʸ¤ò +Æɤ߹þ¤à¤¿¤á¤Ë¸Æ¤Ö¤È¤¤¤¦¤Î¤Ï´ñ̯¤ÊÏäǤ¹¤¬¡¢¤³¤ì¤Ï¥¯¥í¥¹¸¡º÷¤ÎËÜʸ¤¬ +¸«½Ð¤·¤ÈƱ¤¸·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¤Ç¤¹¡£ +Ä̾¸«½Ð¤·¤Ï°ì¹ÔÄøÅÙ¤·¤«½ñ¤«¤ì¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¼ÂºÝ¤Î¤È¤³¤í¥¯¥í¥¹¸¡º÷ +¤ÎËÜʸ¤â°ì¹ÔÄøÅÙ¤·¤«¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+¤Þ¤¿¡¢ËÜʸ¤Ï¸«½Ð¤·¤Î¤¹¤°¸å¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤¿¤á¡¢¾åµ­¤Î¤è¤¦¤Ë¸«½Ð¤·¤ò +Æɤ߹þ¤ó¤À¸å¤Ç eb_forward_heading() ¤È¤¤¤¦´Ø¿ô¤ò¸Æ¤Ó¡¢ +¤½¤Î¸å¤ÇËÜʸ¤òÆɤ߹þ¤à¤¿¤á¤Ë¤â¤¦°ìÅÙ eb_read_heading() ¤ò +¸Æ¤Ö¤È¤¤¤¦ÊѤï¤Ã¤¿¼ê½ç¤òƧ¤ß¤Þ¤¹¡£ +

+ +

+ËÜʸ¤À¤±¤¬É¬ÍפǸ«½Ð¤·¤¬Íפé¤Ê¤±¤ì¤Ð¡¢¥·¡¼¥¯Ä¾¸å¤Ë +eb_forward_heading() ¤ò¸Æ¤Ö¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¤½¤Î¸å¤Ç eb_read_heading() ¤ò¸Æ¤Ö¤È¡¢ËÜʸ¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ + +

Ãøºî¸¢É½¼¨

+ +

+Àè¤Ëµ­¤·¤¿¤è¤¦¤Ë¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤Ï²¿¼ïÎफ¤¢¤ê¡¢¤½¤ÎÃæ¤Ë +Ãøºî¸¢É½¼¨ (copyright notice) ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +̾Á°¤ÎÄ̤ꡢÃøºî¸¢É½¼¨¤Ë´Ø¤¹¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò¼ý¤á¤¿¤â¤Î¤Ç¤¹¡£ +

+ +

+°ìÈ̤ˡ¢Ãøºî¸¢É½¼¨¤ÏËÜʸ¤È¤Ï¤Þ¤Ã¤¿¤¯ÆÈΩ¤·¤¿¥Ç¡¼¥¿¤È¤·¤ÆÍÑ°Õ¤µ¤ì¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢ËÜʸ¤òÀèƬ¤«¤éËöÈø¤Þ¤ÇÆɤó¤Ç¤ß¤Æ¤â¡¢Ãøºî¸¢É½¼¨¤Ï¤É¤³¤Ë¤â +¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£ +

+ +

+ÁªÂòÃæ¤ÎÉûËܤˤĤ¤¤Æ¡¢Ãøºî¸¢É½¼¨¤Î³«»Ï°ÌÃÖ¤òÃΤë¤Ë¤Ï +eb_copyright() ¤ò»È¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ÉûËܤ¬Ãøºî¸¢É½¼¨¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð +EB_ERR_NO_SUCH_SEARCH ¤òÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢Ãøºî¸¢É½¼¨¤Î̵ͭ¤â +Ʊ»þ¤Ëʬ¤«¤ê¤Þ¤¹¡£ +(³«»Ï°ÌÃ֤ϼèÆÀ¤»¤º¤Ë¡¢Í­Ìµ¤À¤±¤òÄ´¤Ù¤¿¤¤¤È¤­¤Ï¡¢ +eb_have_copyright() ¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£) +

+ +
+
+EB_Position position;
+EB_Error_Code err;
+
+err = eb_copyright(&book, &position);
+if (err == EB_ERR_NO_SUCH_SEARCH) {
+    /* Ãøºî¸¢É½¼¨¤Ï¤Ê¤¤ */
+} else if (err != EB_SUCCESS) {
+    /* ¤½¤ì°Ê³°¤Î¥¨¥é¡¼ */
+   return;
+}
+
+
+ +

+¸å¤Ï¡¢ÆÀ¤é¤ì¤¿°ÌÃÖ (position) ¤Ë¥·¡¼¥¯¤·¤Æ¡¢ +eb_read_text() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ + +

¥á¥Ë¥å¡¼

+ +

+ËÜʸ¤È¤ÏÆÈΩ¤·¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ¤Ï¡¢Ãøºî¸¢É½¼¨¤Î¾¤Ë +¥á¥Ë¥å¡¼ (menu) ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +¥á¥Ë¥å¡¼¤Ï¡¢¼ç¤ËËÜʸ¤ÎÊä½õ¤È¤Ê¤ë¥Ç¡¼¥¿¤ò¼ýÏ¿¤·¤Æ¤¤¤Þ¤¹¡£ +ÂåɽŪ¤Ê¤â¤Î¤Ç¤Ï¡¢¡ÖÁ°½ñ¤­ (½ø)¡×¡ÖËÞÎã¡×¤È¤¤¤Ã¤¿¤â¤Î¤¬µó¤²¤é¤ì¤Þ¤¹¡£ +

+ +

+¥á¥Ë¥å¡¼¤Ç¤Ï¡ÖÊ̹àÌÜ»²¾È¡×¤È¤¤¤¦¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ò¿ÍѤ·¤Æ¡¢³¬ÁØŪ +¤Ê¹½Â¤¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤¬°ìÈÌŪ¤Ç¤¹¡£ +¤³¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¤Ï¡¢»²¾ÈÀè¤Î¥Æ¥­¥¹¥È¤Î°ÌÃÖ¤¬µ­Ï¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢¤¢¤ë CD-ROM ½ñÀҤΥá¥Ë¥å¡¼¤¬¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤È¤·¤Þ¤¹¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢¥á¥Ë¥å¡¼¤Ë¤Ï 3 ¤Ä¤Î¹àÌܤ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+ * ½øʸ
+ * ɽµ­¤Ë¤Ä¤¤¤Æ
+ * ±üÉÕ
+
+
+ +

+¥á¥Ë¥å¡¼¤Î¤½¤ì¤¾¤ì¤Î¹àÌܤˤϡ¢»²¾ÈÀ褬¤¢¤ê¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉôɽ¸½¤Ç¤Ï¡¢¡Ö½øʸ¡×¡Öɽµ­¤Ë¤Ä¤¤¤Æ¡×¡Ö±üÉաפΠ+¤½¤ì¤¾¤ì¤Îʸ»úÎó¤ÎÁ°¸å¤ËÊ̹àÌÜ»²¾È³«»Ï¤ª¤è¤Ó½ªÎ»¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬ +ÉÕ¤¤¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +»ë³ÐŪ¤Ëʬ¤«¤ë¤è¤¦¤Ëµ­¤¹¤È¡¢¼¡¤Î¤è¤¦¤Ê·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+ * <Ê̹àÌÜ»²¾È³«»Ï¥·¡¼¥±¥ó¥¹> "½øʸ" <Ê̹àÌÜ»²¾È½ªÎ»¥·¡¼¥±¥ó¥¹>
+ * <Ê̹àÌÜ»²¾È³«»Ï¥·¡¼¥±¥ó¥¹> "ɽµ­" <Ê̹àÌÜ»²¾È½ªÎ»¥·¡¼¥±¥ó¥¹>
+ * <Ê̹àÌÜ»²¾È³«»Ï¥·¡¼¥±¥ó¥¹> "±üÉÕ" <Ê̹àÌÜ»²¾È½ªÎ»¥·¡¼¥±¥ó¥¹>
+
+
+ +

+HTML ¤Î½ñ¤­Êý¤òÃΤäƤ¤¤ë¤Ê¤é¡¢a ¥¿¥°¤È¸À¤¨¤Ðʬ¤«¤ë¤Î¤Ç¤Ï +¤Ê¤¤¤«¤È»×¤¤¤Þ¤¹¡£ +

+ +
+
+<a href="./index.html">EB ¥é¥¤¥Ö¥é¥ê¤Î¥Û¡¼¥à¥Ú¡¼¥¸</a>
+
+
+ +

+¤¿¤À¤·¡¢»²¾ÈÀè¤Î°ÌÃÖ¾ðÊó¤Ï½ªÎ»¥·¡¼¥±¥ó¥¹Â¦¤Ëµ­ºÜ¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎÅÀ¤Ï +HTML ¤È¤ÏµÕ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¼Ø­¤Ç¤¹¤¬¡¢ÊÌ°ÌÃÖ»²¾È¤Ï¥á¥Ë¥å¡¼¤À¤±¤Ç¤Ê¤¯¡¢ËÜʸ¤Ç¤â°ìÈÌŪ¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ +

+ +

+Ê̹àÌÜ»²¾È³«»Ï¤ª¤è¤Ó½ªÎ»¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¡¢¤½¤ì¤¾¤ì¥Õ¥Ã¥¯ +EB_HOOK_BEGIN_REFERENCE ¤È EB_HOOK_END_REFERENCE +¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +»²¾ÈÀè¤Î°ÌÃÖ¾ðÊó¤Ï¡¢½ªÎ»¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯´Ø¿ô¤ËÂФ·¤Æ¡¢°ú¿ô¤È¤·¤Æ +ÅϤµ¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢EB_HOOK_END_REFERENCE ¤Ø¤Î¥Õ¥Ã¥¯´Ø¿ô¤ÎËÁƬ¤Ç¤Ï¡¢ +¼¡¤Î¤è¤¦¤Ë¤¹¤ë¤ÈÎɤ¤¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+EB_Error_Code
+hook_end_ref(EB_Book *book, EB_Appendix *appendix, void *container,
+    EB_Hook_Code code, int argc, const unsigned int *argv)
+{
+    EB_Position position;
+
+    position.page = argv[1];    # »²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ
+    position.offset = argv[2];  # »²¾ÈÀè¤Î¥ª¥Õ¥»¥Ã¥È
+
+
+ +

+»²¾ÈÀè¤Ï¡¢¥á¥Ë¥å¡¼¤ÎÂè 2 ÁؤȤʤê¤Þ¤¹¡£ +¤³¤Î½ñÀҤΡֱüÉաפλ²¾ÈÀè¤òé¤Ã¤¿¤é¡¢¼¡¤Î¤è¤¦¤Êɽµ­¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£ +

+ +
+
+¡û¡ûƲ½ÐÈÇ¼Ò ¿·¹ñ¸ì¼­Åµ Âè 2 ÈÇ (EPWING ÈÇ)
+Âè 1 ÈÇ È¯¹Ô 1988ǯ 2·î
+Âè 2 ÈÇ È¯¹Ô 1999ǯ 11·î
+Âè 2 ÈÇ (EPWING ÈÇ) ȯ¹Ô 2000ǯ 2·î
+
+
+ +

+ƱÍͤˡֽøʸ¡×¡Öɽµ­¤ËÉÕ¤¤¤Æ¡×¤Î»²¾ÈÀè¤Ë¤Ä¤¤¤Æ¤â¡¢¤³¤¦¤·¤¿Ê¸¾Ï¥Ç¡¼¥¿ +¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¡£ +¿Þ¼¨¤¹¤ë¤È¡¢¥á¥Ë¥å¡¼¤Î³¬Áؤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¤
+Â裱ÁØ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨½¨¡¨¡¨¥
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨®¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¶¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¯
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨­
+¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¿¨¡¨¡¨¤¡¡¨£¨¡¨¡¨¿¨¡¨¡¨¤¡¡¨£¨¡¨¡¨¿¨¡¨¡¨¤
+Â裲ÁØ¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢¡¡¨¢¥á¥Ë¥å¡¼¡¡¨¢
+¡¡¡¡¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¥¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¥¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¤³¤Î¼­½ñ¤ÎÎã¤Ç¤Ï¡¢¥á¥Ë¥å¡¼¤Ï¤³¤³¤Ç½ª¤ï¤ê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢½ñÀҤˤè¤Ã¤Æ¤Ï +¤µ¤é¤ËÂè 3 ÁØ¡¢Âè 4 Áؤȳ¤¯¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢¥á¥Ë¥å¡¼Á´ÂΤ¬¶Ñ°ì¤Î³¬ÁØ¿ô¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¥á¥Ë¥å¡¼¤Î»²¾ÈÀ褬ËÜʸ¤äÃøºî¸¢É½¼¨¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ +

+ +

+ÁªÂòÃæ¤ÎÉûËܤˤĤ¤¤Æ¡¢(Âè 1 ÁؤÎ) ¥á¥Ë¥å¡¼¤Î³«»Ï°ÌÃÖ ¤òÃΤë¤Ë¤Ï +eb_menu() ¤ò»È¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ÉûËܤ¬¥á¥Ë¥å¡¼¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð +EB_ERR_NO_SUCH_SEARCH ¤òÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢¥á¥Ë¥å¡¼¤Î̵ͭ¤âƱ»þ¤Ë +ʬ¤«¤ê¤Þ¤¹¡£ +(³«»Ï°ÌÃ֤ϼèÆÀ¤»¤º¤Ë¡¢Í­Ìµ¤À¤±¤òÄ´¤Ù¤¿¤¤¤È¤­¤Ï¡¢ +eb_have_menu() ¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£) +

+ +
+
+EB_Position position;
+EB_Error_Code err;
+
+err = eb_menu(&book, &position);
+if (err == EB_ERR_NO_SUCH_SEARCH) {
+    /* ¥á¥Ë¥å¡¼¤Ï¤Ê¤¤ */
+} else if (err != EB_SUCCESS) {
+    /* ¤½¤ì°Ê³°¤Î¥¨¥é¡¼ */
+   return;
+}
+
+
+ +

+¸å¤Ï¡¢ÆÀ¤é¤ì¤¿°ÌÃÖ (position) ¤Ë¥·¡¼¥¯¤·¤Æ¡¢ +eb_read_text() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ + +

Ê£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷

+ +

+¡ÖÊ£¹ç¸¡º÷¡×(¡ÖÊ£¹ç¸¡º÷¡× ¤ò»²¾È¤Î¤³¤È) ¤Î¤È¤³¤í¤Ç½Ò¤Ù¤¿¤è¤¦¤Ë¡¢ +Ê£¹ç¸¡º÷¤Ç¤Ï¡¢ÆþÎϸì¤Ë ¸õÊä°ìÍ÷ (candidates) ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë +¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤ò¤¢¤é¤«¤¸¤áÎóµó¤·¤Æ¤ª¤­¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥æ¡¼¥¶¤ËÁªÂò¤µ¤»¤ë»ÅÁȤߤǤ¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢¿Í̾¤ò¸¡º÷¤¹¤ë¤Î¤¿¤á¤Ë¡¢¼¡¤Î¤è¤¦¤ÊÊ£¹ç¸¡º÷¤¬¤¢¤Ã¤¿¤È¤·¤Þ¤¹¡£ +

+ +
+
+ÆþÎϸì 0: ¹ñ¡¦ÃÏ°è
+ÆþÎϸì 1: »þÂå
+ÆþÎϸì 2: À­ÊÌ
+ÆþÎϸì 3: ¥­¡¼¥ï¡¼¥É
+ÆþÎϸì 4: ¥­¡¼¥ï¡¼¥É
+
+
+ +

+¤³¤Î¤¦¤Á¡¢ÆþÎϸì 3 ¤Î¡ÖÀ­Ê̡פˤϡ¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤Ï¡ÖÃˡפȡֽ÷¡× +¤Î 2 ¤Ä¤·¤«¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +¤³¤Î¤è¤¦¤Ë¡¢ÆþÎϸì¤È¤·¤ÆÍ­¸ú¤Ê¸ì¤¬¸Â¤é¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¡¢¸õÊä°ìÍ÷¤¬ÍÑ°Õ +¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¸õÊä°ìÍ÷¤Ï¸¡º÷¤Î¤¿¤á¤Î¥Ç¡¼¥¿¤Ç¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢ÆâÉô¹½Â¤¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤½¤Î¤â¤Î¤Ç¤¹¡£ +¥æ¡¼¥¶¤ËÂФ·¤Æ¸õÊä¤òÎóµ­¤·¤¿¼¨¤·¤¿¥Æ¥­¥¹¥È¤ò¼¨¤·¡¢¤½¤ÎÃæ¤Î°ì¤Ä¤òÁªÂò +¤·¤Æ¤â¤é¤¦¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤·¤«¤â¡¢¸õÊä°ìÍ÷¤Î¥Ç¡¼¥¿¹½Â¤¤Ï¥á¥Ë¥å¡¼¤ÈÈó¾ï¤Ë»÷¤Æ¤ª¤ê¡¢¥á¥Ë¥å¡¼¤Î +¤è¤¦¤Ê³¬Áع½Â¤¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹ +(¡Ö¥á¥Ë¥å¡¼¡× ¤ò»²¾È¤Î¤³¤È)¡£ +¤¿¤È¤¨¤Ð¡¢¾å¤ÎÊ£¹ç¸¡º÷¤ÎÆþÎϸì 2 ¡Ö¹ñ¡¦ÃÏ°è¡×¤Ë¤â¸õÊä¤Î°ìÍ÷¤òÀߤ±¤ë¤È +¤·¤¿¤é¡¢ºÇ½é¤Î³¬Áؤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ë¤«¤âÃΤì¤Þ¤»¤ó¡£ +

+ +
+
+* ÆüËÜ (¢ªÁªÂò)
+* ÆüËܰʳ°¤Î¥¢¥¸¥¢ (¢ª¾ÜºÙ)
+* ¥è¡¼¥í¥Ã¥Ñ (¢ª¾ÜºÙ)
+* ËÌ¥¢¥á¥ê¥« (¢ª¾ÜºÙ)
+* ¤½¤Î¾ (¢ª¾ÜºÙ)
+
+
+ +

+¡ÖÆüËܡפòÁª¤Ö¤È¡¢¤½¤³¤ÇÆþÎϸ줬·èÄꤵ¤ì¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢ +¤½¤ì°Ê³°¤Î¹àÌܤˤĤ¤¤Æ¤Ï¤µ¤é¤ËºÙ¤«¤¯Ê¬Îव¤ì¤¿ÁªÂò»è¤¬ÍÑ°Õ¤µ¤ì¤Æ +¤¤¤Þ¤¹¡£ +¤³¤³¤Ç¤Ï¡¢¡ÖËÌ¥¢¥á¥ê¥«¡×¤òÁª¤ó¤Ç¤ß¤Þ¤·¤ç¤¦¡£ +¤¹¤ë¤È¡¢¤µ¤é¤Ë¼¡¤Î¤è¤¦¤Ê¸õÊä°ìÍ÷¤Î¥Ç¡¼¥¿¤¬Ä󼨤µ¤ì¤Þ¤¹¡£ +

+ +
+
+* ¥¢¥á¥ê¥« (¢ªÁªÂò)
+* ¥«¥Ê¥À (¢ªÁªÂò)
+
+
+ +

+¤³¤³¤Ç¡¢¡Ö¥¢¥á¥ê¥«¡×¡Ö¥«¥Ê¥À¡×¤òÁª¤Ö¤È¡¢ÆþÎϸ줬·èÄꤵ¤ì¤Þ¤¹¡£ +

+ +

+¼¡¤Ë¼ÂºÝ¤Ë¡¢EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ¤³¤¦¤·¤¿¸õÊä°ìÍ÷¤ò°·¤¦ÊýË¡¤Ë¤Ä¤¤¤Æ +ÀâÌÀ¤·¤Þ¤¹¡£ +¤Þ¤º¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ê£¹ç¸¡º÷¤ÎÆþÎϸ줬¸õÊä°ìÍ÷¤ò»ý¤Ã¤Æ +¤¤¤ë¤«¤É¤¦¤«¤ò¡¢³Îǧ¤¹¤ëɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£ +eb_multi_entry_candidates() ¤ò»È¤¦¤È¡¢¸õÊä°ìÍ÷¥Ç¡¼¥¿¤Î³«»Ï°ÌÃÖ +¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¸õÊä°ìÍ÷¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð EB_ERR_NO_CANDIDATES ¤ò +ÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢¸õÊä°ìÍ÷¤Î̵ͭ¤âʬ¤«¤ê¤Þ¤¹¡£ +(³«»Ï°ÌÃ֤ϼèÆÀ¤»¤º¤Ë¡¢Í­Ìµ¤À¤±¤òÄ´¤Ù¤¿¤¤¤È¤­¤Ï¡¢ +eb_multi_entry_have_candidates() ¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£) +

+ +
+
+EB_Position position;
+EB_Error_Code err;
+
+/* mulit_id, entry_id ¤Ç¡¢¤É¤ÎÊ£¹ç¸¡º÷¤Î
+ * ²¿ÈÖÌܤÎÆþÎϸì¤Ë¤Ä¤¤¤Æ³Îǧ¤¹¤ë¤Î¤«¤ò»ØÄꤷ¤Þ¤¹¡£*/
+err = eb_multi_entry_candidates(&book, multi_id, entry_id, &position);
+if (err == EB_ERR_NO_CANDIDATES) {
+    /* ¤³¤ÎÆþÎϸì¤Ë¤Ï¡¢¸õÊä°ìÍ÷¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Ê¤¤ */
+   return;
+} else if (err != EB_SUCCESS) {
+    /* ¤½¤ì°Ê³°¤Î¥¨¥é¡¼ */
+   return;
+}
+
+
+ +

+¸å¤Ï¡¢ÆÀ¤é¤ì¤¿°ÌÃÖ (position) ¤Ë¥·¡¼¥¯¤·¤Æ¡¢ +eb_read_text() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +Æɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¤Ç¤Ï¡¢¸õÊä¤È¤Ê¤ë¸ì¤Î¤½¤ì¤¾¤ì¤¬¸õÊ䳫»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¶´¤Þ¤ì¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "ÆüËÜ" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "ÆüËܰʳ°¤Î¥¢¥¸¥¢" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "¥è¡¼¥í¥Ã¥Ñ" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "ËÌ¥¢¥á¥ê¥«" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+* <¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹> "¤½¤Î¾" <¸õÊ佪λ¥·¡¼¥±¥ó¥¹>
+
+
+ +

+¸õÊ䳫»Ï¥·¡¼¥±¥ó¥¹¤ËÂФ·¤Æ¤Ï¡¢¥Õ¥Ã¥¯¤È¤·¤Æ +EB_HOOK_BEGIN_CANDIDATE ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +½ªÎ»¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ï 2 ¼ïÎढ¤Ã¤Æ¡¢¤µ¤é¤Ë¼¡¤Î³¬Áؤس¤¯¾ì¹ç +¤Ë¸Æ¤Ð¤ì¤ë EB_HOOK_END_CANDIDATE_GROUP ¤È¡¢¤½¤Î¸ì¤¬¤½¤Î¤Þ¤Þ +ÆþÎϸì¤Î¸õÊä¤È¤Ê¤ë¾ì¹ç¤Ë¸Æ¤Ð¤ì¤ë EB_HOOK_END_GROUP_LEAF ¤Ë +ʬ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¼¡¤Î³¬ÁؤΥǡ¼¥¿¤Î³«»Ï°ÌÃ֤ϡ¢½ªÎ»¥·¡¼¥±¥ó¥¹¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ë¡¢°ú¿ô¤È¤·¤Æ +ÅϤäƤ­¤Þ¤¹¡£ +(¤³¤ÎÅÀ¤â¥á¥Ë¥å¡¼¤ÈƱÍͤʤΤǡ¢¥á¥Ë¥å¡¼¤Î²òÀâ¤ò»²¹Í¤Ë¤·¤Æ²¼¤µ¤¤¡£) +

+ +

+½ªÎ»¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç¤Ï¡¢eb_current_candidate() +¤È¤¤¤¦´Ø¿ô¤¬»È¤¨¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢³«»Ï¥·¡¼¥±¥ó¥¹¤È½ªÎ»¥·¡¼¥±¥ó¥¹¤Î´Ö¤Ë¶´¤Þ¤ì¤¿¡Ö¸õÊä¡×¤Îʸ»úÎó +(¥Ý¥¤¥ó¥¿) ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +
+
+const char *candidate;
+
+candidate = eb_current_candidate(book);
+
+
+ + +

¶èÀڤꥳ¡¼¥É¤ÎÌäÂê

+ +

+ËÜʸ¤Ï¡¢ÀèƬ¤«¤éËöÈø¤Þ¤Ç°ìËܤηҤ¬¤Ã¤¿¥Ç¡¼¥¿Îó¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +±Ñ¸ì¼­Åµ¤Ê¤é¡¢ºÇ½é¤Îñ¸ì `A' ¤«¤éºÇ¸å¤Î `zzz' ¤Þ¤Ç¤ÎÀâÌÀ¤¬¡¢¤¹¤Ù¤Æ°ì¤Ä¤Î +¡ÖËÜʸ¡×¤ÎÃæ¤Ë½ñ¤«¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+°ìÈ̤ˡ¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¤¢¤ëñ¸ì¤ò¸¡º÷¤·¤¿ºÝ¤Ï¡¢ËÜʸ¤ÎÃ椫¤é +¤½¤Îñ¸ì¤òÀâÌÀ¤·¤¿Éôʬ¤À¤±¤òÈ´¤­½Ð¤·¤Æ½ÐÎϤ¹¤ë¤³¤È¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£ +¤¿¤È¤¨¤Ð¡¢`dictionary' ¤È¤¤¤¦Ã±¸ì¤ò°ú¤¤¤¿¾ì¹ç¡¢¼¡¤Î¤è¤¦¤Êʸ¾Ï¤¬½ÐÎϤµ¤ì¤ë +»ö¤¬´üÂÔ¤µ¤ì¤Þ¤¹¡£ +¤½¤Î¼¡¤ä¡¢¼¡¤Î¼¡¤Îñ¸ì¤ÎÀâÌÀ¤Þ¤Ç±ä¡¹¤Èɽ¼¨¤µ¤ì¤ë¤³¤È¤ò¡¢¤ª¤½¤é¤¯ÂçȾ¤Î +¥æ¡¼¥¶¤Ï˾¤Þ¤Ê¤¤È¦¤Ç¤¹¡£ +

+ +
+
+dictionary [̾] (ʣ: dictionaries)
+¼­Åµ¡¢»öŵ
+[ÎàµÁ] lexicon, glossary (ÍѸ켭ŵ), encyclopedia (É´²Ê»öŵ)
+
+
+ +

+¤·¤«¤·¡¢º¤¤Ã¤¿¤³¤È¤Ë CD-ROM ½ñÀҤˤϡ¢Ã±¸ì¤ÎÀâÌÀ¤Î½ª¤ï¤ê¤ò¼¨¤¹°õ +(¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹) ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +¤Ä¤Þ¤ê¡¢¤¢¤ë¸ì¤ÎÀâÌÀÉôʬ¤òÀµ³Î¤ËÈ´¤­½Ð¤¹¤³¤È¤Ï¡¢ÅŻҥ֥寤ä EPWING ¤Ç¤Ï +ÉÔ²Äǽ¤Ê¤Î¤Ç¤¹¡£ +

+ +

+¤·¤«¤·¤Ê¤¬¤é¡¢¹¬¤¤¤Ë¤â»ÔÈΤνñÀҤο¤¯¤Ë¤Ï¡¢Ã±¸ì¤ÎÀâÌÀ¤Î½ªÎ»°ÌÃ֤ˤÀ¤± +½Ð¸½¤¹¤ë¡¢ÆÃÍ­¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬Â¸ºß¤·¤Þ¤¹¡£ +¤â¤Á¤í¤ó¡¢¤³¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ÏËÜÍè¡Öñ¸ì¤ÎÀâÌÀ¤Î½ªÎ»¡×¤ò¼¨¤¹¤â¤Î +¤Ç¤Ï¤Ê¤¯Ê̤ÎÍÑÅӤȤ·¤ÆÍѤ¤¤ë¤Î¤Ç¤¹¤¬¡¢¡Ö½ªÎ»°ÌÃ֡פȤ·¤ÆÂåÍѤǤ­¤ë +¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¤³¤Î¡Ö½ªÎ»°ÌÃ֡פΰõ¤Ë»È¤¨¤ë¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î +¤³¤È¤ò¡¢¶èÀڤꥳ¡¼¥É (stop code) ¤È¸Æ¤ó¤Ç¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ï¶èÀڤꥳ¡¼¥É¤ò¼«Æ°È½Äꤹ¤ëµ¡Ç½¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢È½Äê¤Ï +´°àú¤Ç¤Ï¤Ê¤¤¤Î¤Ç³°¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ +³°¤ì¤ë¤ÈËÜʸ¤¬ÅÓÃæ¤ÇÅÓÀڤ줿¤ê¡¢ËÜʸ¤Î³¤­¤¬±ä¡¹¤È½ÐÎϤµ¤ì¤¿¤ê¤·¤Þ¤¹¡£ +

+ +

+¤½¤Î¾ì¹ç¤Ï¡¢ÌÀ¼¨Åª¤Ë appendix +(¾Ü¤·¤¯¤Ï ebappendix ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öappendix (ÉÕÏ¿) ¤È¤Ï¡×¤ò»²¾È¤Î¤³¤È) +¤Ç¶èÀڤꥳ¡¼¥É¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ²óÈò¤Ç¤­¤ë½ñÀҤ⤢¤ê¤Þ¤¹¤¬¡¢ +»ÄÇ°¤Ê¤¬¤é¶èÀڤꥳ¡¼¥É¤¬¤Þ¤Ã¤¿¤¯Â¸ºß¤·¤Ê¤¤½ñÀҤ⾯¿ô¤Ê¤¬¤é¸ºß¤·¤Þ¤¹¡£ +¶èÀڤꥳ¡¼¥É¤ò»ý¤¿¤Ê¤¤½ñÀÒ¤ËÂФ·¤Æ¡¢Í­¸ú¤ÊÂнèÊýË¡¤Ïº£¤Î¤È¤³¤í¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+eb_read_text() ¤Ë¤è¤ëËÜʸ¤Î¼èÆÀ¤Ç¤Ï¡¢¶èÀڤꥳ¡¼¥É¤¬¸¡½Ð¤µ¤ì¤¿ +»þÅÀ¤ÇÆɤ߹þ¤ß¤ò»ß¤á¤Þ¤¹¡£ +¤µ¤é¤Ë·«¤êÊÖ¤· eb_read_text() ¤ò¸Æ¤ó¤Ç¤â¡¢¶èÀڤꥳ¡¼¥É¤è¤êÀè¤Î +ËÜʸ¤ÏÆɤ߹þ¤á¤Þ¤»¤ó¡£ +

+ +

+¶èÀڤꥳ¡¼¥É¤ò¸¡½Ð¤·¤¿¤«¤É¤¦¤«¤ÎȽÄê¤Ë¤Ï¡¢eb_is_text_stopped() +¤ò»È¤¤¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ºÇ¸å¤ËÆɤ߹þ¤ß¤ò¹Ô¤Ã¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÃæ¤Ë¡¢¶èÀڤꥳ¡¼¥É¤ò +¸¡½Ð¤·¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ËÜʸ°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤â¶èÀڤꥳ¡¼¥É¤Î³µÇ°¤Ï¸ºß¤·¤Þ¤¹¤Î¤Ç¡¢ +eb_is_text_stopped() ¤ò»È¤Ã¤Æ¶èÀڤꥳ¡¼¥É¤ò¸¡½Ð¤Ç¤­¤Þ¤¹¡£ +¤·¤«¤·¡¢ËÜʸ°Ê³°¤Ç¤Ï EB ¥é¥¤¥Ö¥é¥ê¤¬³Î¼Â¤Ë¶èÀÚ¤ê¤òȽÊ̤Ǥ­¤Þ¤¹¤Î¤Ç¡¢ +¸íȽÄê¤ÎÌäÂê¤Ïµ¯¤­¤Þ¤»¤ó¡£ +

+ +

+¸«½Ð¤·¤Ë¤ª¤±¤ë¶èÀÚ¤ê¤Ï¡¢¤½¤ì¤¾¤ì¤Îñ¸ì¤Î¸«½Ð¤·¤Î½ªÎ»°ÌÃ֤Ȥʤê¤Þ¤¹¡£ +¥á¥Ë¥å¡¼¤ª¤è¤ÓÊ£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷¤Ç¤Ï¡¢³¬Áز½¤µ¤ì¤¿¸Ä¡¹¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿ +¤Î½ªÎ»°ÌÃ֤ǶèÀÚ¤ê¤ÈȽÄꤵ¤ì¤Þ¤¹¡£ +(Ʊ°ì³¬ÁؤËÊ£¿ô¸Ä¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿¤¬¤¢¤Ã¤Æ¤â¡¢¸Ä¡¹¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿¤Ç +¶èÀÚ¤é¤ì¤Þ¤¹¡£) +Ãøºî¸¢É½¼¨¤Ç¤Ï¡¢Á´Ê¸¤Î½ªÎ»°ÌÃ֤ǶèÀÚ¤ê¤ÈȽÄꤵ¤ì¤Þ¤¹¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ + + + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Hook_Code ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Hook_Hook ¤Ï¡¢¥Õ¥Ã¥¯¤ÎÀßÄê°ÌÃÖ¥³¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î·¿¤ÏÉä¹çÉÕ¤­À°¿ô·¿¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢2 ¤Ä¤Î¥³¡¼¥É¤ò +2 ¹à±é»»»Ò == ¤È != ¤Ç°ìÃ×Èæ³Ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Á´Éô¤Ç EB_NUMBER_OF_HOOKS ¸Ä¤Î¥Õ¥Ã¥¯¥³¡¼¥É +¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +ÄêµÁ¤µ¤ì¤Æ¤¤¤ëÀßÄê°ÌÃÖ¥³¡¼¥É¤Î°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¼¡¤ÎÀá (¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È) +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

EB_Hook ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Hook ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É¤È¤½¤ì¤ËÂбþ¤¹¤ë¥Õ¥Ã¥¯´Ø¿ô +¤ÎÁȤòɽ¤·¤Þ¤¹¡£ +ÆâÉô¹½Â¤¤Ï¡¢¼¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+typedef struct EB_Hook_Struct EB_Hook;
+
+struct EB_Hook_Struct {
+    EB_Hook_Code code;
+    EB_Error_Code (*FUNC)(EB_Book *, EB_Appendix *, void *,
+        EB_Hook_Code, int, const unsigned int *);
+};
+
+
+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ + +

EB_Hookset ·¿

+ +

+¥Ç¡¼¥¿·¿ EB_Hookset ¤Ï¡¢¥Õ¥Ã¥¯°ì¼°¤òɽ¤·¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤ÇÍøÍѲÄǽ¤Ê¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯ÀßÄê°ÌÃÖ¤ËÂФ·¤Æ¡¢¤É¤Î¤è¤¦¤Ê +¥Õ¥Ã¥¯´Ø¿ô¤ò»ØÄꤹ¤ë¤Î¤«¤òµ­Ï¿¤¹¤ë¤¿¤á¤Î·¿¤Ç¤¹¡£ +

+ +

+EB_Hookiset ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ï¡¢¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¤¬ÍÑ°Õ +¤·¤Æ¤¤¤ë´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤Î +¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë +ÂФ·¤Æ eb_initialize_hookset() ¤ò¸Æ¤ó¤Ç½é´ü²½¤·¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +

+ + +

¥Õ¥Ã¥¯´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤Ç¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î»ÅÍͤˤĤ¤¤Æµ­¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ eb_read_text() ¤ª¤è¤Ó +eb_read_heading() ¤Î¥×¥í¥È¥¿¥¤¥×¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code
+eb_read_text(EB_Book *book, EB_Appendix *appendix,
+    EB_Hookset *hookset, void *container, size_t text_max_length,
+    char *text, ssize_t *text_length)
+
+
+ +

+°ìÊý¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Error_Code
+hook_function(EB_Book *book, EB_Appendix *appendix, void *container,
+    EB_Hook_Code code, int argc, const unsigned int *argv);
+
+
+ +

+°ú¿ô book, appendix, container ¤Ï¡¢ +eb_read_text() ¤¢¤ë¤¤¤Ï eb_read_heading() ¤Ë +ÅϤµ¤ì¤¿Ãͤ¬¤½¤Î¤Þ¤Þ¥Õ¥Ã¥¯´Ø¿ô¤Ë¤âÅϤäƤ­¤Þ¤¹¡£ +

+ +

+appendix ¤È¤¤¤¦¤Î¤Ï¡¢½ñÀÒ¤ËÂФ¹¤ëÊä½õ¥Ç¡¼¥¿¤òÄ󶡤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È +¤Ç¤¹ +(appendix (ÉÕÏ¿) ¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯¤Ï +ebappendix ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öappendix (ÉÕÏ¿) ¤È¤Ï¡×¤ò»²¾È¤Î¤³¤È)¡£ + +

+°ú¿ô container ¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¥Õ¥Ã¥¯´Ø¿ô¤Ë +²¿¤«¥Ç¡¼¥¿¤òÅϤ·¤¿¤¤¤È¤­¤Ë»È¤¤¤Þ¤¹¡£ +

+ +

+ºÇ¸å¤Î argc ¤È argv ¤Ë¤Ï¡¢²Ã¹©Á°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤¬ +ÅϤµ¤ì¤Þ¤¹¡£ +ʸ»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤Ï¡¢Ê¸»ú¥³¡¼¥ÉÈֹ椬ÅϤäƤ­¤Þ¤¹¡£ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤Ï¡¢¤½¤Î¥·¡¼¥±¥ó¥¹¼«ÂΤΥ³¡¼¥É +(1f ¤Ç»Ï¤Þ¤ë¥³¡¼¥É) ¤È¡¢¤â¤·¤¢¤ì¤Ð¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î +°ú¿ô¤ò¤¬ÅϤäƤ­¤Þ¤¹¡£ +¸Ä¡¹¤Î¥Õ¥Ã¥¯¤Ë¤ª¤¤¤Æ¡¢argc ¤È argv ¤Ë¤É¤¦¤è¤¦¤ÊÃͤ¬ +ÅϤäƤ¯¤ë¤Î¤«¡¢¾Ü¤·¤¯¤Ï ¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤ÎÃ椫¤é¼¡¤Ëµó¤²¤ë´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ø¤Î +½ñ¤­¹þ¤ß¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
    +
  • eb_write_text() +
  • eb_write_text_string() +
  • eb_write_text_byte1() +
  • eb_write_text_byte2() +
+ +

+¤³¤ì¤é¤Î´Ø¿ô¤Î»ÅÍͤ˴ؤ·¤Æ¾Ü¤·¤¯¤Ï +¡Ö[¥Æ¥­¥¹¥È¥Ç¡¼¥¿] ´Ø¿ô¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤¬ EB_SUCCESS °Ê³°¤ÎÃͤòÊÖ¤¹¤È¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò +¸Æ¤Ó½Ð¤·¤¿ eb_read_text(), eb_read_heading() +¤Ï¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤â¤Î¤È¸«¤Ê¤·¡¢¤½¤Î¥¨¥é¡¼¥³¡¼¥É¤ò¤½¤Î¤Þ¤Þ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ËÊÖ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç¤Ï¡¢book ¤ËÂФ·¤Æ°Ê²¼¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤Ï +¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÎÆ°ºî¤Ï¡¢Ì¤ÄêµÁ¤Ç¤¹¡£ +

+ +
    +
  • eb_seek_text() +
  • eb_read_text() +
  • eb_read_heading() +
  • eb_read_rawtext() +
  • eb_forward_text() +
  • eb_backward_text() +
  • eb_set_subbook() +
  • eb_unset_subbook() +
  • eb_load_all_subbook() +
  • eb_bind() +
  • eb_finalize_book() +
  • eb_finalize_library() +
+ + +

¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Õ¥Ã¥¯¥³¡¼¥É¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ + +

Äê¿ô EB_HOOK_NULL

+ +

+EB_HOOK_NULL ¤Ï¸·Ì©¤Ë¤Ï¥Õ¥Ã¥¯¤Ç¤Ï¤Ê¤¯¡¢ +eb_set_hooks() ¤ÇÊ£¿ô¤Î¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤¹¤ëºÝ¤Ë¡¢ +EB_Hook ÇÛÎó¤ÎËöÈø¤ÎÍ×ÁǤò¼¨¤¹¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +¤³¤Î¥Õ¥Ã¥¯¥³¡¼¥É¤ËÂФ·¤Æ¡¢¥Õ¥Ã¥¯´Ø¿ô¤ÏÅÐÏ¿¤Ç¤­¤Þ¤»¤ó¡£ +

+ +

+¾Ü¤·¤¯¤Ï¡¢¡Ö[¥Æ¥­¥¹¥È¥Ç¡¼¥¿] ¥Õ¥Ã¥¯´Ø¿ô¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

Äê¿ô EB_HOOK_INITIALIZE

+ +

+EB_HOOK_INITIALIZE ¤Ï¡¢eb_seek_text() ¤ò +¸Æ¤Ó½Ð¤·¤¿Ä¾¸å¤ÎºÇ½é¤Î eb_read_text(), +eb_read_heading() ¤Î¸Æ¤Ó½Ð¤·»þ¤Ë½èÍý¤µ¤ì¤Þ¤¹¡£ +²¿¤«½é´ü²½½èÍý¤ò¤·¤¿¤¤¤È¤­¤Ë¡¢»È¤¦¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 0 ¤Ç¤¹¡£ +¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_NARROW

+ +

Äê¿ô EB_HOOK_END_NARROW

+ +

+EB_HOOK_BEGIN_NARROW ¤ª¤è¤Ó EB_HOOK_END_NARROW +¤Ï¡¢È¾³Ñɽ¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_NARROW ¤Ê¤é 0x1f04¡¢ +EB_HOOK_END_NARROW ¤Ê¤é 0x1f05 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_SUBSCRIPT

+ +

Äê¿ô EB_HOOK_END_SUBSCRIPT

+ +

+EB_HOOK_BEGIN_SUBSCRIPT ¤ª¤è¤Ó +EB_HOOK_END_SUBSCRIPT ¤Ï¡¢²¼ÉÕ¤­É½¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤ÎÃͤϥ¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_SUBSCRIPT ¤Ê¤é 0x1f06¡¢ +EB_HOOK_END_SUBSCRIPT ¤Ê¤é 0x1f07 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë +²¿¤â½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_SET_INDENT

+ +

+EB_HOOK_SET_INDENT ¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¹ÔƬ¤Î»ú²¼¤²»ØÄê¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f09 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤¬¡¢»ú²¼¤²¤ÎÎ̤òɽ¤·¤Þ¤¹¡£ +

+ +

+»ú²¼¤²¤ÎÎ̤Îñ°Ì¤¬¡¢²¿¤Ç¤¢¤ë¤Î¤«¤ÏÉÔÌÀ¤Ç¤¹¡£ +¤Þ¤¿¡¢»ú²¼¤²Î̤κǾ®Ãͤϡ¢0 ¤Î¾ì¹ç¤È 1 ¤Î¾ì¹ç¤ÎÆóÄ̤꤬¤¢¤ê¤Þ¤¹¡£ +¤¤¤º¤ì¤Ë¤·¤í¡¢»ú²¼¤²¤Ï 1 ¤º¤ÄÁý¤¨¤¿¤ê¸º¤Ã¤¿¤ê¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_NEWLINE

+ +

+EB_HOOK_SET_NEWLINE ¤Ï¡¢²þ¹Ô¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë +ÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤¿¤À¤·¡¢eb_read_heading() (¸«½Ð¤·¤ÎÆɤ߹þ¤ß) ¤Ë¤è¤ë½èÍý¤Ç¤Ï¡¢ +²þ¹Ô¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ï¶èÀڤꥳ¡¼¥É¤È¤·¤Æ¤â°·¤ï¤ì¤Þ¤¹¡£ +¤½¤Î¤¿¤á¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬¸«¤Ä¤«¤Ã¤Æ¤â¤³¤Î¥Õ¥Ã¥¯¤Î½èÍý¤Ï¹Ô¤ï¤ì¤º¡¢ +¤¿¤À¤Á¤ËÆɤ߹þ¤ß½èÍý¤Ï½ªÎ»¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f0a ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¤¬¡¢eb_initialize_hookset() ¤Ç +EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ë¤È¡¢¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ +eb_hook_newline() ¤¬¼«Æ°Åª¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_SUPERSCRIPT

+ +

Äê¿ô EB_HOOK_END_SUPERSCRIPT

+ +

+EB_HOOK_BEGIN_SUPERSCRIPT ¤ª¤è¤Ó +EB_HOOK_END_SUPERSCRIPT ¤Ï¡¢¾åÉÕ¤­É½¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_SUPERSCRIPT ¤Ê¤é 0x1f0e¡¢ +EB_HOOK_END_SUPERSCRIPT ¤Ê¤é 0x1f0f ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_NO_NEWLINE

+ +

Äê¿ô EB_HOOK_END_NO_NEWLINE

+ +

+EB_HOOK_BEGIN_NO_NEWLINE ¤ª¤è¤Ó +EB_HOOK_END_NO_NEWLINE ¤Ï¡¢²þ¹Ô¶Ø»ß¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_NO_NEWLINE ¤Ê¤é 0x1f10¡¢ +EB_HOOK_END_NO_NEWLINE ¤Ê¤é 0x1f11 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_EMPHASIS

+ +

Äê¿ô EB_HOOK_END_EMPHASIS

+ +

+EB_HOOK_BEGIN_EMPHASIS ¤ª¤è¤Ó EB_HOOK_END_EMPHASIS +¤Ï¡¢¶¯Ä´É½¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +EB_HOOK_BEGIN_EMPHASIS ¤Ê¤é 0x1f12¡¢ +EB_HOOK_END_EMPHASIS ¤Ê¤é 0x1f13 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_CANDIDATE

+ +

Äê¿ô EB_HOOK_END_CANDIDATE_LEAF

+ +

Äê¿ô EB_HOOK_END_CANDIDATE_GROUP

+ +

+EB_HOOK_BEGIN_CANDIDATE ¤Ï¡¢Ê£¹ç¸¡º÷¤Î¸õÊä¤È¤Ê¤ë¸ì¤Î³«»Ï¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤½¤ì¤ËÂФ·¤Æ¡¢½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ï 2 ¼ïÎà +¤¢¤ê¤Þ¤¹¡£ +°ì¤Ä¤Ï EB_HOOK_END_CANDIDATE_LEAF ¤Ç¡¢¸õÊä¤È¤Ê¤ë¸ì¤¬¼ÂºÝ¤Ë +¸¡º÷¤ÎÆþÎϸì¤È¤·¤Æ»È¤¨¤ë¤â¤Î¤Ç¤¢¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +¤â¤¦°ì¤Ä¤Ï EB_HOOK_END_CANDIDATE_GROUP ¤Ç¡¢¸õÊä¤È¤Ê¤ë¸ì¤Ï +¤µ¤é¤ËºÙ¤«¤¤ÁªÂò»è¤Ëʬ¤«¤ì¤Æ¤¤¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +(¤·¤¿¤¬¤Ã¤Æ¡¢¸õÊä¤È¤Ê¤ë¸ì¤ò¸¡º÷¤ÎÆþÎϸì¤È¤·¤Æ»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£) +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_CANDIDATES ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f43 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_END_CANDIDATE_LEAF ¤ª¤è¤Ó +EB_HOOK_END_CANDIDATE_GROUP ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É +¤½¤Î¤â¤Î¤Ç¡¢0x1f63 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¥Õ¥Ã¥¯ EB_HOOK_END_CANDIDATE_GROUP ¤Î argv[1] +¤È argv[2] ¤Ï¡¢¼¡¤Î³¬ÁؤθõÊä°ìÍ÷¥Ç¡¼¥¿¤Î³«»Ï¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +¥Õ¥Ã¥¯ EB_HOOK_END_CANDIDATE_LEAF ¤Ç¤Ï¡¢argv[1], +argv[2] ¤Ï 2 ¤Ä¤È¤â 0 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_REFERENCE

+ +

Äê¿ô EB_HOOK_END_REFERENCE

+ +

+EB_HOOK_BEGIN_REFERENCE ¤ª¤è¤Ó +EB_HOOK_END_REFERENCE ¤Ï¡¢ÊÌ°ÌÃ֤Υƥ­¥¹¥È¥Ç¡¼¥¿¤Î»²¾È³«»Ï¤È +½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_REFERENCE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f42 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_REFERENCE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc +¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f62 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢»²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_KEYWORD

+ +

Äê¿ô EB_HOOK_END_KEYWORD

+ +

+EB_HOOK_BEGIN_KEYWORD ¤ª¤è¤Ó EB_HOOK_END_KEYWORD ¤Ï¡¢ +¸¡º÷¥­¡¼¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_KEYWORD ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f41 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_KEYWORD ¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Ë 1 ¸Ä¤Î°ú¿ô¤òÅϤ·¤Þ¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f61 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_DECORATION

+ +

Äê¿ô EB_HOOK_END_DECORATION

+ +

+EB_HOOK_BEGIN_DECORATION ¤ª¤è¤Ó +EB_HOOK_END_DECORATION ¤Ï¡¢Ê¸»ú½¤¾þ¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_DECORATION ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 2 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1fe0 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_KEYWORD ¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Ë 1 ¸Ä¤Î°ú¿ô¤òÅϤ·¤Þ¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1fe1 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_NARROW_FONT

+ +

Äê¿ô EB_HOOK_WIDE_FONT

+ +

+EB_HOOK_NARROW_FONT ¤ª¤è¤Ó EB_HOOK_WIDE_FONT ¤Ï¡¢ +¤½¤ì¤¾¤ìȾ³Ñ³°»ú¤ÈÁ´³Ñ³°»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢³°»ú¤Îʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¤¬¡¢eb_initialize_hookset() ¤Ç +EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤¹¤ë¤È¡¢¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ +eb_hook_narrow_character_text() ¤ª¤è¤Ó +eb_hook_wide_character_text() ¤¬¼«Æ°Åª¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_ISO8859_1

+ +

+EB_HOOK_ISO8859_1 ¤Ï¡¢ISO 8859-1 (¥é¥Æ¥óʸ»ú 1) ʸ»ú¤ËÂФ¹¤ë +¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢ISO 8859-1 ¤Îʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢argv[0] ¤ÎÃͤò¤½¤Î¤Þ¤Þ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ê¸»ú¤Ï¤½¤Î¤Þ¤Þ ISO 8859-1 ¤È¤·¤Æ¡¢1 ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬ÍøÍѤµ¤ì¤ë¤Î¤Ï¡¢½èÍýÃæ¤Î½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ +EB_CHARCODE_ISO8859_1 ¤Î¾ì¹ç¤À¤±¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_NARROW_JISX0208

+ +

Äê¿ô EB_HOOK_WIDE_JISX0208

+ +

+EB_HOOK_NARROW_JISX0208 ¤È EB_HOOK_WIDE_JISX0208 +¤Ï¡¢È¾³Ñ¤ª¤è¤ÓÁ´³Ñ¤Î JIS X 0208 (ÆüËܸì¤Î¤«¤Ê´Á»ú) ʸ»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤É¤Á¤é¤Î¥Õ¥Ã¥¯¤â¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢JIS X 0208 ¤Îʸ»ú¤òÆüËܸì EUC ¤Çɽ¸½¤·¤¿¤È¤­¤Î +ʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢argv[0] ¤ÎÃͤò¤½¤Î¤Þ¤Þ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ê¸»ú¤Ï¤½¤Î¤Þ¤ÞÆüËܸì EUC ¤È¤·¤Æ¡¢2 ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬ÍøÍѤµ¤ì¤ë¤Î¤Ï¡¢ +½èÍýÃæ¤Î½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ EB_CHARCODE_JISX0208 ¤« +EB_CHARCODE_JISX0208_GB2312 ¤Î¾ì¹ç¤À¤±¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_GB2312

+ +

+EB_HOOK_GB2312 ¤Ï¡¢GB 2312 (Ãæ¹ñ¸ì¤Î´ÊÂλú) ʸ»ú¤ËÂФ¹¤ë +¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢GB 2312 ¤Îʸ»ú¤òÃæ¹ñ¸ì EUC ¤Çɽ¸½¤·¤¿¤È¤­¤Î +ʸ»úÈÖ¹æ¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢argv[0] ¤ÎÃͤò¤½¤Î¤Þ¤Þ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ê¸»ú¤Ï¤½¤Î¤Þ¤ÞÃæ¹ñ¸ì EUC ¤È¤·¤Æ¡¢2 ¥Ð¥¤¥È½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯¤¬ÍøÍѤµ¤ì¤ë¤Î¤Ï¡¢½èÍýÃæ¤Î½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤¬ +EB_CHARCODE_JISX0208_GB2312 ¤Î¾ì¹ç¤À¤±¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_MONO_GRAPHIC

+ +

Äê¿ô EB_HOOK_END_MONO_GRAPHIC

+ +

+EB_HOOK_BEGIN_MONO_GRAPHIC ¤ª¤è¤Ó +EB_HOOK_END_MONO_GRAPIHC ¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤγ«»Ï¤È½ªÎ»¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MONO_GRAPHIC ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 4 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f32 ¤« 0x1f44 ¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï¡¢¿ÞÈǤι⤵¤ÈÉý +(¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +¤¿¤À¤·¡¢ÅŻҥ֥寤Υâ¥Î¥¯¥í¿ÞÈÇ (ºÇ½é¤Î°ú¿ô¤¬ 0x1f32 ¤Î +¾ì¹ç) ¤Ë¤Ï¡¢¿ÞÈǤι⤵¤ÈÉý¤Î¾ðÊ󤬷礱¤Æ¤¤¤ë¤Î¤Ç¡¢ÃͤϤɤÁ¤é¤â 0 ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_MONO_GRAPHIC ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¡¢¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¤¹¡£ +EB_HOOK_BEGIN_MONO_GRAPHIC ¤Î argv[0] ¤¬ +0x1f32 ¤Ê¤é¡¢EB_HOOK_END_MONO_GRAPHIC ¤Î +argv[0] ¤Ï 0x1f52 ¤Ë¤Ê¤ê¡¢0x1f44 +¤Ê¤é 0x1f64 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¿ÞÈǥǡ¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_GRAY_GRAPHIC

+ +

Äê¿ô EB_HOOK_END_GRAY_GRAPHIC

+ +

+¤³¤ì¤é¤Î¥Õ¥Ã¥¯Ì¾¾Î¤Ï¡¢¥°¥ì¡¼¥¹¥±¡¼¥ë¿ÞÈǤΤ¿¤á¤ËͽÌ󤵤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ +ËܥС¼¥¸¥ç¥ó¤Î EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¤Þ¤ÀÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_COLOR_BMP

+ +

Äê¿ô EB_HOOK_BEGIN_COLOR_JPEG

+ +

Äê¿ô EB_HOOK_END_COLOR_GRAPHIC

+ +

+EB_HOOK_BEGIN_COLOR_BMP ¤È EB_HOOK_COLOR_JPEG +¤Ï¡¢¤½¤ì¤¾¤ì BMP ·Á¼°¤È JPEG ·Á¼°¤Î¥«¥é¡¼¿ÞÈǤγ«»Ï¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +³«»Ï¤Î¥Õ¥Ã¥¯¤Ï BMP ¤È JPEG ¤È¤Ç¥Õ¥Ã¥¯¤¬Ê¬¤«¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢½ªÎ»¤Î +¥Õ¥Ã¥¯¤Ï¶¦Ä̤ǡ¢EB_HOOK_END_COLOR_GRAPIHC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_COLOR_BMP ¤È +EB_HOOK_COLOR_JPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï +4 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f4d ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï¡¢¿ÞÈǤÎÉý¤È¹â¤µ +(¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_END_COLOR_BMP ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f6d ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¿ÞÈǥǡ¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥«¥é¡¼¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_IN_COLOR_BMP

+ +

Äê¿ô EB_HOOK_BEGIN_IN_COLOR_JPEG

+ +

Äê¿ô EB_HOOK_END_IN_COLOR_GRAPHIC

+ +

+EB_HOOK_BEGIN_IN_COLOR_BMP ¤È EB_HOOK_IN_COLOR_JPEG ¤Ï¡¢ +¤½¤ì¤¾¤ì BMP ·Á¼°¤È JPEG ·Á¼°¤Î¥¤¥ó¥é¥¤¥ó¥«¥é¡¼¿ÞÈǤγ«»Ï¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +³«»Ï¤Î¥Õ¥Ã¥¯¤Ï BMP ¤È JPEG ¤È¤Ç¥Õ¥Ã¥¯¤¬Ê¬¤«¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢½ªÎ»¤Î +¥Õ¥Ã¥¯¤Ï¶¦Ä̤ǡ¢EB_HOOK_END_IN_COLOR_GRAPIHC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_IN_COLOR_BMP ¤È +EB_HOOK_IN_COLOR_JPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc +¤Ï 4 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f3c ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï¡¢¿ÞÈǤÎÉý¤È¹â¤µ +(¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_END_IN_COLOR_BMP ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 3 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f5c ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢EB_Position ¥ª¥Ö¥¸¥§¥¯¥È +(¡Ö[¸¡º÷] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤Î page ¤ª¤è¤Ó offset ¥á¥ó¥Ð¤ÎÃͤËÁêÅö¤·¤Þ¤¹¡£ +

+ +

+¿ÞÈǥǡ¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥«¥é¡¼¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_CLICKABLE_AREA

+ +

Äê¿ô EB_HOOK_END_CLICKABLE_AREA

+ +

+EB_HOOK_BEGIN_CLICKABLE_AREA ¤Ï¡¢¥«¥é¡¼¿ÞÈǤª¤è¤Ó¥¤¥ó¥é¥¤¥ó¥«¥é¡¼¿ÞÈÇÆâ¤ÎÆÃÄê¶ë·ÁÎΰè¤ËÂФ·¤Æ¡¢»²¾ÈÀè¾ðÊó¤òɽ¸½¤·¤¿³«»Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +ƱÍͤˡ¢EB_HOOK_END_CLICKABLE_AREA ¤Ï½ªÎ»¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_CLICKABLE_AREA ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 7 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f4f ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤È argv[2] ¤Ï¡¢¤½¤ì¤¾¤ì¶ë·ÁÎΰè¤Î³«»Ï +x, y ºÂɸ¤òɽ¤·¤Þ¤¹¡£ +¤½¤ì¤¾¤ì¶ë·ÁÎΰè¤Î³«»Ï x, y ºÂɸ¤òɽ¤·¤Þ¤¹¡£ +¥«¥é¡¼¿ÞÈǤκ¸¾å¤ÎºÂɸ¤¬ (0, 0) ¤Ç¤¹¡£ +ƱÍͤˡ¢argv[3] ¤È argv[4] ¤¬¿ÞÈǤα¦Êý¸þ¤Ø¤Î +Éý¤È¡¢²¼Êý¸þ¤Ø¤Î¹â¤µ¤òɽ¤·¤Þ¤¹¡£ +ºÇ¸å¤Î argv[5] ¤È argv[6] ¤¬»²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈÇ
+¡Ê£°¡¤£°¡Ë
+¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡Ê£ø¡¤£ù¡Ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¹â¤µ¢¬¡¡¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¶ë·ÁÎΰ衡¡¡¡¡¡¡¡¡¨¢¡¡¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡Éý¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¢¢«¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨«¢ª¨¢¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢­¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+EB_HOOK_END_CLICKABLE_AREA ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f6f ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+»²¾ÈÀè¾ðÊó¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈÇ¡× +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_WAVE

+ +

Äê¿ô EB_HOOK_END_WAVE

+ +

+EB_HOOK_BEGIN_WAVE ¤ª¤è¤Ó EB_HOOK_END_WAVE ¤Ï¡¢ +WAVE (PCM) ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë +¥Õ¥Ã¥¯¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_WAVE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 6 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f4a ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¤È argv[3] ¤Ï²»À¼¥Ç¡¼¥¿¤Î³«»Ï°ÌÃ֤Π+¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¡¢argv[4] ¤È argv[5] ¤Ï +½ªÎ»°ÌÃ֤Υڡ¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤ò¤½¤ì¤¾¤ìɽ¤·¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_WAVE ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï +1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f6a ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+²»À¼¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖWAVE ²»À¼¡× +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

Äê¿ô EB_HOOK_BEGIN_MPEG

+ +

Äê¿ô EB_HOOK_END_MPEG

+ +

+EB_HOOK_BEGIN_MPEG ¤ª¤è¤Ó EB_HOOK_END_MPEG ¤Ï¡¢ +MPEG ·Á¼°¤ÎÆ°²è¥Ç¡¼¥¿¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ËÂФ¹¤ë¥Õ¥Ã¥¯ +¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +argc ¤Ï 6 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f39 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[2] ¡Á argv[5] ¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾¤ò +¥¨¥ó¥³¡¼¥É¤·¤¿¿ôÃÍÎó¤Ë¤Ê¤ê¤Þ¤¹¡£ +argv[1] ¤Î°ÕÌ£¤ÏÉÔÌÀ¤Ç¤¹¡£ +

+ +

+EB_HOOK_END_MPEG ¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ argc ¤Ï +1 ¤Ç¤¹¡£ +argv[0] ¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¥³¡¼¥É¤½¤Î¤â¤Î¤Ç¡¢ +0x1f59 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+Æ°²è¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ÖMPEG Æ°²è¡× +¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥϡ¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë²¿¤â +½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +

+ + +

¥Õ¥Ã¥¯¥»¥Ã¥ÈÁàºî´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ + +

void eb_initialize_hookset (EB_Hookset *hookset)

+ +

+´Ø¿ô initialize_hookset() ¤Ï¡¢hookset ¤Î»Ø¤¹ +EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_Hookiset ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò +¸Æ¤ÖÁ°¤Ë¡¢ +ɬ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ºÆÅÙ +eb_initialize_hookset() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢³Æ¥Õ¥Ã¥¯¤Î½é´üÃͤò¼¡¤Î¤è¤¦¤Ë¥»¥Ã¥È¤·¤Þ¤¹¡£ +

+ + + + + + + + + + + + + + +
¥Õ¥Ã¥¯ + ¥Õ¥Ã¥¯´Ø¿ô +
EB_HOOK_NARROW_JISX0208 + eb_hook_euc_to_ascii() +
EB_HOOK_NARROW_FONT + eb_hook_narrow_character_text() +
EB_HOOK_WIDE_FONT + eb_hook_wide_character_text() +
EB_HOOK_NEWLINE + eb_hook_newline() +
¾åµ­°Ê³°¤Î¥Õ¥Ã¥¯ + NULL (¥Õ¥Ã¥¯´Ø¿ô¤Ê¤·) +
+ + +

EB_Error_Code eb_finalize_hookset (EB_Hookset *hookset)

+ +

+´Ø¿ô eb_finalize_hookset() ¤Ï¡¢hookset ¤¬»Ø¤¹ +EB_Hooksest ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¡¢¤¹¤Ù¤Æ²òÊü¤µ¤ì¤Þ¤¹¡£ +¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯¤Ë¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ NULL ¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_set_hook(), eb_set_hooks() +¤ò¸Æ¤Ö¤³¤È¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_hook (EB_Hookset *hookset, const EB_Hook *hook)

+ +

+´Ø¿ô eb_set_hook() ¤Ï¡¢hookset ¤¬»Ø¤¹ EB_Hooksest +¥ª¥Ö¥¸¥§¥¯¥È¤Ë¡¢¥Õ¥Ã¥¯´Ø¿ô¤ò°ì¤ÄÅÐÏ¿¤·¤Þ¤¹¡£ +ÅÐÏ¿¤¹¤ë¥Õ¥Ã¥¯¤Î¼ïÎà¤È¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢hook ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+Ʊ¤¸¥Õ¥Ã¥¯¥³¡¼¥É¤ËÊ£¿ô²ó¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤â¡¢Í­¸ú¤Ë¤Ê¤ë¤Î¤ÏºÇ¸å¤Ë +ÅÐÏ¿¤·¤¿¤â¤Î¤À¤±¤Ç¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ NULL ¤ò»ØÄꤹ¤ë¤È¡¢ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥Õ¥Ã¥¯¤¬ +²ò½ü¤µ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_hooks (EB_Hookset *hookset, const EB_Hook *hooks)

+ +

+¤³¤Î´Ø¿ô¤Ï eb_set_hook() ¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢Ç¤°Õ¤Î¸Ä¿ô¤Î +¥Õ¥Ã¥¯´Ø¿ô¤ò°ìÅÙ¤ËÅÐÏ¿¤Ç¤­¤ëÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ÅÐÏ¿¤¹¤ë¥Õ¥Ã¥¯¤Î¼ïÎà¤È¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢hooks ¤Ç»ØÄꤷ¤Þ¤¹¡£ +hooks ¤Ï EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇÛÎó (¤ÎÀèƬ) ¤ò +»Ø¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤Þ¤¿¡¢¤³¤ÎÇÛÎó¤ÎËöÈø¤Ë¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É EB_HOOK_NULL ¤ò¥»¥Ã¥È +¤·¤¿ EB_Hook ¥ª¥Ö¥¸¥§¥¯¥È¤òÇÛÎóÍ×ÁǤȤ·¤ÆÃÖ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+eb_set_hooks() ¤Ï¡¢ÇÛÎó¤ÎÀèƬ¤«¤é½çÈ֤ˡ¢»ØÄꤵ¤ì¤¿¥Õ¥Ã¥¯¥³¡¼¥É +¤ËÂФ·¤Æ¥Õ¥Ã¥¯´Ø¿ô¤òÅÐÏ¿¤·¤Æ¤¤¤­¤Þ¤¹¡£ +¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤È¡¢»Ä¤ê¤Î¥Õ¥Ã¥¯¤ÎÅÐÏ¿¤Ï¤»¤º¤Ë¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤ò¤¿¤À¤Á¤ËÊÖ¤·¤Þ¤¹¡£ +¤¹¤Ù¤Æ¤Î¥Õ¥Ã¥¯´Ø¿ô¤ÎÅÐÏ¿¤ËÀ®¸ù¤¹¤ë¤È¡¢EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

ÁȤ߹þ¤ß¥Õ¥Ã¥¯´Ø¿ô¤Î¾ÜºÙ

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ï¡¢´ðËÜŪ¤Ê¥Õ¥Ã¥¯´Ø¿ô¤ò¤¤¤¯¤Ä¤«ÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£ +ËÜÀá¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Î»ÅÍͤò²òÀ⤷¤Þ¤¹¡£ +

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ +

+¤¤¤º¤ì¤Î¥Õ¥Ã¥¯´Ø¿ô¤â¡¢°ú¿ô appendix ¤È container ¤Ë +NULL ¤òÅϤµ¤ì¤Æ¤â¡¢Æ°ºî¤Ë»Ù¾ã¤Ï¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_euc_to_ascii (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_euc_to_ascii() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_NARROW_JISX0208 (Ⱦ³Ñ JIS X 0208 ʸ»ú) ¤Î¤¿¤á¤Î +¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò´Ø¿ô +eb_initialiez_hookset() ¤Ç½é´ü²½¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤¬¼«Æ°Åª¤Ë +ÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ï¡¢argv[0] ¤È¤·¤ÆÅϤµ¤ì¤¿ JIS X 0208 ¤Îʸ»ú +(¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÏÆüËܸì EUC) ¤òÄ´¤Ù¡¢Âбþ¤¹¤ë ASCII ʸ»ú¤¬Â¸ºß¤¹¤ì¤Ð +¤½¤Î ASCII ʸ»ú¤ò¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ½ñ¤­¹þ¤ß¡¢¤Ê¤±¤ì¤Ð JIS X 0208 ¤Î +ʸ»ú¤ò¤½¤Î¤Þ¤Þ½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_narrow_character_text (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

EB_Error_Code eb_hook_wide_character_text (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_narrow_character_text() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_NARROW_FONT (Ⱦ³Ñ³°»ú) ¤Î¤¿¤á¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +ƱÍÍ¤Ë eb_hook_wide_character_text() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_WIDE_FONT (Á´³Ñ³°»ú) ¤Î¤¿¤á¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò´Ø¿ô +eb_initialiez_hookset() ¤Ç½é´ü²½¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤¬¼«Æ°Åª +¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢appendix ¤ÎÁªÂòÃ椷¤Æ¤¤¤ëÉûËܤ¬¡¢ +argv[0] ¤È¤·¤ÆÅϤµ¤ì¤¿³°»ú¤ÎÂåÂØʸ»úÎó¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤« +Ä´¤Ù¤Þ¤¹¡£ +»ý¤Ã¤Æ¤¤¤ì¤Ð¤½¤Îʸ»úÎó¤ò¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ½ñ¤­¹þ¤ß¡¢»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð +<?> ¤È¤¤¤¦Ê¸»úÎó¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+appendix ¤¬ NULL ¤Î¾ì¹ç¤ä¡¢ÉÕÏ¿¤¬ÉûËܤòÁªÂòÃæ¤Ç +¤Ê¤¤¾ì¹ç¤â¡¢ÂåÂØʸ»úÎó¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤â¤Î¤È¤·¤Æ°·¤¤¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_newline (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_narrow_newline() ¤Ï¡¢¥Õ¥Ã¥¯¥³¡¼¥É +EB_HOOK_NEWLINE (²þ¹Ô) ¤Î¤¿¤á¤Î¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +

+ +

+EB_Hookset ¥ª¥Ö¥¸¥§¥¯¥È¤ò´Ø¿ô +eb_initialiez_hookset() ¤Ç½é´ü²½¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤¬¼«Æ°Åª +¤ËÅÐÏ¿¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë \n ¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_hook_empty (EB_Book *book, EB_Appendix *appendix, void *container, EB_Hook_Code code, int argc, const unsigned int *argv)

+ +

+eb_hook_empty() ¤Ï¡¢²¿¤â¤·¤Ê¤¤¥Õ¥Ã¥¯´Ø¿ô¤Ç¤¹¡£ +¾ï¤Ë EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

¥Æ¥­¥¹¥È¥Ç¡¼¥¿Áàºî´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/text.h>
+
+
+ + +

int eb_have_text (EB_Book *book)

+ +

int eb_have_menu (EB_Book *book)

+ +

int eb_have_copyright (EB_Book *book)

+ +

+´Ø¿ô eb_have_text() ¤Ï¡¢book ¤ÎÁªÂò¤·¤Æ¤¤¤ëÉûËܤ¬¡¢ +ËÜʸ¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍͤˡ¢eb_have_menu() ¤Ï¥á¥Ë¥å¡¼¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¡¢ +eb_have_copyright() ¤ÏÃøºî¸¢É½¼¨¤ò»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¡¢»ý¤Ã¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_text (EB_Book *book, EB_Position *position)

+ +

EB_Error_Code eb_menu (EB_Book *book, EB_Position *position)

+ +

EB_Error_Code eb_copyright (EB_Book *book, EB_Position *position)

+ +

+´Ø¿ô eb_text() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤÎËÜʸ +¤Î³«»Ï°ÌÃÖ¤ò position ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ƱÍͤˡ¢eb_menu() ¤Ï¥á¥Ë¥å¡¼¤Î³«»Ï°ÌÃÖ¤ò¡¢ +eb_have_copyright() ¤ÏÃøºî¸¢É½¼¨¤Î³«»Ï°ÌÃÖ¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢position ¤Ëɬ¤º¥·¡¼¥¯¤¬¼ºÇÔ¤¹¤ë°ÌÃÖ¤ò½ñ¤­¹þ¤ó¤Ç¡¢ +¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤ¬¡¢ÂоݤȤʤë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ +EB_ERR_NO_SUCH_SEARCH ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_seek_text (EB_Book *book, const EB_Position *position)

+ +

+´Ø¿ô eb_seek_text() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤΠ+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ò¥·¡¼¥¯¤·¤Þ¤¹¡£ +¥·¡¼¥¯°ÌÃÖ¤Ï position ¤Ç»ØÄꤷ¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢position ¤Ï¾ï¤Ë¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é¤Î°ÌÃ֤Ȥ·¤Æ²ò¼á +¤µ¤ì¤Þ¤¹¡£ +(ÁêÂаÌÃ֤ؤΥ·¡¼¥¯µ¡Ç½¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¤¢¤ê¤Þ¤»¤ó¡£) +

+ +

+¥·¡¼¥¯¤ò¹Ô¤¦¤È¡¢¤½¤ì¤Þ¤Ç¤Ë¹Ô¤Ã¤¿Æɤ߹þ¤ß¤Î¾õÂÖµ­Ï¿¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +eb_read_text(), eb_read_heading(), +eb_read_rawtext() ¤òÍѤ¤¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤Ë¤Ï¡¢ +Á°¤â¤Ã¤Æ¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤ˥ƥ­¥¹¥È¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Ê¤¤¤È¤­¤Ï¡¢EB_ERR_NO_TEXT +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢½ñÀҤˤè¤Ã¤Æ¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò¼ý¤á¤¿¥Õ¥¡¥¤¥ë¤Ë¤Ï¾¤Î¥Ç¡¼¥¿¤â +°ì½ï¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¥Æ¥­¥¹¥È°Ê³°¤Î¥Ç¡¼¥¿¤Ë¥¢¥¯¥»¥¹ +¤·¤Æ¤â¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¸½ºß°ÌÃÖ¡¢Æɤ߹þ¤ß¤Ë´Ø¤¹¤ë¾õÂÖµ­Ï¿¤ÏÊѲ½¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_tell_text (EB_Book *book, EB_Position *position)

+ +

+´Ø¿ô eb_seek_text() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤΠ+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢position ¤Î»Ø¤¹Îΰè¤Ë¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤ò½ñ¤­¹þ¤ß¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥·¡¼¥¯¤¬É¬¤º¼ºÇÔ¤¹¤ë°ÌÃÖ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +ÁªÂòÃæ¤ÎÉûËܤ˥ƥ­¥¹¥È¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Ê¤¤¤È¤­¤Ï¡¢EB_ERR_NO_TEXT +¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_read_text (EB_Book *book, EB_Appendix *appendix, EB_Hookset *hookset, void *container, size_t text_max_length, char *text, ssize_t *text_length)

+ +

EB_Error_Code eb_read_heading (EB_Book *book, EB_Appendix *appendix, EB_Hookset *hookset, void *container, size_t text_max_length, char *text, ssize_t *text_length)

+ +

+´Ø¿ô eb_read_text() ¤È eb_read_heading() ¤Ï¡¢ +book +¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤΥƥ­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤«¤é¥Ç¡¼¥¿ +¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +eb_read_heading() ¤Ï¸«½Ð¤·¤ÎÆɤ߹þ¤ß¤ËÍѤ¤¡¢ +eb_read_text() ¤Ï¤½¤ì°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤ËÍѤ¤¤Þ¤¹¡£ +

+ +

+Æɤ߹þ¤Þ¤ì¤¿¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢É¬Íפ˱þ¤¸¤Æʸ»ú¥³¡¼¥É¤ÎÊÑ´¹ +(¡Öʸ»ú¥³¡¼¥É¡× ¤ò»²¾È¤Î¤³¤È) ¤¬¹Ô¤ï¤ì¤¿¸å¤Ë¡¢hookset +¤Î»Ø¤¹¥Õ¥Ã¥¯¥»¥Ã¥È¤Ë¤·¤¿¤¬¤Ã¤Æ²Ã¹©¤µ¤ì¤Þ¤¹¡£ +hookset ¤¬ NULL ¤Î¤È¤­¤Ï¡¢Âå¤ï¤ê¤Ë EB ¥é¥¤¥Ö¥é¥ê¦ +¤ÇÍÑ°Õ¤·¤Æ¤¤¤ë ɸ½à¤Î¥Õ¥Ã¥¯¥»¥Ã¥È (default hookset) ¤¬ +ÍѤ¤¤é¤ì¤Þ¤¹¡£ +¤³¤Î¥Õ¥Ã¥¯¥»¥Ã¥È¤Ï¡¢eb_initialize_hookset() ¤Ë¤è¤Ã¤Æ +½é´ü²½¤·¤¿¤À¤±¤Î¥Õ¥Ã¥¯¥»¥Ã¥È¤ÈÅù²Á¤Ç¤¹¡£ +

+ +

+¥Õ¥Ã¥¯¥»¥Ã¥È¤Ë¤è¤Ã¤Æ²Ã¹©¤µ¤ì¤¿¸å¤Ë¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï text ¤Î +»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¡¢½ñ¤­¹þ¤ó¤À¥Ð¥¤¥È¿ô¤¬ text_length ¤Î»Ø¤¹ +Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +text ¤Ï¥Ê¥ëʸ»ú¤Ç½ªÃ¼¤µ¤ì¤Þ¤¹¤¬¡¢text_length ¤Ë¤Ï +¥Ê¥ëʸ»ú¤Îʬ¤Ï´ªÄê¤ËÆþ¤ì¤Þ¤»¤ó¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢text_max_length ¤Ç»ØÄꤵ¤ì¤¿¥Ð¥¤¥È¿ô¤òĶ¤¨¤Æ +½ñ¤­¹þ¤à¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢text_max_length ¤Ë¤â¥Ê¥ëʸ»ú¤Îʬ¤Ï´ªÄê¤ËÆþ¤Ã¤Æ¤¤¤Þ¤»¤ó +¤Î¤Ç¡¢text ¤Ï text_max_length + 1 ¥Ð¥¤¥Èʬ¤Î¥Ç¡¼¥¿ +¤ò³ÊǼ¤Ç¤­¤ëÂ礭¤µ¤¬É¬ÍפǤ¹¡£ +

+ +

+¤É¤Á¤é¤Î´Ø¿ô¤â¡¢À®¸ù¤¹¤ì¤Ð EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ì¤Ð +text_length ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ó¤Ç¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢eb_read_text() ¤È eb_read_heading() ¤ò +¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢ +¤¢¤é¤«¤¸¤á eb_seek_text() ¤Î¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤¬¥»¥Ã¥È¤µ¤ì¤¿¾õÂ֤ˤ·¤Æ¤ª¤«¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¥·¡¼¥¯¤ò¤»¤º¤Ë¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+µÕ¤Ë°ìÅÙ¥·¡¼¥¯¤¹¤ì¤Ð¡¢¶èÀڤꥳ¡¼¥É¤¬¸¡½Ð¤µ¤ì¤ë¤Þ¤Ç¤Î´Ö¤Ê¤é¡¢´Ø¿ô¤ò +·«¤êÊÖ¤·¸Æ¤Ö¤³¤È¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î³¤­¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¶èÀڤꥳ¡¼¥É¤¬¸¡½Ð¤µ¤ì¤ë¤È¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤âÆɤ߹þ¤ß¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£ +¤½¤Î¾ì¹ç¤Ç¤â¡¢Â¾¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Ê¤±¤ì¤Ð EB_SUCCESS ¤¬Ê֤ꡢ +text ¤Ë¤Ï¶õʸ»úÎ󤬽ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢°ìÅÙ eb_read_text() ¤ò¸Æ¤Ó½Ð¤·¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò +Æɤ߹þ¤ß»Ï¤á¤¿¤é¡¢·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹ºÝ¤â¡¢eb_read_text() ¤ò +»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÅÓÃ椫¤é eb_read_heading() ¤ª¤è¤Ó¸å½Ò¤Î +eb_read_rawtext() ¤ËÀÚ¤êÂؤ¨¤Æ¸Æ¤Ó½Ð¤¹¤È +EB_ERR_DIFF_CONTENT ¥¨¥é¡¼¤¬ÊÖ¤ê¤Þ¤¹¡£ +´Ø¿ô eb_read_heading() ¤Ë¤Ä¤¤¤Æ¤âƱÍͤǤ¹¡£ +¤³¤ÎÀ©¸Â¤Ï¡¢ºÆÅÙ eb_seek_text() ¤ò¸Æ¤Ó½Ð¤¹¤«¡¢ +eb_set_subbook() ¤ÇÉûËܤòÁªÂò¤·Ä¾¤¹¤Þ¤Ç³¤­¤Þ¤¹¡£ +

+ +

+ÅϤµ¤ì¤¿ appendix ¤¬¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò»ý¤Ã¤¿ÉûËܤòÁªÂòÃæ +¤Ç¤¢¤ì¤Ð¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤È¤·¤Æ¤½¤ÎÃͤò»ÈÍѤ·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢eb_read_text() ¤¬¶èÀڤꥳ¡¼¥É¤ò¼«Æ°È½Ê̤ò +»î¤ß¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎȽÄê¤Ï´°àú¤Ê¤â¤Î¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢½ñÀҤˤè¤Ã¤Æ¤ÏÊѤʰÌÃÖ¤ÇËÜʸ +¤¬ÀÚ¤ì¤Æ¤·¤Þ¤¦¤«¤âÃΤì¤Þ¤»¤ó¡£ +(ËÜʸ°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë´Ø¤·¤Æ¤Ï¡¢¤³¤Î¤è¤¦¤ÊÌäÂê¤Ïµ¯¤­¤Þ¤»¤ó¡£) +

+ +

+°ú¿ô container ¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤«¤é¥Õ¥Ã¥¯´Ø¿ô¤Ë +¥Ç¡¼¥¿¤òÅϤ¹¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£ +eb_read_text(), eb_read_heading() ¤Ç¤Ï¡¢Ä¾ÀÜ +¤³¤Î°ú¿ô¤ÎÃͤò»²¾È¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+°ú¿ô appendix, container ¤Ï¡¢¤½¤Î¤Þ¤Þ¥Õ¥Ã¥¯´Ø¿ô¤Ë +ÅϤµ¤ì¤Þ¤¹¡£ +¤³¤ì¤é¤Î°ú¿ô¤Ï NULL ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ +(¸Æ¤Ó½Ð¤µ¤ì¤ë¥Õ¥Ã¥¯´Ø¿ô¤Ç»Ù¾ã¤¬¤Ê¤±¤ì¤Ð¡£) +

+ +

+¤Ê¤ª¡¢¥Õ¥Ã¥¯´Ø¿ô¤ä eb_read_text(), eb_read_heading() +¼«¿È¤¬Ê¸»ú¤Ê¤¤¤·¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹°ì¸Äʬ¤ËÂФ¹¤ë¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤â¤¦¤È +¤·¤¿¤È¤­¤Ë¡¢text ¤Ë½½Ê¬¤Ê¶õ¤­Îΰ褬¤Ê¤¤¤È¤¤¤¦¤³¤È¤¬µ¯¤³¤ê +ÆÀ¤Þ¤¹¡£ +¤½¤Î¾ì¹ç¡¢´Ø¿ô¤ÏÅÓÃæ¤Þ¤Ç text ¤Ë½ñ¤­¹þ¤à¤³¤È¤Ï¤»¤º¤Ë¡¢ +¤¤¤Ã¤¿¤ó½èÍý¤ò½ª¤¨¤ÆÌá¤ê¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤Î¥Ç¡¼¥¿¤¬ÅÓÃæ¤ÇÀڤ줿¤ê¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿Ê¬¤Ï¡¢ÅöÁ³¤Ê¤¬¤é text_length ¤Î´ªÄê¤Ë¤Ï +Æþ¤ê¤Þ¤»¤ó¡£ +½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿¤Ï book ÆâÉô¤ËÊݸ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ +¤â¤¦°ìÅÙ eb_read_text(), eb_read_heading() ¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢Á°²ó¤Î¸Æ¤Ó½Ð¤·¤Ç½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿¤¬¤Þ¤º text +¤ÎÀèƬ¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +½ñ¤­¹þ¤ó¤À¥Ç¡¼¥¿¤Ï text_length ¤Î´ªÄê¤ËÆþ¤ê¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢book ¤¬Êݸ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿¤ÎŤµ¤¬ +text_max_length ¤òĶ¤¨¤Æ¤¤¤ë¤È¡¢²¿¤â½ñ¤­¹þ¤Þ¤º¤Ë´Ø¿ô¤Ï½ªÎ» +¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢½ñ¤­¹þ¤á¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿¤Ï°ú¤­Â³¤­Êݸ¤µ¤ì¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢text_max_length ¤¬¤¢¤Þ¤ê¤Ë¾®¤µ¤¯¡¢¤«¤ÄÊÝ»ý¤·¤Æ¤¤¤ë +¥Ç¡¼¥¿¤Î¤Û¤¦¤¬Ä¹¤¤¤È¡¢²¿ÅٸƤӽФ·¤Æ¤â text ¤Ø¤Î½ñ¤­¹þ¤ß¤¬ +¿Ê¤ß¤Þ¤»¤ó¤Î¤Ç¡¢Ãí°Õ¤¬É¬ÍפǤ¹¡£ +

+ +

+eb_seek_text() ¤ò¸Æ¤Ó½Ð¤¹¤«¡¢eb_set_subbook() +¤ÇÉûËܤòÁªÂò¤·Ä¾¤¹¤È¡¢Êݸ¤·¤Æ¤¤¤¿¥Ç¡¼¥¿¤ÏÇË´þ¤µ¤ì¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_read_rawtext (EB_Book *book, size_t text_max_length, char *text, ssize_t *text_length)

+ +

+´Ø¿ô eb_read_rawtext() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ë +ÉûËܤΥƥ­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤«¤é¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +

+ +

+eb_read_text() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤Î´Ø¿ô¤Ï¥Õ¥Ã¥¯¥»¥Ã¥È¤Ë¤è¤ë +¥Ç¡¼¥¿¤Î²Ã¹©¤äʸ»ú¥³¡¼¥É¤ÎÊÑ´¹¤ò°ìÀڹԤ鷺¡¢¥Ç¡¼¥¿¤òÆâÉôɽ¸½¤Î¤Þ¤ÞÊÖ¤·¤Þ¤¹¡£ +Æɤ߹þ¤à¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¼ïÎà¤Ï¡¢²¿¤Ç¤¢¤Ã¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ +

+Æɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï text ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¡¢ +½ñ¤­¹þ¤ó¤À¥Ð¥¤¥È¿ô¤¬ text_length ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢text_max_length ¤Ç»ØÄꤵ¤ì¤¿¥Ð¥¤¥È¿ô¤òĶ¤¨¤Æ +½ñ¤­¹þ¤à¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢eb_read_text() ¤È°Û¤Ê¤ê¡¢text ¤Ï¥Ê¥ëʸ»ú +¤Ç½ªÃ¼¤µ¤ì¤Þ¤»¤ó¡£ +¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤ä¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ÎÅÓÃæ¤Ç text ¤Î»Ä¤êÎΰè +¤¬Â­¤ê¤Ê¤¯¤Ê¤Ã¤¿¾ì¹ç¤â¡¢ÅÓÃæ¤Þ¤Ç¤Ï½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+½èÍý¤¬À®¸ù¤¹¤ì¤Ð EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ì¤Ð +text_length ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ó¤Ç¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢¤¢¤é¤«¤¸¤á eb_seek_text() ¤Î +¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤¬¥»¥Ã¥È¤µ¤ì¤¿¾õÂ֤ˤ·¤Æ +¤ª¤«¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¥·¡¼¥¯¤ò¤»¤º¤Ë¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢Á°²óÆɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î³¤­ +¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤¿¤À¤·¡¢¶èÀڤꥳ¡¼¥É¤Î¸¡½Ð¤ò¹Ô¤¤¤Þ¤»¤ó¤Î¤Ç¡¢¤Ò¤¿¤¹¤é¸Æ¤Ó½Ð¤·¤ò³¤±¤ë¤È¡¢ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ÎËöÈø¤Þ¤Ç¹Ô¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ +

+ +

+°ìÅÙ eb_read_rawtext() ¤ò¸Æ¤Ó½Ð¤·¤Æ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ß +»Ï¤á¤¿¤é¡¢·«¤êÊÖ¤·¸Æ¤Ó½Ð¤¹ºÝ¤â¡¢eb_read_rawtext() ¤ò +»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÅÓÃ椫¤é¡¢eb_read_text() ¤ä eb_read_heading() ¤Ë +ÀÚ¤êÂؤ¨¤ë¤È¡¢ +EB_ERR_DIFF_CONTENT ¥¨¥é¡¼¤¬ÊÖ¤ê¤Þ¤¹¡£ +¤³¤ÎÀ©¸Â¤Ï¡¢ºÆÅÙ eb_seek_text() ¤ò¸Æ¤Ó½Ð¤¹¤«¡¢ +eb_set_subbook() ¤ÇÉûËܤòÁªÂò¤·Ä¾¤¹¤Þ¤Ç³¤­¤Þ¤¹¡£ +

+ + +

int eb_is_text_stopped (EB_Book *book)

+ +

+´Ø¿ô eb_is_text_stopped() ¤Ï¡¢ºÇ¸å¤ËÆɤ߹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +¤¬ËöÈø¤Ë㤷¤¿¤«¤É¤¦¤«¤òȽÄꤷ¤Þ¤¹¡£ +

+ +

+book ¤¬ÁªÂòÃæ¤ÎÉûËܤǡ¢ºÇ¸å¤Ë eb_read_text() +¤Þ¤¿¤Ï eb_read_heading() ¤Ç¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤ÀºÝ¤Ë¡¢ +¶èÀڤꥳ¡¼¥É¤ò¸¡½Ð¤·¤¿¤«¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿Á´ÂΤΰìÈÖ¸å¤í¤Î°ÌÃÖ¤Ë㤷¤Æ +Æɤ߹þ¤ß¤ò½ª¤¨¤Æ¤¤¤ì¤Ð¡¢¤³¤Î´Ø¿ô¤Ï 1 ¤òÊÖ¤·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¤È¤­¤Ï¡¢0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤ä¡¢ÁªÂòÃæ¤ÎÉûËܤ˥ƥ­¥¹¥È¥Ç¡¼¥¿ +¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤â 0 ¤¬ÊÖ¤ê¤Þ¤¹¡£ +

+ +

+eb_read_text() ¤Þ¤¿¤Ï eb_read_heading() ¤Ç +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤Ç¤¤¤Ê¤¤¾ì¹ç¤â¡¢Æ±ÍÍ¤Ë 0 ¤¬ÊÖ¤ê¤Þ¤¹¡£ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤òÆɤ߹þ¤ó¤À¸å¤Ç¤¢¤Ã¤Æ¤â¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë´Ø¤¹¤ë +¾õÂÖµ­Ï¿¤ò¥ê¥»¥Ã¥È¤¹¤ë´Ø¿ô (eb_read_text() ¤Î¹à¤ò»²¾È) ¤ò¸Æ¤ó¤Ç¤·¤Þ¤¦¤È¡¢ +Æɤ߹þ¤ó¤Ç¤¤¤Ê¤¤¤È¸«¤Ê¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+Ä̾ï¤Ï¤³¤Î´Ø¿ô¤ò»È¤ï¤Ê¤¯¤Æ¤â¡¢eb_read_text() ¤ä +eb_read_heading() ¤¬ 0 ¤òÊÖ¤·¤¿¤é¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎËöÈø¤Ë +㤷¤¿¤È¤ß¤Ê¤·¤Æº¹¤·»Ù¤¨¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +¤¿¤À¤·¤½¤ÎºÝ¤Ï¡¢°ú¿ô text_max_length ¤ÎÃͤò½½Ê¬Â礭¤¯¼è¤Ã¤Æ +²¼¤µ¤¤¡£ +

+ + + +

EB_Error_Code eb_write_text_byte1 (EB_Book *book, int byte1)

+ +

EB_Error_Code eb_write_text_byte2 (EB_Book *book, int byte1, int byte2)

+ +

EB_Error_Code eb_write_text_string (EB_Book *book, const char *string)

+ +

EB_Error_Code eb_write_text (EB_Book *book, const char *stream, size_t stream_length)

+ +

+¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢¤¤¤º¤ì¤â¥Õ¥Ã¥¯´Ø¿ô¤ÎÃ椫¤é¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤à +¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +½ñ¤­¹þ¤à¥Ç¡¼¥¿¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¡¢»È¤¤Ê¬¤±¤Æ²¼¤µ¤¤¡£ +

+ +

+eb_write_text_byte1() ¤Ï¡¢byte1 ¤Ç»ØÄꤷ¤¿ +1 ¥Ð¥¤¥È¤ÎÃͤò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +eb_write_text_byte2() ¤Ï¡¢byte1, byte2 +¤Ç»ØÄꤷ¤¿ 2 ¥Ð¥¤¥È¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +eb_write_text_string() ¤Ï¡¢string ¤Ç»ØÄꤷ¤¿ +ʸ»úÎó¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +eb_write_text() ¤Ï¡¢stream ¤«¤é»Ï¤Þ¤ëŤµ +stream_length ¥Ð¥¤¥È¤Î¥Ð¥¤¥ÈÎó¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¤É¤Î´Ø¿ô¤â¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ºÇ½ªÅª¤Ë¡¢½ñ¤­¹þ¤ó¤À¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¸µ¤Ç¤¢¤ë +eb_read_text(), eb_read_heading() ¤«¤é +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ËÅϤµ¤ì¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤È¤·¤Æ¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤­¤Ë¡¢¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿¾ì¹ç +¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

const char *eb_current_candidate (EB_Book *book)

+ +

+´Ø¿ô eb_current_candidate() ¤Ï¡¢¥¢¥¯¥»¥¹Ãæ¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î +¸½ºß°ÌÃ֤˽ñ¤«¤ì¤Æ¤¤¤ë¡¢Ê£¹ç¸¡º÷¤Î¸õÊä¤È¤Ê¤ë¸ì¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ÊÖ¤¹Ê¸»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç EB_MAX_WORD_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎŤµ¤Ë¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +

+ +

+¤³¤Î´Ø¿ô¤ÏÈó¾ï¤ËÆüì¤Ç¡¢Ê£¹ç¸¡º÷¤Î¸õÊä¤È¤Ê¤ë¸ì¤Î½ªÎ»¤ò°ÕÌ£¤¹¤ë +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯¤Ç¤¢¤ë EB_HOOK_END_CANDIDATE_LEAF +¤ª¤è¤Ó EB_HOOK_END_CANDIDATE_GROUP ¤ËÂФ¹¤ë¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç +¤Î¤ß¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì½ê¤Ç¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÎÆ°ºî¤Ï¡¢Ì¤ÄêµÁ¤Ç¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Î¸Æ¤Ó½Ð¤·Êý¤Ç¤¹¤¬¡¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤäƤ­¤¿ EB_Book +¥ª¥Ö¥¸¥§¥¯¥È (¤Ø¤Î¥Ý¥¤¥ó¥¿) ¤ò¡¢¤½¤Î¤Þ¤Þ¤³¤Î´Ø¿ô¤Ë°ú¿ô¤È¤·¤ÆÅϤ·¤Æ +¤ä¤ê¤Þ¤¹¡£ +

+ +

+book ¤Îʸ»ú¥³¡¼¥É +(¡Ö[CD-ROM ½ñÀÒ¤È EB_Book ¥ª¥Ö¥¸¥§¥¯¥È] ¥Ç¡¼¥¿·¿¤Î¾ÜºÙ¡× ¤ò»²¾È¤Î¤³¤È) +¤¬ EB_CHARCODE_ISO8859_1 ¤Ê¤é¡¢´Ø¿ô¤ÎÊÖ¤¹Ê¸»úÎó¤Ï ISO 8859-1 +¤Ë¤Ê¤ê¡¢¤½¤ì°Ê³°¤Îʸ»ú¥³¡¼¥É¤Î¾ì¹ç¤ÏÆüËܸì EUC ¤Ë¤Ê¤ê¤Þ¤¹¡£ +´Ø¿ô¤ÎÊÖ¤¹Ê¸»úÎó¤Ï¡¢Â¾¤Î¥Õ¥Ã¥¯¤Ë¤è¤ë²Ã¹©½èÍý¤Î±Æ¶Á¤ò¼õ¤±¤Þ¤»¤ó¡£ +ʸ»ú¥³¡¼¥É¤ÎÊÑ´¹¤ò¹Ô¤¦°Ê³°¤Ï¡¢ÆâÉô¥Ç¡¼¥¿¤ò¤½¤Î¤Þ¤ÞÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢¤³¤Î´Ø¿ô¤¬ÊÖ¤·¤¿Ê¸»úÎó¤ò»²¾È¤Ç¤­¤ë¤Î¤Ï¡¢¥Õ¥Ã¥¯´Ø¿ô¤«¤éÌá¤ë¤Þ¤Ç¤Î +´Ö¤À¤±¤Ç¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

EB_Error_Code eb_forward_text (EB_Book *book, EB_Appendix *appendix)

+ +

EB_Error_Code eb_backward_text (EB_Book *book, EB_Appendix *appendix)

+ +

+´Ø¿ô eb_forward_text() ¤È eb_backward_text() ¤Ï¡¢ +book ¤¬ÁªÂò¤·¤Æ¤¤¤ëÉûËܤÎËÜʸ¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤òÁ°¸å¤Ë°ÜÆ°¤µ¤»¡¢ +ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤òñ°Ì¤È¤·¤¿Æ¬½Ð¤·¤ò¹Ô¤¤¤Þ¤¹¡£ +¤Á¤ç¤¦¤É¡¢²»³Ú CD ¤Î¶Ê¤ÎƬ½Ð¤·¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+eb_forward_text() ¤ÏËÜʸ¤ÎËöÈøÊý¸þ¤Ë¸þ¤«¤Ã¤Æ¥¢¥¯¥»¥¹°ÌÃÖ¤ò +¿Ê¤á¡¢eb_backward_text() ¤ÏÀèƬÊý¸þ¤Ë¸þ¤«¤Ã¤Æ¥¢¥¯¥»¥¹°ÌÃÖ¤ò +Ìᤷ¤Þ¤¹¡£ +

+ +

+eb_forward_text() ¤Î¸Æ¤Ó½Ð¤·¤Ç¤Ï¡¢¥¢¥¯¥»¥¹°ÌÃÖ¤Ïɬ¤º¼¡¤Î¸ì¤Î +ÀâÌÀ¤Î³«»Ï°ÌÃ֤ޤǰÜÆ°¤·¤Þ¤¹¡£ +¤½¤ì¤ËÂФ·¤Æ eb_backward_text() ¤Î¸Æ¤Ó½Ð¤·¤Ç¤Ï¡¢°ÜÆ°À褬¾õÂÖ +¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£ +¤â¤·¡¢¸½ºß¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤¬¤½¤Îñ¸ì¤ÎÀâÌÀ¤ÎÀèƬ¤Ë¤¢¤ë¤È¤­¤Ï¡¢ +eb_backward_text() ¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¡¢°ì¤ÄÁ°¤Îñ¸ì¤ÎÀâÌÀ¤Î +ÀèƬ¤Ë¥¢¥¯¥»¥¹°ÌÃÖ¤¬°ÜÆ°¤·¤Þ¤¹¡£ +¥¢¥¯¥»¥¹°ÌÃÖ¤¬Ã±¸ì¤ÎÀâÌÀ¤ÎÅÓÃæ¤äËöÈø¤Ë¤¢¤ë¤È¤­¤Ï¡¢¤½¤Îñ¸ì¤ÎÀâÌÀ¤Î +ÀèƬ¤Ë°ÜÆ°¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+²Ã¤¨¤Æ¡¢¤³¤ì¤é¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢¤¢¤é¤«¤¸¤á eb_seek_text() +¤« eb_read_text() ¤ò¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤Æ¤¤¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£ +(eb_read_text() ¤Î¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¤ë¤Ë¤Ï¡¢¤µ¤é¤ËÁ°¤â¤Ã¤Æ +eb_seek_text() ¤Î¸Æ¤Ó½Ð¤·¤òÀ®¸ù¤µ¤»¤ë¤³¤È¤¬¾ò·ï¤È¤Ê¤ê¤Þ¤¹¡£) +

+ +

+eb_read_text() ¤Ç¤Ï¤Ê¤¯¡¢eb_read_heading() ¤ä +eb_read_rawtext() ¤Î¸Æ¤Ó½Ð¤·¤ËÀ®¸ù¤·¤¿¸å¤Ç¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_DIFF_CONTENT ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢Á°¤â¤Ã¤Æ eb_seek_text() ¤Ç¥·¡¼¥¯¤»¤º¤Ë¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ËÜʸ¥Ç¡¼¥¿¤ÎËöÈø¤äÀèƬ¤Ë㤷¤Æ¤·¤Þ¤Ã¤Æ¡¢¤½¤ÎÊý¸þ¤Ë¤â¤¦ËÜʸ¤¬¤Ê¤¤¤È¤­¤Ï¡¢ +EB_ERR_END_OF_CONTENT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+appendix ¤¬ NULL ¤Ç¤Ï¤Ê¤¯¡¢¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò +»ý¤Ã¤¿ÉûËܤòÁªÂòÃæ¤Ç¤¢¤ì¤Ð¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤È¤·¤Æ¤½¤ÎÃͤò»ÈÍѤ·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢eb_read_text() ¤ÈƱ¤¸ÊýË¡¤Ç¶èÀڤꥳ¡¼¥É¤Î +¼«Æ°È½Ê̤ò»î¤ß¤Þ¤¹¡£ +

+ +

+¥¢¥¯¥»¥¹°ÌÃÖ¾å¤Ë¤¢¤ë¤Î¤¬¥á¥Ë¥å¡¼¤äÃøºî¸¢É½¼¨¤Î¤è¤¦¤Ë¡¢ËÜʸ°Ê³°¤Î +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ç¤¢¤Ã¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢ËÜʸ°Ê³°¤Î¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉô¤Ë¤Ï¡¢Æ¬½Ð¤·°ÌÃÖ¤¬¥Ç¡¼¥¿¤Î +ÀèƬ°ÌÃ֤ˤ·¤«¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¤³¤Î´Ø¿ô¤¬Ìò¤ËΩ¤Ä¾õ¶·¤Ï¤Û¤È¤ó¤É +¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+(¥á¥Ë¥å¡¼¤Ç¤Ï¡¢¸Ä¡¹¤Î³¬ÁؤΥá¥Ë¥å¡¼¥Ç¡¼¥¿¤¬¡¢¤½¤ì¤¾¤ìÆÈΩ¤·¤¿ +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢Æ¬½Ð¤·¤ò¹Ô¤Ã¤Æ¤âÁ°¸å¤Î¥á¥Ë¥å¡¼¥Ç¡¼¥¿¤Ø¤Ï +°ÜÆ°¤Ç¤­¤Þ¤»¤ó¡£ +Ê£¹ç¸¡º÷¤Î¸õÊä°ìÍ÷¤âƱÍͤǤ¹¡£) +

+ + +

EB_Error_Code eb_forward_heading (EB_Book *book)

+ +

+´Ø¿ô eb_forward_heading() ¤Ï¡¢book ¤¬ÁªÂò¤·¤Æ¤¤¤ë +ÉûËܤθ«½Ð¤·¤Î¥¢¥¯¥»¥¹°ÌÃÖ¤ò¸å¤Ë°ÜÆ°¤µ¤»¡¢¸«½Ð¤·¤Î¶èÀÚ¤ê¤òñ°Ì¤È¤·¤¿Æ¬½Ð¤· +¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+ËÜʸ¤ÎƬ½Ð¤·¤ò¹Ô¤¦´Ø¿ô eb_forward_text() ¤Î¸«½Ð¤·ÈǤǤ¹¡£ +¤¿¤À¤·¡¢¸«½Ð¤·¤ÇƬ½Ð¤·¤ò¹Ô¤¦µ¡²ñ¤Ï¡¢¥¯¥í¥¹¸¡º÷¤ÎËÜʸ¼èÆÀ¤Ë¸Â¤é¤ì¤ë¤¿¤á¡¢ +eb_backward_heading() ¤È¤¤¤¦´Ø¿ô¤ÏÍÑ°Õ¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤È¡¢¥¢¥¯¥»¥¹°ÌÃÖ¤¬¼¡¤Î¸«½Ð¤·¤Î³«»Ï°ÌÃ֤ޤǰÜÆ°¤·¤Þ¤¹¡£ +(¥¯¥í¥¹¸¡º÷¤Ç¤Ï¡¢¸«½Ð¤·Îΰè¤ÎÃæ¤Ë¡Ö¸«½Ð¤·¡×¤È¡ÖËÜʸ¡×¤¬¸ò¸ß¤Ë½ñ¤«¤ì¤Æ +¤¤¤Þ¤¹¤¬¡¢¥Ç¡¼¥¿¹½Â¤¾å¡ÖËÜʸ¡×¤È¡Ö¸«½Ð¤·¡×¤Ï¶èÊ̤¬ÉÕ¤­¤Þ¤»¤ó¡£ +¥¢¥¯¥»¥¹°ÌÃÖ¤¬¥¯¥í¥¹¸¡º÷¤Î¸«½Ð¤·ÎΰèÆâ¤Î¾ì¹ç¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤ÈºÇ¤â¶á¤¤ +¡Ö¸«½Ð¤·¡×¤â¤·¤¯¤Ï¡ÖËÜʸ¡×¤Î³«»Ï°ÌÃ֤ޤǰÜÆ°¤·¤Þ¤¹¡£) +

+ +

+eb_read_heading() ¤Ç¤Ï¤Ê¤¯¡¢eb_read_text() ¤ä +eb_read_rawtext() ¤Î¸Æ¤Ó½Ð¤·¤ËÀ®¸ù¤·¤¿¸å¤Ç¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_DIFF_CONTENT ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢Á°¤â¤Ã¤Æ eb_seek_text() ¤Ç¥·¡¼¥¯¤»¤º¤Ë¤³¤Î´Ø¿ô¤ò +¸Æ¤Ó½Ð¤¹¤È¡¢EB_ERR_NO_PREV_SEEK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¥¯¥í¥¹¸¡º÷°Ê³°¤Î¸¡º÷¥á¥½¥Ã¥É¤Î¸«½Ð¤·¤Î³ÊǼ°ÌÃÖ¤ËÂФ·¤Æ¡¢¤³¤Î´Ø¿ô¤ò +¸Æ¤Ö¤³¤È¤â²Äǽ¤Ç¤¹¤¬¡¢¤½¤Î¤è¤¦¤ÊɬÍפËÇ÷¤é¤ì¤ëµ¡²ñ¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +

+ + +

³°»ú

+ +

+ʸ»ú¥³¡¼¥É¤Ë¼ýÏ¿¤µ¤ì¤Æ¤¤¤Ê¤¤¡¢»äŪ¤ËÄêµÁ¤·¤¿Ê¸»ú¤Î¤³¤È¤ò¡¢Â¯¤Ë¡Ö³°»ú¡× +¤È¸À¤¤¤Þ¤¹¡£ +³°»ú¤È¤·¤ÆÄêµÁ¤·¤¿¸Ä¡¹¤Îʸ»ú¤ò¼±Ê̤¹¤ë¤¿¤á¤Ë¡¢Ê¸»ú¥³¡¼¥É¤Ë¼ýÏ¿¤µ¤ì¤¿ +ʸ»ú¤È¤Ï½ÅÊ£¤·¤Ê¤¤°ÌÃ֤ˡ¢³Æʸ»ú¤Îʸ»úÈÖ¹æ¤Ë³ä¤ê¿¶¤ë¤Î¤¬ÉáÄ̤Ǥ¹¡£ +(³ä¤êÅö¤Æ¤ëʸ»úÈÖ¹æ¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Öʸ»ú¥³¡¼¥É¡× ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+»ÔÈΤÎÅŻҥ֥寡¢EPWING ¤Ç¤â¡¢¤Û¤È¤ó¤É¤¬³°»ú¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ +³°»ú¤ÎÄêµÁ¾õ¶·¤Ï½ñÀÒƱ»Î¤Ç¥Ð¥é¥Ð¥é¤Ç¡¢¤Þ¤Ã¤¿¤¯Åý°ì´¶¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤Ä¤Þ¤ê¡¢Æ±¤¸Ê¸»úÈÖ¹æ¤ò»È¤Ã¤Æ¤¤¤Æ¤â¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë³°»ú¤Ï½ñÀҤˤè¤Ã¤Æ +°ã¤¤¤Þ¤¹¡£ +³°»ú¤ÏÉûËÜËè¤ËÄêµÁ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¤¬¡¢°ì¤Ä¤Î CD-ROM ½ñÀÒÆâ¤Ç¤âÉûËÜ¤Ë +¤è¤Ã¤ÆÄêµÁ¤¬°Û¤Ê¤ë¤³¤È¤âÄÁ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +ÉûËܤˤè¤Ã¤Æ¤Ï¡¢¿ôÉ´¤«¤é¿ôÀé¤Î³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀҤǤϡ¢ÄêµÁ¤·¤¿³°»ú¤Î»ú·Á¥Ç¡¼¥¿ (¤Ä¤Þ¤ê¥Õ¥©¥ó¥È) ¤òÍÑ°Õ¤·¤Æ +¤¤¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Ç¤¢¤ê¡¢½ñÀҤˤè¤Ã¤Æ¤ÏÂ礭¤µ¤Î°Û¤Ê¤ë¿ô¼ïÎà +¤Î¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+µÕ¤Ë¸À¤¨¤Ð¡¢³°»ú¤ËÂФ·¤ÆÄ󶡤µ¤ì¤ë¥Ç¡¼¥¿¤Ï¡¢¥Õ¥©¥ó¥È¤À¤±¤Ç¤¹¡£ +¤¢¤ëʸ»úÈÖ¹æ¤ò³ä¤êÅö¤Æ¤é¤ì¤¿³°»ú¤¬¡¢´Á»ú¤Ê¤Î¤«¡¢È¯²»µ­¹æ¤Ê¤Î¤«¡¢ +¤½¤¦¤¤¤Ã¤¿Êä½õŪ¤Ê¾ðÊó¤ÏÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬³°»ú¤ò¥µ¥Ý¡¼¥È¤¹¤ë¤¿¤á¤Ë¤Ï¡¢³°»ú¤Î¥Õ¥©¥ó¥È +¤ò¤½¤Î¤Þ¤Þɽ¼¨¤¹¤ë°Ê³°¤ËÊýË¡¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +

+ + + +

Ⱦ³Ñ³°»ú¤ÈÁ´³Ñ³°»ú

+ +

+CD-ROM ½ñÀҤˤª¤±¤ë³°»ú¤Ë¤Ï¡¢¡ÖÁ´³Ñ³°»ú¡×¡ÖȾ³Ñ³°»ú¡×¤ÎÆó¼ïÎब¤¢¤ê¤Þ¤¹¡£ +Á´³Ñ³°»ú¤ÏÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤Î²£¤È½Ä¤ÎŤµ¤¬¤ª¤è¤½ 1:1 ¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢ +Ⱦ³Ñ³°»ú¤Ç¤Ï 1:2 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡Á´³Ñ³°»ú¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡È¾³Ñ³°»ú¡¡¡¡
+¡¡¡¡¡¡¡¡¡Ê£±£¶¡ß£±£¶¡Ë¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ê£¸¡ß£±£¶¡Ë
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢£¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢£¢£¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢¢¢£¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡¢¢¢£¢¢¢¢¢¢¢£¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢£¢£¢£¢¢¢¢¢¢
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢
+
+
+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ë¤Ï¡¢È¾³Ñɽ¼¨¤Î³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬ +¤¢¤ê (¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆâÉô·Á¼°¡× ¤ò»²¾È¤Î¤³¤È)¡¢ +³«»Ï¤È½ªÎ»¤Î´Ö¤ËÃÖ¤«¤ì¤¿¤â¤Î¤ÏȾ³Ñ³°»ú¡¢¤½¤ì°Ê³°¤Î¤È¤³¤í¤Ê¤éÁ´³Ñ³°»ú¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ʸ»úÈÖ¹æ¤ÏƱ¤¸¤Ç¤â¡¢»ú·Á¤¬Á´³Ñ¤ÈȾ³Ñ¤Ç¤Ï¤Þ¤Ã¤¿¤¯°Û¤Ê¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹ +¤Î¤Ç¡¢³°»ú¤Îʸ»úÈÖ¹æ¤À¤±¤«¤é¡¢Á´³Ñ¤ÈȾ³Ñ¤Î¤É¤Á¤é¤«¤òȽÃǤ¹¤ë¤³¤È¤Ï +¤Ç¤­¤Þ¤»¤ó¡£ +¤«¤Ê¤é¤º¡¢Á°Êý¤ËȾ³Ñ³«»Ï¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬½Ð¸½¤·¤Æ¤¤¤¿¤«¤É¤¦¤« +¤È¤¤¤¦¾ðÊó¤Ë´ð¤Å¤¤¤ÆȽÃǤ·¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£ +

+ +

+¤¿¤À¤·¡¢Á´³Ñ¤«È¾³Ñ¤«¤ÎȽÄê¤Ï EB ¥é¥¤¥Ö¥é¥ê¦¤Ç¹Ô¤¤¤Þ¤¹¤Î¤Ç¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬Ê¸Ì®¤Î²òÀϤò¹Ô¤¦É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+CD-ROM ½ñÀÒ¤ÎÉûËܤˤϡ¢È¾³Ñ³°»ú¤¢¤ë¤¤¤ÏÁ´³Ñ³°»ú¤Î¤É¤Á¤é¤«°ìÊý¤À¤±¤ò +ÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¤·¡¢Î¾Êý¤È¤âÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£ +

+ + +

³°»ú¤ÎÂ礭¤µ¤È³°»ú¥³¡¼¥É

+ +

+³ÆÉûËܤˤϡ¢ÄêµÁ¤·¤Æ¤¤¤ë³°»ú¤Î¥Õ¥©¥ó¥È¤¬¥Ó¥Ã¥È¥Þ¥Ã¥×·Á¼°¤Ç¼ýÏ¿¤µ¤ì¤Æ +¤¤¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤ÎÂ礭¤µ¤Ï¡¢½Ä¤Î¥Ô¥¯¥»¥ë¿ô¤ò´ð½à¤Ë¤¹¤ë¤È 16, 24, 30, 48 ¤Î +4 ¼ïÎब¤¢¤ê¡¢Á´³Ñ³°»ú¡¢È¾³Ñ³°»ú¤½¤ì¤¾¤ì¤Î¥Õ¥©¥ó¥È¤ÎÂ礭¤µ +(²£¤Î¥Ô¥¯¥»¥ë¿ô¡ß½Ä¤Î¥Ô¥¯¥»¥ë¿ô) ¤Ï¼¡¤ÎÄ̤ê¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ + + + + + + +
½Ä¤Î¥Ô¥¯¥»¥ë¿ô Á´³ÑÁ´³Ñ Ⱦ³Ñ³°»ú
16 16x16 8x16
24 24x24 16x24
30 32x30 16x30
48 48x48 24x48
+ +

+¤¿¤À¤·¡¢¤¹¤Ù¤Æ¤ÎÉûËܤǤ³¤ì¤é 4 ¼ïÎà¤Î¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +½Ä¤¬ 16 ¥Ô¥¯¥»¥ë¤Î¤â¤Î¤Ïɬ¤ºÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¤½¤ì°Ê³°¤Ï¤Ê¤¤¤³¤È¤â +ÄÁ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +(³°»ú¤¬¤Þ¤Ã¤¿¤¯ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤âÍÑ°Õ¤µ¤ì +¤Þ¤»¤ó¡£) +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢¤³¤Î¤è¤¦¤Ë½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô¡¢¤Ä¤Þ¤ê +¥Õ¥©¥ó¥È¤Î¹â¤µ (font height) ¤ò´ð½à¤Ë¡¢³°»ú¥Õ¥©¥ó¥È¤ÎÂ礭¤µ¤ò +¶èÊ̤·¤Æ¤¤¤Þ¤¹¡£ +¤½¤·¤Æ¡¢¤½¤ì¤¾¤ì¤Î¥Õ¥©¥ó¥È¤Î¹â¤µ (16, 24, 30, 48) ¤ËÂФ·¤Æ¡¢ +³°»ú¥³¡¼¥É (font code) ¤È¤¤¤¦¤â¤Î¤ò³ä¤êÅö¤Æ¤Æ¤¤¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤Î¹â¤µ¤ò»ØÄꤹ¤ëºÝ¤Ï¡¢É¬¤º¤³¤Î³°»ú¥³¡¼¥É¤ò»È¤¤¤Þ¤¹¡£ +

+ + + + + + + +
½Ä¤Î¥Ô¥¯¥»¥ë¿ô ³°»ú¥³¡¼¥É
16 EB_FONT_16
24 EB_FONT_24
30 EB_FONT_30
48 EB_FONT_48
+ + +

ÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ

+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÇÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë³°»ú¥Õ¥©¥ó¥È +¤Î¹â¤µ¤ÎÃ椫¤é°ì¤ÄÁª¤ó¤Ç¡¢ +ÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ (current font height) ¤È¤·¤Æ»ØÄꤹ¤ë +¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ç³°»ú¤Î¥Õ¥©¥ó¥È¥Ç¡¼¥¿ (¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿) ¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢ +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤ò¤¢¤é¤«¤¸¤áÁªÂò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+ÁªÂò¤¹¤ë¤Ë¤Ï¡¢´Ø¿ô eb_set_font() ¤ò»È¤¤¤Þ¤¹¡£ +°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¡¢¹â¤µ 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤òÁªÂò¤¹¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤòÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+if (eb_set_font(&book, EB_FONT_24) != EB_SUCCESS) {
+    printf("eb_set_font_() failed\n");
+    return;
+}
+
+
+ +

+¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¹â¤µ 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤òÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ +¤¤¤ë¤â¤Î¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¤¬¡¢¼ÂºÝ¤Ë¤ÏÍÑ°Õ¤·¤Æ¤¤¤Ê¤¤ÉûËܤâÄÁ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +¤â¤·¡¢ÉûËܤ¬¹â¤µ 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ +eb_set_font() ¤Ï EB_ERR_NO_SUCH_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤·¤«¤·¡¢³°»ú¤òÁªÂò¤¹¤ëÁ°¤Ë¡¢Á°¤â¤Ã¤Æ¤½¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤ò +ÃΤꤿ¤¤¤È¤­¤â¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢2 Ä̤ê¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤º 1 ¤ÄÌܤϡ¢ÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë¥Õ¥©¥ó¥È¤Î¹â¤µ¤Î°ìÍ÷¤ò +eb_font_list() ¤Ç¼èÆÀ¤¹¤ëÊýË¡¤Ç¤¹¡£ +¤³¤ì¤Ï¡¢ÉûËÜ¥³¡¼¥É¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë eb_subbook_list() ¤È +»È¤¤Êý¤¬Îɤ¯»÷¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+EB_Font_Code font_list[EB_MAX_FONTS];
+int font_count;
+int i;
+
+if (eb_font_list(&book, font_list, &font_count) != EB_SUCCESS) {
+    printf("eb_font_list() failed\n");
+    return;
+}
+
+for (i = 0; i < font_count; i++) {
+    if (font_list[i] == EB_FONT_24)
+        printf("this subbook has EB_FONT_24\n");
+}
+
+
+ +

+2 ¤ÄÌܤϡ¢eb_have_font() ¤ò»È¤¦¤ä¤êÊý¤Ç¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢ÆÃÄê¤Î¹â¤µ¤Î¥Õ¥©¥ó¥È¤ò¡¢ÁªÂòÃæ¤ÎÉûËܤ¬ÍÑ°Õ¤·¤Æ¤¤¤ë¤«¤É¤¦¤« +Ä´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+if (eb_have_font(&book, EB_FONT_24)) {
+    printf("this subbook has EB_FONT_24\n");
+}
+
+
+ +

+¤Þ¤¿¡¢ÁªÂòÃæ¤ÎÉûËܤ¬È¾³Ñ³°»ú¡¢Á´³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ï¡¢¤½¤ì¤¾¤ì +eb_have_narrow_font(), eb_have_wide_font() +¤ò»È¤Ã¤ÆÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+if (eb_have_narrow_font(&book))
+    printf("this subbook has narrow font\n");
+if (eb_have_wide_font(&book))
+    printf("this subbook has wide font\n");
+
+
+ +

+¤Ê¤ª¡¢¤¢¤é¤«¤¸¤áÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤¤¤È¡¢³°»ú¤Î¹â¤µ¤ÏÁªÂò¤Ç¤­¤Ê¤¤¤Î¤Ç +Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +eb_set_subbook() ¤ÇÁªÂòÃæ¤ÎÉûËܤòÀÚ¤êÂؤ¨¤ë¤È¡¢³°»ú¥Õ¥©¥ó¥È +¤Î¹â¤µ¤Ï¾ï¤Ë̤ÁªÂò¤Î¾õÂÖ¤ËÌá¤ê¤Þ¤¹¡£ +

+ + +

³°»ú¥Õ¥©¥ó¥È¤Î¼è¤ê½Ð¤·

+ +

+³°»ú¤Î¹â¤µ¤òÁªÂò¤·¤¿¾õÂ֤Ǥ¢¤ì¤Ð¡¢³°»ú¤Î¥Õ¥©¥ó¥È¥Ç¡¼¥¿ +(¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿) ¤ò¼è¤ê½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹´Ø¿ô¤Ï¡¢ +Á´³Ñ³°»ú¤Ê¤é eb_wide_font_character_bitmap()¡¢ +Ⱦ³Ñ³°»ú¤Ê¤é eb_narrow_font_character_bitmap() ¤Ç¤¹¡£ +

+ +

+Á´³Ñ³°»ú 0xa121 ¤Î¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¥×¥í¥°¥é¥à¤Ï¡¢ +¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +Ⱦ³Ñ³°»ú¤Î¾ì¹ç¤Ï¡¢¸Æ¤Ó½Ð¤¹´Ø¿ô̾¤¬ÊѤï¤ë¤À¤±¤Ç¤¹¡£ +

+ +
+
+/* book ¤¬ EB_Book ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤¹¤Ç¤Ë
+ * ½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¡¢ÉûËܤȳ°»ú¤Î¹â¤µ¤òÁªÂòÃæ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+char bitmap[EB_SIZE_WIDE_FONT_48];
+
+if (eb_wide_font_character_bitmap(book, 0xa121, bitmap)
+    != EB_SUCCESS) {
+    return;
+}
+
+
+ +

+¤³¤³¤Ç¤Ï¡¢bitmap ¤Ë¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤ò³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£ +bitmap ¤ÎÎΰè¤È¤·¤Æ EB_SIZE_WIDE_FONT_48 +¥Ð¥¤¥È¤ò³ÎÊݤ·¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤ì¤Ï¹â¤µ 48 ¥Ô¥¯¥»¥ë¤Î³°»ú¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë +¤¿¤á¤ËɬÍפʥµ¥¤¥º¤òɽ¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥©¥ó¥È¥Ç¡¼¥¿¤Î¥µ¥¤¥º¤Ï¡¢³°»ú¤Î¹â¤µ¤Ë±þ¤¸¤Æ°ìÄê¤Ç¤¹¡£ +¹â¤µ 48 ¥Ô¥¯¥»¥ë¤Ï³°»ú¤ÎÃæ¤Ç¤âºÇÂç¤Î¥µ¥¤¥º¤Ê¤Î¤Ç¡¢¤³¤Î¥µ¥¤¥º¤ÎÎΰè¤ò +ÍÑ°Õ¤¹¤ì¤Ð¡¢¤É¤Î¹â¤µ¤Î³°»ú¤Ç¤â³ÊǼ¤Ç¤­¤Þ¤¹¡£ +

+ +

+³°»ú¥Ç¡¼¥¿¤Ï¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×·Á¼°¤Î¥Ç¡¼¥¿¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +ÇØ·Ê¿§¤ò¥Ó¥Ã¥ÈÃÍ 0, Á°·Ê¿§¤ò¥Ó¥Ã¥ÈÃÍ 1 ¤È¤·¤Æ¡¢³Æ¥Ô¥¯¥»¥ë¤ÎÃͤòÊÂ¤Ù¤Æ +¤¢¤ê¤Þ¤¹¡£ +ʤÓÊý¤Ç¤¹¤¬¡¢º¸¾å¤«¤é¤Þ¤º¤Ï±¦¤Ë¸þ¤«¤Ã¤Æ¥Ô¥¯¥»¥ë¤ò½¦¤Ã¤Æ¤¤¤­¡¢º¸Ã¼¤Þ¤Ç +Í褿¤é°ì¤Ä²¼¤ÎÃʤ˹ߤê¤Æ¡¢¤Þ¤¿±¦Êý¸þ¤Ë¥Ô¥¯¥»¥ë¤ò½¦¤¤¤Þ¤¹¡£ +°Ê²¼¡¢°ìÈÖ²¼¤ÎÃʤޤǤ³¤ì¤ò·«¤êÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢¥Ð¥¤¥ÈÆâ¤Ç¤Ï¡¢128, 64, 32, ...1 ¤Î·å¤Î½ç¤Ë¥Ó¥Ã¥ÈÃͤò³ÊǼ¤·¤Æ +¤¤¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢128 ¤Î·å¤Ï°ìÈÖº¸¤Î¥Ô¥¯¥»¥ë¡¢1 ¤Î·å¤Ï°ìÈÖ±¦¤Î¥Ô¥¯¥»¥ë¤ËÂбþ +¤·¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ë¡¢16x16 ¤ÎÁ´³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ÎÎã¤È¡¢¤½¤Î¥Ð¥¤¥ÈÎó¤òµ­¤·¤Þ¤¹¡£ +ÇØ·Ê¿§¤¬¢¢¡¢Á°·Ê¿§¤¬¢£¤Ç¤¹¡£ +

+ +
+
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x1f, 0x88,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x00, 0xc8,
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x09, 0x28,
+¢¢¢¢¢¢¢¢¢£¢¢¢¢¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡0x09, 0xf8,
+¢¢¢¢¢£¢£¢£¢£¢£¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x3e, 0x28,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢£¢¢¢¢¢¢¡¡¡¡0x00, 0x28,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x10, 0x08,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x10, 0x08,
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡0x1f, 0xf8,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x18, 0x08,
+¢¢¢¢¢¢¢£¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢£¢¢¢¢¢¢¡¡¡¡0x18, 0x08,
+¢¢¢¢¢¢¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢¢¢¢¢¢¡¡¡¡0x1f, 0xf8,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¡¡¡¡0x00, 0x00,
+
+
+ + +

³°»ú¥Õ¥©¥ó¥È¤ÎÊÑ´¹

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò XBM, XPM, GIF, BMP, PNG +¤Î³Æ²èÁü·Á¼°¤ËÊÑ´¹¤¹¤ë´Ø¿ô¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +ÊÑ´¹¤ò¹Ô¤¦´Ø¿ô¤Ï¡¢¼¡¤Î 5 ¤Ä¤Ç¤¹¡£ +

+ + + + + + + +
eb_bitmap_to_xbm() XBM ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_xpm() XPM ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_gif() GIF ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_bmp() BMP ¤Ø¤ÎÊÑ´¹
eb_bitmap_to_png() PNG ¤Ø¤ÎÊÑ´¹
+ +

+¤É¤Î´Ø¿ô¤â¸Æ¤Ó½Ð¤·Êý¤ÏƱ¤¸¤Ç¤¹¤¬¡¢¤³¤³¤Ç¤Ï XBM ¤Ø¤ÎÊÑ´¹¤Î¥×¥í¥°¥é¥àÎã +¤ò¼¨¤·¤Þ¤¹¡£ +

+ +
+
+/* bitmap ¤Ë¹â¤µ 16 ¤ÎÁ´³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤¬³ÊǼ
+ * ¤µ¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+char bitmap[EB_SIZE_WIDE_FONT_16];
+char xbm[EB_SIZE_WIDE_FONT_16_XBM];
+size_t xbmsize;
+
+if (eb_wide_font_character_bitmap(bitmap, EB_WIDTH_WIDE_FONT_16,
+    EB_HEIGHT_FONT_16, xbm, &xbmsize) != EB_SUCCESS) {
+    return;
+}
+
+
+ +

+XPM, GIF, PNG ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£ +BMP ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÇò¤Ë¤Ê¤ê¤Þ¤¹¡£ +XBM ¤Ï¥â¥Î¥¯¥í¿ÞÈÇÍѤΥǡ¼¥¿·Á¼°¤Ê¤Î¤Ç¡¢¿§¤ÎÀßÄê¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥Æ¥­¥¹¥ÈÃæ¤Î³°»ú

+ +

+³°»ú¤Ï¥Æ¥­¥¹¥È¥Ç¡¼¥¿ (ËÜʸ¡¢¥á¥Ë¥å¡¼¤Ê¤É) ¤ÎÃæ¤Ç»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤¬¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë½Ð¸½¤¹¤ë³°»ú¤ò¼±Ê̤·¤Æ +½èÍý¤ò¹Ô¤¦¤Ë¤Ï¡¢³°»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤òÀßÄꤷ¤Æ¡¢¥Õ¥Ã¥¯´Ø¿ô¤ÎÃæ¤Ç½èÍý¤¹¤ë +¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+³°»ú¤ËÂФ¹¤ë¥Õ¥Ã¥¯¤Ï¡¢Á´³Ñ³°»ú¤ËÂФ¹¤ë EB_HOOK_WIDE_FONT ¤È +Ⱦ³Ñ³°»ú¤ËÂФ¹¤ë EB_HOOK_NARROW_FONT ¤ÎÆó¼ïÎब¤¢¤ê¤Þ¤¹¡£ +¤¤¤º¤ì¤â¡¢³°»ú¤¬°ì»ú½Ð¸½¤¹¤ëÅ٤ˡ¢ÀßÄꤷ¤¿¥Õ¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯¤Î°·¤¤Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¥Õ¥Ã¥¯¥³¡¼¥É¤Î°ìÍ÷¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/eb.h>
+
+
+ + +

EB_Font_Code ·¿

+ +

+³°»ú¥³¡¼¥É¤Ï¡¢³°»ú¤Î¹â¤µ (¥Ô¥¯¥»¥ë¿ô) ¤òɽ¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¹â¤µ¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
    +
  • EB_FONT_16 +
  • EB_FONT_24 +
  • EB_FONT_30 +
  • EB_FONT_48 +
  • EB_FONT_INVALID +
+ +

+³°»ú¥³¡¼¥É¤Î¼ÂÂΤÏÀ°¿ôÃͤǤ¹¤¬¡¢EB_FONT_16 ¤ÎÃÍ¤Ï 16 ¤Ç¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +¾¤âƱÍͤǤ¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+EB_FONT_INVALID ¤ÏÆÃÊ̤ʳ°»ú¥³¡¼¥É¤Ç¡¢ÉÔÀµ¤Ê³°»ú¥³¡¼¥ÉÃͤò +ɽ¤¹¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +

+ + +

Äê¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ëÄê¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/font.h>
+
+
+ + +

Äê¿ô EB_WIDTH_NARROW_FONT_16

+ +

Äê¿ô EB_WIDTH_NARROW_FONT_24

+ +

Äê¿ô EB_WIDTH_NARROW_FONT_30

+ +

Äê¿ô EB_WIDTH_NARROW_FONT_48

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_16

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_24

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_30

+ +

Äê¿ô EB_WIDTH_WIDE_FONT_48

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Ä +ʬ¤ÎÉý (²£Êý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò int ·¿¤Çɽ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ + +

Äê¿ô EB_HEIGHT_NARROW_FONT_16

+ +

Äê¿ô EB_HEIGHT_NARROW_FONT_24

+ +

Äê¿ô EB_HEIGHT_NARROW_FONT_30

+ +

Äê¿ô EB_HEIGHT_NARROW_FONT_48

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_16

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_24

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_30

+ +

Äê¿ô EB_HEIGHT_WIDE_FONT_48

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô¤ò int ·¿¤Çɽ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB_HEIGHT_NARROW_FONT_16 ¤ª¤è¤Ó +EB_HEIGHT_WIDE_FONT_16 ¤Î¼ÂºÝ¤ÎÃÍ¤Ï 16 ¤Ç¤¹¡£ +(³°»ú¥³¡¼¥É EB_FONT_16 ¤Î¼ÂºÝ¤ÎÃÍ¤Ï 16 ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢ +Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£) +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë¤Î¤ËɬÍפÊÎΰè¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_XBM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_XBM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_XBM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_XBM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_XBM

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_xbm() ¤òÍѤ¤¤Æ XBM ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î XBM ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_XPM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_XPM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_XPM

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_XPM

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_XPM

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_xpm() ¤òÍѤ¤¤Æ XPM ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î XPM ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_GIF

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_GIF

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_GIF

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_GIF

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_GIF

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_gif() ¤òÍѤ¤¤Æ GIF ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î GIF ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_BMP

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_BMP

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_BMP

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_BMP

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_BMP

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_bmp() ¤òÍѤ¤¤Æ BMP ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î BMP ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

Äê¿ô EB_SIZE_NARROW_FONT_16_PNG

+ +

Äê¿ô EB_SIZE_NARROW_FONT_24_PNG

+ +

Äê¿ô EB_SIZE_NARROW_FONT_30_PNG

+ +

Äê¿ô EB_SIZE_NARROW_FONT_48_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_16_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_24_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_30_PNG

+ +

Äê¿ô EB_SIZE_WIDE_FONT_48_PNG

+ +

+¤³¤ì¤é¤ÎÄê¿ô¤Ï¡¢È¾³Ñ¡¢Á´³Ñ¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¹â¤µ (³°»ú¥³¡¼¥É) ¤Î³°»ú°ì¸Äʬ +¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò eb_bitmap_to_png() ¤òÍѤ¤¤Æ PNG ·Á¼° +¤ËÊÑ´¹¤¹¤ëºÝ¤Ë¡¢ÊÑ´¹¸å¤Î PNG ·Á¼°¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£ +ÃÍ¤Ï int ·¿¤Ç¡¢Ã±°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/font.h>
+
+
+ + +

EB_Error_Code eb_font (EB_Book *book, EB_Font_Code *font_code)

+ +

+´Ø¿ô eb_font() ¤Ï¡¢ÁªÂò¤·¤Æ¤¤¤ëÉûËܤˤª¤¤¤Æ¡¢ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òɽ¤¹³°»ú¥³¡¼¥É¤ò font_code ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È font_code ¤Î»Ø¤¹Îΰè¤Ë EB_FONT_INVALID +¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +³°»ú¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ½¤Î¤â¤Î¤òÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â¡¢Æ±ÍͤǤ¹¡£ +

+ + +

EB_Error_Code eb_set_font (EB_Book *book, EB_Font_Code font_code)

+ +

+´Ø¿ô eb_set_font() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤˤª¤±¤ë³°»ú¥Õ¥©¥ó¥È¤Î +¹â¤µ¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£ +¥»¥Ã¥È¤¹¤ë³°»ú¥Õ¥©¥ó¥È¤Î¡Ö¹â¤µ¡×¤Ï¡¢Âбþ¤¹¤ë³°»ú¥³¡¼¥É¤ò°ú¿ô +font_code ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¡¢»ØÄꤷ¤¿¡Ö¹â¤µ¡×¤¬ +¡ÖÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¡×¤È¤Ê¤ê¤Þ¤¹¡£ +¤¹¤Ç¤Ë³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó̤ÁªÂò¤Î¾õÂÖ¤Ë +¤·¤Æ¤«¤é¤¢¤é¤¿¤á¤Æ font_code ¤òÁªÂò¤·¤Þ¤¹¡£ +

+ +

+¼ºÇÔ¤¹¤ë¤È¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¡¢³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ï̤ÁªÂò¤Î +¾õÂ֤ˤʤê¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢¤½¤ÎÉûËܤ¬»ý¤Ã¤Æ¤¤¤Ê¤¤³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤¬»ØÄꤵ¤ì¤ë¤È¡¢ +EB_ERR_NO_SUCH_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_unset_font (EB_Book *book)

+ +

+´Ø¿ô eb_unset_font() ¤Ï¡¢ÁªÂòÃæ¤Î³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤ò̤ÁªÂò +¤Î¾õÂÖ¤ËÌᤷ¤Þ¤¹¡£ +book ¤¬½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤äÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢ +¤â¤·¤¯¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï²¿¤â¤·¤Þ¤»¤ó¡£ +

+ + +

EB_Error_Code eb_font_list (EB_Book *book, EB_Font_Code *font_list, int *font_count)

+ +

+´Ø¿ô eb_font_list() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ë³°»ú¤Î +¹â¤µ¤Î°ìÍ÷¤ò EB_Font_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢font_list +¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_FONTS ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢½ñÀÒ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤθĿô¤ò font_count ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +(¸½ºß¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï ¡¢EB_MAX_FONTS ¤ÎÃÍ¤Ï 4 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +¹â¤µ 16, 24, 30, 48 ¥Ô¥¯¥»¥ë¤Î 4 ¼ïÎà¤Ç¤¹¡£) +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢font_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_font (EB_Book *book, EB_Font_Code font_code)

+ +

+´Ø¿ô eb_font() ¤Ï¡¢font_code ¤Ç»ØÄꤷ¤¿¹â¤µ¤Î +³°»ú¥Õ¥©¥ó¥È¤ò¡¢ÁªÂòÃæ¤ÎÉûËܤ¬»ý¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+»ý¤Ã¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_font_height (EB_Book *book, int *height)

+ +

+´Ø¿ô eb_font_height() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ (½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò height ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢height ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_font_height2 (EB_Font_Code font_code, int *height)

+ +

+eb_font_height() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢°ú¿ô +font_height ¤Ç»ØÄꤵ¤ì¤¿³°»ú¥³¡¼¥É¤Î¹â¤µ (½ÄÊý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) +¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ + +

int eb_have_narrow_font (EB_Book *book)

+ +

int eb_have_wide_font (EB_Book *book)

+ +

+´Ø¿ô eb_have_narrow_font() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ +¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍͤˡ¢´Ø¿ô eb_have_wide_font() ¤Ï¡¢Á´³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤« +¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÄêµÁ¤·¤Æ¤¤¤ì¤Ð 1 ¤ò¡¢ÄêµÁ¤·¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_width (EB_Book *book, int *width)

+ +

EB_Error_Code eb_wide_font_width (EB_Book *book, int *width)

+ +

+´Ø¿ô eb_narrow_font_width() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ÎÉý (²£Êý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò¡¢ +height ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ƱÍͤˡ¢eb_wide_font_width() ¤ÏÁ´³Ñ³°»ú¤ÎÉý¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢width ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_width2 (EB_Font_Code font_code, int *width)

+ +

EB_Error_Code eb_wide_font_width2 (EB_Font_Code font_code, int *width)

+ +

+eb_narrow_font_width(), eb_wide_font_width() ¤È +»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢°ú¿ôfont_height ¤Ç»ØÄꤵ¤ì¤¿ +³°»ú¥³¡¼¥É¤ÎÉý (²£Êý¸þ¤Î¥Ô¥¯¥»¥ë¿ô) ¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_size (EB_Book *book, size_t *size)

+ +

EB_Error_Code eb_wide_font_size (EB_Book *book, size_t *size)

+ +

+´Ø¿ô eb_narrow_font_size() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ë¤ª¤±¤ëȾ³Ñ³°»ú°ì¸Äʬ¤Î¥Ç¡¼¥¿¥µ¥¤¥º (¥Ð¥¤¥È¿ô) ¤ò¡¢ +size ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ƱÍͤˡ¢eb_wide_font_size() ¤ÏÁ´³Ñ³°»ú¤Î¥µ¥¤¥º¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢size ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_size2 (EB_Font_Code font_code, size_t *size)

+ +

EB_Error_Code eb_wide_font_size2 (EB_Font_Code font_code, size_t *size)

+ +

+eb_narrow_font_size(), eb_wide_font_size() ¤È +»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤ÎÉûËܤǤϤʤ¯¡¢°ú¿ô font_height ¤Ç»ØÄê +¤µ¤ì¤¿³°»ú¥³¡¼¥É¤Î³°»ú°ì¸Äʬ¤Î¥Ç¡¼¥¿¥µ¥¤¥º¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_start (EB_Book *book, int *start)

+ +

EB_Error_Code eb_wide_font_start (EB_Book *book, int *start)

+ +

+´Ø¿ô eb_narrow_font_start() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤Î +ÉûËܤˤª¤±¤ëȾ³Ñ³°»ú¤ÎÀèƬ¤Îʸ»úÈÖ¹æ (Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇ¾®¤Î¤â¤Î) +¤ò¡¢start ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_start() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤ÆÄ´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_start() ¤ÈƱ¤¸ +¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_end (EB_Book *book, int *end)

+ +

EB_Error_Code eb_wide_font_end (EB_Book *book, int *end)

+ +

+´Ø¿ô eb_narrow_font_end() ¤Ï¡¢book ¤¬ÁªÂòÃæ¤ÎÉûËÜ +¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ÎºÇ¸å¤Îʸ»úÈÖ¹æ (Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇÂç¤Î¤â¤Î) ¤ò¡¢ +start ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_end() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë¤Ä¤¤¤Æ +Ä´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_end() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_font_character_bitmap (EB_Book *book, int character_number, char *bitmap)

+ +

EB_Error_Code eb_wide_font_character_bitmap (EB_Book *book, int character_number, char *bitmap)

+ +

+´Ø¿ô eb_narrow_font_character_bitmap() ¤Ï¡¢book +¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤·¤Æ¤¤¤ë¡¢È¾³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¼è¤ê½Ð¤¹³°»ú¤Îʸ»úÈÖ¹æ¤ò¡¢character_number ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò bitmap ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¡¢EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢bitmap ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï³°»ú¥Õ¥©¥ó¥È¤Î¹â¤µ¤òÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â¡¢¤ä¤Ï¤ê EB_ERR_NO_CUR_FONT +¤òÊÖ¤·¤Þ¤¹¡£ +ʸ»úÈÖ¹æ character_number ¤¬³°»ú¤ÎÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢ +EB_ERR_NO_SUCH_CHAR_BMP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_character_bitmap() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_narrow_font_character_bitmap() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Î·Á¼°¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö³°»ú¥Õ¥©¥ó¥È¤Î¼è¤ê½Ð¤·¡× ¤ò»²¾È¤Î¤³¤È¡£ +

+ + +

EB_Error_Code eb_forward_narrow_font_character (EB_Book *book, int n, int *character_number)

+ +

EB_Error_Code eb_forward_wide_font_character (EB_Book *book, int n, int *character_number)

+ +

+´Ø¿ô eb_forward_narrow_font_character() ¤Ï¡¢book +¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëȾ³Ñ³°»ú¤Îʸ»úÈÖ¹æ character_number +¤În ¸Ä¸å¤í¤Ë°ÌÃÖ¤¹¤ë³°»ú¤Îʸ»úÈÖ¹æ¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë¡¢character_number ¤Î»Ø¤¹Îΰè¤Ë +ʸ»úÈÖ¹æ¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤­¤Þ¤¹¡£ +´Ø¿ô¤Î½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢Ìá¤Ã¤¿¤È¤­¤Ë n ¸Äʬ¤À¤±¸åÊý¤Îʸ»úÈÖ¹æ +¤Ë½ñ¤­´¹¤ï¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_FONT ¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¸Ä¸å¤í¤Ë¤â¤¦³°»ú¤¬¤Ê¤¤¾ì¹ç¤ä¡¢¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë +character_number ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ó¤Ç¤¢¤Ã¤¿Ê¸»úÈֹ椬³°»ú¤Î +ÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï EB_ERR_NO_SUCH_CHAR_BMP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¤Ë¤ÏÉé¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¼¡¤Î¸Æ¤Ó½Ð¤·¤ÈÅù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+/* n < 0 ¤È¤¹¤ë */
+eb_backward_narrow_font_character (book, -n, character_number);
+
+
+ +

+´Ø¿ô eb_forward_wide_font_character() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤Ë¤Ä¤¤¤ÆÁàºî¤¹¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_forward_narrow_font_character() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_backward_narrow_font_character (EB_Book *book, int n, int *character_number)

+ +

EB_Error_Code eb_backward_wide_font_character (EB_Book *book, int n, int *character_number)

+ +

+´Ø¿ô eb_backward_narrow_font_character() ¤Ï +eb_forward_narrow_font_character() ¤È¤Ï¤Á¤ç¤¦¤ÉµÕ¤Î´Ø¿ô¤Ç¤¹¡£ +book ¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëȾ³Ñ³°»ú¤Îʸ»úÈÖ¹æ +character_number ¤Î n ¸ÄÁ°Êý¤Ë°ÌÃÖ¤¹¤ë³°»ú¤Î +ʸ»úÈÖ¹æ¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+ƱÍͤˡ¢eb_backward_wide_font_character() ¤Ï¡¢Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤Æ n ¸ÄÁ°Êý¤Î³°»ú¤Îʸ»úÈÖ¹æ¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤Ç¡¢ +eb_forward_wide_font_character() ¤ÈÈ¿ÂФδؿô¤Ç¤¹¡£ +

+ +

+n ¤Ë¤ÏÉé¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¡¢¤½¤ì¤¾¤ì¼¡¤Î¸Æ¤Ó½Ð¤·¤È +Åù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+/* Ⱦ³Ñ³°»ú¤Î¾ì¹ç (n < 0) */
+eb_forward_narrow_font_character (book, -n, character_number);
+
+/* Á´³Ñ³°»ú¤Î¾ì¹ç (n < 0) */
+eb_forward_wide_font_character (book, -n, character_number);
+
+
+ + +

EB_Error_Code eb_narrow_font_xbm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_xpm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_gif_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_bmp_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_narrow_font_png_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_xbm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_xpm_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_gif_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_bmp_size (EB_Font_Code height, size_t *size)

+ +

EB_Error_Code eb_wide_font_png_size (EB_Font_Code height, size_t *size)

+ +

+ºÇ½é¤Î 5 ¤Ä¤Î´Ø¿ô +(eb_narrow_font_xbm_size() ¡Á +eb_narrow_font_png_size()) ¤Ï¡¢³°»ú¥³¡¼¥É height +¤ÎȾ³Ñ³°»ú°ì¸Ä¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò XBM, XPM, GIF, BMP, PNG ·Á¼°¤Ë¤½¤ì¤¾¤ìÊÑ´¹ +¤·¤¿¤È¤­¤Î¥Ç¡¼¥¿¥µ¥¤¥º¤ò size ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+ƱÍͤˡ¢¸å¤í¤Î 5 ¤Ä¤Î´Ø¿ô +(eb_wide_font_xbm_size() ¡Á +eb_wide_font_png_size()) ¤Ï¡¢Á´³Ñ³°»ú¤òÊÑ´¹¤·¤¿¤È¤­¤Î +¥Ç¡¼¥¿¥µ¥¤¥º¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¡¢À®¸ù¤¹¤ë¤È EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢size ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_bitmap_to_xbm (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_xpm (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_gif (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_bmp (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

EB_Error_Code eb_bitmap_to_png (const char *bitmap, int width, int height, char *image, size_t *image_length)

+ +

+¤³¤ì¤é 5 ¤Ä¤Î´Ø¿ô¤Ï¡¢eb_narrow_font_character() ¤Þ¤¿¤Ï +eb_wide_font_character() ¤Ç¼è¤ê½Ð¤·¤¿³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò +XBM, XPM, GIF, BMP, PNG ·Á¼°¤Ë¤½¤ì¤¾¤ìÊÑ´¹¤·¤Þ¤¹¡£ +

+ +

+¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Î»Ø¤¹Îΰè¤ò bitmap ¤Ç»ØÄꤷ¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×¤Î +¹â¤µ¤ÈÉý¤ò width, height ¤ÇÅϤ·¤Þ¤¹¡£ +

+ +

+´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤«¤éÌá¤ë¤È¡¢image ¤Î»Ø¤¹Îΰè¤ËÊÑ´¹¸å¤Î¥Ç¡¼¥¿¤¬ +½ñ¤­¹þ¤Þ¤ì¡¢image_length ¤Î»Ø¤¹Îΰè¤ËÊÑ´¹¸å¤Î¥Ç¡¼¥¿¤ÎÂ礭¤µ¤¬ +½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+XPM, GIF, PNG ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£ +BMP ¤Ø¤ÎÊÑ´¹¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¡¢ÇØ·Ê¿§¤ÏÇò¤Ë¤Ê¤ê¤Þ¤¹¡£ +XBM ¤Ï¥â¥Î¥¯¥í¿ÞÈÇÍѤΥǡ¼¥¿·Á¼°¤Ê¤Î¤Ç¡¢¿§¤ÎÀßÄê¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ + + + +

¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿

+ +

+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿ (binary data) ¤È¤Ï¡¢ +¿ÞÈǤäÆ°²è¡¢²»À¼¤È¤¤¤Ã¤¿¥Þ¥ë¥Á¥á¥Ç¥£¥¢¥Ç¡¼¥¿¤Î¤³¤È¤ò»Ø¤·¤Þ¤¹¡£ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï¡¢É¬¤º¥Æ¥­¥¹¥È¥Ç¡¼¥¿ +(¡Ö¥Æ¥­¥¹¥È¥Ç¡¼¥¿¡× ¤ò»²¾È¤Î¤³¤È) +¤«¤é»²¾È¤µ¤ì¤ë·Á¤ÇÍøÍѤµ¤ì¤Þ¤¹¡£ +

+ +

+º£¤Î¤È¤³¤í EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Á´¼ïÎà¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ò¼è¤ê°·¤¦¤³¤È¤¬ +¤Ç¤­¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +ÅŻҥ֥寤ǰ·¤¨¤ë¤Î¤Ï¡¢2 ³¬Ä´¤Î¥â¥Î¥¯¥í¿ÞÈǤȡ¢¥«¥é¡¼¿ÞÈÇ (JPEG) ¤À¤± +¤Ç¤¹¡£ +EPWING ¤Ç¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈÇ¡¢¥«¥é¡¼¿ÞÈÇ (BMP ¤ª¤è¤Ó JPEG) ¤Ë²Ã¤¨¤Æ¡¢ +WAVE (PCM) ²»À¼¡¢MPEG Æ°²è¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬Ä󶡤·¤Æ¤¤¤ë¤Î¤Ï¡¢¤³¤¦¤·¤¿¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ò +CD-ROM ½ñÀÒ¤«¤é¼èÆÀ¤¹¤ëµ¡Ç½¤À¤±¤Ç¤¹¡£ +ɽ¼¨¤·¤¿¤êºÆÀ¸¤·¤¿¤ê¤¹¤ëµ¡Ç½¤ÏÍÑ°Õ¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢±Ñϼ­½ñ¤ä¹ñ¸ì¼­½ñ¤È¤¤¤Ã¤¿¼­½ñ¤À¤±¤òÂоݤˤ¹¤ë¤Ê¤é¡¢ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Îɽ¼¨¤äºÆÀ¸¤Ë¤ÏÂбþ¤·¤Ê¤¯¤Æ¤â»Ù¾ã¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +¤·¤«¤·°ìÊý¤Ç¤Ï¡¢¿Þ´Õ¤ä¿ô¼°¤Îɽ¸½¤Ë¥â¥Î¥¯¥í¿ÞÈǤò»È¤Ã¤Æ¤¤¤ë¿ô³Ø¼­Åµ¤Î +¤è¤¦¤Ë¡¢Âбþ¤·¤Ê¤¤¤ÈÉÔÊؤʤâ¤Î¤â¤¢¤ê¤Þ¤¹¡£ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Îɽ¼¨¤äºÆÀ¸¤Îµ¡Ç½¤ò¼ÂÁõ¤¹¤ë¤«¤É¤¦¤«¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó +¤ÎÂоݼ­½ñ¤ò¤É¤ÎÈϰϤޤǤˤ¹¤ë¤Î¤«¤Ë¤è¤Ã¤Æ·è¤á¤ë¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£ +

+ +

+°Ê²¼¡¢¤³¤Î¾Ï¤Ç¤Ï¼ïÎàÊ̤˥Х¤¥Ê¥ê¥Ç¡¼¥¿¤Î°·¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ +

+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Î¼ïÎàËè¤Ë¥Ç¡¼¥¿¤Î¼è¤ê½Ð¤·Êý¤ÏÈù̯¤Ë°Û¤Ê¤ê¤Þ¤¹¤¬ (¤³¤ì¤Ï +¥Ç¡¼¥¿¤Î¼ýÏ¿ÊýË¡¤¬Èù̯¤Ë°Û¤Ê¤Ã¤Æ¤¤¤ë¤«¤é¤Ë¾¤Ê¤ê¤Þ¤»¤ó)¡¢¤ª¤ª¤è¤½¼ê½ç +¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
    +
  1. +¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î¥Õ¥Ã¥¯¤òÍѤ¤¤Æ¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Î»²¾È¾ðÊó¤ò¼èÆÀ¤¹¤ë¡£ + +
  2. +eb_binary_set_...() ´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢»ØÄꤷ¤¿°ÌÃ֤Π+¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ò¤³¤ì¤«¤éÆɤ߹þ¤à»Ý¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤ë¡£ + +
  3. +eb_read_binary() ¤Ç¼ÂºÝ¤Ë¥Ç¡¼¥¿¤òÆɤ߹þ¤à¡£ +
+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÈƱÍͤˡ¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤âÉûËܤË°¤¹¤ë¥Ç¡¼¥¿ +¤Ç¤¹¤Î¤Ç¡¢ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¤È¼èÆÀ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤È¤ÏÊ̤Π+¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤¬³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢ÁÐÊý¤ò¸ò¸ß¤ËÆɤ߹þ¤ó¤Ç¤â¡¢Æ°ºî¤Ë¤Ï±Æ¶Á¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + + +

¥â¥Î¥¯¥í¿ÞÈÇ

+ +

+2 ³¬Ä´¤Î¥â¥Î¥¯¥í¿ÞÈǤϡ¢ÅŻҥ֥寡¢EPWING ÁÐÊý¤Ë¸ºß¤·¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Ç¤Ï¤É¤Á¤é¤â°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +(ÅŻҥ֥寤˸ºß¤¹¤ë 16 ³¬Ä´¤Î¥â¥Î¥¯¥í¿ÞÈǤϡ¢º£¤Î¤È¤³¤í EB ¥é¥¤¥Ö¥é¥ê +¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£) +

+ +

+¥â¥Î¥¯¥í¿ÞÈǥǡ¼¥¿¤ÎÆâÉô·Á¼°¤Ï³°»ú¤ÈƱ¤¸¤Ç¤¹¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢ +1 ¥Ô¥¯¥»¥ë¤Ë 1bit ¤ò³ä¤êÅö¤Æ¤¿ BMP ·Á¼°¤ËÊÑ´¹¤·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë +ÅϤ¹¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤«¤é¤Ï¡¢¤¢¤¿¤«¤â BMP ¤Î¿ÞÈǥǡ¼¥¿¤¬¼ýÏ¿ +¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤Þ¤¹¡£ +

+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿Æ⤫¤é¤Ï¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ç¤¢¤ë¥â¥Î¥¯¥í¿ÞÈǤò»²¾È¤¹¤ë·Á +¤ò¤È¤ê¤Þ¤¹¡£ +¥â¥Î¥¯¥í¿ÞÈǤò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢¤³¤Î»²¾È¾ðÊó¤¬É¬ÍפǤ¹¡£ +»²¾È¾ðÊó¤Î¼èÆÀ¤Ï¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿½èÍý»þ¤Ë¡¢¥â¥Î¥¯¥í¿ÞÈǤγ«»Ï¤È½ªÎ»¤ò +ɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MONO_GRAPHIC +¤È EB_HOOK_END_MONO_GRAPHIC ¤òÍѤ¤¤Æ¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MONO_GRAPHIC ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô +(argv) ¤Ï 4 ¤Ä¤¢¤ê¡¢¤³¤Î¤¦¤Á¤Î argv[2] ¤È +argv[3] ¤¬¿ÞÈǤÎÉý¤È¹â¤µ (¥Ô¥¯¥»¥ë¿ô) ¤ò°ÕÌ£¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢¥Õ¥Ã¥¯ EB_HOOK_END_MONO_GRAPHIC ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +°ú¿ô¤Ï 3 ¤Ä¤Ç¡¢argv[1] ¤È argv[2] ¤¬¡¢ +¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥â¥Î¥¯¥í¿ÞÈǤò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢¾åµ­¤Î¥Õ¥Ã¥¯¤«¤éÆÀ¤¿¿ÞÈǤΥڡ¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¡¢¤ª¤è¤ÓÉý¤È¹â¤µ¤òµ­²±¤·¤Æ¤ª¤­¤Þ¤¹¡£ +

+ +

+¼¡¤Ë¡¢eb_set_binary_mono_graphic() ¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢¤³¤ì¤«¤é +¥â¥Î¥¯¥í¿ÞÈǤΥǡ¼¥¿¤ò¼èÆÀ¤¹¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +eb_set_binary_mono_graphic() ¤Ø¤Î°ú¿ô¤Ë¤Ï¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤È¡¢Àè¤Û¤ÉÆÀ¤¿¿ÞÈǤؤΥڡ¼¥¸Èֹ桢 +¥ª¥Õ¥»¥Ã¥È¡¢Éý¡¢¹â¤µ¤òÅϤ·¤Þ¤¹¡£ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¤³¤ì¤«¤é¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ë¿ÞÈǤò +¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤò¤¢¤é¤«¤¸¤áÁªÂò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+/* eb_set_binary_mono_graphic() ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥× */
+EB_Error_Code
+eb_set_binary_mono_graphic(EB_Book *book, EB_Position *position,
+    int width, int height);
+
+
+ +

+ÅŻҥ֥寤Ǥϡ¢¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤ëÉý¤È¹â¤µ¤ÎÃÍ¤Ï 0 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢ +¤½¤Î¤Þ¤Þ eb_set_binary_mono_graphic() ¤ËÅϤ·¤Þ¤¹¡£ +(EPWING ¤Ç¤Ï 0 ¤òÅϤ·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£) +

+ +

+°Ê¾å¤Ç¿ÞÈǥǡ¼¥¿¤Î¼èÆÀ½àÈ÷¤¬¤Ç¤­¤¿¤Î¤Ç¡¢¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢eb_read_binary() ¤ò»È¤¤¤Þ¤¹¡£ +

+ +
+
+#define MAX_LENGTH 1000
+char bitmap[MAX_LENGTH];
+ssize_t bitmap_length;
+
+if (eb_read_binary(&book, MAX_LENGTH, bitmap, &bitmap_length)
+    != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+À®¸ù¤¹¤ë¤È¡¢Æɤ߹þ¤ó¤À¿ÞÈǥǡ¼¥¿¤¬ bitmap ¤Ë½ñ¤­¹þ¤Þ¤ì¡¢ +²¿¥Ð¥¤¥È½ñ¤­¹þ¤ó¤À¤Î¤«¤¬ bitmap_length ¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +½ñ¤­¹þ¤Þ¤ì¤ë¥Ð¥¤¥È¿ô¤Ï¡¢ºÇÂç¤Ç MAX_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +

+ +

+ɬ¤º¤·¤â°ì²ó¤Î eb_read_binary() ¤Î¸Æ¤Ó½Ð¤·¤Ç¿ÞÈǥǡ¼¥¿¤ò +½ªÃ¼¤Þ¤ÇÆɤ߹þ¤àɬÍפϤʤ¯¡¢´Ø¿ô¤ò·«¤êÊÖ¤·¸Æ¤Ó½Ð¤»¤Ð¡¢Á°²ó¤Î³¤­¤ò +Æɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +eb_read_binary() ¤Ï¡¢¿ÞÈǥǡ¼¥¿¤Î½ªÃ¼¤Þ¤ÇÍè¤ë¤È¤½¤ì°Ê¾å +¥Ç¡¼¥¿¤ÏÆɤ߹þ¤ß¤Þ¤»¤ó¤Î¤Ç¡¢eb_read_binary() ¤¬ 0 ¤òÊÖ¤·¤¿ +»þÅÀ¤Ç¿ÞÈǥǡ¼¥¿¤¬½ªÃ¼¤·¤¿¤³¤È¤òǧ¼±¤Ç¤­¤Þ¤¹¡£ +

+ + +

¥«¥é¡¼¿ÞÈÇ

+ +

+¥«¥é¡¼¿ÞÈǤϡ¢ÅŻҥ֥å¯¤Ç¤Ï JPEG ·Á¼°¡¢EPWING ¤Ç¤Ï JPEG ¤È BMP (DIB) +·Á¼°¤Î¤â¤Î¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤ì¤é¤ò¤¹¤Ù¤Æ°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢ÅŻҥ֥寤ؤÎÂбþ +¤Ï¸ÂÄêŪ¤Ê¤â¤Î¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£(¾Ü¤·¤¯¤Ï¸å½Ò¤·¤Þ¤¹¡£) +

+ +

+¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤÈƱÍͤ˥ƥ­¥¹¥È¥Ç¡¼¥¿ +¤«¤é¥«¥é¡¼¿ÞÈǤؤλ²¾È¾ðÊó¤ò¥Õ¥Ã¥¯¤òÄ̤¸¤Æ¼èÆÀ¤·¡¢Â³¤¤¤Æ¼ÂºÝ¤Ë +¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤òÆɤ߹þ¤à¤È¤¤¤¦¼ê½ç¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+eb_set_binary_color_graphic() ¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢¤³¤ì¤«¤é +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤ò¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò +EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +eb_set_binary_color_graphic() ¤Ø¤Î°ú¿ô¤Ë¤Ï¡¢ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ë²Ã¤¨¤Æ¡¢¥«¥é¡¼¿ÞÈǤΥڡ¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤òÅϤ·¤Þ¤¹¡£ +

+ +
+
+/* eb_set_binary_color_graphic() ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥× */
+EB_Error_Code
+eb_set_binary_color_graphic(EB_Book *book, EB_Position *position);
+
+
+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¤³¤ì¤«¤é¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ë¿ÞÈǤò +¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤò¤¢¤é¤«¤¸¤áÁªÂò¤·¤Æ¤ª¤­¤Þ¤¹¡£ + +¥«¥é¡¼¿ÞÈǤΥڡ¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤Î¾ðÊó¤Ï¡¢¥«¥é¡¼¿ÞÈǤγ«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯¤«¤éÆÀ¤Þ¤¹¡£ +¥Õ¥Ã¥¯¤Ï¡¢¥¤¥ó¥é¥¤¥óɽ¼¨ÍѤÈÈ󥤥ó¥é¥¤¥óÍѤΠ2 ¼ïÎब¤¢¤ê¡¢¤µ¤é¤Ë +¤½¤ì¤¾¤ì³«»Ï¥Õ¥Ã¥¯¤¬ JPEG ÍÑ¤È BMP ÍѤËʬ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
EB_HOOK_BEGIN_COLOR_BMP
+
EB_HOOK_BEGIN_COLOR_JPEG
+
+È󥤥ó¥é¥¤¥óÍÑ BMP, JPEG ¤Î³«»Ï¥Õ¥Ã¥¯ + +
EB_HOOK_END_COLOR_GRAPHIC
+
+È󥤥ó¥é¥¤¥óÍÑ¥«¥é¡¼¿ÞÈÇ (BMP, JPEG ¶¦ÄÌ) ¤Î½ªÎ»¥Õ¥Ã¥¯ + +
EB_HOOK_BEGIN_IN_COLOR_BMP
+
EB_HOOK_BEGIN_IN_COLOR_JPEG
+
+¥¤¥ó¥é¥¤¥óÍÑ BMP, JPEG ¤Î³«»Ï¥Õ¥Ã¥¯ + +
EB_HOOK_END_IN_COLOR_GRAPHIC
+
+È󥤥ó¥é¥¤¥óÍÑ¥«¥é¡¼¿ÞÈÇ (BMP, JPEG ¶¦ÄÌ) ¤Î½ªÎ»¥Õ¥Ã¥¯ +
+ +

+È󥤥ó¥é¥¤¥óÍѤνªÎ»¥Õ¥Ã¥¯ EB_HOOK_END_GRAPHIC ¤Ç¤Ï¡¢ +¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô¤Î argv[2] ¤È argv[3] ¤¬¡¢ +¿ÞÈǥǡ¼¥¿¤Î¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤ò +eb_set_binary_color_graphic() ¤ËÅϤ·¤Æ¤ä¤ê¤Þ¤¹¡£ +ƱÍͤˡ¢¥¤¥ó¥é¥¤¥óÍѤνªÎ»¥Õ¥Ã¥¯ EB_HOOK_END_IN_GRAPHIC +¤Ç¤Ï¡¢argv[2] ¤È argv[3] ¤¬¥Ú¡¼¥¸ÈÖ¹æ¤È +¥ª¥Õ¥»¥Ã¥È¤Ç¤¹¤Î¤Ç¡¢¤³¤ì¤òÅϤ·¤Þ¤¹¡£ +

+ +

+¸å¤Ï¡¢¼ÂºÝ¤Ë¥«¥é¡¼¿ÞÈǤΥǡ¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤÈƱÍÍ¤Ë eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +»È¤¤Êý¤Ï¤Þ¤Ã¤¿¤¯°ì½ï¤Ç¤¹¤Î¤Ç¡¢¾Ü¤·¤¯¤Ï +¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ +

+¤¿¤À¤·¡¢ÅŻҥ֥寤Υ«¥é¡¼¿ÞÈǤˤĤ¤¤Æ¤Ï¡¢¥Ç¡¼¥¿¤Î½ªÎ»°ÌÃÖ¤¬Íè¤Æ¤â +EB ¥é¥¤¥Ö¥é¥ê¤ÏÆɤ߹þ¤ß¤ò»ß¤á¤Ê¤¤¤È¤¤¤¦À©¸Â»ö¹à¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢¥Ç¡¼¥¿¤ÎÂ礭¤µ¤Ë´Ø¤¹¤ë¾ðÊ󤬵­¤µ¤ì¤Æ¤¤¤Ê¤¤¤¿¤á¤Ç¡¢¥Ç¡¼¥¿¤Î +½ªÃ¼°ÌÃ֤ϡ¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬ JPEG ¤Î¥Ç¡¼¥¿¤ò¥Ç¥³¡¼¥É¤·¤Æ³ä¤ê½Ð¤¹¤·¤« +¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈÇ

+ +

+¥«¥é¡¼¿ÞÈǤˤϡ¢²èÁüÆâ¤ÎÆÃÄê¤Î¶ë·ÁÎΰè¤Ë»²¾ÈÀè¤Î¾ðÊó¤òÉÕ¤±²Ã¤¨¤¿¤â¤Î¤¬ +¤¢¤ê¤Þ¤¹¡£ +HTML ¤Ë¤ª¤±¤ë¥¯¥ê¥Ã¥«¥Ö¥ë¡¦¥¤¥á¡¼¥¸ (clickable image) ¤È¤Û¤ÜƱ¤¸¤Ç¡¢¤½¤Î +¶ë·ÁÎΰèÆâ¤Ë¥Þ¥¦¥¹¥Ý¥¤¥ó¥¿¤¬¤¢¤ë´Ö¤Ë¥Þ¥¦¥¹¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤¢¤é¤«¤¸¤á +·è¤á¤é¤ì¤¿¥ê¥ó¥¯Àè¤Ë²èÌ̤¬Á«°Ü¤¹¤ë¤È¤¤¤¦»Å³Ý¤±¤Ç¤¹¡£ +¥ê¥ó¥¯Àè¤È¤Ê¤ë¶ë·ÁÎΰè¤Ï¡¢²èÁü°ì¤Ä¤ËÂФ·¤ÆÊ£¿ô¸ÄÅÐÏ¿¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+¡¡¡¡¡¡¡¡¡¡¡¡¡¡»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈǤÎÎã
+¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨¢¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¡¡¡¡¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¢¡¡¡¡¶ë·ÁÎΰ裱¡¡¡¡¨¢¡¡¡¡¨¢¡¡¡¡¶ë·ÁÎΰ裲¡¡¡¡¨¢¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¡¡¡¡¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨£¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¢¡¡¡¡¶ë·ÁÎΰ裳¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¿ÞÈÇ¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¨¦¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¡¡¡¨¥¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈǤμè¤ê°·¤¤Êý¤Ï¡¢Ä̾ï¤Î¥«¥é¡¼¿ÞÈǤò³ÈÄ¥¤·¤¿·Á¤È +¤Ê¤ê¤Þ¤¹¡£Ä̾ï¤Î¥«¥é¡¼¿ÞÈǤξì¹ç¤Ç¤Ï¡¢¤¿¤È¤¨¤Ð JPEG ¤ÎÈ󥤥ó¥é¥¤¥ó +²èÁü¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ê½çÈ֤ǥե寤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£ +

+ +
    +
  1. EB_HOOK_BEGIN_COLOR_JPEG (È󥤥ó¥é¥¤¥óÍÑ JPEG ³«»Ï) +
  2. EB_HOOK_END_COLOR_GRAPHIC (È󥤥ó¥é¥¤¥óÍÑ JPEG ½ªÎ») +
+ +

+¤³¤ì¤ËÂФ·¤Æ»²¾ÈÀèÉÕ¤­¤Î¥«¥é¡¼¿ÞÈǤǤϡ¢¤³¤Î2¤Ä¤Î¥Õ¥Ã¥¯¤Î´Ö¤Ë¡¢¶ë·ÁÎΰè +¾ðÊó¤Ë´Ø¤¹¤ë¥Õ¥Ã¥¯¤¬ÁÞÆþ¤µ¤ì¤Þ¤¹¡£ +

+ +
    +
  1. EB_HOOK_BEGIN_COLOR_JPEG (È󥤥ó¥é¥¤¥óÍÑ JPEG ³«»Ï) +
  2. EB_HOOK_BEGIN_CLICKABLE_AREA (¶ë·ÁÎΰè1 ³«»Ï) +
  3. EB_HOOK_END_CLICKABLE_AREA (¶ë·ÁÎΰè1 ½ªÎ») +
  4. EB_HOOK_BEGIN_CLICKABLE_AREA (¶ë·ÁÎΰè2 ³«»Ï) +
  5. EB_HOOK_END_CLICKABLE_AREA (¶ë·ÁÎΰè2 ½ªÎ»)
    + °Ê²¼¡¢¶ë·ÁÎΰè3¡¢¶ë·ÁÎΰè4 ... ¤È¶ë·ÁÎΰè¤Î¸Ä¿ôʬ¤À¤±Â³¤¯¡£ +
  6. EB_HOOK_END_COLOR_GRAPHIC (È󥤥ó¥é¥¤¥óÍÑ JPEG ½ªÎ») +
+ +

+¶ë·ÁÎΰè¤Ë´Ø¤¹¤ë¶ñÂÎŪ¤Ê¾ðÊó¤Ï¡¢EB_HOOK_BEGIN_CLICKABLE_AREA +(³«»Ï¥Õ¥Ã¥¯) ¤Î¤Û¤¦¤Ç¼èÆÀ¤·¤Þ¤¹¡£ +¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô¤Î argv[1] ¤È argv[2] ¤¬¡¢ +¤½¤ì¤¾¤ì¶ë·ÁÎΰè¤Î³«»Ï x, y ºÂɸ¤òɽ¤·¤Þ¤¹¡£ +¥«¥é¡¼¿ÞÈǤκ¸¾å¤ÎºÂɸ¤¬ (0, 0) ¤Ç¤¹¡£ +ƱÍͤˡ¢argv[3] ¤È argv[4] ¤¬¶ë·ÁÎΰè¤Î±¦Êý¸þ +¤Ø¤ÎÉý¤È¡¢²¼Êý¸þ¤Ø¤Î¹â¤µ¤òɽ¤·¤Þ¤¹¡£ +ºÇ¸å¤Î argv[5] ¤È argv[6] ¤¬»²¾ÈÀè¤Î¥Ú¡¼¥¸ÈÖ¹æ +¤È¥ª¥Õ¥»¥Ã¥È¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬»²¾ÈÀèÉÕ¤­¥«¥é¡¼¿ÞÈǤËÂбþ¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¶ë·ÁÎΰè¤Î +³«»Ï¾ðÊó¤È½ªÎ»¾ðÊó¤ò̵»ë¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ì¤Ë¤è¤ê¡¢¿ÞÈǤÏÄ̾ï¤Î (»²¾ÈÀè¤ò»ý¤¿¤Ê¤¤) ¥«¥é¡¼¿ÞÈǤȤޤ俤¯Æ±¤¸¤¯ +°·¤ï¤ì¤Þ¤¹¡£ +

+ + +

WAVE (PCM) ²»À¼

+ +

+WAVE (PCM) ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤Ï EPWING ¤Ë¤À¤±Â¸ºß¤·¤Þ¤¹¡£ +(Âå¤ï¤ê¤ËÅŻҥ֥å¯¤Ë¤Ï CD-DA ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤¬¤¢¤ê¤Þ¤¹¤¬¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£) +

+ +

+WAVE ·Á¼°¤Î²»À¼¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢¤Þ¤º¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ã椫¤é WAVE ²»À¼ +¤Î»²¾È¾ðÊó¤òÆÀ¤Þ¤¹¡£ +»²¾È³«»Ï¤È½ªÎ»¤òɽ¤¹¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯ +EB_HOOK_BEGIN_WAVE ¤È EB_HOOK_END_WAVE ¤¬ +¤½¤ì¤¾¤ì¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤òÍѤ¤¤Þ¤¹¡£ +

+ +

+¥Õ¥Ã¥¯ EB_HOOK_BEGIN_WAVE ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹°ú¿ô¤Î¤¦¤Á¡¢ +argv[2] ¤È argv[3] ¤¬²»À¼¥Ç¡¼¥¿¤Î³«»Ï°ÌÃ֤Π+¥Ú¡¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¡¢argv[4] ¤È argv[5] ¤¬ +½ªÎ»°ÌÃ֤Υڡ¼¥¸ÈÖ¹æ¤È¥ª¥Õ¥»¥Ã¥È¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤³¤Î³«»Ï°ÌÃ֤ȽªÎ»°ÌÃÖ¤ò´Ø¿ô eb_set_binary_wave() ¤ËÅϤ·¤Æ¡¢ +¤½¤Î°ÌÃ֤ˤ¢¤ë²»À¼¥Ç¡¼¥¿¤ò¤³¤ì¤«¤é¼è¤ê½Ð¤¹¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +

+ +
+
+/* eb_set_binary_wave() ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥× */
+EB_Error_Code
+eb_set_binary_wave(EB_Book *book, EB_Position *start_position,
+EB_Position *end_position);
+
+
+ +

+¤½¤·¤Æ¸å¤Ï¡¢¼ÂºÝ¤Ë²»À¼¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢Â¾¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÈƱÍÍ¤Ë eb_read_binary() ¤ò +ÍѤ¤¤Þ¤¹¡£ +eb_read_binary() ¤Î»È¤¤Êý¤Ï¡¢ +¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× ¤ò»²¾È¤Î¤³¤È ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ + +

MPEG1 Æ°²è

+ +

+MPEG1 ·Á¼°¤ÎÆ°²è¥Ç¡¼¥¿¤Ï EPWING ¤Ë¤À¤±Â¸ºß¤·¤Þ¤¹¡£ +Æ°²è¥Ç¡¼¥¿¤Ï EPWING ¤Î CD-ROM ¤Î movie ¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤Ë¡¢ +Æ°²èËè¤Ë°ì¸Ä¤Î¥Õ¥¡¥¤¥ë¤Ë¤·¤¿·Á¤Ç¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥Æ¥­¥¹¥È¥Ç¡¼¥¿Ãæ¤Ë¸ºß¤¹¤ë¡¢MPEG ¥Ç¡¼¥¿¤Î»²¾È³«»Ï¤È½ªÎ»¤òɽ¤¹ +¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ø¤Î¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MPEG ¤È +EB_HOOK_END_MPEG ¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢»²¾ÈÀè¤Î MPEG ¤Î +¥Õ¥¡¥¤¥ë̾¤ò¼èÆÀ¤Ç¤­¤Þ¤¹¡£ +

+ +

+¶ñÂÎŪ¤Ë¤Ï¡¢¥Õ¥Ã¥¯ EB_HOOK_BEGIN_MPEG ¤¬¥Õ¥Ã¥¯´Ø¿ô¤ËÅϤ¹ +°ú¿ô¤Î¤¦¤Á¡¢argv[2] ¡Á argv[5] ¤¬¹ç¤ï¤»¤Æ°ì¤Ä +¤Î¥Õ¥¡¥¤¥ë̾¤òɽ¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+MPEG Æ°²è¤Î¥Ç¡¼¥¿¤òÆÀ¤ë¤Ë¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë̾¤ò +eb_set_binary_mpeg() ¤ËÅϤ·¤Æ¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÆ°²è¥Ç¡¼¥¿¤ò +¤³¤ì¤«¤é¼è¤ê½Ð¤¹»Ý¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Æ argv + 2 +(&argv[2] ¤Ç¤âƱ¤¸) ¤òÅϤ·¤Þ¤¹¡£ +

+ +
+
+if (eb_set_binary_mpeg(&book, argv + 2) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+¸å¤Ï¡¢¼ÂºÝ¤ËÆ°²è¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï¡¢¤ä¤Ï¤ê¾¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÈƱÍÍ¤Ë eb_read_binary() +¤òÍѤ¤¤Þ¤¹¡£ +eb_read_binary() ¤Î»È¤¤Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +¡Ö¥â¥Î¥¯¥í¿ÞÈÇ¡× ¤ò»²¾È¤Î¤³¤È ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/binary.h>
+
+
+ + +

EB_Error_Code eb_set_binary_mono_graphic (EB_Book *book, const EB_Position *position, int width, height)

+ +

+´Ø¿ô eb_set_binary_mono_graphic() ¤Ï¡¢¥â¥Î¥¯¥í¿ÞÈǤΥǡ¼¥¿¤ò +¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô position ¤Ï¿ÞÈǤΰÌÃÖ¡¢width, height +¤Ë¤Ï¿ÞÈǤÎÉý¤È¹â¤µ¤òÅϤ·¤Þ¤¹¡£ +¤³¤ì¤é¤Î¾ðÊó¤Ï¡¢¿ÞÈǤλ²¾È¸µ¤Ç¤¢¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ëµ­ºÜ¤µ¤ì¤Æ¤ª¤ê¡¢Ä̾ï¤Ï +¥Õ¥Ã¥¯´Ø¿ô¤òÄ̤¸¤ÆÆÀ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¤¿¤À¤·¡¢ÅŻҥ֥寤ǤÏÉý¤È¹â¤µ¤ÎÃͤξðÊ󤬥ƥ­¥¹¥È¥Ç¡¼¥¿¤Ëµ­¤µ¤ì¤Æ¤¤¤Ê¤¤ +¤¿¤á¡¢0 ¤òÅϤ¹¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤Ë±þ¤¸¤¿¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢¿ÞÈǤò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¿ÞÈǤΰÌÃÖ¡¢Éý¡¢¹â¤µ¤ÎÃͤ¬ÌÀ¤é¤«¤Ë¤ª¤«¤·¤¤¤È EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿ +¤È¤­¤Ï¡¢EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë¿ÞÈǥǡ¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +¥â¥Î¥¯¥í¿ÞÈǤΥǡ¼¥¿¤Ï¡¢1 ¥Ô¥¯¥»¥ë¤Ë 1bit ¤ò³ä¤êÅö¤Æ¤¿ BMP ·Á¼°¤Ë¤Ê¤Ã¤Æ +¤¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_binary_color_graphic (EB_Book *book, const EB_Position *position)

+ +

+´Ø¿ô eb_set_binary_color_graphic() ¤Ï¡¢EPWING ¤Î¥«¥é¡¼¿ÞÈǤΠ+¥Ç¡¼¥¿¤ò¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô position ¤Ï¿ÞÈǤΰÌÃÖ¤òÅϤ·¤Þ¤¹¡£ +°ÌÃ֤ξðÊó¤Ï¡¢¿ÞÈǤλ²¾È¸µ¤Ç¤¢¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ëµ­ºÜ¤µ¤ì¤Æ¤ª¤ê¡¢Ä̾ï¤Ï +¥Õ¥Ã¥¯´Ø¿ô¤òÄ̤¸¤ÆÆÀ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢¿ÞÈǤò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¿ÞÈǤΰÌÃÖ¤¬ÌÀ¤é¤«¤Ë¤ª¤«¤·¤¤¤È EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿¤È¤­¤Ï¡¢ +EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë¿ÞÈǥǡ¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +¥«¥é¡¼¿ÞÈǥǡ¼¥¿¤Ï¡¢JPEG ¤« BMP (DIB) ¤Î¤¤¤º¤«¤Î·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_binary_wave (EB_Book *book, const EB_Position *start_position, EB_Position *end_position)

+ +

+´Ø¿ô eb_set_binary_wave() ¤Ï¡¢WAVE (PCM) ·Á¼°¤Î²»À¼¤Î¥Ç¡¼¥¿ +¤ò¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô start_position ¤È end_position ¤Ë¤Ï²»À¼¥Ç¡¼¥¿ +¤Î³«»Ï°ÌÃÖ¤òÅϤ·¤Þ¤¹¡£ +°ÌÃ֤ξðÊó¤Ï¡¢²»À¼¥Ç¡¼¥¿¤Î»²¾È¸µ¤Ç¤¢¤ë¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Ëµ­ºÜ¤µ¤ì¤Æ¤ª¤ê¡¢ +Ä̾ï¤Ï¥Õ¥Ã¥¯´Ø¿ô¤òÄ̤¸¤ÆÆÀ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤Ë±þ¤¸¤¿¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢²»À¼¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB ¤ò +ÊÖ¤·¤Þ¤¹¡£ +²»À¼¥Ç¡¼¥¿¤Î°ÌÃÖ¤¬ÌÀ¤é¤«¤Ë¤ª¤«¤·¤¤¤È EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿¤È¤­¤Ï¡¢ +EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë²»À¼¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_binary_mpeg (EB_Book *book, const unsigned int *argv)

+ +

+´Ø¿ô eb_set_binary_mpeg() ¤Ï¡¢MPEG1 ·Á¼°¤ÎÆ°²è¤Î¥Ç¡¼¥¿¤ò +¤³¤ì¤«¤é¼èÆÀ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤ò EB ¥é¥¤¥Ö¥é¥ê¤ËÅÁ¤¨¤Þ¤¹¡£ +°ú¿ô argv ¤Ë¤ÏÆ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾¤òÅϤ·¤Þ¤¹¡£ +¤¿¤À¤·¡¢¤³¤Î¥Õ¥¡¥¤¥ë̾¤Ïʸ»úÎó¤Ç¤Ï¤Ê¤¯¡¢¥Õ¥Ã¥¯´Ø¿ô +EB_HOOK_BEGIN_MPEG ¤ËÅϤµ¤ì¤¿°ú¿ô argv[2] +¡Á argv[5] ¤ÎÉôʬ¤òÅϤ·¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢¥Õ¥Ã¥¯´Ø¿ô¤Î°ú¿ô argv + 2 ¤ò¡¢ +eb_set_binary_mpeg() ¤Ø¤Î°ú¿ô argv ¤È¤·¤Æ +ÅϤ·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤Ë±þ¤¸¤¿¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢Æ°²è¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤½¤¦¤È¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +book ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB +¤òÊÖ¤·¤Þ¤¹¡£ +¸ºß¤·¤Ê¤¤Æ°²è¥Õ¥¡¥¤¥ë̾¤ò EB ¥é¥¤¥Ö¥é¥ê¤¬È½ÃǤ·¤¿¤È¤­¤Ï¡¢ +EB_ERR_NO_SUCH_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤ËÆ°²è¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤³¤È¤Ï¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤ß¤Ë¤Ï¡¢eb_read_binary() ¤òÍѤ¤¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_read_binary (EB_Book *book, size_t binary_max_length, char *binary, ssize_t *binary_length)

+ +

+´Ø¿ô eb_read_binary() ¤Ï¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +Æɤ߹þ¤â¤¦¤È¤·¤Æ¤¤¤ë¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï¡¢»öÁ°¤Ë +

+ +
    +
  • eb_set_binary_mono_graphic() +
  • eb_set_binary_color_graphic() +
  • eb_set_binary_wave() +
  • eb_set_binary_mpeg() +
+ +

+¤Î¤¤¤º¤ì¤«¤Î´Ø¿ô¤Ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤ËÄÌÃΤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+Æɤ߹þ¤ó¤À¥Ç¡¼¥¿¤Ï°ú¿ô binary ¤Î»Ø¤¹Àè¤ÎÎΰè¤Ë½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +¤Þ¤¿¡¢¤³¤Î¤È¤­½ñ¤­¹þ¤Þ¤ì¤¿¥Ð¥¤¥È¿ô¤Ï¡¢binary_length ¤Î»Ø¤¹ +Àè¤ÎÎΰè¤Ë¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +¤¿¤À¤·¡¢½ñ¤­¹þ¤Þ¤ì¤ë¥Ð¥¤¥È¿ô¤Ï¡¢ºÇŤǤâ°ú¿ô binary_max_length +¤Ë»ØÄꤷ¤¿ÃͤޤǤȤʤê¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤Ï¡¢ÆäËÆɤ߹þ¤ó¤À¥Ç¡¼¥¿¤Î½ªÃ¼¤Ë¥Ê¥ëʸ»ú¤òÉղ乤ë¤è¤¦¤Ê»ö¤Ï +¤·¤Þ¤»¤ó¡£ +Æɤ߹þ¤Þ¤ì¤ë¥Ç¡¼¥¿¤â¥Ð¥¤¥Ê¥ê·Á¼°¤Ê¤Î¤Ç¡¢ÅÓÃæ¤Ë¥Ê¥ëʸ»ú¤¬½Ð¸½¤¹¤ë»ö¤â +¤¢¤ê¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò°ì²ó¸Æ¤Ó½Ð¤·¤À¤À¤±¤Ç¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿Á´ÂΤò°ìµ¤¤Ë¼èÆÀ¤¹¤ë +ɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +·«¤êÊÖ¤·¸Æ¤Ó½Ð¤»¤Ð¡¢Á°²ó¤Î³¤­¤«¤é¥Ç¡¼¥¿¤¬Æɤ߹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢°Ê²¼¤Ëµó¤²¤¿´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë´Ø¤¹¤ë +¾õÂÖµ­Ï¿¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¤½¤ì°Ê¾å¤ÎÆɤ߹þ¤ß¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +
    +
  • eb_set_subbook() +
  • eb_unset_subbook() +
  • eb_load_all_subbooks() +
  • eb_bind() +
  • eb_finalize_book() +
  • eb_set_binary_mono_graphic() +
  • eb_set_binary_color_graphic() +
  • eb_set_binary_wave() +
  • eb_set_binary_mpeg() +
+ +

+eb_read_binary() ¤ò·«¤êÊÖ¤·¸Æ¤ó¤À¾ì¹ç¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ï +¤½¤ÎÅÔÅÙ binary ¤ÎÀèƬ¤«¤é½ñ¤­¹þ¤Þ¤ì¡¢*binary_length +¤ÎÃͤ⡢¤½¤Î²ó¤Î eb_read_binary() ¤Î¸Æ¤Ó½Ð¤·¤Ç½ñ¤­¹þ¤Þ¤ì¤¿ +¥Ð¥¤¥È¿ô¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¥Ç¡¼¥¿¤Î½ªÃ¼¤ËÍè¤ë¤È¡¢¤½¤ì°Ê¾å¤³¤Î´Ø¿ô¤ò¸Æ¤ó¤Ç¤â´Ø¿ô¤Ï binary +¤Ë¤Ï²¿¤â½ñ¤­¹þ¤Þ¤º¡¢*binary_length ¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢¤³¤Î´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢binary_length ¤¬»Ø¤¹Îΰè¤Ë -1 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¾õÂ֤ε­Ï¿¤¬¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢ +¥Ç¡¼¥¿¤Î³¤­¤òÆɤ߹þ¤à¤³¤È¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢book ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢ËÁƬ¤Ëµó¤²¤¿´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤Æ¤¤¤Ê¤¤¾õÂ֤Ǥ³¤Î´Ø¿ô¤ò¸Æ¤Ö¤È¡¢ +EB_ERR_NO_CUR_BINARY ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_compose_movie_file_name (const unsigned int *argv, char *composed_file_name)

+ +

+´Ø¿ô eb_compose_movie_file_name() ¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾ +¤òÄ̾ï¤Îʸ»úÎó¤ËÊÑ´¹¤·¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾¤Ï¥Õ¥Ã¥¯´Ø¿ô +EB_HOOK_BEGIN_MPEG ¤ËÅϤµ¤ì¤¿ 4 ¤Ä¤Î int ·¿°ú¿ô +(argv[2] ¡Á argv[5]) ¤Ë¤è¤Ã¤Æɽ¸½¤µ¤ì¤Þ¤¹¡£ +

+ +

+Æ°²è¥Ç¡¼¥¿¤òÆɤ߹þ¤àºÝ¤Ï¡¢¤³¤ì¤ò¤½¤Î¤Þ¤Þ eb_set_binary_mpeg() +¤ËÅϤ»¤ÐÎɤ¤¤Î¤Ç¤¹¤¬¡¢¥Õ¥¡¥¤¥ë̾¤òÄ̾ï¤Îʸ»úÎó¤ÇÆÀ¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤Î´Ø¿ô¤ò +ÍѤ¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢¸Ä¡¹¤ÎÆ°²è¤Ë°ì°Õ¤Î ID ¤Î¤è¤¦¤Ê¤â¤Î¤ò¿¶¤ê¤¿¤¤¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë +̾¤ò ID ¤È¤·¤Æ»È¤¦¤ÈÎɤ¤¤«¤âÃΤì¤Þ¤»¤ó¡£ +¤Ê¤ª¡¢¤³¤Î´Ø¿ô¤ÇÊÑ´¹¤·¤ÆÆÀ¤é¤ì¤ë¥Õ¥¡¥¤¥ë̾¤Ë¤Ï¥Ñ¥¹¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +

+ +

+¥Õ¥Ã¥¯´Ø¿ô¤Î°ú¿ô argv + 2 ¤ò¤³¤Î´Ø¿ô¤Ø¤Î°ú¿ô argv +¤È¤·¤ÆÅϤ¹¤È¡¢composed_file_name ¤¬»Ø¤¹Àè¤ÎÎΰè¤Ë¡¢Ê¸»úÎó·Á¼° +¤ËÊÑ´¹¤µ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤¬³ÊǼ¤µ¤ì¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤ÏºÇĹ¤Ç EB_MAX_DIRECTORY_NAME_LENGTH (= 8) ¥Ð¥¤¥È +¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¤Ï½ªÃ¼¤Î¥Ê¥ëʸ»ú¤Îʬ¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó¤Î¤Ç¡¢³ÊǼÎΰè¤Ë¤Ï¤â¤¦ +1 ¥Ð¥¤¥È;͵¤¬Íפê¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢³ÊǼ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë̾¤Ï¡¢¼ÂºÝ¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë̾¤È¤Ï¼ã´³°Û¤Ê¤Ã¤Æ +¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢±Ñ»ú¤ÎÂçʸ»ú¤È¾®Ê¸»ú¡¢ÀÜÈø»Ò¤Î̵ͭ¤Ê¤É¤Î°ã¤¤¤¬¤³¤ì¤ËÅö¤¿¤ê¤Þ¤¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¤¢¤¯¤Þ¤Çʸ»úÎó¤Ëµ¡³£Åª¤ËÊÑ´¹¤¹¤ë¤À¤±¤Ê¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¤¬¼Âºß +¤¹¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤Ï¤·¤Þ¤»¤ó¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_compose_movie_path_name (EB_Book *book, const unsigned int *argv, char *composed_path_name)

+ +

+´Ø¿ô eb_compose_movie_path_name() ¤Ï¡¢Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾ +¤òÄ̾ï¤Îʸ»úÎó¤ËÊÑ´¹¤·¤Þ¤¹¡£ +Ư¤­¤Ï¡¢Á°½Ò¤Î´Ø¿ô eb_compose_movie_file_name() ¤ËÎɤ¯ +»÷¤Æ¤¤¤Þ¤¹¤¬¡¢eb_compose_movie_path_name() ¤¬ÊÖ¤¹¥Õ¥¡¥¤¥ë̾ +¤Ï¡¢ÀäÂХѥ¹¤Î·Á¼°¤Ë¤Ê¤Ã¤Æ¤¤¤ëÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤Þ¤¿¡¢eb_compose_movie_path_name() ¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤¬¼Âºß +¤¹¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤ò¹Ô¤¦¤È¤¤¤¦ÅÀ¤â¡¢Â礭¤Ê°ã¤¤¤Ç¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤òʸ»úÎó¤ËÊÑ´¹¤·¤¿¾å¤Ç¡¢±Ñ»ú¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Î°ã¤¤¤äÀÜÈø»Ò¤Î +̵ͭ¤Ï¡¢¼Âºß¤Î¥Õ¥¡¥¤¥ë¤Ë¹ç¤ï¤»¤ÆÄ´À°¤·¤¿¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢¥Ñ¥¹¤ò½ü¤¤¤¿Éôʬ¤ÇÈæ³Ó¤·¤Æ¤â¡¢ +eb_compose_movie_file_name() ¤¬ÊÖ¤¹¥Õ¥¡¥¤¥ë̾¤È¤Ïɬ¤º¤·¤â +°ìÃפ·¤Þ¤»¤ó¡£ +

+ +

+°ú¿ô book ¤Ï¡¢Æ°²è¥Õ¥¡¥¤¥ë¤ò¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤòÁªÂò¤·¤Æ +¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢EB_ERR_NO_CUR_SUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+°ú¿ô argv ¤Î°ÕÌ£¤Ï¡¢eb_compose_movie_file_name() +¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+¥Õ¥¡¥¤¥ë̾¤ÎÊÑ´¹¤¬À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï composed_path_name ¤¬ +»Ø¤¹Àè¤ÎÎΰè¤Ë¡¢Ê¸»úÎó·Á¼°¤ËÊÑ´¹¤µ¤ì¤¿Æ°²è¥Õ¥¡¥¤¥ë̾¤ò³ÊǼ¤·¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë̾¤ÏºÇĹ¤Ç EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ë¤Ï½ªÃ¼¤Î¥Ê¥ëʸ»ú¤Îʬ¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó¤Î¤Ç¡¢³ÊǼÎΰè¤Ë¤Ï¤â¤¦ +1 ¥Ð¥¤¥È;͵¤¬Íפê¤Þ¤¹¡£ +

+ +

+¥Õ¥¡¥¤¥ë̾¤¬¼Âºß¤·¤Ê¤¤¤È¡¢EB_ERR_BAD_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_decompose_movie_file_name (unsigned int *argv, const char *composed_file_name)

+ +

+´Ø¿ô eb_compose_movie_file_name() ¤Ï¡¢ +eb_compose_movie_file_name() ¤È¤Á¤ç¤¦¤ÉµÕ¤ÎƯ¤­¤ò¤·¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢Ä̾ï¤Îʸ»úÎó¤ËÊÑ´¹¤µ¤ì¤¿Æ°²è¥Ç¡¼¥¿¤Î¥Õ¥¡¥¤¥ë̾ +composed_file_name ¤ò¡¢4 ¤Ä¤Î int ·¿°ú¿ô argv ¤Ë +Ìᤷ¤Þ¤¹¡£ +¤·¤¿¤¬¤Ã¤Æ¡¢argv ¤Î»Ø¤¹Îΰè¤Ï¡¢¾¯¤Ê¤¯¤È¤â int ·¿¤ÎÃͤò 4 ¤Ä +³ÊǼ¤Ç¤­¤ëÂ礭¤µ¤¬É¬ÍפǤ¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

appendix ¥Ç¡¼¥¿

+ +

+appendix (ÉÕÏ¿) ¤È¤Ï CD-ROM ½ñÀÒ¤ÎÊä½õ¥Ç¡¼¥¿¤Î +¤³¤È¤Ç¤¹¡£ +appendix ¤Ï CD-ROM ½ñÀҤνÐÈǼҤ«¤éÄ󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Ë¸ÇÍ­¤Î¤â¤Î¤Ç¤¹¡£ +ebappendix ¥³¥Þ¥ó¥É¤òÍѤ¤¤ÆÀ¸À®¤·¤Þ¤¹ +(¾Ü¤·¤¯¤Ï ebappendix ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öappendix (ÉÕÏ¿) ¤È¤Ï¡×¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+appendix ¤Ï°Ê²¼¤Î¥Ç¡¼¥¿¤ò CD-ROM ½ñÀÒ¤ËÂФ·¤ÆÄ󶡤·¤Þ¤¹¡£ +

+ +
    +
  • ËÜʸ¤Î¶èÀڤꥳ¡¼¥É +
  • ³°»ú¤ÎÂåÂØʸ»úÎó +
+ +

+appendix ¤Î¥ì¥¤¥¢¥¦¥È¤Ï CD-ROM ½ñÀҤΤâ¤Î¤È¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï catalog ¤â¤·¤¯¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¡¢³ÆÉûËܤΥǡ¼¥¿¤ÏÂбþ¤¹¤ë +¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÇÛÃÖ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï appendix ¤ËÂбþ¤·¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò»È¤¨¤ë +¤è¤¦¤Ë¤¹¤ë¤³¤È¤ò¤ªÁ¦¤á¤·¤Þ¤¹¡£ +³°»ú¤ÎÂåÂØʸ»úÎó¤Ë¤Ä¤¤¤Æ¤Ï¡¢³°»ú¤Î¥Õ¥©¥ó¥È¤ò¤½¤Î¤Þ¤Þɽ¼¨¤Ç¤­¤ë¤Î¤Ç +¤¢¤ì¤Ð¡¢Âбþ¤¹¤ëɬÍ×À­¤Ï¤«¤Ê¤ê˳¤·¤¤¤Ç¤¹¤¬¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤Ï¡¢ +°·¤¨¤Ê¤¤¤ÈÀµ¤·¤¯ËÜʸ¤òɽ¼¨¤Ç¤­¤Ê¤¤½ñÀÒ¤ËÂбþ¤Ç¤­¤Þ¤»¤ó +(¶èÀڤꥳ¡¼¥É¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ö¶èÀڤꥳ¡¼¥É¤ÎÌäÂê¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ + + +

EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+CD-ROM ½ñÀÒËÜÂΤò°·¤¦¤Ë¤Ï EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ò +ÍѤ¤¤Þ¤·¤¿¤¬¡¢appendix ¤ò°·¤¦¤Ë¤Ï EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤ò»È¤¤¤Þ¤¹¡£ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤òÁàºî¤¹¤ë¤¿¤á¤Î´Ø¿ô¤Ï¡¢ +EB_Book ¤Î¤â¤Î¤È¤Ï°Û¤Ê¤ê¤Þ¤¹¤¬¡¢Áàºî¼ê½ç¤Ï¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¸Ä¡¹¤Î appendix ¤ËÂФ·¤Æ 1 ¸Ä +¤º¤Äºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+EB_Appendix app;
+
+
+ +

+¤â¤Á¤í¤ó¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤Ï¡¢malloc() ¤Ç³ÎÊݤ·¤Æ¤â +¹½¤¤¤Þ¤»¤ó¡£ +

+ +
+
+EB_Appendix *app_pointer;
+
+app_pointer = (EB_Appendix *) malloc(sizeof(EB_Appendix));
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢»È¤¦Á°¤Ëɬ¤º eb_initialize_appendix() +¤È¤¤¤¦´Ø¿ô¤ÇÃæ¿È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤â eb_initialize_book() +¤Ç½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢¤½¤ì¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +
+
+eb_initialize_appendix(&app);
+eb_initialize_appendix(app_pointer);
+
+
+ +

+³¤¤¤Æ¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò appendix ¤Î¼ÂÂΤ˷ë¤ÓÉÕ¤±¤ë¤¿¤á¤Ë¡¢ +eb_bind_appendix() ¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤Î eb_bind() ¤Ë +ÁêÅö¤·¤Þ¤¹¡£ +

+ +
+
+£Å£Â¡²£Á£ð£ð£å£î£ä£é£ø¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£á£ð£ð£å£î£ä£é£ø
+¥ª¥Ö¥¸¥§¥¯¥È¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤
+¨£¨¡¨¡¨¡¨¤¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¨¢¡¡¡¡¡¡¨¼¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¾¡¡¡¿£í£î£ô¡¿£ä£é£ã£ô¡¡¡¡¨¢
+¨¦¨¡¨¡¨¡¨¥¡¡£å£â¡²£â£é£î£ä¡¡¡¡¡¡¡¡¡¡¨¢¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨¢
+¡¡¡¡¡¡¡¡¡¡¡¡¡²£á£ð£ð£å£î£ä£é£ø¡Ê¡Ë¡¡¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥
+
+
+ +

+¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind_appendix(&app, "/mnt/dict") != EB_SUCCESS) {
+    printf("eb_bind_appendix() failed\n");
+    return;
+}
+
+
+ +

+eb_bind_appendix() ¤ËÅϤ¹ appendix ¤Î¥Ñ¥¹ +(¤³¤ÎÎã¤Ç¤Ï /mnt/dict) ¤Ï appendix ¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¡¢ +¤Ä¤Þ¤ê catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤Î¤¢¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¥Ñ¥¹¤Ë¤Ï¡¢±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò (Îã: ebnet://localhost/dict.app) +¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢ +eb_finalize_appendix() ¤ò¸Æ¤ó¤Ç¸å»ÏËö¤ò¤·¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤Ï appendix ¤È¤Î·ë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂÖ¤ËÌá¤ê¡¢ +ÆâÉô¤Ç³ä¤êÅö¤Æ¤é¤ì¤¿¥á¥â¥ê¤Ï²òÊü¤µ¤ì¡¢³«¤¤¤Æ¤¤¤¿¥Õ¥¡¥¤¥ë¤â¤¹¤Ù¤Æ +ÊĤ¸¤é¤ì¤Þ¤¹¡£ +

+ +
+
+eb_finalize_appendix(&app);
+eb_finalize_appendix(app_pointer);
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò malloc() ¤Ç³ÎÊݤ·¤¿¾ì¹ç¤Ï¡¢ +eb_finalize_appendix() ¤ò¸Æ¤ó¤À¸å¤Ê¤é¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Î +Îΰè¤ò°ÂÁ´¤Ë²òÊü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+free(app_pointer);
+
+
+ + +

ÉûËÜ

+ +

+CD-ROM ¤ÈƱÍͤˡ¢appendix ¤Ë¤âÉûËܤ¬Â¸ºß¤·¤Þ¤¹¡£ +appendix ¤ÎÉûËܤ⡢ÉûËÜ¥³¡¼¥É¤ò»È¤Ã¤Æ¼±Ê̤·¤Þ¤¹¡£ +¸Ä¡¹¤ÎÉûËÜ¥³¡¼¥É¤Ï¡¢appendix Æâ¤ÇƱ¤¸¤â¤Î¤¬¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤ÎÉûËܤÎÉûËÜ¥³¡¼¥É¤ò¼èÆÀ¤¹¤ë´Ø¿ô¤È¤·¤Æ +eb_subbook_list() ¤¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢appendix ¤Ë¤â +eb_appendix_subbook_list() ¤È¤¤¤¦Æ±Íͤδؿô¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+/* app ¤¬ EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢
+ * ¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+EB_Subbook_Code sub_codes[EB_MAX_SUBBOOKS];
+int sub_count;
+
+if (eb_appendix_subbook_list(&app, sub_codes, &sub_count)
+    != EB_SUCCESS) {
+    printf("eb_appendix_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+eb_appendix_subbook_list() ¤¬À®¸ù¤¹¤ë¤È¡¢½ñÀÒÆâ¤Î¤¹¤Ù¤Æ¤Î +ÉûËÜ¥³¡¼¥É¤¬ ÇÛÎó sub_codes[] ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +ÇÛÎó¤ÎÀèƬ¤ÎÉûËÜ¥³¡¼¥É¤Ï sub_codes[0] ¤Èɽ¤µ¤ì¡¢¼¡¤Î +¥³¡¼¥É¤Ï sub_codes[1]¡¢¤È¤¤¤¦¶ñ¹ç¤Ë¤Ê¤ê¤Þ¤¹¡£ +ÉûËܤθĿô¤Ï¡¢sub_count ¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£ +

+ +

+EB_Book ¤ÈƱÍÍ¤Ë EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤Ç¤â¡¢·ë¤Ó¤Ä¤±¤é¤ì¤¿ CD-ROM ½ñÀÒ¤ÎÃæ¤ÎǤ°Õ¤ÎÉûËܤ«¤é°ì¤ÄÁª¤ó¤Ç¡¢ +ÁªÂòÃæ¤ÎÉûËÜ (current subbook) ¤È¤·¤Æ»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ê£¿ô¤ÎÉûËܤò¡¢Æ±»þ¤ËÁªÂò¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +¶èÀڤꥳ¡¼¥É¤ä³°»ú¤ÎÂåÂØʸ»úÎó¤È¤¤¤Ã¤¿ appendix Æâ¤Î¥Ç¡¼¥¿¤Ø¤Î¥¢¥¯¥»¥¹ +¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤËÂФ·¤Æ¤À¤±¹Ô¤¨¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢ÀèƬ¤ÎÉûËÜ (sub_codes[0]) ¤òÁªÂò¤¹¤ë¾ì¹ç¤ÎÎã¤Ç¤¹¡£ +

+ +
+
+/* app ¤¬ EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢
+ * ¤¹¤Ç¤Ë½ñÀҤ˷ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+if (eb_set_appendix_subbook(&app, sub_codes[0]) != EB_SUCCESS) {
+    printf("eb_subbook_list() failed\n");
+    return;
+}
+
+
+ +

+eb_bind_appendix() ¤Ç EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤ò appendix ¤Ë·ë¤ÓÉÕ¤±¤¿Ä¾¸å¤Ï¡¢¤¤¤º¤ì¤ÎÉûËܤâÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂÖ¤Ë +¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ + +

ËÜʸ¤Î¶èÀڤꥳ¡¼¥É

+ +

+CD-ROM ½ñÀҤˤè¤Ã¤Æ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬ËÜʸ¤Îɽ¼¨¤òÀµ¤·¤¤°ÌÃÖ¤Ç +»ß¤á¤é¤ì¤Ê¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¶èÀڤꥳ¡¼¥É¤ÎÌäÂê¡× ¤ò»²¾È¤Î¤³¤È)¡£ +¤³¤ì¤Ï¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤Î¿ä¬¤ò EB ¥é¥¤¥Ö¥é¥ê¤¬¸í¤Ã¤¿¤¿¤á¤Ëµ¯¤³¤ë +¤Î¤Ç¤¹¤¬¡¢appendix ¥Ç¡¼¥¿¤ò»È¤¦¤³¤È¤Ç¡¢Àµ¤·¤¤¶èÀڤꥳ¡¼¥É¤ò EB ¥é¥¤¥Ö¥é¥ê +¤Ë¶µ¤¨¤Æ¤ä¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒ¤ÎËÜʸ¤ò¼èÆÀ¤¹¤ë´Ø¿ô eb_read_text() ¤Ï +Âè 2 °ú¿ô¤Ë EB_Appendix * ¤ò¤È¤ë¤Î¤Ç¤¹¤¬¡¢¤³¤³¤Ë appendix +¥ª¥Ö¥¸¥§¥¯¥È¤òÅϤ·¤Æ¤ä¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+/* book, app ¤Ï¡¢¤½¤ì¤¾¤ì EB_Book
+ * ¤ª¤è¤Ó EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢¤É¤Á¤é¤â¤¹¤Ç¤Ë
+ * ÉûËܤòÁªÂòÃæ¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+#define MAX_LENGTH 1000
+char buffer[MAX_LENGTH + 1];
+ssize_t text_length;
+
+if (eb_read_text(&book, &app, NULL, NULL, MAX_LENGTH,
+    text, &text_length) != EB_SUCCESS) {
+    fprintf(stderr, "an error occurs.\n");
+    return;
+}
+
+
+ +

+eb_read_text() ¤Ï¡¢ÅϤµ¤ì¤¿ appendix ¥ª¥Ö¥¸¥§¥¯¥È¤¬ÉûËܤò +ÁªÂòºÑ¤ß¤Ç¡¢¤«¤Ä¶èÀڤꥳ¡¼¥É¤Î¾ðÊó¤ò»ý¤Ã¤Æ¤¤¤ì¤Ð¡¢¤½¤Î¶èÀڤꥳ¡¼¥É¤ò +»ÈÍѤ·¤Þ¤¹¡£ +

+ + +

³°»ú¤ÎÂåÂØʸ»úÎó

+ +

+CD-ROM ½ñÀҤϡ¢ÄêµÁ¤·¤Æ¤¤¤ë³°»ú¤Î¾ðÊó¤È¤·¤Æ¥Õ¥©¥ó¥È¤Î¥Ç¡¼¥¿¤·¤«ÍÑ°Õ¤·¤Æ +¤¤¤Þ¤»¤ó¡£ +¤Ä¤Þ¤ê¡¢¤½¤Î³°»ú¤¬¤É¤Î¤è¤¦¤Êʸ»ú¤Ê¤Î¤«¤ò¥æ¡¼¥¶¤Ëʬ¤«¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬¥Õ¥©¥ó¥È¤òɽ¼¨¤¹¤ë¤·¤«¤¢¤ê¤Þ¤»¤ó¡£ +¤·¤«¤·¤³¤ì¤Ç¤Ï¡¢¥Æ¥­¥¹¥È¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍѤ¤¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢ +ËÜʸÃæ¤Î³°»ú¤ÎÉôʬ¤¬¤Þ¤Ã¤¿¤¯Ê¬¤«¤ê¤Þ¤»¤ó¡£ +³°»ú¤ò¿ÍѤ·¤Æ¤¤¤ë½ñÀҤǤϡ¢ËÜʸ¤¬²òÆÉÉÔǽ¤Ë¶á¤¤¾õÂ֤ˤʤ뤫¤âÃΤì¤Þ¤»¤ó¡£ +

+ +

+¤½¤³¤Ç EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï¡¢³°»ú¤ÎÂåÂؤȤʤëʸ»úÎó¤ò appendix Æâ¤ÇÄêµÁ +¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ +appendix ¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¸Â¤ê¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï³°»ú¤Î¥Õ¥©¥ó¥È +¤òÉÁ²è¤¹¤ëÂå¤ï¤ê¤Ë¤½¤ÎÂåÂØʸ»úÎó¤ò½ÐÎϤ¹¤ë¤³¤È¤Ë¤¹¤ì¤Ð¡¢ +¥Æ¥­¥¹¥È¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍѤ¤¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤â½ñÀÒ¤¬Æɤ߰פ¯ +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+appendix ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ëÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤¹´Ø¿ô¤Ï¡¢2 ¤Ä¤¢¤ê¤Þ¤¹¡£ +Ⱦ³Ñ³°»úÍѤΠeb_narrow_alt_character_text() ¤ÈÁ´³Ñ³°»úÍѤΠ+eb_wide_alt_character_text() ¤Ç¤¹¡£ +¤É¤Á¤é¤â¡¢»È¤¤Êý¤ÏÊѤï¤ê¤Þ¤»¤ó¡£ +

+ +

+°Ê²¼¤ÎÎã¤Ç¤Ï¡¢È¾³Ñ³°»ú¤Îʸ»úÈÖ¹æ 0xa121 ¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò +buffer ¤Ë³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/* app ¤¬ EB_Appendix ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¡¢
+ * ¤¹¤Ç¤ËÉûËܤòÁªÂòÃæ¤Ç¤¢¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£*/
+char buffer[EB_MAX_ALTERNATION_TEXT_LENGTH + 1];
+
+if (eb_narrow_alt_character_text(&app, buffer, 0xa121)
+    != EB_SUCCESS) {
+    printf("eb_narrow_alt_character_text() failed\n");
+    return;
+}
+
+
+ +

+³°»ú¤Ï¸Ä¡¹¤ÎÉûËܤËÂФ·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤¹¤Ë¤Ï¡¢ +¤¢¤é¤«¤¸¤áÉûËܤòÁªÂò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +³°»ú¤Î¥Õ¥©¥ó¥È¤ò¼è¤ê½Ð¤¹ºÝ¤Ï¡¢¤³¤ì¤Ë²Ã¤¨¤Æ³°»ú¤Î¡Ö¹â¤µ¡×¤âÁªÂò¤·¤Æ¤ª¤¯ +ɬÍפ¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢ÂåÂØʸ»úÎó¤Ë¤Ï¹â¤µ¤Î³µÇ°¤¬¤Ê¤¤¤Î¤ÇɬÍפ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+ÂåÂØʸ»úÎó¤ÏºÇĹ¤Ç EB_MAX_ALTERNATION_TEXT_LENGTH ¥Ð¥¤¥È +(= 31 ¥Ð¥¤¥È) ¤Ç¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎŤµ¤Ë¤Ï¥Ê¥ëʸ»ú¤Îʬ¤Ï´Þ¤ó¤Ç¤¤¤Ê¤¤¤Î¤Ç¡¢buffer +¤Ï¤â¤¦ 1 ¥Ð¥¤¥Èʬ;͵¤ò»ý¤¿¤»¤Æ¤¤¤Þ¤¹¡£ +

+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/appendix.h>
+
+
+ + +

EB_Appendix ·¿

+ +

+EB_Appendix ·¿¤Ï¡¢°ìºý¤Î CD-ROM ½ñÀÒ¤òɽ¤·¤Þ¤¹¡£ +CD-ROM ½ñÀҤؤΥ¢¥¯¥»¥¹¤Ï¡¢¤¹¤Ù¤Æ¤³¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤Æ¹Ô¤¤¤Þ¤¹¡£ +Ʊ»þ¤ËÊ£¿ô¤Î CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤¹¤ëºÝ¤Ï¡¢½ñÀÒ°ìºýËè¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò +ºî¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ï¡¢¤¹¤Ù¤Æ EB ¥é¥¤¥Ö¥é¥ê¤¬ +ÍÑ°Õ¤·¤Æ¤¤¤ë´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Ï¡¢Ä¾ÀÜ EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È +¤Î¥á¥ó¥Ð¤ò»²¾È¤·¤¿¤ê¡¢¥»¥Ã¥È¤·¤¿¤ê¤¹¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È +¤ËÂФ·¤Æ eb_initialize_book() ¤ò¸Æ¤ó¤Ç½é´ü²½¤·¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/appendix.h>
+
+
+ + +

void eb_initialize_appendix (EB_Appendix *app)

+ +

+´Ø¿ô eb_initialize_appendix() ¤Ï¡¢app ¤Î»Ø¤¹ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò +¸Æ¤ÖÁ°¤Ë¡¢É¬¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ +ºÆÅÙ eb_initialize_appendix() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

void eb_finalize_appendix (EB_Appendix *app)

+ +

+´Ø¿ô eb_finalize_appendix() ¤Ï¡¢app ¤¬»Ø¤¹ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¤¹¤Ù¤Æ²òÊü¤µ¤ì¡¢ +¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬ appendix ¤È·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢·ë¤ÓÉÕ¤­¤¬²ò¤«¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_bind_appendix() ¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ +¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_bind_appendix (EB_Appendix *app, const char *path)

+ +

+´Ø¿ô eb_bind_appendix() ¤Ï¡¢app ¤Î»Ø¤¹ +EB_Appendix ¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢¥Ñ¥¹ path ¤Ë¤¢¤ë +appendix ¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +¥Ñ¥¹¤Ë¤Ï¡¢appendix ¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤«±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò»ØÄꤷ¤Þ¤¹¡£ +appendix ¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤È¤Ï¡¢catalog ¤¢¤ë¤¤¤Ï +catalogs ¥Õ¥¡¥¤¥ë¤Î¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ø¤·¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ëappendix ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤Î appendix ¤È¤Î +·ë¤ÓÉÕ¤­¤ò²ò¤¤¤Æ¤«¤é¡¢path ¤Ë¤¢¤ë appendix ¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢ÉûËܤÏ̤ÁªÂò¤Î¾õÂ֤ˤʤê¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò appendix ¤È¤Î·ë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂ֤ˤ·¤Æ¡¢ +¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ï¡¢EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¼ý¤Þ¤Æ +¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤µ¤é¤Ë¡¢path ¤¬ÁêÂХѥ¹¤Î¤È¤­¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤·¤¿·ë²Ì¤¬ +¤³¤ÎŤµ¤Ë¼ý¤Þ¤Ã¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì¤òĶ¤¨¤ë¤È¡¢EB_ERR_TOO_LONG_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_is_appendix_bound (EB_Appendix *app)

+ +

+´Ø¿ô eb_is_appendix_bound() ¤Ï¡¢app ¤¬ appendix ¤Ë +·ë¤ÓÉÕ¤¤¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +·ë¤ÓÉÕ¤¤¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_path (EB_Appendix *app, char *path)

+ +

+´Ø¿ô eb_appendix_path() ¤Ï¡¢app ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤ë +appendix ¤Î¥Ñ¥¹¤â¤·¤¯¤Ï±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻Ҥò¡¢path ¤Î»Ø¤¹Îΰè +¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢path ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+app ¤Ï¡¢¤¢¤é¤«¤¸¤á½ñÀҤ˷ë¤ÓÉÕ¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOK ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ë½ñ¤­¹þ¤à¥Ñ¥¹Ì¾¤Î¥Ð¥¤¥È¿ô¤Ï¡¢ºÇĹ¤Ç +EB_MAX_PATH_LENGTH ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤ÎŤµ¤Ï¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤ò´Þ¤ß¤Þ¤»¤ó¡£ +´Ø¿ô¤¬ÊÖ¤¹¥Ñ¥¹¤ÏÀµµ¬²½¤µ¤ì¤¿·Á¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢ +eb_bind_appendix() ¤ËÅϤ·¤¿¤È¤­¤Î¤â¤Î¤ÈƱ¤¸¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢ÁêÂХѥ¹¤À¤Ã¤¿¾ì¹ç¤Ï¡¢ÀäÂХѥ¹¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_load_all_appendix_subbooks (EB_Appendix *app)

+ +

+´Ø¿ô eb_load_all_appendix_subbooks() ¤Ï¡¢app Æâ +¤Î¤¹¤Ù¤Æ¤ÎÉûËܤò½é´ü²½¤·¤Þ¤¹¡£ +Ä̾ÉûËܤνé´ü²½¤Ï¡¢¤½¤ÎÉûËܤ¬½é¤á¤ÆÁªÂò¤µ¤ì¤¿¤È¤­¤Ë¼«Æ°Åª¤Ë +¹Ô¤ï¤ì¤Þ¤¹¤¬¡¢¤³¤Î´Ø¿ô¤Ï½é´ü²½¤òÁ°Åݤ·¤Ç¹Ô¤¤¤Þ¤¹¡£ +½é´ü²½¤ÎÂоݤȤʤë¤Î¤Ï¡¢¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿»þÅÀ¤Ç¤Þ¤À½é´ü²½¤·¤Æ¤¤¤Ê¤¤ +¤¹¤Ù¤Æ¤ÎÉûËܤǤ¹¡£ +¤³¤Î´Ø¿ô¤Ï¡¢¥¹¥¿¥ó¥É¥¢¥í¥ó¤ÇÆ°ºî¤¹¤ë¥µ¡¼¥Ð¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ê¤É¤ÇÍ­¸ú¤Ç¤¹¡£ +¥¯¥é¥¤¥¢¥ó¥È¤«¤é¤ÎÀܳ¤ò¼õ¤±¤ëÁ°¤Ë¤³¤Î´Ø¿ô¤ò¸Æ¤Ö¤³¤È¤Ç¡¢ÉûËܤνé´ü²½¤Î +¤¿¤á¤Ë¥¯¥é¥¤¥¢¥ó¥È¤òÂÔ¤¿¤»¤Ê¤¯¤ÆºÑ¤ß¤Þ¤¹¡£ +

+ +

+½é´ü²½¤ÎÂоݤȤʤ俤¹¤Ù¤Æ¤ÎÉûËܤνé´ü²½¤ËÀ®¸ù¤¹¤ì¤Ð¡¢´Ø¿ô¤Ï +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +°ìºý¤Ç¤â½é´ü²½¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢»Ä¤ê¤ÎÉûËܤνé´ü²½¤òÄü¤á¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+app ¤Ï¡¢¤¢¤é¤«¤¸¤á appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢app ¤Ï¡¢ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾õÂÖ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook_list (EB_Book *app, EB_Subbook_Code *subbook_list, int *subbook_count)

+ +

+´Ø¿ô eb_appendix_subbook_list() ¤Ï¡¢app Æâ¤Î +¤¹¤Ù¤ÆÉûËܤÎÉûËÜ¥³¡¼¥É¤ò EB_Subbook_Code ·¿¤ÎÇÛÎó¤Ë¤·¤Æ¡¢ +subbook_list ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +ÇÛÎó¤Ï¡¢ºÇÂç¤Ç EB_MAX_SUBBOOKS ¸Ä¤ÎÍ×ÁǤò»ý¤Á¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢appendix ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤθĿô¤ò subbook_count ¤Î +»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_count ¤Î»Ø¤¹Îΰè¤Ë 0 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò +¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+app ¤Ï¡¢¤¢¤é¤«¤¸¤á appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook (EB_Book *app, EB_Subbook_Code *subbook_code)

+ +

+´Ø¿ô eb_appendix_subbook() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤Î +ÉûËܤÎÉûËÜ¥³¡¼¥É¤ò subbook_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢subbook_code ¤Î»Ø¤¹Îΰè¤Ë +EB_SUBBOOK_INVALID ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤ò +ÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤Ï¤¤¤º¤ì¤«¤ÎÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook_directory (EB_Book *app, char *directory)

+ +

+´Ø¿ô eb_appendix_subbook_directory() ¤Ï¡¢app Æâ +¤Ç¸½ºßÁªÂòÃæ¤ÎÉûËܤΥǡ¼¥¿¥Õ¥¡¥¤¥ë¤ò¼ý¤á¤¿¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¡¢ +directory ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤Îʸ»úÎó¤ÎŤµ¤Ï¡¢ºÇĹ¤Ç +EB_MAX_DIRECTORY_NAME_LENGTH ¥Ð¥¤¥È¤Ç¤¹¡£ +¤³¤ÎŤµ¤Ë¡¢ËöÈø¤Î¥Ê¥ëʸ»ú¤Ï´Þ¤ß¤Þ¤»¤ó¡£ +¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï ASCII ¤Î¿ô»ú¡¢±Ñ¾®Ê¸»ú¡¢¥¢¥ó¥À¡¼¥¹¥³¥¢¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢directory ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤Ë +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app Æâ¤Î¤¤¤º¤ì¤«¤ÎÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¯¤Æ¤Ï +¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_appendix_subbook_directory2 (EB_Book *app, EB_Subbook_Code subbook_code, char *directory)

+ +

+eb_appendix_subbook_directory() ¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ÁªÂòÃæ¤Î +ÉûËܤǤϤʤ¯¡¢°ú¿ô subbook_code ¤Ç»ØÄꤵ¤ì¤¿ÉûËܤΠ+¥Ç¥£¥ì¥¯¥È¥ê̾¤ò½ñ¤­¹þ¤àÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢¤¢¤é¤«¤¸¤á +appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_set_appendix_subbook (EB_Book *app, EB_Subbook_Code code)

+ +

+´Ø¿ô eb_set_appendix_subbook() ¤Ï¡¢app ¤ÎÉûËÜ +code ¤òÁªÂò¤·¤Þ¤¹¡£ +¤¹¤Ç¤ËÉûËܤòÁªÂò¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¤«¤éÉûËÜ +subbook_code ¤òÁªÂò¤·¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢³°»ú¤Ï̤ÁªÂò¤Î¾õÂ֤Ȥʤꡢ¸¡º÷¡¢¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¡¢ +¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤Ë¤Ä¤¤¤Æ¤Î¾õÂÖµ­Ï¿¤Ï¡¢¤¹¤Ù¤Æ¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢ÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Æ¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤Ï appendix ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð +¤Ê¤ê¤Þ¤»¤ó¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_APP ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

void eb_unset_appendix_subbook (EB_Book *app)

+ +

+´Ø¿ô eb_unset_appendix_subbook() ¤Ï¡¢app ¤¬ÁªÂò +¤·¤Æ¤¤¤ëÉûËܤò̤ÁªÂò¤Î¾õÂ֤ˤ·¤Þ¤¹¡£ +app ¤¬ appendix ¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤Ê¤¤¤«¡¢ÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤ +¾ì¹ç¤Ï¡¢²¿¤â¤·¤Þ¤»¤ó¡£ +

+ + +

int eb_have_stop_code (EB_Book *app)

+ +

+´Ø¿ô eb_have_stop_code() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËÜ¤Ç +¶èÀڤꥳ¡¼¥É¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÄêµÁ¤·¤Æ¤¤¤ì¤Ð 1 ¤òÊÖ¤·¤Þ¤¹¡£ +ÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤«¡¢¤½¤â¤½¤âÉûËܤ¬ÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_stop_code (EB_Book *app, int *stop_code)

+ +

+´Ø¿ô eb_stop_code() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ +¤·¤Æ¤¤¤ë¶èÀڤꥳ¡¼¥É¤ò stop_code ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¤Þ¤¹¡£ +stop_code[0], stop_code[1] ¤Ë¡¢¶èÀڤꥳ¡¼¥É¤ÎÃÍ +¤È¤·¤Æ¤½¤ì¤¾¤ì 0x0000 ¡Á 0xffff ¤¬½ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢´Ø¿ô¤Ï stop_code[0] ¤È stop_code[1] +¤Ë -1 ¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬¶èÀڤꥳ¡¼¥É¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_STOPCODE +¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

int eb_have_narrow_alt (EB_Book *app)

+ +

int eb_have_wide_alt (EB_Book *app)

+ +

+´Ø¿ô eb_have_narrow_alt() ¤Ï¡¢ÁªÂòÃæ¤ÎÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ë +ÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +ƱÍͤˡ¢´Ø¿ô eb_have_wide_alt() ¤Ï¡¢Á´³Ñ³°»ú¤ËÂФ¹¤ë +ÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Þ¤¹¡£ +

+ +

+ÄêµÁ¤·¤Æ¤¤¤ì¤Ð 1 ¤ò¡¢ÄêµÁ¤·¤Æ¤¤¤Ê¤±¤ì¤Ð 0 ¤òÊÖ¤·¤Þ¤¹¡£ +app ¤¬ÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤â 0 ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_alt_start (EB_Book *app, int *start)

+ +

EB_Error_Code eb_wide_alt_start (EB_Book *app, int *start)

+ +

+´Ø¿ô eb_narrow_alt_start() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËÜ +¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ÎÄêµÁÈϰϤòÄ´¤Ù¡¢ÀèƬ¤Îʸ»úÈÖ¹æ +(Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇ¾®¤Î¤â¤Î) ¤ò start ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_start() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤ÆÄ´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_start() ¤ÈƱ¤¸ +¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_alt_end (EB_Book *app, int *end)

+ +

EB_Error_Code eb_wide_alt_end (EB_Book *app, int *end)

+ +

+´Ø¿ô eb_narrow_alt_end() ¤Ï¡¢app ¤¬ÁªÂòÃæ¤ÎÉûËÜ +¤Ë¤ª¤±¤ëȾ³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ÎÄêµÁÈϰϤòÄ´¤Ù¡¢ºÇ¸å¤Îʸ»úÈÖ¹æ +(Ⱦ³Ñ³°»ú¤Îʸ»úÈÖ¹æ¤ÎÃæ¤ÇºÇÂç¤Î¤â¤Î) ¤ò start ¤Î»Ø¤¹Îΰè¤Ë +½ñ¤­¹þ¤ß¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_font_start() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯Á´³Ñ³°»ú¤Ë +¤Ä¤¤¤ÆÄ´¤Ù¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢eb_narrow_font_start() ¤ÈƱ¤¸ +¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_narrow_alt_character_text (EB_Book *app, int character_number, char *text)

+ +

EB_Error_Code eb_wide_alt_character_text (EB_Book *app, int character_number, char *text)

+ +

+´Ø¿ô eb_narrow_alt_character_text() ¤Ï¡¢book ¤¬ +ÁªÂòÃæ¤ÎÉûËܤÇÄêµÁ¤·¤Æ¤¤¤ë¡¢È¾³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤·¤Þ¤¹¡£ +³°»ú¤Îʸ»úÈÖ¹æ¤ò¡¢character_number ¤Ç»ØÄꤷ¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤ÏÂåÂØʸ»úÎó¤ò text ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ß¡¢ +EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢text ¤Î»Ø¤¹Îΰè¤Ë¶õʸ»úÎó¤ò½ñ¤­¹þ¤ß¡¢¸¶°ø¤ò¼¨¤¹ +¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ÂåÂØʸ»úÎó¤ÏºÇĹ¤Ç EB_MAX_ALTERNATION_TEXT_LENGTH ¥Ð¥¤¥È +(= 31 ¥Ð¥¤¥È) ¤Ç¤¹¡£ +¤¿¤À¤·¡¢¤³¤ÎŤµ¤Ë¤Ï¥Ê¥ëʸ»ú¤Îʬ¤Ï´Þ¤ó¤Ç¤¤¤Ê¤¤¤Î¤Ç¡¢text ¤Î +Îΰè¤Ë¤Ï¤â¤¦ 1 ¥Ð¥¤¥ÈʬɬÍפǤ¹¡£ +

+ +

+ÂåÂØʸ»úÎ󤬤ɤÎʸ»ú¥³¡¼¥É¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¤«¤Ï¡¢appendix ¤ÎÃæ¤Ë¤Ï +µ­Ï¿¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +¤·¤«¤·¡¢appendix ¤Ïɬ¤ºÆÃÄê¤Î½ñÀÒ¤ËÂбþ¤·¤ÆºîÀ®¤µ¤ì¤ë¤â¤Î¤Ê¤Î¤Ç¡¢½ñÀҤΠ+ʸ»ú¥³¡¼¥É¤«¤é¼¡¤Î¤è¤¦¤ËȽÃǤ¹¤ì¤Ð¡¢ÌäÂê¤Ê¤¤¤Ç¤·¤ç¤¦¡£ +

+ +
    +
  • ½ñÀÒ¤¬ ISO 8859-1 ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ÂåÂØʸ»úÎó¤â ISO 8859-1 +
  • ¤½¤ì°Ê³°¤Î¾ì¹ç¡¢ÂåÂØʸ»úÎó¤ÏÆüËܸì EUC +
+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ʸ»úÈÖ¹æ character_number ¤¬³°»ú¤ÎÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢ +EB_ERR_NO_SUCH_CHAR_TEXT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò (character_number ¤Ë¸Â¤é¤º +¤Þ¤Ã¤¿¤¯) ÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +¤½¤¦¤Ç¤Ï¤Ê¤¯¡¢°ìÉô¤Îʸ»úÈÖ¹æ¤Ë¤Ä¤¤¤Æ¤ÏȾ³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò +ÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤Î¡¢character_number ¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤Ï +¸ºß¤·¤Ê¤¤¾ì¹ç¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¡¢text +¤Î»Ø¤¹Îΰè¤Ë¤Ï¶õʸ»úÎ󤬽ñ¤­¹þ¤Þ¤ì¤Þ¤¹¡£ +

+ +

+´Ø¿ô eb_wide_alt_character_text() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤ò¼è¤ê½Ð¤¹¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_narrow_alt_character_text() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_backward_narrow_alt_character (EB_Book *book, int n, int *character_number)

+ +

EB_Error_Code eb_backward_wide_alt_character (EB_Book *book, int n, int *character_number)

+ +

+´Ø¿ô eb_forward_narrow_alt_character() ¤Ï¡¢app +¤¬ÁªÂòÃæ¤ÎÉûËܤˤª¤¤¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡¢È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤Î +ʸ»úÈÖ¹æ character_number ¤Î n ¸Ä¸å¤í¤Ë°ÌÃÖ¤¹¤ë +ʸ»ú¤Îʸ»úÈÖ¹æ¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë¡¢character_number ¤Î»Ø¤¹Îΰè¤Ë +ʸ»úÈÖ¹æ¤ò½ñ¤­¹þ¤ó¤Ç¤ª¤­¤Þ¤¹¡£ +´Ø¿ô¤Î½èÍý¤¬À®¸ù¤¹¤ë¤È¡¢Ìá¤Ã¤¿¤È¤­¤Ë n ¸Äʬ¤À¤±¸åÊý¤Îʸ»úÈÖ¹æ +¤Ë½ñ¤­´¹¤ï¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¸¶°ø¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+¤¢¤é¤«¤¸¤á¡¢app ¤ÏÉûËܤòÁªÂò¤·¤Æ¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ÁªÂò¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_NO_CUR_APPSUB ¤òÊÖ¤·¤Þ¤¹¡£ +ÉûËܤ¬È¾³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ +EB_ERR_NO_ALT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¸Ä¸å¤í¤Ë¤â¤¦³°»ú¤¬¤Ê¤¤¾ì¹ç¤ä¡¢¸Æ¤Ó½Ð¤·¤¿ºÝ¤Ë +character_number ¤Î»Ø¤¹Îΰè¤Ë½ñ¤­¹þ¤ó¤Ç¤¢¤Ã¤¿Ê¸»úÈֹ椬³°»ú¤Î +ÄêµÁÈϰϳ°¤Ë¤¢¤ë¾ì¹ç¤Ï EB_ERR_NO_SUCH_CHAR_TEXT ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+n ¤Ë¤ÏÉé¤Î¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¼¡¤Î¸Æ¤Ó½Ð¤·¤ÈÅù²Á¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+/* n < 0 ¤È¤¹¤ë */
+eb_backward_narrow_font_character (book, -n, character_number);
+
+
+ +

+´Ø¿ô eb_forward_wide_alt_character() ¤Ï¡¢È¾³Ñ³°»ú¤Ç¤Ï¤Ê¤¯ +Á´³Ñ³°»ú¤Ë¤Ä¤¤¤ÆÁàºî¤¹¤ë¤È¤¤¤¦ÅÀ¤ò½ü¤¤¤Æ¡¢ +eb_forward_narrow_alt_character() ¤ÈƱ¤¸¤Ç¤¹¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ + + + +

¥µ¡¼¥Ð¾å¤Î½ñÀÒ°ìÍ÷

+ +

+EBNET ¥µ¡¼¥Ð¤«¤é±ó³Ö¥¢¥¯¥»¥¹¤ò¹Ô¤¦ºÝ¡¢¥µ¡¼¥Ð¤¬¤½¤Î¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ +¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤ë½ñÀÒ¤ä appendix ¥Ç¡¼¥¿¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤³¤Î¤È¤­¡¢EBNET ¥µ¡¼¥Ð¤ò»ØÄꤹ¤ë±ó³Ö¥¢¥¯¥»¥¹µ­½Ò»Ò¤Ë¤Ï¡¢ÆÃÄê¤Î½ñÀÒ¤ä +appendix ¥Ç¡¼¥¿¤ËÂФ¹¤ë¥¢¥¯¥»¥¹¤È¤Ï°Û¤Ê¤ê¡¢½ñÀÒ̾¤Ï»ØÄꤷ¤Þ¤»¤ó¡£ +¤¹¤Ê¤ï¤Á¡¢°ìÈÌ·Á¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ebnet://¥Û¥¹¥È:¥Ý¡¼¥È/
+
+
+ +

+ËöÈø¤Î `/' ¤Ï¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +: ¤È¤½¤ì¤Ë³¤¯¥Ý¡¼¥ÈÈÖ¹æ¤Ï¾Êά²Äǽ¤Ç¡¢¤½¤Î¾ì¹ç¤Ï +22010 È֥ݡ¼¥È¤òÍøÍѤ¹¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ +

+ +

+ebinfo ¥³¥Þ¥ó¥É¤Î --book-list ¥ª¥×¥·¥ç¥ó»ØÄê»þ¤ÎµóÆ°¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê +¤Î¤³¤Îµ¡Ç½¤Ë¤è¤Ã¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +(ebinfo ¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +@pxref{Book list on EBNET server, , EBNET ¥µ¡¼¥Ð¤Î½ñÀÒ°ìÍ÷, ebinfo-ja, ebinfo-ja}¡£) +

+ +
+
+% ebinfo --book-list ebnet://localhost
+̾Á°             Âê̾
+encycl           ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ
+encycl.app       ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ (appendix)
+crossword        ¥¯¥í¥¹¥ï¡¼¥É¥Ñ¥º¥ë¼­Åµ
+travel           ¥ï¡¼¥ë¥É¥È¥é¥Ù¥ë¥¬¥¤¥É
+
+
+ +

+̾Á°¤ÎËöÈø¤¬ .app ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤â¤Î¤Ï appendix ¥Ç¡¼¥¿¤Ç¡¢ +¤½¤Î¾¤Ï½ñÀÒËÜÂΤǤ¹¡£ +¤³¤ÎÎã¤Î½ñÀÒ encycl ¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤¹¤ë¤Ê¤é¡¢ +±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò¤Ï ebnet://localhost/encycl ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤Ê¤ª¡¢¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤Ê¤¤½ñÀÒ¤ä appendix ¥Ç¡¼¥¿ +¤Ï¡¢¥µ¡¼¤¬Â¦¤Ç°ìÍ÷¤«¤é½ü³°¤µ¤ì¤Þ¤¹¡£ +

+ + + +

EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È

+ +

+EBNET ¥µ¡¼¥Ð¤ÎÄ󶡤¹¤ë½ñÀÒ¤ª¤è¤Ó appendix ¥Ç¡¼¥¿¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë¤Ë¤Ï¡¢ +¤Þ¤º EB_BookList ·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÍÑ°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
+EB_BookList bl;
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤Ï¡¢malloc() ¤Ç³ÎÊݤ·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +

+ +
+
+EB_BookList *bl_pointer;
+
+bl_pointer = (EB_BookList *) malloc(sizeof(EB_BookList));
+
+
+ +

+EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ÈƱÍͤˡ¢EB_BookList +¥ª¥Ö¥¸¥§¥¯¥È¤â»È¤¦Á°¤ËÃæ¿È¤ò½é´ü²½¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤Ï¡¢eb_initialize_booklist() ¤È¤¤¤¦´Ø¿ô¤Ç¹Ô¤¤¤Þ¤¹¡£ +

+ +
+
+eb_initialize_booklist(&bl);
+eb_initialize_booklist(bl_pointer);
+
+
+ +

+½é´ü²½¤¬´°Î»¤·¤¿¤é¡¢ÆÃÄê¤Î¥µ¡¼¥Ð¤È¥ª¥Ö¥¸¥§¥¯¥È¤ò·ë¤Ó¤Ä¤±¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ebnet://localhost ¤Çɽ¤µ¤ì¤ë¥µ¡¼¥Ð¤ËÂФ·¤Æ¡¢ +¥ª¥Ö¥¸¥§¥¯¥È¤ò·ë¤Ó¤Ä¤±¤ë¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+if (eb_bind_booklist(&bl, "ebnet://localhost") != EB_SUCCESS) {
+    printf("eb_bind_booklist() failed\n");
+    return;
+}
+
+
+ +

+¤³¤ì¤Ï¤Á¤ç¤¦¤É¡¢EB_Book ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ +eb_bind() ¤ò¸Æ¤Ö¤Î¤ÈƱ¤¸¤Ç¤¹¡£ +

+ +

+¤³¤¦¤·¤Æ¡¢¤è¤¦¤ä¤¯½ñÀÒ°ìÍ÷¤Î¾ðÊó¤ò¼è¤ê½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤³¤ì¤Ë¤Ï eb_booklist_book_count(), +eb_booklist_book_name(), eb_booklist_book_title() +¤È¤¤¤¦ 3 ¤Ä¤Î´Ø¿ô¤ò»ÈÍѤ·¤Þ¤¹¡£ +¤³¤ì¤é¤Î´Ø¿ô¤Ï¤½¤ì¤¾¤ì¡¢¥¯¥é¥¤¥¢¥ó¥È¤¬¥¢¥¯¥»¥¹²Äǽ¤Ê½ñÀҤοô¡¢³Æ½ñÀÒ +¤ª¤è¤Ó appendix ¥Ç¡¼¥¿¤Î̾¾Î (¥¢¥¯¥»¥¹¼±Ê̻ҤȤ·¤Æ»ØÄꤹ¤ë̾Á°)¡¢³Æ½ñÀÒ +¤È appendix ¥Ç¡¼¥¿¤ÎÂê̾¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+char *name, *title;
+int count, i;
+
+count = eb_booklist_book_count(&bl);
+for (i = 0; i < count; i++) {
+    if (eb_booklist_book_name(&bl, i, &name) != EB_SUCCESS) {
+        printf("eb_booklist_book_name(%d) failed\n", i);
+        return;
+    }
+    if (eb_booklist_book_title(&bl, i, &title) != EB_SUCCESS) {
+        printf("eb_booklist_book_title(%d) failed\n", i);
+        return;
+    }
+    printf("name = %s, title = %s\n", name, title);
+}
+
+
+ +

+EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¤½ª¤ï¤Ã¤¿¤é¡¢É¬¤º¸å»ÏËö¤ò +¹Ô¤¤¤Þ¤¹¡£ +

+ +
+
+eb_finalize_booklist(&bl);
+eb_finalize_booklist(bl_pointer);
+
+
+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè¤ò malloc() ¤Ç³ÎÊݤ·¤¿¾ì¹ç¤Ï¡¢ +eb_finalize_booklist() ¤ò¸Æ¤ó¤À¸å¤Ê¤é¤Ð¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÎÎΰè +¤ò°ÂÁ´¤Ë²òÊü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+free(bl_pointer);
+
+
+ + +

¥Ç¡¼¥¿·¿¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¥Ç¡¼¥¿·¿¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ò +Æɤ߹þ¤ó¤Ç²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/booklist.h>
+
+
+ + +

EB_BookList ·¿

+ +

+EB_BookList ·¿¤Ï¡¢EBNET ¥µ¡¼¥Ð¾å¤¬»È¤Ã¤Æ¤¤¤ë½ñÀÒ¤ª¤è¤Ó +appendix ¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ëºÝ¤ËÍѤ¤¤ë¥ª¥¯¥¸¥§¥¯¥È¤Î·¿¤Ç¤¹¡£ +

+ +

+EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ëºÝ¤Ï¡¢¤Þ¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È +¤ËÂФ·¤Æ eb_initialize_booklist() ¤ò¸Æ¤ó¤Ç½é´ü²½¤¹¤ëɬÍפ¬ +¤¢¤ê¤Þ¤¹¡£ +

+ + +

´Ø¿ô¤Î¾ÜºÙ

+ +

+¤³¤ÎÀá¤ÇÀâÌÀ¤·¤Æ¤¤¤ë´Ø¿ô¤ò»È¤¦¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç +²¼¤µ¤¤¡£ +

+ +
+
+#include <eb/booklist.h>
+
+
+ + +

void eb_initialize_booklist (EB_BookList *bl)

+ +

+´Ø¿ô eb_initialize_booklist() ¤Ï¡¢bl ¤Î»Ø¤¹ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Þ¤¹¡£ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò +¸Æ¤ÖÁ°¤Ë¡¢É¬¤º¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò½é´ü²½¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +½é´ü²½¤·¤Æ¤¤¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Î¾¤Î´Ø¿ô¤ò¸Æ¤ó¤À +¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +¤Þ¤¿¡¢¤¹¤Ç¤Ë½é´ü²½¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢ +ºÆÅÙ eb_initialize_booklist() ¤ò¸Æ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¸Æ¤ó¤À¾ì¹ç¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¹¡£ +

+ + +

EB_Error_Code eb_bind_booklist (EB_BookList *bl, const char *path)

+ +

+´Ø¿ô eb_bind_booklist() ¤Ï¡¢app ¤Î»Ø¤¹ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤ò¡¢±ó³Ö¥¢¥¯¥»¥¹µ­½Ò»Ò path +¤Ç»ØÄꤵ¤ì¤¿ EBNET ¥µ¡¼¥Ð¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ë¥µ¡¼¥Ð¤Ë·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤Î¥µ¡¼¥Ð¤È¤Î·ë¤ÓÉÕ¤­ +¤ò²ò¤¤¤Æ¤«¤é¡¢path ¤Ë¤¢¤ë¥µ¡¼¥Ð¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¼ºÇÔ¤¹¤ë¤È¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ò¥µ¡¼¥Ð¤È¤Î·ë¤ÓÉÕ¤­¤ò²ò¤«¤ì¤¿¾õÂ֤ˤ·¤Æ¡¢¸¶°ø +¤ò¼¨¤¹¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+path ¤Ï¡¢EB_MAX_PATH_LENGTH ¥Ð¥¤¥È¤Ë¼ý¤Þ¤Æ +¤¤¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì¤òĶ¤¨¤ë¤È¡¢EB_ERR_TOO_LONG_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢½ñÀÒ̾¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤±ó³Ö¥¢¥¯¥»¥¹µ­½Ò»Ò¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤Î·Á¼°¤À¤È¡¢EB_ERR_BAD_FILE_NAME ¤òÊÖ¤·¤Þ¤¹¡£ +

+ +

+»ÈÍѤ·¤Æ¤¤¤ë EB ¥é¥¤¥Ö¥é¥ê¤Î¥Ð¥¤¥Ê¥ê¤¬¡¢±ó³Ö¥¢¥¯¥»¥¹¤ËÈóÂбþ¤Î¤â¤Î¤Ç +¤¢¤ë¾ì¹ç¡¢EB_ERR_EBNET_UNSUPPORTED ¤¬ÊÖ¤ê¤Þ¤¹¡£ +

+ + +

void eb_finalize_booklist (EB_BookList *bl)

+ +

+´Ø¿ô eb_finalize_booklist() ¤Ï¡¢bl ¤¬»Ø¤¹ +EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤Î¸å»ÏËö¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È¤¬³ä¤êÅö¤Æ¤Æ´ÉÍý¤·¤Æ¤¤¤¿¥á¥â¥ê¤Ï¤¹¤Ù¤Æ²òÊü¤µ¤ì¡¢ +¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤â¤¹¤Ù¤ÆÊĤ¸¤é¤ì¤Þ¤¹¡£ +¥ª¥Ö¥¸¥§¥¯¥È¤¬ EBNET ¥µ¡¼¥Ð¤È·ë¤ÓÉÕ¤¤¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢·ë¤ÓÉÕ¤­¤¬²ò¤«¤ì¤Þ¤¹¡£ +

+ +

+¸å»ÏËö¤ò¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ eb_bind_booklist() ¤ò¸Æ¤Ö +¤³¤È¤Ç¡¢¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ + +

int eb_booklist_book_count (EB_BookList *bl)

+ +

+´Ø¿ô eb_booklist_book_count() ¤Ï¡¢EBNET ¥µ¡¼¥Ð¤¬¤³¤Î +¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Æ¤¤¤ë½ñÀÒ¤ª¤è¤Ó appendix ¥Ç¡¼¥¿¤Î¿ô +¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È bl ¤Î»Ø¤¹ EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢ +¤¢¤é¤«¤¸¤á EBNET ¥µ¡¼¥Ð¤Ë·ë¤Ó¤Ä¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOKLIST ¤òÊÖ¤·¤Þ¤¹¡£ +

+ + +

EB_Error_Code eb_booklist_book_name (EB_BookList *bl, int i, char **name)

+ +

EB_Error_Code eb_booklist_book_title (EB_BookList *bl, int i, char **title)

+ +

+´Ø¿ô eb_booklist_book_name() ¤Ï¡¢EBNET ¥µ¡¼¥Ð¤Î½ñÀÒ¤ä +appendix ¥Ç¡¼¥¿¤Î̾¾Î¤ò¼èÆÀ¤·¤Þ¤¹¡£ +¤³¤³¤Ç¸À¤¦¡Ö̾¾Î¡×¤È¤Ï¡¢±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤǻØÄꤹ¤ë½ñÀÒ̾¤Î¤³¤È¤Ç¤¹¡£ +¤Ä¤Þ¤ê¡¢ebnet://localhost/dict ¤Î dict ¤ÎÉôʬ +¤ò»Ø¤·¤Þ¤¹¡£ +ƱÍͤˡ¢´Ø¿ô eb_booklist_book_title() ¤Ï¡¢½ñÀÒ¤ä appendix +¤ÎÂê̾¤ò¼èÆÀ¤·¤Þ¤¹¡£ +

+ +

+¤¤¤º¤ì¤Î´Ø¿ô¤â¡¢EBNET ¥µ¡¼¥Ð¾å¤Î²¿ÈÖÌܤνñÀҤ⤷¤¯¤Ï appendix ¤Î¾ðÊó¤ò +¼èÆÀ¤¹¤ë¤Î¤«¤ò¡¢°ú¿ô i ¤Ç»ØÄꤷ¤Þ¤¹¡£ +ÀèƬ¤Ï 1 ÈÖÌܤǤϤʤ¯ 0 ÈÖÌܤˤʤê¤Þ¤¹¡£ +

+ +

+À®¸ù¤¹¤ë¤È¡¢´Ø¿ô¤Ï½ñÀÒ¤Î̾¾Î¡¢Âê̾¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò *name, +*title ¤Ë½ñ¤­¹þ¤ß¡¢EB_SUCCESS ¤òÊÖ¤·¤Þ¤¹¡£ +¤Ê¤ª¡¢¤³¤Î¥Ý¥¤¥ó¥¿ÃÍ¤Ï ¥ª¥Ö¥¸¥§¥¯¥È bl ¤¬ÊÝ»ý¤·¤Æ¤¤¤ë +ʸ»úÎó¤ò»Ø¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +bl ¤ËÂФ·¤Æ eb_finalize_booklist() ¤ò¸Æ¤ó¤Ç +¤·¤Þ¤¦¤È¡¢¤³¤Îʸ»úÎó¤â»²¾ÈÉÔ²Äǽ¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ +

+¥ª¥Ö¥¸¥§¥¯¥È bl ¤Î»Ø¤¹ EB_BookList ¥ª¥Ö¥¸¥§¥¯¥È +¤Ï¡¢¤¢¤é¤«¤¸¤á EBNET ¥µ¡¼¥Ð¤Ë·ë¤Ó¤Ä¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +·ë¤Ó¤Ä¤¤¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢EB_ERR_UNBOUND_BOOKLIST ¤òÊÖ¤·¤Þ¤¹¡£ +¤Þ¤¿¡¢i ¤Ï 0 °Ê¾å¤«¤Ä¥µ¡¼¥Ð¤¬Ä󶡤·¤Æ¤¤¤ë½ñÀÒ¤ª¤è¤Ó appendix +¤ÎÁí¿ô̤Ëþ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤³¤ì°Ê³°¤ÎÃͤΤȤ­¤Ï¡¢EB_ERR_NO_SUCH_BOOK ¤¬ÊÖ¤ê¤Þ¤¹¡£ +

+ + +

¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à

+ + + + +

º÷°ú

+ + +

¥Ç¡¼¥¿·¿¤Îº÷°ú

+ +

+·¿Ì¾¤ÎÀèƬ¤Î EB_ ¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£ +

+ + + + +

´Ø¿ô¤Îº÷°ú

+ +

+´Ø¿ô̾¤ÎÀèƬ¤Î eb_ ¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£ +

+ + + + +

Äê¿ô¤Îº÷°ú

+ +

+Äê¿ô̾¤ÎÀèƬ¤Î EB_ ¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£ +

+ + + + + diff --git a/lib/ebu/doc/ebappendix-01.html b/lib/ebu/doc/ebappendix-01.html new file mode 100644 index 0000000..8a53d2d --- /dev/null +++ b/lib/ebu/doc/ebappendix-01.html @@ -0,0 +1,72 @@ + + + + + + +ebappendix ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

appendix (ÉÕÏ¿) ¤È¤Ï

+ +

+appendix (ÉÕÏ¿) ¤È¤Ï CD-ROM ½ñÀÒ¤ÎÊä½õ¥Ç¡¼¥¿¤Î¤³¤È¤Ç¤¹¡£ +appendix ¤Ï CD-ROM ½ñÀҤνÐÈǼҤ«¤éÄ󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Ë¸ÇÍ­¤Î¤â¤Î¤Ç¤¹¡£ +

+ +

+appendix ¤Ï°Ê²¼¤Î¥Ç¡¼¥¿¤ò CD-ROM ½ñÀÒ¤ËÂФ·¤ÆÄ󶡤·¤Þ¤¹¡£ +

+ +
+
ËÜʸ¤Î¶èÀڤꥳ¡¼¥É
+
+¤¢¤Ê¤¿¤¬ EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ CD-ROM ¼­½ñ¤ÎÃæ¤Î¤¢¤ëñ¸ì¤ò°ú¤¯ºÝ¡¢¤½¤Î +ñ¸ì¤ÎÀâÌÀ¤¬½ªÎ»¤¹¤ë²Õ½ê¤Ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬ËÜʸ¤Î½ÐÎϤò»ß¤á¤ë¤³¤È¤ò +¤¢¤Ê¤¿¤Ï´üÂÔ¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£ +¤·¤«¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¤½¤Î¤è¤¦¤ÊÆ°ºî¤òÊݾڤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ +¤Ê¤¼¤Ê¤é¡¢CD-ROM ½ñÀÒ¤ÎËÜʸ¤Ë¤Ï¡¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤¬Â¸ºß¤·¤Ê¤¤¤«¤é +¤Ç¤¹¡£ + +¹¬¤¤¤Ë¤â¡¢Â¿¤¯¤Î CD-ROM ½ñÀҤˤϡ¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤ÎÂåÂؤȤ·¤Æ +»È¤¨¤ë¡¢¶èÀڤꥳ¡¼¥É (stop code) ¤È¤¤¤¦¤â¤Î¤ò»ý¤Ã¤Æ +¤¤¤Þ¤¹¡£ +Ä̾EB ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¶èÀڤꥳ¡¼¥É¤ò¼«Æ°Åª¤Ë¿ä¬¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ +¤¤¤ë¤Î¤Ç¤¹¤¬¡¢»þ¡¹¸í¤Ã¤¿¶èÀڤꥳ¡¼¥É¤òƳ¤­½Ð¤¹¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +appendix ¤Î¶èÀڤꥳ¡¼¥É¤Ï¡¢¤½¤Î½ñÀÒ¤ÎÀµ¤·¤¤¶èÀڤꥳ¡¼¥É¤ò EB ¥é¥¤¥Ö¥é¥ê +¤Ë¶µ¤¨¤Æ¤ä¤ë¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ + +
³°»ú¤ÎÂåÂØʸ»úÎó
+
+¿¤¯¤Î CD-ROM ½ñÀҤϡ¢³°»ú (Æȼ«¤ËÄêµÁ¤·¤¿Ê¸»ú) ¤ò»ý¤Ã¤Æ¤ª¤ê¡¢ËÜʸÃæ¤Ç +¤½¤Î³°»ú¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ +CD-ROM ½ñÀҤǤϳ°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤ª¤ê¡¢ +¥¯¥é¥¤¥¢¥ó¥È¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬³°»ú¤ò½ÐÎϤ¹¤ë¤Ë¤Ï¡¢¤½¤Î¥Õ¥©¥ó¥È¤òÉÁ²è +¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ + +appendix ¤Ç¤Ï¡¢³°»ú¤Î ÂåÂØʸ»úÎó (alternation text) +¤òÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×¥Õ¥©¥ó¥È¤òÉÁ²è¤¹¤ëÂå¤ï¤ê¤Ë¡¢¤½¤Î +ÂåÂØʸ»úÎó¤ò½ÐÎϤ¹¤ë¤³¤È¤Ë¤·¤Æ¤âÎɤ¤¤Ç¤·¤ç¤¦¡£ +
+ +

+appendix ¤Î¥ì¥¤¥¢¥¦¥È¤Ï CD-ROM ½ñÀҤΤâ¤Î¤È¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï catalog ¤â¤·¤¯¤Ï catalogs +¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¡¢³ÆÉûËܤΥǡ¼¥¿¤ÏÂбþ¤¹¤ë¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÇÛÃÖ¤µ¤ì¤Æ +¤¤¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebappendix-02.html b/lib/ebu/doc/ebappendix-02.html new file mode 100644 index 0000000..720baf1 --- /dev/null +++ b/lib/ebu/doc/ebappendix-02.html @@ -0,0 +1,39 @@ + + + + + + +ebappendix ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

ebappendix ¥³¥Þ¥ó¥É¤È¤Ï

+ +

+appendix ¤Ï¥Ð¥¤¥Ê¥ê·Á¼°¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Ç¹½À®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¼ê¤ÇľÀÜ +ÊÔ½¸¤¹¤ë¤Î¤ÏÍưפǤϤ¢¤ê¤Þ¤»¤ó¡£ +¤½¤³¤Ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï ebappendix ¥³¥Þ¥ó¥É¤òÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£ +ebappendix ¥³¥Þ¥ó¥É¤Ï¡¢¥Æ¥­¥¹¥È·Á¼°¤Ç½ñ¤«¤ì¤¿¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¡¢ +¥Ð¥¤¥Ê¥ê·Á¼°¤Î appendix ¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î¸ø¼°¤Ê FTP ¥µ¥¤¥È +ftp://ftp.sra.co.jp/pub/misc/eb/appendix/ +¤Ë¤Ï¡¢´û¤Ë¤¤¤¯¤Ä¤«¤Î½ñÀÒÍѤΠappendix ¤¬ÃÖ¤¤¤Æ¤¢¤ê¤Þ¤¹¡£ +¤³¤³¤ËºÜ¤Ã¤Æ¤¤¤Ê¤¤ CD-ROM ½ñÀÒÍѤΠappendix ¤òÍÑ°Õ¤·¤¿¤¤¾ì¹ç¤Ï¡¢ +ebappendix ¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤·¤ç¤¦¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebappendix-03.html b/lib/ebu/doc/ebappendix-03.html new file mode 100644 index 0000000..0345bec --- /dev/null +++ b/lib/ebu/doc/ebappendix-03.html @@ -0,0 +1,406 @@ + + + + + + +ebappendix ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

appendix ¤Î¥½¡¼¥¹¥Ç¡¼¥¿¤Î½ñ¤­Êý

+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢appendix ¤Î¥½¡¼¥¹¥Ç¡¼¥¿¤Î½ñ¤­Êý¤òÀâÌÀ¤·¤Þ¤¹¡£ +¤³¤³¤Ç¡¢¡Ö¥½¡¼¥¹¥Ç¡¼¥¿¡×¤È¸À¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ebappendix ¤¬Æɤ߹þ¤à +¥Æ¥­¥¹¥È·Á¼°¤Ç½ñ¤«¤ì¤¿¥Ç¡¼¥¿¤Î¤³¤È¤Ç¤¹¡£ +

+ +

+appendix ¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¼¡¤Ëµó¤²¤ë¥½¡¼¥¹¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤¬É¬ÍפǤ¹¡£ +¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò¤¹¤Ù¤Æ¡¢Æ±¤¸¥Ç¥£¥ì¥¯¥È¥ê¾å¤ËÍÑ°Õ¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
catalog.app ¤Þ¤¿¤Ï catalogs.app
+
+appendix ¤Ë¤Ïɬ¤º¡¢catalog ¤Þ¤¿¤Ï catalogs ¤È¤¤¤¦ +̾Á°¤Î¥Õ¥¡¥¤¥ë¤¬É¬ÍפǤ¹¡£ +catalog.app, catalogs.app ¤Ï¤½¤ÎÀ¸À®¸µ¤È¤Ê¤ë +¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ +appendix ¤Ë¼ýÏ¿¤µ¤ì¤Æ¤¤¤ë ÉûËÜ (subbook) +(¾Ü¤·¤¯¤Ï +¡Öcatalog(s).app ¤Î½ñ¤­Êý¡× +¤ò»²¾È) ¤Î°ìÍ÷¤òµ­¤·¤Þ¤¹¡£ + +
ÉûËÜ.app
+
+appendix ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤ½¤ì¤¾¤ì¤ËÂФ·¤Æ¡¢°ì¤Ä¤º¤ÄÍÑ°Õ¤¹¤ëɬÍפ¬ +¤¢¤ê¤Þ¤¹ (ÉûËÜ ¤ÎÉôʬ¤Ï¡¢¼ÂºÝ¤Ï¸Ä¡¹¤ÎÉûËܤÎ̾Á°¤Ë¤Ê¤ê¤Þ¤¹)¡£ +appendix ¤Î¥á¥¤¥ó¥Ç¡¼¥¿¤Ç¤¢¤ë¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ä³°»ú¤ÎÂåÂØʸ»úÎó¤Ï¡¢ +¤³¤Î¥Õ¥¡¥¤¥ë¤Ëµ­¤·¤Þ¤¹¡£ +
+ + + +

catalog(s).app ¤È¤Ï

+ +

+CD-ROM ½ñÀÒ¤ÈƱÍͤˡ¢appendix ¥Ñ¥Ã¥±¡¼¥¸¤Ë¤âɬ¤º catalog +¤â¤·¤¯¤Ï catalogs ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Î¤É¤Á¤é¤«°ìÊý¤¬ +ɬÍפǤ¹¡£ +catalog.app, catalogs.app ¥Õ¥¡¥¤¥ë¤Ï¡¢¤½¤Î +À¸À®¸µ¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebappendix ¥³¥Þ¥ó¥É¤Ë appendix ¤òÀ¸À®¤µ¤»¤ëºÝ¤Ë¤Ï¡¢ +catalog.app ¤« catalogs.app ¤Î¤É¤Á¤é¤«¤òɬ¤º +ÍÑ°Õ¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+ebappendix ¤Îɸ½à¤ÎÆ°ºî¤Ç¤Ï¡¢catalog.app ¤È¤¤¤¦ +¥Õ¥¡¥¤¥ë̾¤Ë¤·¤Æ¤ª¤¯¤È¡¢À¸À®¤¹¤ë¥Õ¥¡¥¤¥ë̾¤â catalog ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢appendix Á´ÂΤΥǥ£¥ì¥¯¥È¥ê¹½Â¤¤¬¡¢ÅŻҥ֥寤˻÷¤¿·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+È¿ÂФˡ¢catalogs.app ¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤Ë¤·¤Æ¤ª¤¯¤È¡¢À¸À®¤¹¤ë +¥Õ¥¡¥¤¥ë̾¤â catalogs ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢appendix Á´ÂΤΥǥ£¥ì¥¯¥È¥ê¹½Â¤¤¬¡¢EPWING ¤Ë»÷¤¿·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢EPWING ¤Î½ñÀÒ¤ËÂФ·¤ÆÅŻҥ֥寷Á¼°¤Î appendix ¤ò»ÈÍѤ·¤Æ¤â¡¢ +Æ°ºî¤½¤Î¤â¤Î¤Ë¤Ï»Ù¾ã¤¬¤¢¤ê¤Þ¤»¤ó¡£ +µÕ¤âƱÍͤǤ¹¡£ +

+ + +

catalog(s).app ¤Î½ñ¤­Êý

+ +

+catalog(s).app ¤Ë¤Ï¡¢½ñÀҤ˼ýÏ¿¤µ¤ì¤Æ¤¤¤ëÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò +1 ¹Ô¤Ë 1 ¤Ä¤º¤Ä½ñ¤­Ê¤٤ޤ¹¡£ +ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤Ï¡¢ebinfo ¥³¥Þ¥ó¥É¤ò»È¤¦¤ÈÍưפËʬ¤«¤ê¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢ebinfo ¤Î¼Â¹ÔÎã¤Ç¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ  1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: ejdict
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ  2:
+  Âê̾: ¤³¤Î½ñÀҤλȤ¤Êý
+  ¥Ç¥£¥ì¥¯¥È¥ê: howto
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+¤³¤Î¼­½ñÍѤΠappendix ¤òºîÀ®¤¹¤ë¾ì¹ç¡¢catalog(s).app ¤Ë¤Ï¼¡¤Î +¤è¤¦¤Ëµ­¤·¤Þ¤¹¡£ +

+ +
+
+ejdict
+howto
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¢¾®Ê¸»ú¤Ï¡¢Æ±¤¸¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ +¤Þ¤¿¡¢¶õ¹Ô¤ª¤è¤Ó¤ª¤è¤Ó¶õÇò°Ê³°¤ÎºÇ½é¤Îʸ»ú¤¬¥Ï¥Ã¥·¥åµ­¹æ (#) +¤Ç¤¢¤ë¹Ô¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +

+ +

+ɬ¤º¤â¤È¤Î½ñÀÒ¤ÎÉûËܤ¹¤Ù¤Æ¤ò¡¢Æ±¤¸½ç½ø¤Ç catalog(s).app ¤Ë +µ­¤¹¤è¤¦¤Ë¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ÉûËÜ.app ¤È¤Ï

+ +

+appendix ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤ½¤ì¤¾¤ì¤ËÂФ·¤Æ¡¢¥½¡¼¥¹¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë +ÉûËÜ.app ¤òÍÑ°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +ÉûËÜ ¤ÎÉôʬ¤Ï¡¢¼ÂºÝ¤Ë¤Ï¸Ä¡¹¤ÎÉûËܤλÈÍѤ¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê̾¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢Á°Àá¤ÎÎã¤Ç¤Ï¡¢½ñÀÒ¤¬ ejdict ¤È howto +¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê̾¤ò»ý¤Ã¤¿ÉûËܤò»ý¤Ã¤Æ¤¤¤Þ¤·¤¿¡£ +¤³¤Î¾ì¹ç¡¢ÍÑ°Õ¤¹¤ë¥Õ¥¡¥¤¥ë¤Ï ejdict.app ¤È howto.app +¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ÉûËÜ.app ¥Õ¥¡¥¤¥ë¤Ï appendix ¤Î¥á¥¤¥ó¥Ç¡¼¥¿¤Ç¤¢¤ë¡¢ +ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ä³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼ýÏ¿¤·¤¿ appendix ¤ä +furoku ¤È¤¤¤Ã¤¿¥Õ¥¡¥¤¥ë¤ÎÀ¸À®¸µ¤Ë¤Ê¤ê¤Þ¤¹¡£ +(appendix ¤òÅŻҥ֥寷Á¼°¤ÇÀ¸À®¤¹¤ë¤È appendix¡¢EPWING ·Á¼° +¤ÇÀ¸À®¤¹¤ë¤È furoku ¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤Ë¤Ê¤ê¤Þ¤¹¡£) +

+ + +

ÉûËÜ.app ¤Îʸˡ

+ +

+³ÆÉûËܤΥ½¡¼¥¹¥Ç¡¼¥¿¤òµ­¤·¤¿¥Õ¥¡¥¤¥ë¡ÖÉûËÜ.app¡× +¤ÎÃæ¤Ç¤Ï¡¢¶õ¹Ô¡¢¤ª¤è¤Ó¶õÇò°Ê³°¤ÎºÇ½é¤Îʸ»ú¤¬¥Ï¥Ã¥·¥åµ­¹æ (#) +¤Ç¤¢¤ë¹Ô¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +

+ +

+¾¤Î¹Ô¤Ï¤¹¤Ù¤Æ¡¢Ã±ÆȻؼ¨»Ò (single directive) ¤« +Ê£¹ç»Ø¼¨»Ò (group directive) ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ñÆȻؼ¨»Ò¤ÈÊ£¹ç»Ø¼¨»Ò¤Ï¡¢¤É¤Î¤è¤¦¤Ê½ç½ø¤ÇÄêµÁ¤·¤Æ¤âº¹¤·»Ù¤¨¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+ñÆȻؼ¨»Ò¤È¤Ï¡¢1 ¹Ô¤Ç´°·ë¤¹¤ë»Ø¼¨»Ò¤Ç¤¹¡£ +ñÆȻؼ¨»Ò¤Î°ìÈÌ·Á¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+»Ø¼¨»Ò¤Î̾Á°    »Ø¼¨»Ò¤ÎÃÍ
+
+
+ +

+°Ê²¼¤ÎÎã¤Ç¤Ï¡¢stop-code ¤¬»Ø¼¨»Ò¤Î̾Á°¡¢ +0x1f09 0x0001 ¤¬¤½¤ÎÃͤǤ¹¡£ +

+ +
+
+stop-code          0x1f09 0x0001
+
+
+ +

+»Ø¼¨»Ò̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤¹¤Î¤Ç¡¢stop-code ¤ò +Stop-Code ¤È½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +»Ø¼¨»Ò¤Î̾Á°¤ÈÃͤζèÀÚ¤ê¤Ë¤Ï¡¢¶õÇò¤«¥¿¥Ö¤òÍѤ¤¤Þ¤¹¡£ +Ϣ³¤·¤¿¶õÇò¤È¥¿¥Ö¤¬¡¢¹ÔƬ¤ª¤è¤Ó¹ÔËö¤Ë¤¢¤Ã¤¿¾ì¹ç¡¢¤½¤ì¤é¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +

+ +

+Ê£¹ç»Ø¼¨»Ò¤È¤Ï¡¢µ­½Ò¤¬ÀßÄê¥Õ¥¡¥¤¥ëÆâ¤ÎÊ£¿ô¹Ô¤ËÅϤë»Ø¼¨»Ò¤Ç¤¹¡£ +Ê£¹ç»Ø¼¨»Ò¤Î°ìÈÌ·Á¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+begin Ê£¹ç»Ø¼¨»Ò¤Î̾Á°
+    Éû»Ø¼¨»Ò¤Î̾Á°    Éû»Ø¼¨»Ò¤ÎÃÍ
+             : 
+             : (·«¤êÊÖ¤·)
+             : 
+end
+
+
+ +

+¥­¡¼¥ï¡¼¥É begin ¤¬¡¢Ê£¹ç»Ø¼¨»Ò¤Î³«»Ï¤òɽ¤·¤Þ¤¹¡£ +begin ¤Ï¸å¤í¤Ë Ê£¹ç»Ø¼¨»Ò¤Î̾Á° ¤ò°ú¿ô¤È¤·¤Æ +¼è¤ê¤Þ¤¹¡£ +begin ¤È Ê£¹ç»Ø¼¨»Ò¤Î̾Á° ¤Ï¶õÇò¤«¥¿¥Ö¤Ç¶èÀڤꡢ +ξÊý¤È¤âƱ¤¸¹Ô¤ÎÃæ¤ËÃÖ¤­¤Þ¤¹¡£ +¥­¡¼¥ï¡¼¥É end ¤Ï¡¢Ê£¹ç»Ø¼¨»Ò¤Î½ªÎ»¤òɽ¤·¤Þ¤¹¡£ +end ¤Ï¡¢Ã±ÆÈ¤Ç 1 ¹Ô¤Ë¤·¤ÆÃÖ¤­¤Þ¤¹¡£ +

+ +

+º£¤Î¤È¤³¤í ÉûËÜ.app ¤Ç»ÈÍѤǤ­¤ëÊ£¹ç»Ø¼¨»Ò¤Î̾Á°¤Ï¡¢ +narrow ¤È wide ¤Î 2 ¤Ä¤À¤±¤Ç¤¹¡£ +¤½¤ì¤¾¤ì¤Î Éû»Ø¼¨»Ò ¤Ï¡¢begin ¤È end +¤Î¹Ô¤Î´Ö¤ËÃÖ¤­¤Þ¤¹¡£ +Éû»Ø¼¨»Ò¤Ë´Ø¤¹¤ëµ­½Ò¤Î°ìÈÌŪ¤Êµ¬Â§¤Ï¡¢Ã±ÆȻؼ¨»Ò¤ÈÊѤï¤ê¤Þ¤»¤ó +(¤¿¤È¤¨¤Ð¡¢Éû»Ø¼¨»Ò¤Î̾Á°¤È Éû»Ø¼¨»Ò¤ÎÃÍ ¤Ï¶õÇò¤« +¥¿¥Ö¤Ç¶èÀڤ뤳¤È¤Ê¤É)¡£ +

+ +

+°Ê²¼¤Ï¡¢ narrow Ê£¹ç»Ø¼¨»Ò¤Îµ­½ÒÎã¤Ç¤¹¡£ +

+ +
+
+begin narrow
+    range-start     0xa121
+    range-end       0xa123
+    0xa121          [¢ª»²¾È]
+    0xa122          [¢ª²»À¼]
+    0xa123          [¢ª¿Þ²ò]
+end
+
+
+ + +

ÉûËÜ.app ¤ÎñÆȻؼ¨»Ò

+ +

+ñÆȻؼ¨»Ò¤Ë¤Ï¼¡¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
character-code
+
+appendix ¤Îʸ»ú¥³¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£ +ʸ»ú¥³¡¼¥É¤Ïɬ¤º¡¢CD-ROM ½ñÀҤ˹ç¤ï¤»¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤Ï¡¢ebinfo ¥³¥Þ¥ó¥É¤Î½ÐÎϤò¸«¤ì¤Ð³Îǧ +¤Ç¤­¤Þ¤¹¡£ + +CD-ROM ½ñÀÒ¤¬ ISO 8859-1 ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»Ø¼¨»Ò¤ÎÃͤȤ·¤Æ +ISO8859-1 ¤ò»ØÄꤷ¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢JISX0208 ¤ò»ØÄꤷ¤Æ²¼¤µ¤¤¡£ + +
+
+character-code          JISX0208
+
+
+ +¤³¤Î»Ø¼¨»Ò¤Ï¡¢ÉûËÜ.app ¥Õ¥¡¥¤¥ëÆâ¤Çɬ¤º°ì²óÄêµÁ +¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÄêµÁ¤·¤Ê¤«¤Ã¤¿¤ê¡¢ÆóÅٰʾåÄêµÁ¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
stop-code
+
+ÉûËܤÎËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£ +»Ø¼¨»Ò¤ÎÃͤϡ¢¶èÀڤꥳ¡¼¥É¤Îʸ»úÈÖ¹æ¤ò 2 ¤Ä½ñ¤­Ê¤٤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
+
+stop-code          0x1f09 0x0001
+
+
+ +ʸ»úÈÖ¹æ¤Ï¡¢0x ¤Ê¤¤¤· 0X ¤Ë³¤±¤Æ 16¿Ê¿ô 4 ·å +¤Çµ­¤·¤Þ¤¹¡£ +¤¿¤À¤·¡¢1¤ÄÌܤÎʸ»úÈÖ¹æ¤Ï¡¢0x1f09 ¤« 0x1f41 ¤Ç +¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤À¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + +ebstopcode ¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢ÉûËܤËŬÀڤʶèÀڤꥳ¡¼¥É¤ò +ÆÃÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ (¾Ü¤·¤¯¤Ï +ebstopcode ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î +¤³¤È)¡£ + +¤³¤Î»Ø¼¨»Ò¤ÏÄêµÁ¤·¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢ÆóÅٰʾåÄêµÁ¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +
+ + +

ÉûËÜ.app ¤ÎÊ£¹ç»Ø¼¨»Ò

+ +

+narrow ¤ª¤è¤Ó wide Ê£¹ç»Ø¼¨»Ò¤Ï¡¢¤½¤ì¤¾¤ìÉûËÜ¤Ë +ÂФ¹¤ëȾ³Ñ³°»ú¤ª¤è¤ÓÁ´³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤¹¤ë¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢ÉûËܤ¬³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Æ¤â¡¢ÂåÂØʸ»úÎó¤òÍøÍѤ¹¤ëɬÍפ¬¤Ê¤±¤ì¤Ð¡¢ +narrow, wide Ê£¹ç»Ø¼¨»Ò¤òµ­½Ò¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+narrow ¤È wide Ê£¹ç»Ø¼¨»ÒÆâ¤ÇÄêµÁ¤Ç¤­¤ëÉû»Ø¼¨»Ò¤Ï¡¢ +¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£ +Éû»Ø¼¨»Ò¤Ë¤Ï¼¡¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
range-start
+
+³°»ú¤ÎÄêµÁÈϰϤòµ­¤·¤Þ¤¹¡£ +³«»Ï°ÌÃÖ¤Îʸ»úÈÖ¹æ¤ò range-start ¤Ç¡¢½ªÎ»°ÌÃÖ¤Îʸ»úÈÖ¹æ¤ò +range-end ¤Ç»ØÄꤷ¤Þ¤¹¡£ +ʸ»úÈÖ¹æ¤Ï¡¢0x ¤Ê¤¤¤· 0X ¤Ë³¤±¤Æ 16¿Ê¿ô 4 ·å¤Ç +µ­¤·¤Þ¤¹¡£ +°Ê²¼¤Ïµ­½ÒÎã¤Ç¤¹¡£ + +
+
+    range-start     0xa121
+    range-end       0xa123
+
+
+ +ÄêµÁÈϰϤϡ¢ebinfo ¥³¥Þ¥ó¥É¤Î½ÐÎÏ·ë²Ì¤Î +¡ÖȾ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú (narrow font characters)¡× +¡ÖÁ´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú (wide font characters)¡× +¤Çµ­¤µ¤ì¤¿ÈϰϤȰìÃפµ¤»¤ë¤è¤¦¤Ë¤·¤Æ²¼¤µ¤¤¡£ + +narrow ¤ª¤è¤Ó wide Ê£¹ç»Ø¼¨»ÒÆâ¤Ç¤Ï¡¢ +ɬ¤º°ì²ó¤º¤Ä range-start ¤ª¤è¤Ó range-end ¤ò +ÄêµÁ¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÄêµÁ¤·¤Ê¤«¤Ã¤¿¤ê¡¢ÆóÅٰʾåÄêµÁ¤·¤¿¤ê¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
0xhhhh
+
+hhhh ¤Ï¡¢4 ·å ¤Î 16¿Ê¿ô¤Ç¤¹¡£ +ʸ»úÈÖ¹æ 0xhhhh ¤ÎÁ´³Ñ³°»ú¤Ê¤¤¤·È¾³Ñ³°»ú¤ËÂФ·¤Æ¡¢ +ÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Þ¤¹¡£ + +
+
+    0xa121          [̾]
+
+
+ +appendix ¤¬ ISO 8859-1 ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ÂåÂØʸ»úÎó¤â ISO 8859-1 +¤ÇÄêµÁ¤·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢ÂåÂØʸ»úÎó¤òÆüËܸì EUC ¤ÇÄêµÁ¤·¤Þ¤¹¡£ +¤¤¤º¤ì¤â¡¢ÂåÂØʸ»úÎó¤ÏºÇĹ¤Ç 31 ¥Ð¥¤¥È¤Þ¤Ç¤Ç¡¢¤½¤ì¤òĶ¤¨¤ë¤È¥¨¥é¡¼¤Ë +¤Ê¤ê¤Þ¤¹¡£ + +range-start, range-end ¤Ç»ØÄꤷ¤¿ÄêµÁÈÏ°ÏÆâ¤Î +³°»ú¤¹¤Ù¤Æ¤Ë¤Ä¤¤¤Æ¡¢ÂåÂØʸ»úÎó¤òÀßÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢Æ±°ì¤ÎÊ£¹ç»Ø¼¨»ÒÆâ¤Ç¡¢°ì¤Ä¤Îʸ»úÈÖ¹æ¤Î³°»ú¤ËÂФ·¤ÆÂåÂØʸ»úÎó¤ò +ÄêµÁ¤Ç¤­¤ë¤Î¤Ï°ì²ó¤Þ¤Ç¤Ç¤¹¡£ +Ê£¿ô²óÀßÄꤷ¤è¤¦¤È¤¹¤ë¤È¡¢¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢Èϰϳ°¤Îʸ»úÈÖ¹æ¤ÎÂåÂØʸ»úÎó¤òÄêµÁ¤·¤è¤¦¤È¤·¤Æ¤â¡¢¤ä¤Ï¤ê¥¨¥é¡¼¤Ë +¤Ê¤ê¤Þ¤¹¡£ + +CD-ROM ½ñÀÒ¤¬¤É¤Î¤è¤¦¤Ê³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤Î¤«¤Ï¡¢ebfont ¥³¥Þ¥ó¥É +¤ÇÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ (¾Ü¤·¤¯¤Ï +ebfont ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È)¡£ +
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebappendix-04.html b/lib/ebu/doc/ebappendix-04.html new file mode 100644 index 0000000..3e2ca97 --- /dev/null +++ b/lib/ebu/doc/ebappendix-04.html @@ -0,0 +1,262 @@ + + + + + + +ebappendix ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [Ìܼ¡] +

+
+

appendix ¤ÎÀ¸À®

+ +

+appendix ¤Î¥½¡¼¥¹¥Ç¡¼¥¿¤¬½ñ¤±¤¿¤é¡¢ebappendix ¥³¥Þ¥ó¥É¤òÍѤ¤¤Æ +¼ÂºÝ¤Î (¥Ð¥¤¥Ê¥ê·Á¼°¤Î) appendix ¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +

+°Ê²¼¡¢¤³¤Î¾Ï¤Ç¤Ï ebappendix ¤Î¼Â¹ÔÊýË¡¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯ÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

ebappendix ¤Î¼Â¹Ô

+ +

+ebappendix ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebappendix ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹
+
+
+ +

+ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹ ¤Ë¤Ï¡¢Æɤ߹þ¤à appendix ¥½¡¼¥¹¥Ç¡¼¥¿¤Î +¥Ç¥£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê catalog.app ¤Þ¤¿¤Ï catalogs.app +¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¾Êά¤·¤¿¾ì¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤¿¤È¤ß¤Ê¤µ¤ì¤Þ¤¹¡£ +

+ +

+ɸ½à¤Ç¤Ï¡¢½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£ +

+ +

+--output-directory ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢ +ebappendix ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤Î¾ì½ê¤Ë½ÐÎϤ¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebappendix --output-directory ½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹ \
+  ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹
+
+
+ +

+¤â¤·½ÐÎϥǥ£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¼«Æ°Åª¤Ë ebappendix +¤¬À¸À®¤·¤Þ¤¹¡£ +

+ +

+¼Â¹Ô¤¹¤ë¤È¡¢ebappendix ¤Ï½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Î²¼¤Ë¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê +¤òºî¤ê¡¢¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ + +

appendix ¤È CD-ROM ½ñÀҤνŤ͹ç¤ï¤»

+ +

+HDD ¾å¤Ë¥³¥Ô¡¼¤·¤¿ CD-ROM ½ñÀÒ¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¢appendix ¤ò½Å¤Í¤Æ +ÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤³¤ì¤Ë¤Ï¡¢ebappendix ¤Î --output-directory ¤È +--no-catalog ¥ª¥×¥·¥ç¥ó¤ò»È¤¤¤Þ¤¹¡£ +--output-directory ¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢CD-ROM ½ñÀҤΠ+¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +
+
+% ebappendix --no-catalog --output-directory ½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹ \
+  ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹
+
+
+ +

+¤Ê¤ª¡¢appendix ¤Î·Á¼° (ÅŻҥ֥寤« EPWING ¤«) ¤Ï CD-ROM ½ñÀҤ˹ç¤ï¤»¤ë +¤è¤¦¤Ë¤·¤Þ¤¹ +(¾Ü¤·¤¯¤Ï +¡Öcatalog(s).app ¤Î½ñ¤­Êý¡× +¤ò»²¾È)¡£ +

+ +

+ebappendix ¤Î¼Â¹ÔÁ°¸å¤Ç CD-ROM ½ñÀҤΥǥ£¥ì¥¯¥È¥ê¹½À®¤¬ +¤É¤Î¤è¤¦¤ËÊѲ½¤¹¤ë¤Î¤«¡¢Îã¤òµ­¤·¤Æ¤ß¤Þ¤¹¡£ +¤Þ¤ºÅŻҥ֥寤ξì¹ç¤Ç¤¹¤¬¡¢¼Â¹ÔÁ°¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¼¡¤Î¤è¤¦¤Ë +¤Ê¤Ã¤Æ¤¤¤¿¤È¤·¤Þ¤¹¡£ +

+ +
+
+catalog
+ejdict/start
+howto/start
+
+
+ +

+ebappendix ¤Ç appendix ¤ò½Å¤Í¹ç¤ï¤»¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ê¹½À®¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+catalog
+ejdict/start
+ejdict/appendix  ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+howto/start
+howto/appendix   ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+
+
+ +

+ƱÍͤˡ¢EPWING ¤Ç¼Â¹ÔÁ°¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤È +¤¹¤ë¤È¡¢ +

+ +
+
+catalogs
+ejdict/data/honmon
+howto/data/honmon
+
+
+ +

+¼Â¹Ô¸å¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¹½À®¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+catalogs
+ejdict/data/honmon
+ejdict/data/furoku  ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+howto/data/honmon
+howto/data/furoku   ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+
+
+ +

+CD-ROM ½ñÀҤˤè¤Ã¤Æ¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê̾¤ËÂçʸ»ú¤¬º®¤¸¤Ã¤Æ¤¤¤ë¤³¤È¤¬ +¤¢¤ê¤Þ¤¹¤¬¡¢ebappendix ¤Ï¤½¤ì¤ò¸¡½Ð¤·¤Þ¤¹¤Î¤Ç¡¢Ì¾Á°¤ò¾®Ê¸»ú¤Ë +ÊѤ¨¤¿¥Ç¥£¥ì¥¯¥È¥ê¤òÊÌÅÓºî¤Ã¤Æ¤·¤Þ¤¦¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+--no-catalog ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebappendix ¤Ï +¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë catalog ¤ä catalogs ¥Õ¥¡¥¤¥ë¤ò +À¸À®¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î appendix ¤ò EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤«¤é»È¤¦ºÝ¤Ï¡¢ +CD-ROM ½ñÀҤ˺ǽ餫¤éÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë catalog ¤ä +catalogs ¥Õ¥¡¥¤¥ë¤ò CD-ROM ½ñÀÒ¡¢appendix ¶¦ÍѤΠ+¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤È¤·¤ÆήÍѤ¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ï¡¢CD-ROM ½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÎÉôʬ½¸¹ç +¤È¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢¤³¤¦¤·¤¿»ö¤¬²Äǽ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +--no-catalog ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ˺¤ì¤ë¤È¡¢ +ebappendix ¤Ï CD-ROM ½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­ +¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ebappendix ¤Î¥ª¥×¥·¥ç¥ó

+ +

+ebappendix ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤ +Ť¤¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ +¤¹¡£ +

+ +
+
-b ½ñÀҤηÁ¼°
+
--booktype ½ñÀҤηÁ¼°
+
+appendix ¤òÅŻҥ֥寡¢EPWING ¤Î¤É¤Á¤é¤Î·Á¼°¤Î¥ì¥¤¥¢¥¦¥È¤Ë»÷¤»¤Æºî¤ë +¤Î¤«¤ò»ØÄꤷ¤Þ¤¹¡£ +ÅŻҥ֥寷Á¼°¤Ê¤é eb¡¢EPWING ·Á¼°¤Ê¤é epwing +¤È»ØÄꤷ¤Þ¤¹¡£ + +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¼¡¤ÎÍ×ÎΤǤɤÁ¤é¤Î·Á¼°¤ÇÀ¸À®¤¹¤ë +¤Î¤«¤¬¤¬·èÄꤵ¤ì¤Þ¤¹¡£ +¤Þ¤º¡¢ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Ë catalog.app ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ì¤Ð +¤½¤ì¤¬Æɤ߹þ¤Þ¤ì¡¢ÅŻҥ֥寷Á¼°¤Î appendix ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ +catalog.app ¤¬¤Ê¤¯¡¢Âå¤ï¤ê¤Ë catalogs.app ¤¬ +¸ºß¤¹¤ì¤Ð¤½¤ì¤¬Æɤ߹þ¤Þ¤ì¡¢EPWING ·Á¼°¤Î appendix ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ +(catalogs.app ¤â catalog.app ¤Ê¤±¤ì¤Ð¡¢¥¨¥é¡¼ +¤Ë¤Ê¤ê¤Þ¤¹¡£) + +
-d
+
--debug
+
--verbose
+
+¥Ç¥Ð¥Ã¥°ÍѤΥá¥Ã¥»¡¼¥¸¤ò¡¢É¸½à¥¨¥é¡¼½ÐÎϤ˽ÐÎϤ·¤Þ¤¹¡£ + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-n
+
--no-catalog
+
+¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë (catalog ¤ª¤è¤Ó catalogs) ¤ò +À¸À®¤·¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢½ñÀÒ¤È appendix ¤òƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë½Å¤Í¹ç¤ï¤»¤ëºÝ¤Ë +Í­¸ú¤Ç¤¹ +(¾Ü¤·¤¯¤Ï +¡Öappendix ¤È CD-ROM ½ñÀҤνŤ͹ç¤ï¤»¡× +¤ò»²¾È¤Î¤³¤È)¡£ + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+½ÐÎÏÀè¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¾Êά¤¹¤ë¤È¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤Ë +½ÐÎϤ·¤Þ¤¹¡£ +¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¡¢¼«Æ°Åª¤ËÀ¸À®¤µ¤ì¤Þ¤¹¡£ + +
-t
+
--test
+
+¥Õ¥¡¥¤¥ë¤ò½ÐÎϤ·¤Þ¤»¤ó¡£ +ÆþÎÏ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç¡¢ÆâÍƤΥÁ¥§¥Ã¥¯¤À¤±¤ò¹Ô¤¤¤Þ¤¹¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ +
+

+[Á°¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebappendix-cat.html b/lib/ebu/doc/ebappendix-cat.html new file mode 100644 index 0000000..e3e9188 --- /dev/null +++ b/lib/ebu/doc/ebappendix-cat.html @@ -0,0 +1,747 @@ + + + + + + +ebappendix ¥³¥Þ¥ó¥É + + + +

ebappendix ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 2003-2006 Motoyuki Kasahara +

+ + +

appendix (ÉÕÏ¿) ¤È¤Ï

+ +

+appendix (ÉÕÏ¿) ¤È¤Ï CD-ROM ½ñÀÒ¤ÎÊä½õ¥Ç¡¼¥¿¤Î¤³¤È¤Ç¤¹¡£ +appendix ¤Ï CD-ROM ½ñÀҤνÐÈǼҤ«¤éÄ󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Ë¸ÇÍ­¤Î¤â¤Î¤Ç¤¹¡£ +

+ +

+appendix ¤Ï°Ê²¼¤Î¥Ç¡¼¥¿¤ò CD-ROM ½ñÀÒ¤ËÂФ·¤ÆÄ󶡤·¤Þ¤¹¡£ +

+ +
+
ËÜʸ¤Î¶èÀڤꥳ¡¼¥É
+
+¤¢¤Ê¤¿¤¬ EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ CD-ROM ¼­½ñ¤ÎÃæ¤Î¤¢¤ëñ¸ì¤ò°ú¤¯ºÝ¡¢¤½¤Î +ñ¸ì¤ÎÀâÌÀ¤¬½ªÎ»¤¹¤ë²Õ½ê¤Ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬ËÜʸ¤Î½ÐÎϤò»ß¤á¤ë¤³¤È¤ò +¤¢¤Ê¤¿¤Ï´üÂÔ¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£ +¤·¤«¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¤½¤Î¤è¤¦¤ÊÆ°ºî¤òÊݾڤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ +¤Ê¤¼¤Ê¤é¡¢CD-ROM ½ñÀÒ¤ÎËÜʸ¤Ë¤Ï¡¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤¬Â¸ºß¤·¤Ê¤¤¤«¤é +¤Ç¤¹¡£ + +¹¬¤¤¤Ë¤â¡¢Â¿¤¯¤Î CD-ROM ½ñÀҤˤϡ¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤ÎÂåÂؤȤ·¤Æ +»È¤¨¤ë¡¢¶èÀڤꥳ¡¼¥É (stop code) ¤È¤¤¤¦¤â¤Î¤ò»ý¤Ã¤Æ +¤¤¤Þ¤¹¡£ +Ä̾EB ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¶èÀڤꥳ¡¼¥É¤ò¼«Æ°Åª¤Ë¿ä¬¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ +¤¤¤ë¤Î¤Ç¤¹¤¬¡¢»þ¡¹¸í¤Ã¤¿¶èÀڤꥳ¡¼¥É¤òƳ¤­½Ð¤¹¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +appendix ¤Î¶èÀڤꥳ¡¼¥É¤Ï¡¢¤½¤Î½ñÀÒ¤ÎÀµ¤·¤¤¶èÀڤꥳ¡¼¥É¤ò EB ¥é¥¤¥Ö¥é¥ê +¤Ë¶µ¤¨¤Æ¤ä¤ë¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ + +
³°»ú¤ÎÂåÂØʸ»úÎó
+
+¿¤¯¤Î CD-ROM ½ñÀҤϡ¢³°»ú (Æȼ«¤ËÄêµÁ¤·¤¿Ê¸»ú) ¤ò»ý¤Ã¤Æ¤ª¤ê¡¢ËÜʸÃæ¤Ç +¤½¤Î³°»ú¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ +CD-ROM ½ñÀҤǤϳ°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤ª¤ê¡¢ +¥¯¥é¥¤¥¢¥ó¥È¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬³°»ú¤ò½ÐÎϤ¹¤ë¤Ë¤Ï¡¢¤½¤Î¥Õ¥©¥ó¥È¤òÉÁ²è +¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ + +appendix ¤Ç¤Ï¡¢³°»ú¤Î ÂåÂØʸ»úÎó (alternation text) +¤òÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×¥Õ¥©¥ó¥È¤òÉÁ²è¤¹¤ëÂå¤ï¤ê¤Ë¡¢¤½¤Î +ÂåÂØʸ»úÎó¤ò½ÐÎϤ¹¤ë¤³¤È¤Ë¤·¤Æ¤âÎɤ¤¤Ç¤·¤ç¤¦¡£ +
+ +

+appendix ¤Î¥ì¥¤¥¢¥¦¥È¤Ï CD-ROM ½ñÀҤΤâ¤Î¤È¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï catalog ¤â¤·¤¯¤Ï catalogs +¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¡¢³ÆÉûËܤΥǡ¼¥¿¤ÏÂбþ¤¹¤ë¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÇÛÃÖ¤µ¤ì¤Æ +¤¤¤Þ¤¹¡£ +

+ + +

ebappendix ¥³¥Þ¥ó¥É¤È¤Ï

+ +

+appendix ¤Ï¥Ð¥¤¥Ê¥ê·Á¼°¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Ç¹½À®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¼ê¤ÇľÀÜ +ÊÔ½¸¤¹¤ë¤Î¤ÏÍưפǤϤ¢¤ê¤Þ¤»¤ó¡£ +¤½¤³¤Ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï ebappendix ¥³¥Þ¥ó¥É¤òÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£ +ebappendix ¥³¥Þ¥ó¥É¤Ï¡¢¥Æ¥­¥¹¥È·Á¼°¤Ç½ñ¤«¤ì¤¿¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¡¢ +¥Ð¥¤¥Ê¥ê·Á¼°¤Î appendix ¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î¸ø¼°¤Ê FTP ¥µ¥¤¥È +ftp://ftp.sra.co.jp/pub/misc/eb/appendix/ +¤Ë¤Ï¡¢´û¤Ë¤¤¤¯¤Ä¤«¤Î½ñÀÒÍѤΠappendix ¤¬ÃÖ¤¤¤Æ¤¢¤ê¤Þ¤¹¡£ +¤³¤³¤ËºÜ¤Ã¤Æ¤¤¤Ê¤¤ CD-ROM ½ñÀÒÍѤΠappendix ¤òÍÑ°Õ¤·¤¿¤¤¾ì¹ç¤Ï¡¢ +ebappendix ¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤·¤ç¤¦¡£ +

+ + +

appendix ¤Î¥½¡¼¥¹¥Ç¡¼¥¿¤Î½ñ¤­Êý

+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢appendix ¤Î¥½¡¼¥¹¥Ç¡¼¥¿¤Î½ñ¤­Êý¤òÀâÌÀ¤·¤Þ¤¹¡£ +¤³¤³¤Ç¡¢¡Ö¥½¡¼¥¹¥Ç¡¼¥¿¡×¤È¸À¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ebappendix ¤¬Æɤ߹þ¤à +¥Æ¥­¥¹¥È·Á¼°¤Ç½ñ¤«¤ì¤¿¥Ç¡¼¥¿¤Î¤³¤È¤Ç¤¹¡£ +

+ +

+appendix ¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¼¡¤Ëµó¤²¤ë¥½¡¼¥¹¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤¬É¬ÍפǤ¹¡£ +¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò¤¹¤Ù¤Æ¡¢Æ±¤¸¥Ç¥£¥ì¥¯¥È¥ê¾å¤ËÍÑ°Õ¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
catalog.app ¤Þ¤¿¤Ï catalogs.app
+
+appendix ¤Ë¤Ïɬ¤º¡¢catalog ¤Þ¤¿¤Ï catalogs ¤È¤¤¤¦ +̾Á°¤Î¥Õ¥¡¥¤¥ë¤¬É¬ÍפǤ¹¡£ +catalog.app, catalogs.app ¤Ï¤½¤ÎÀ¸À®¸µ¤È¤Ê¤ë +¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ +appendix ¤Ë¼ýÏ¿¤µ¤ì¤Æ¤¤¤ë ÉûËÜ (subbook) +(¾Ü¤·¤¯¤Ï +¡Öcatalog(s).app ¤Î½ñ¤­Êý¡× +¤ò»²¾È) ¤Î°ìÍ÷¤òµ­¤·¤Þ¤¹¡£ + +
ÉûËÜ.app
+
+appendix ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤ½¤ì¤¾¤ì¤ËÂФ·¤Æ¡¢°ì¤Ä¤º¤ÄÍÑ°Õ¤¹¤ëɬÍפ¬ +¤¢¤ê¤Þ¤¹ (ÉûËÜ ¤ÎÉôʬ¤Ï¡¢¼ÂºÝ¤Ï¸Ä¡¹¤ÎÉûËܤÎ̾Á°¤Ë¤Ê¤ê¤Þ¤¹)¡£ +appendix ¤Î¥á¥¤¥ó¥Ç¡¼¥¿¤Ç¤¢¤ë¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ä³°»ú¤ÎÂåÂØʸ»úÎó¤Ï¡¢ +¤³¤Î¥Õ¥¡¥¤¥ë¤Ëµ­¤·¤Þ¤¹¡£ +
+ + + +

catalog(s).app ¤È¤Ï

+ +

+CD-ROM ½ñÀÒ¤ÈƱÍͤˡ¢appendix ¥Ñ¥Ã¥±¡¼¥¸¤Ë¤âɬ¤º catalog +¤â¤·¤¯¤Ï catalogs ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Î¤É¤Á¤é¤«°ìÊý¤¬ +ɬÍפǤ¹¡£ +catalog.app, catalogs.app ¥Õ¥¡¥¤¥ë¤Ï¡¢¤½¤Î +À¸À®¸µ¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebappendix ¥³¥Þ¥ó¥É¤Ë appendix ¤òÀ¸À®¤µ¤»¤ëºÝ¤Ë¤Ï¡¢ +catalog.app ¤« catalogs.app ¤Î¤É¤Á¤é¤«¤òɬ¤º +ÍÑ°Õ¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+ebappendix ¤Îɸ½à¤ÎÆ°ºî¤Ç¤Ï¡¢catalog.app ¤È¤¤¤¦ +¥Õ¥¡¥¤¥ë̾¤Ë¤·¤Æ¤ª¤¯¤È¡¢À¸À®¤¹¤ë¥Õ¥¡¥¤¥ë̾¤â catalog ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢appendix Á´ÂΤΥǥ£¥ì¥¯¥È¥ê¹½Â¤¤¬¡¢ÅŻҥ֥寤˻÷¤¿·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+È¿ÂФˡ¢catalogs.app ¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤Ë¤·¤Æ¤ª¤¯¤È¡¢À¸À®¤¹¤ë +¥Õ¥¡¥¤¥ë̾¤â catalogs ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢appendix Á´ÂΤΥǥ£¥ì¥¯¥È¥ê¹½Â¤¤¬¡¢EPWING ¤Ë»÷¤¿·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢EPWING ¤Î½ñÀÒ¤ËÂФ·¤ÆÅŻҥ֥寷Á¼°¤Î appendix ¤ò»ÈÍѤ·¤Æ¤â¡¢ +Æ°ºî¤½¤Î¤â¤Î¤Ë¤Ï»Ù¾ã¤¬¤¢¤ê¤Þ¤»¤ó¡£ +µÕ¤âƱÍͤǤ¹¡£ +

+ + +

catalog(s).app ¤Î½ñ¤­Êý

+ +

+catalog(s).app ¤Ë¤Ï¡¢½ñÀҤ˼ýÏ¿¤µ¤ì¤Æ¤¤¤ëÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò +1 ¹Ô¤Ë 1 ¤Ä¤º¤Ä½ñ¤­Ê¤٤ޤ¹¡£ +ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤Ï¡¢ebinfo ¥³¥Þ¥ó¥É¤ò»È¤¦¤ÈÍưפËʬ¤«¤ê¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢ebinfo ¤Î¼Â¹ÔÎã¤Ç¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ  1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: ejdict
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ  2:
+  Âê̾: ¤³¤Î½ñÀҤλȤ¤Êý
+  ¥Ç¥£¥ì¥¯¥È¥ê: howto
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+¤³¤Î¼­½ñÍѤΠappendix ¤òºîÀ®¤¹¤ë¾ì¹ç¡¢catalog(s).app ¤Ë¤Ï¼¡¤Î +¤è¤¦¤Ëµ­¤·¤Þ¤¹¡£ +

+ +
+
+ejdict
+howto
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¢¾®Ê¸»ú¤Ï¡¢Æ±¤¸¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ +¤Þ¤¿¡¢¶õ¹Ô¤ª¤è¤Ó¤ª¤è¤Ó¶õÇò°Ê³°¤ÎºÇ½é¤Îʸ»ú¤¬¥Ï¥Ã¥·¥åµ­¹æ (#) +¤Ç¤¢¤ë¹Ô¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +

+ +

+ɬ¤º¤â¤È¤Î½ñÀÒ¤ÎÉûËܤ¹¤Ù¤Æ¤ò¡¢Æ±¤¸½ç½ø¤Ç catalog(s).app ¤Ë +µ­¤¹¤è¤¦¤Ë¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ÉûËÜ.app ¤È¤Ï

+ +

+appendix ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤ½¤ì¤¾¤ì¤ËÂФ·¤Æ¡¢¥½¡¼¥¹¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë +ÉûËÜ.app ¤òÍÑ°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +ÉûËÜ ¤ÎÉôʬ¤Ï¡¢¼ÂºÝ¤Ë¤Ï¸Ä¡¹¤ÎÉûËܤλÈÍѤ¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê̾¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢Á°Àá¤ÎÎã¤Ç¤Ï¡¢½ñÀÒ¤¬ ejdict ¤È howto +¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê̾¤ò»ý¤Ã¤¿ÉûËܤò»ý¤Ã¤Æ¤¤¤Þ¤·¤¿¡£ +¤³¤Î¾ì¹ç¡¢ÍÑ°Õ¤¹¤ë¥Õ¥¡¥¤¥ë¤Ï ejdict.app ¤È howto.app +¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ÉûËÜ.app ¥Õ¥¡¥¤¥ë¤Ï appendix ¤Î¥á¥¤¥ó¥Ç¡¼¥¿¤Ç¤¢¤ë¡¢ +ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ä³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼ýÏ¿¤·¤¿ appendix ¤ä +furoku ¤È¤¤¤Ã¤¿¥Õ¥¡¥¤¥ë¤ÎÀ¸À®¸µ¤Ë¤Ê¤ê¤Þ¤¹¡£ +(appendix ¤òÅŻҥ֥寷Á¼°¤ÇÀ¸À®¤¹¤ë¤È appendix¡¢EPWING ·Á¼° +¤ÇÀ¸À®¤¹¤ë¤È furoku ¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤Ë¤Ê¤ê¤Þ¤¹¡£) +

+ + +

ÉûËÜ.app ¤Îʸˡ

+ +

+³ÆÉûËܤΥ½¡¼¥¹¥Ç¡¼¥¿¤òµ­¤·¤¿¥Õ¥¡¥¤¥ë¡ÖÉûËÜ.app¡× +¤ÎÃæ¤Ç¤Ï¡¢¶õ¹Ô¡¢¤ª¤è¤Ó¶õÇò°Ê³°¤ÎºÇ½é¤Îʸ»ú¤¬¥Ï¥Ã¥·¥åµ­¹æ (#) +¤Ç¤¢¤ë¹Ô¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +

+ +

+¾¤Î¹Ô¤Ï¤¹¤Ù¤Æ¡¢Ã±ÆȻؼ¨»Ò (single directive) ¤« +Ê£¹ç»Ø¼¨»Ò (group directive) ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ñÆȻؼ¨»Ò¤ÈÊ£¹ç»Ø¼¨»Ò¤Ï¡¢¤É¤Î¤è¤¦¤Ê½ç½ø¤ÇÄêµÁ¤·¤Æ¤âº¹¤·»Ù¤¨¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+ñÆȻؼ¨»Ò¤È¤Ï¡¢1 ¹Ô¤Ç´°·ë¤¹¤ë»Ø¼¨»Ò¤Ç¤¹¡£ +ñÆȻؼ¨»Ò¤Î°ìÈÌ·Á¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+»Ø¼¨»Ò¤Î̾Á°    »Ø¼¨»Ò¤ÎÃÍ
+
+
+ +

+°Ê²¼¤ÎÎã¤Ç¤Ï¡¢stop-code ¤¬»Ø¼¨»Ò¤Î̾Á°¡¢ +0x1f09 0x0001 ¤¬¤½¤ÎÃͤǤ¹¡£ +

+ +
+
+stop-code          0x1f09 0x0001
+
+
+ +

+»Ø¼¨»Ò̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤¹¤Î¤Ç¡¢stop-code ¤ò +Stop-Code ¤È½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +»Ø¼¨»Ò¤Î̾Á°¤ÈÃͤζèÀÚ¤ê¤Ë¤Ï¡¢¶õÇò¤«¥¿¥Ö¤òÍѤ¤¤Þ¤¹¡£ +Ϣ³¤·¤¿¶õÇò¤È¥¿¥Ö¤¬¡¢¹ÔƬ¤ª¤è¤Ó¹ÔËö¤Ë¤¢¤Ã¤¿¾ì¹ç¡¢¤½¤ì¤é¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +

+ +

+Ê£¹ç»Ø¼¨»Ò¤È¤Ï¡¢µ­½Ò¤¬ÀßÄê¥Õ¥¡¥¤¥ëÆâ¤ÎÊ£¿ô¹Ô¤ËÅϤë»Ø¼¨»Ò¤Ç¤¹¡£ +Ê£¹ç»Ø¼¨»Ò¤Î°ìÈÌ·Á¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+begin Ê£¹ç»Ø¼¨»Ò¤Î̾Á°
+    Éû»Ø¼¨»Ò¤Î̾Á°    Éû»Ø¼¨»Ò¤ÎÃÍ
+             : 
+             : (·«¤êÊÖ¤·)
+             : 
+end
+
+
+ +

+¥­¡¼¥ï¡¼¥É begin ¤¬¡¢Ê£¹ç»Ø¼¨»Ò¤Î³«»Ï¤òɽ¤·¤Þ¤¹¡£ +begin ¤Ï¸å¤í¤Ë Ê£¹ç»Ø¼¨»Ò¤Î̾Á° ¤ò°ú¿ô¤È¤·¤Æ +¼è¤ê¤Þ¤¹¡£ +begin ¤È Ê£¹ç»Ø¼¨»Ò¤Î̾Á° ¤Ï¶õÇò¤«¥¿¥Ö¤Ç¶èÀڤꡢ +ξÊý¤È¤âƱ¤¸¹Ô¤ÎÃæ¤ËÃÖ¤­¤Þ¤¹¡£ +¥­¡¼¥ï¡¼¥É end ¤Ï¡¢Ê£¹ç»Ø¼¨»Ò¤Î½ªÎ»¤òɽ¤·¤Þ¤¹¡£ +end ¤Ï¡¢Ã±ÆÈ¤Ç 1 ¹Ô¤Ë¤·¤ÆÃÖ¤­¤Þ¤¹¡£ +

+ +

+º£¤Î¤È¤³¤í ÉûËÜ.app ¤Ç»ÈÍѤǤ­¤ëÊ£¹ç»Ø¼¨»Ò¤Î̾Á°¤Ï¡¢ +narrow ¤È wide ¤Î 2 ¤Ä¤À¤±¤Ç¤¹¡£ +¤½¤ì¤¾¤ì¤Î Éû»Ø¼¨»Ò ¤Ï¡¢begin ¤È end +¤Î¹Ô¤Î´Ö¤ËÃÖ¤­¤Þ¤¹¡£ +Éû»Ø¼¨»Ò¤Ë´Ø¤¹¤ëµ­½Ò¤Î°ìÈÌŪ¤Êµ¬Â§¤Ï¡¢Ã±ÆȻؼ¨»Ò¤ÈÊѤï¤ê¤Þ¤»¤ó +(¤¿¤È¤¨¤Ð¡¢Éû»Ø¼¨»Ò¤Î̾Á°¤È Éû»Ø¼¨»Ò¤ÎÃÍ ¤Ï¶õÇò¤« +¥¿¥Ö¤Ç¶èÀڤ뤳¤È¤Ê¤É)¡£ +

+ +

+°Ê²¼¤Ï¡¢ narrow Ê£¹ç»Ø¼¨»Ò¤Îµ­½ÒÎã¤Ç¤¹¡£ +

+ +
+
+begin narrow
+    range-start     0xa121
+    range-end       0xa123
+    0xa121          [¢ª»²¾È]
+    0xa122          [¢ª²»À¼]
+    0xa123          [¢ª¿Þ²ò]
+end
+
+
+ + +

ÉûËÜ.app ¤ÎñÆȻؼ¨»Ò

+ +

+ñÆȻؼ¨»Ò¤Ë¤Ï¼¡¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
character-code
+
+appendix ¤Îʸ»ú¥³¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£ +ʸ»ú¥³¡¼¥É¤Ïɬ¤º¡¢CD-ROM ½ñÀҤ˹ç¤ï¤»¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤Ï¡¢ebinfo ¥³¥Þ¥ó¥É¤Î½ÐÎϤò¸«¤ì¤Ð³Îǧ +¤Ç¤­¤Þ¤¹¡£ + +CD-ROM ½ñÀÒ¤¬ ISO 8859-1 ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»Ø¼¨»Ò¤ÎÃͤȤ·¤Æ +ISO8859-1 ¤ò»ØÄꤷ¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢JISX0208 ¤ò»ØÄꤷ¤Æ²¼¤µ¤¤¡£ + +
+
+character-code          JISX0208
+
+
+ +¤³¤Î»Ø¼¨»Ò¤Ï¡¢ÉûËÜ.app ¥Õ¥¡¥¤¥ëÆâ¤Çɬ¤º°ì²óÄêµÁ +¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÄêµÁ¤·¤Ê¤«¤Ã¤¿¤ê¡¢ÆóÅٰʾåÄêµÁ¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
stop-code
+
+ÉûËܤÎËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£ +»Ø¼¨»Ò¤ÎÃͤϡ¢¶èÀڤꥳ¡¼¥É¤Îʸ»úÈÖ¹æ¤ò 2 ¤Ä½ñ¤­Ê¤٤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
+
+stop-code          0x1f09 0x0001
+
+
+ +ʸ»úÈÖ¹æ¤Ï¡¢0x ¤Ê¤¤¤· 0X ¤Ë³¤±¤Æ 16¿Ê¿ô 4 ·å +¤Çµ­¤·¤Þ¤¹¡£ +¤¿¤À¤·¡¢1¤ÄÌܤÎʸ»úÈÖ¹æ¤Ï¡¢0x1f09 ¤« 0x1f41 ¤Ç +¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤À¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + +ebstopcode ¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢ÉûËܤËŬÀڤʶèÀڤꥳ¡¼¥É¤ò +ÆÃÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ (¾Ü¤·¤¯¤Ï +ebstopcode ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î +¤³¤È)¡£ + +¤³¤Î»Ø¼¨»Ò¤ÏÄêµÁ¤·¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢ÆóÅٰʾåÄêµÁ¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +
+ + +

ÉûËÜ.app ¤ÎÊ£¹ç»Ø¼¨»Ò

+ +

+narrow ¤ª¤è¤Ó wide Ê£¹ç»Ø¼¨»Ò¤Ï¡¢¤½¤ì¤¾¤ìÉûËÜ¤Ë +ÂФ¹¤ëȾ³Ñ³°»ú¤ª¤è¤ÓÁ´³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤¹¤ë¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢ÉûËܤ¬³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Æ¤â¡¢ÂåÂØʸ»úÎó¤òÍøÍѤ¹¤ëɬÍפ¬¤Ê¤±¤ì¤Ð¡¢ +narrow, wide Ê£¹ç»Ø¼¨»Ò¤òµ­½Ò¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+narrow ¤È wide Ê£¹ç»Ø¼¨»ÒÆâ¤ÇÄêµÁ¤Ç¤­¤ëÉû»Ø¼¨»Ò¤Ï¡¢ +¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£ +Éû»Ø¼¨»Ò¤Ë¤Ï¼¡¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
range-start
+
+³°»ú¤ÎÄêµÁÈϰϤòµ­¤·¤Þ¤¹¡£ +³«»Ï°ÌÃÖ¤Îʸ»úÈÖ¹æ¤ò range-start ¤Ç¡¢½ªÎ»°ÌÃÖ¤Îʸ»úÈÖ¹æ¤ò +range-end ¤Ç»ØÄꤷ¤Þ¤¹¡£ +ʸ»úÈÖ¹æ¤Ï¡¢0x ¤Ê¤¤¤· 0X ¤Ë³¤±¤Æ 16¿Ê¿ô 4 ·å¤Ç +µ­¤·¤Þ¤¹¡£ +°Ê²¼¤Ïµ­½ÒÎã¤Ç¤¹¡£ + +
+
+    range-start     0xa121
+    range-end       0xa123
+
+
+ +ÄêµÁÈϰϤϡ¢ebinfo ¥³¥Þ¥ó¥É¤Î½ÐÎÏ·ë²Ì¤Î +¡ÖȾ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú (narrow font characters)¡× +¡ÖÁ´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú (wide font characters)¡× +¤Çµ­¤µ¤ì¤¿ÈϰϤȰìÃפµ¤»¤ë¤è¤¦¤Ë¤·¤Æ²¼¤µ¤¤¡£ + +narrow ¤ª¤è¤Ó wide Ê£¹ç»Ø¼¨»ÒÆâ¤Ç¤Ï¡¢ +ɬ¤º°ì²ó¤º¤Ä range-start ¤ª¤è¤Ó range-end ¤ò +ÄêµÁ¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÄêµÁ¤·¤Ê¤«¤Ã¤¿¤ê¡¢ÆóÅٰʾåÄêµÁ¤·¤¿¤ê¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
0xhhhh
+
+hhhh ¤Ï¡¢4 ·å ¤Î 16¿Ê¿ô¤Ç¤¹¡£ +ʸ»úÈÖ¹æ 0xhhhh ¤ÎÁ´³Ñ³°»ú¤Ê¤¤¤·È¾³Ñ³°»ú¤ËÂФ·¤Æ¡¢ +ÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Þ¤¹¡£ + +
+
+    0xa121          [̾]
+
+
+ +appendix ¤¬ ISO 8859-1 ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ÂåÂØʸ»úÎó¤â ISO 8859-1 +¤ÇÄêµÁ¤·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢ÂåÂØʸ»úÎó¤òÆüËܸì EUC ¤ÇÄêµÁ¤·¤Þ¤¹¡£ +¤¤¤º¤ì¤â¡¢ÂåÂØʸ»úÎó¤ÏºÇĹ¤Ç 31 ¥Ð¥¤¥È¤Þ¤Ç¤Ç¡¢¤½¤ì¤òĶ¤¨¤ë¤È¥¨¥é¡¼¤Ë +¤Ê¤ê¤Þ¤¹¡£ + +range-start, range-end ¤Ç»ØÄꤷ¤¿ÄêµÁÈÏ°ÏÆâ¤Î +³°»ú¤¹¤Ù¤Æ¤Ë¤Ä¤¤¤Æ¡¢ÂåÂØʸ»úÎó¤òÀßÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢Æ±°ì¤ÎÊ£¹ç»Ø¼¨»ÒÆâ¤Ç¡¢°ì¤Ä¤Îʸ»úÈÖ¹æ¤Î³°»ú¤ËÂФ·¤ÆÂåÂØʸ»úÎó¤ò +ÄêµÁ¤Ç¤­¤ë¤Î¤Ï°ì²ó¤Þ¤Ç¤Ç¤¹¡£ +Ê£¿ô²óÀßÄꤷ¤è¤¦¤È¤¹¤ë¤È¡¢¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢Èϰϳ°¤Îʸ»úÈÖ¹æ¤ÎÂåÂØʸ»úÎó¤òÄêµÁ¤·¤è¤¦¤È¤·¤Æ¤â¡¢¤ä¤Ï¤ê¥¨¥é¡¼¤Ë +¤Ê¤ê¤Þ¤¹¡£ + +CD-ROM ½ñÀÒ¤¬¤É¤Î¤è¤¦¤Ê³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤Î¤«¤Ï¡¢ebfont ¥³¥Þ¥ó¥É +¤ÇÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ (¾Ü¤·¤¯¤Ï +ebfont ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È)¡£ +
+ + +

appendix ¤ÎÀ¸À®

+ +

+appendix ¤Î¥½¡¼¥¹¥Ç¡¼¥¿¤¬½ñ¤±¤¿¤é¡¢ebappendix ¥³¥Þ¥ó¥É¤òÍѤ¤¤Æ +¼ÂºÝ¤Î (¥Ð¥¤¥Ê¥ê·Á¼°¤Î) appendix ¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +

+°Ê²¼¡¢¤³¤Î¾Ï¤Ç¤Ï ebappendix ¤Î¼Â¹ÔÊýË¡¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯ÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

ebappendix ¤Î¼Â¹Ô

+ +

+ebappendix ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebappendix ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹
+
+
+ +

+ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹ ¤Ë¤Ï¡¢Æɤ߹þ¤à appendix ¥½¡¼¥¹¥Ç¡¼¥¿¤Î +¥Ç¥£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê catalog.app ¤Þ¤¿¤Ï catalogs.app +¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¾Êά¤·¤¿¾ì¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤¿¤È¤ß¤Ê¤µ¤ì¤Þ¤¹¡£ +

+ +

+ɸ½à¤Ç¤Ï¡¢½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£ +

+ +

+--output-directory ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢ +ebappendix ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤Î¾ì½ê¤Ë½ÐÎϤ¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebappendix --output-directory ½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹ \
+  ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹
+
+
+ +

+¤â¤·½ÐÎϥǥ£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¼«Æ°Åª¤Ë ebappendix +¤¬À¸À®¤·¤Þ¤¹¡£ +

+ +

+¼Â¹Ô¤¹¤ë¤È¡¢ebappendix ¤Ï½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Î²¼¤Ë¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê +¤òºî¤ê¡¢¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ + +

appendix ¤È CD-ROM ½ñÀҤνŤ͹ç¤ï¤»

+ +

+HDD ¾å¤Ë¥³¥Ô¡¼¤·¤¿ CD-ROM ½ñÀÒ¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¢appendix ¤ò½Å¤Í¤Æ +ÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤³¤ì¤Ë¤Ï¡¢ebappendix ¤Î --output-directory ¤È +--no-catalog ¥ª¥×¥·¥ç¥ó¤ò»È¤¤¤Þ¤¹¡£ +--output-directory ¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢CD-ROM ½ñÀҤΠ+¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +
+
+% ebappendix --no-catalog --output-directory ½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹ \
+  ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹
+
+
+ +

+¤Ê¤ª¡¢appendix ¤Î·Á¼° (ÅŻҥ֥寤« EPWING ¤«) ¤Ï CD-ROM ½ñÀҤ˹ç¤ï¤»¤ë +¤è¤¦¤Ë¤·¤Þ¤¹ +(¾Ü¤·¤¯¤Ï +¡Öcatalog(s).app ¤Î½ñ¤­Êý¡× +¤ò»²¾È)¡£ +

+ +

+ebappendix ¤Î¼Â¹ÔÁ°¸å¤Ç CD-ROM ½ñÀҤΥǥ£¥ì¥¯¥È¥ê¹½À®¤¬ +¤É¤Î¤è¤¦¤ËÊѲ½¤¹¤ë¤Î¤«¡¢Îã¤òµ­¤·¤Æ¤ß¤Þ¤¹¡£ +¤Þ¤ºÅŻҥ֥寤ξì¹ç¤Ç¤¹¤¬¡¢¼Â¹ÔÁ°¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¼¡¤Î¤è¤¦¤Ë +¤Ê¤Ã¤Æ¤¤¤¿¤È¤·¤Þ¤¹¡£ +

+ +
+
+catalog
+ejdict/start
+howto/start
+
+
+ +

+ebappendix ¤Ç appendix ¤ò½Å¤Í¹ç¤ï¤»¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ê¹½À®¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+catalog
+ejdict/start
+ejdict/appendix  ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+howto/start
+howto/appendix   ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+
+
+ +

+ƱÍͤˡ¢EPWING ¤Ç¼Â¹ÔÁ°¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤È +¤¹¤ë¤È¡¢ +

+ +
+
+catalogs
+ejdict/data/honmon
+howto/data/honmon
+
+
+ +

+¼Â¹Ô¸å¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¹½À®¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+catalogs
+ejdict/data/honmon
+ejdict/data/furoku  ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+howto/data/honmon
+howto/data/furoku   ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+
+
+ +

+CD-ROM ½ñÀҤˤè¤Ã¤Æ¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê̾¤ËÂçʸ»ú¤¬º®¤¸¤Ã¤Æ¤¤¤ë¤³¤È¤¬ +¤¢¤ê¤Þ¤¹¤¬¡¢ebappendix ¤Ï¤½¤ì¤ò¸¡½Ð¤·¤Þ¤¹¤Î¤Ç¡¢Ì¾Á°¤ò¾®Ê¸»ú¤Ë +ÊѤ¨¤¿¥Ç¥£¥ì¥¯¥È¥ê¤òÊÌÅÓºî¤Ã¤Æ¤·¤Þ¤¦¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+--no-catalog ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebappendix ¤Ï +¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë catalog ¤ä catalogs ¥Õ¥¡¥¤¥ë¤ò +À¸À®¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î appendix ¤ò EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤«¤é»È¤¦ºÝ¤Ï¡¢ +CD-ROM ½ñÀҤ˺ǽ餫¤éÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë catalog ¤ä +catalogs ¥Õ¥¡¥¤¥ë¤ò CD-ROM ½ñÀÒ¡¢appendix ¶¦ÍѤΠ+¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤È¤·¤ÆήÍѤ¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ï¡¢CD-ROM ½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÎÉôʬ½¸¹ç +¤È¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢¤³¤¦¤·¤¿»ö¤¬²Äǽ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +--no-catalog ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ˺¤ì¤ë¤È¡¢ +ebappendix ¤Ï CD-ROM ½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­ +¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ebappendix ¤Î¥ª¥×¥·¥ç¥ó

+ +

+ebappendix ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤ +Ť¤¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ +¤¹¡£ +

+ +
+
-b ½ñÀҤηÁ¼°
+
--booktype ½ñÀҤηÁ¼°
+
+appendix ¤òÅŻҥ֥寡¢EPWING ¤Î¤É¤Á¤é¤Î·Á¼°¤Î¥ì¥¤¥¢¥¦¥È¤Ë»÷¤»¤Æºî¤ë +¤Î¤«¤ò»ØÄꤷ¤Þ¤¹¡£ +ÅŻҥ֥寷Á¼°¤Ê¤é eb¡¢EPWING ·Á¼°¤Ê¤é epwing +¤È»ØÄꤷ¤Þ¤¹¡£ + +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¼¡¤ÎÍ×ÎΤǤɤÁ¤é¤Î·Á¼°¤ÇÀ¸À®¤¹¤ë +¤Î¤«¤¬¤¬·èÄꤵ¤ì¤Þ¤¹¡£ +¤Þ¤º¡¢ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Ë catalog.app ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ì¤Ð +¤½¤ì¤¬Æɤ߹þ¤Þ¤ì¡¢ÅŻҥ֥寷Á¼°¤Î appendix ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ +catalog.app ¤¬¤Ê¤¯¡¢Âå¤ï¤ê¤Ë catalogs.app ¤¬ +¸ºß¤¹¤ì¤Ð¤½¤ì¤¬Æɤ߹þ¤Þ¤ì¡¢EPWING ·Á¼°¤Î appendix ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ +(catalogs.app ¤â catalog.app ¤Ê¤±¤ì¤Ð¡¢¥¨¥é¡¼ +¤Ë¤Ê¤ê¤Þ¤¹¡£) + +
-d
+
--debug
+
--verbose
+
+¥Ç¥Ð¥Ã¥°ÍѤΥá¥Ã¥»¡¼¥¸¤ò¡¢É¸½à¥¨¥é¡¼½ÐÎϤ˽ÐÎϤ·¤Þ¤¹¡£ + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-n
+
--no-catalog
+
+¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë (catalog ¤ª¤è¤Ó catalogs) ¤ò +À¸À®¤·¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢½ñÀÒ¤È appendix ¤òƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë½Å¤Í¹ç¤ï¤»¤ëºÝ¤Ë +Í­¸ú¤Ç¤¹ +(¾Ü¤·¤¯¤Ï +¡Öappendix ¤È CD-ROM ½ñÀҤνŤ͹ç¤ï¤»¡× +¤ò»²¾È¤Î¤³¤È)¡£ + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+½ÐÎÏÀè¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¾Êά¤¹¤ë¤È¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤Ë +½ÐÎϤ·¤Þ¤¹¡£ +¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¡¢¼«Æ°Åª¤ËÀ¸À®¤µ¤ì¤Þ¤¹¡£ + +
-t
+
--test
+
+¥Õ¥¡¥¤¥ë¤ò½ÐÎϤ·¤Þ¤»¤ó¡£ +ÆþÎÏ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç¡¢ÆâÍƤΥÁ¥§¥Ã¥¯¤À¤±¤ò¹Ô¤¤¤Þ¤¹¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ + + diff --git a/lib/ebu/doc/ebappendix-toc.html b/lib/ebu/doc/ebappendix-toc.html new file mode 100644 index 0000000..e898871 --- /dev/null +++ b/lib/ebu/doc/ebappendix-toc.html @@ -0,0 +1,19 @@ + diff --git a/lib/ebu/doc/ebappendix.html b/lib/ebu/doc/ebappendix.html new file mode 100644 index 0000000..98177c7 --- /dev/null +++ b/lib/ebu/doc/ebappendix.html @@ -0,0 +1,56 @@ + + + + + + +ebappendix ¥³¥Þ¥ó¥É + + + +

+[¼¡¤Ø] [Ìܼ¡] +

+
+

ebappendix ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 2003-2006 Motoyuki Kasahara +

+ + +
+

+[¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebappendix.html.in b/lib/ebu/doc/ebappendix.html.in new file mode 100644 index 0000000..5e680c4 --- /dev/null +++ b/lib/ebu/doc/ebappendix.html.in @@ -0,0 +1,729 @@ + + + + + + +ebappendix ¥³¥Þ¥ó¥É + + + +

ebappendix ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó + +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 2003-2006 Motoyuki Kasahara +

+ + +

appendix (ÉÕÏ¿) ¤È¤Ï

+ +

+appendix (ÉÕÏ¿) ¤È¤Ï CD-ROM ½ñÀÒ¤ÎÊä½õ¥Ç¡¼¥¿¤Î¤³¤È¤Ç¤¹¡£ +appendix ¤Ï CD-ROM ½ñÀҤνÐÈǼҤ«¤éÄ󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ +EB ¥é¥¤¥Ö¥é¥ê¤Ë¸ÇÍ­¤Î¤â¤Î¤Ç¤¹¡£ +

+ +

+appendix ¤Ï°Ê²¼¤Î¥Ç¡¼¥¿¤ò CD-ROM ½ñÀÒ¤ËÂФ·¤ÆÄ󶡤·¤Þ¤¹¡£ +

+ +
+
ËÜʸ¤Î¶èÀڤꥳ¡¼¥É
+
+¤¢¤Ê¤¿¤¬ EB ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ CD-ROM ¼­½ñ¤ÎÃæ¤Î¤¢¤ëñ¸ì¤ò°ú¤¯ºÝ¡¢¤½¤Î +ñ¸ì¤ÎÀâÌÀ¤¬½ªÎ»¤¹¤ë²Õ½ê¤Ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤¬ËÜʸ¤Î½ÐÎϤò»ß¤á¤ë¤³¤È¤ò +¤¢¤Ê¤¿¤Ï´üÂÔ¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£ +¤·¤«¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¤½¤Î¤è¤¦¤ÊÆ°ºî¤òÊݾڤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ +¤Ê¤¼¤Ê¤é¡¢CD-ROM ½ñÀÒ¤ÎËÜʸ¤Ë¤Ï¡¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤¬Â¸ºß¤·¤Ê¤¤¤«¤é +¤Ç¤¹¡£ + +¹¬¤¤¤Ë¤â¡¢Â¿¤¯¤Î CD-ROM ½ñÀҤˤϡ¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤ÎÂåÂؤȤ·¤Æ +»È¤¨¤ë¡¢¶èÀڤꥳ¡¼¥É (stop code) ¤È¤¤¤¦¤â¤Î¤ò»ý¤Ã¤Æ +¤¤¤Þ¤¹¡£ +Ä̾EB ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¶èÀڤꥳ¡¼¥É¤ò¼«Æ°Åª¤Ë¿ä¬¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ +¤¤¤ë¤Î¤Ç¤¹¤¬¡¢»þ¡¹¸í¤Ã¤¿¶èÀڤꥳ¡¼¥É¤òƳ¤­½Ð¤¹¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +appendix ¤Î¶èÀڤꥳ¡¼¥É¤Ï¡¢¤½¤Î½ñÀÒ¤ÎÀµ¤·¤¤¶èÀڤꥳ¡¼¥É¤ò EB ¥é¥¤¥Ö¥é¥ê +¤Ë¶µ¤¨¤Æ¤ä¤ë¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ + +
³°»ú¤ÎÂåÂØʸ»úÎó
+
+¿¤¯¤Î CD-ROM ½ñÀҤϡ¢³°»ú (Æȼ«¤ËÄêµÁ¤·¤¿Ê¸»ú) ¤ò»ý¤Ã¤Æ¤ª¤ê¡¢ËÜʸÃæ¤Ç +¤½¤Î³°»ú¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ +CD-ROM ½ñÀҤǤϳ°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Õ¥©¥ó¥È¤òÍÑ°Õ¤·¤Æ¤ª¤ê¡¢ +¥¯¥é¥¤¥¢¥ó¥È¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬³°»ú¤ò½ÐÎϤ¹¤ë¤Ë¤Ï¡¢¤½¤Î¥Õ¥©¥ó¥È¤òÉÁ²è +¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ + +appendix ¤Ç¤Ï¡¢³°»ú¤Î ÂåÂØʸ»úÎó (alternation text) +¤òÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×¥Õ¥©¥ó¥È¤òÉÁ²è¤¹¤ëÂå¤ï¤ê¤Ë¡¢¤½¤Î +ÂåÂØʸ»úÎó¤ò½ÐÎϤ¹¤ë¤³¤È¤Ë¤·¤Æ¤âÎɤ¤¤Ç¤·¤ç¤¦¡£ +
+ +

+appendix ¤Î¥ì¥¤¥¢¥¦¥È¤Ï CD-ROM ½ñÀҤΤâ¤Î¤È¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£ +¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï catalog ¤â¤·¤¯¤Ï catalogs +¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¡¢³ÆÉûËܤΥǡ¼¥¿¤ÏÂбþ¤¹¤ë¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ËÇÛÃÖ¤µ¤ì¤Æ +¤¤¤Þ¤¹¡£ +

+ + +

ebappendix ¥³¥Þ¥ó¥É¤È¤Ï

+ +

+appendix ¤Ï¥Ð¥¤¥Ê¥ê·Á¼°¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Ç¹½À®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¼ê¤ÇľÀÜ +ÊÔ½¸¤¹¤ë¤Î¤ÏÍưפǤϤ¢¤ê¤Þ¤»¤ó¡£ +¤½¤³¤Ç¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ç¤Ï ebappendix ¥³¥Þ¥ó¥É¤òÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£ +ebappendix ¥³¥Þ¥ó¥É¤Ï¡¢¥Æ¥­¥¹¥È·Á¼°¤Ç½ñ¤«¤ì¤¿¥Ç¡¼¥¿¤òÆɤ߹þ¤ß¡¢ +¥Ð¥¤¥Ê¥ê·Á¼°¤Î appendix ¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +

+EB ¥é¥¤¥Ö¥é¥ê¤Î¸ø¼°¤Ê FTP ¥µ¥¤¥È +ftp://ftp.sra.co.jp/pub/misc/eb/appendix/ +¤Ë¤Ï¡¢´û¤Ë¤¤¤¯¤Ä¤«¤Î½ñÀÒÍѤΠappendix ¤¬ÃÖ¤¤¤Æ¤¢¤ê¤Þ¤¹¡£ +¤³¤³¤ËºÜ¤Ã¤Æ¤¤¤Ê¤¤ CD-ROM ½ñÀÒÍѤΠappendix ¤òÍÑ°Õ¤·¤¿¤¤¾ì¹ç¤Ï¡¢ +ebappendix ¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤·¤ç¤¦¡£ +

+ + +

appendix ¤Î¥½¡¼¥¹¥Ç¡¼¥¿¤Î½ñ¤­Êý

+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢appendix ¤Î¥½¡¼¥¹¥Ç¡¼¥¿¤Î½ñ¤­Êý¤òÀâÌÀ¤·¤Þ¤¹¡£ +¤³¤³¤Ç¡¢¡Ö¥½¡¼¥¹¥Ç¡¼¥¿¡×¤È¸À¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ebappendix ¤¬Æɤ߹þ¤à +¥Æ¥­¥¹¥È·Á¼°¤Ç½ñ¤«¤ì¤¿¥Ç¡¼¥¿¤Î¤³¤È¤Ç¤¹¡£ +

+ +

+appendix ¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¼¡¤Ëµó¤²¤ë¥½¡¼¥¹¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤¬É¬ÍפǤ¹¡£ +¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò¤¹¤Ù¤Æ¡¢Æ±¤¸¥Ç¥£¥ì¥¯¥È¥ê¾å¤ËÍÑ°Õ¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
catalog.app ¤Þ¤¿¤Ï catalogs.app
+
+appendix ¤Ë¤Ïɬ¤º¡¢catalog ¤Þ¤¿¤Ï catalogs ¤È¤¤¤¦ +̾Á°¤Î¥Õ¥¡¥¤¥ë¤¬É¬ÍפǤ¹¡£ +catalog.app, catalogs.app ¤Ï¤½¤ÎÀ¸À®¸µ¤È¤Ê¤ë +¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ +appendix ¤Ë¼ýÏ¿¤µ¤ì¤Æ¤¤¤ë ÉûËÜ (subbook) +(¾Ü¤·¤¯¤Ï +¡Öcatalog(s).app ¤Î½ñ¤­Êý¡× +¤ò»²¾È) ¤Î°ìÍ÷¤òµ­¤·¤Þ¤¹¡£ + +
ÉûËÜ.app
+
+appendix ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤ½¤ì¤¾¤ì¤ËÂФ·¤Æ¡¢°ì¤Ä¤º¤ÄÍÑ°Õ¤¹¤ëɬÍפ¬ +¤¢¤ê¤Þ¤¹ (ÉûËÜ ¤ÎÉôʬ¤Ï¡¢¼ÂºÝ¤Ï¸Ä¡¹¤ÎÉûËܤÎ̾Á°¤Ë¤Ê¤ê¤Þ¤¹)¡£ +appendix ¤Î¥á¥¤¥ó¥Ç¡¼¥¿¤Ç¤¢¤ë¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ä³°»ú¤ÎÂåÂØʸ»úÎó¤Ï¡¢ +¤³¤Î¥Õ¥¡¥¤¥ë¤Ëµ­¤·¤Þ¤¹¡£ +
+ + + +

catalog(s).app ¤È¤Ï

+ +

+CD-ROM ½ñÀÒ¤ÈƱÍͤˡ¢appendix ¥Ñ¥Ã¥±¡¼¥¸¤Ë¤âɬ¤º catalog +¤â¤·¤¯¤Ï catalogs ¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Î¤É¤Á¤é¤«°ìÊý¤¬ +ɬÍפǤ¹¡£ +catalog.app, catalogs.app ¥Õ¥¡¥¤¥ë¤Ï¡¢¤½¤Î +À¸À®¸µ¤È¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebappendix ¥³¥Þ¥ó¥É¤Ë appendix ¤òÀ¸À®¤µ¤»¤ëºÝ¤Ë¤Ï¡¢ +catalog.app ¤« catalogs.app ¤Î¤É¤Á¤é¤«¤òɬ¤º +ÍÑ°Õ¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+ebappendix ¤Îɸ½à¤ÎÆ°ºî¤Ç¤Ï¡¢catalog.app ¤È¤¤¤¦ +¥Õ¥¡¥¤¥ë̾¤Ë¤·¤Æ¤ª¤¯¤È¡¢À¸À®¤¹¤ë¥Õ¥¡¥¤¥ë̾¤â catalog ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢appendix Á´ÂΤΥǥ£¥ì¥¯¥È¥ê¹½Â¤¤¬¡¢ÅŻҥ֥寤˻÷¤¿·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+È¿ÂФˡ¢catalogs.app ¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤Ë¤·¤Æ¤ª¤¯¤È¡¢À¸À®¤¹¤ë +¥Õ¥¡¥¤¥ë̾¤â catalogs ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢appendix Á´ÂΤΥǥ£¥ì¥¯¥È¥ê¹½Â¤¤¬¡¢EPWING ¤Ë»÷¤¿·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¿¤À¤·¡¢EPWING ¤Î½ñÀÒ¤ËÂФ·¤ÆÅŻҥ֥寷Á¼°¤Î appendix ¤ò»ÈÍѤ·¤Æ¤â¡¢ +Æ°ºî¤½¤Î¤â¤Î¤Ë¤Ï»Ù¾ã¤¬¤¢¤ê¤Þ¤»¤ó¡£ +µÕ¤âƱÍͤǤ¹¡£ +

+ + +

catalog(s).app ¤Î½ñ¤­Êý

+ +

+catalog(s).app ¤Ë¤Ï¡¢½ñÀҤ˼ýÏ¿¤µ¤ì¤Æ¤¤¤ëÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò +1 ¹Ô¤Ë 1 ¤Ä¤º¤Ä½ñ¤­Ê¤٤ޤ¹¡£ +ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤Ï¡¢ebinfo ¥³¥Þ¥ó¥É¤ò»È¤¦¤ÈÍưפËʬ¤«¤ê¤Þ¤¹¡£ +

+ +

+°Ê²¼¤Ï¡¢ebinfo ¤Î¼Â¹ÔÎã¤Ç¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ  1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: ejdict
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ  2:
+  Âê̾: ¤³¤Î½ñÀҤλȤ¤Êý
+  ¥Ç¥£¥ì¥¯¥È¥ê: howto
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+¤³¤Î¼­½ñÍѤΠappendix ¤òºîÀ®¤¹¤ë¾ì¹ç¡¢catalog(s).app ¤Ë¤Ï¼¡¤Î +¤è¤¦¤Ëµ­¤·¤Þ¤¹¡£ +

+ +
+
+ejdict
+howto
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +

+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¢¾®Ê¸»ú¤Ï¡¢Æ±¤¸¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£ +¤Þ¤¿¡¢¶õ¹Ô¤ª¤è¤Ó¤ª¤è¤Ó¶õÇò°Ê³°¤ÎºÇ½é¤Îʸ»ú¤¬¥Ï¥Ã¥·¥åµ­¹æ (#) +¤Ç¤¢¤ë¹Ô¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +

+ +

+ɬ¤º¤â¤È¤Î½ñÀÒ¤ÎÉûËܤ¹¤Ù¤Æ¤ò¡¢Æ±¤¸½ç½ø¤Ç catalog(s).app ¤Ë +µ­¤¹¤è¤¦¤Ë¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ÉûËÜ.app ¤È¤Ï

+ +

+appendix ¤¬¼ýÏ¿¤·¤Æ¤¤¤ëÉûËܤ½¤ì¤¾¤ì¤ËÂФ·¤Æ¡¢¥½¡¼¥¹¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë +ÉûËÜ.app ¤òÍÑ°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ +ÉûËÜ ¤ÎÉôʬ¤Ï¡¢¼ÂºÝ¤Ë¤Ï¸Ä¡¹¤ÎÉûËܤλÈÍѤ¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê̾¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+¤¿¤È¤¨¤Ð¡¢Á°Àá¤ÎÎã¤Ç¤Ï¡¢½ñÀÒ¤¬ ejdict ¤È howto +¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê̾¤ò»ý¤Ã¤¿ÉûËܤò»ý¤Ã¤Æ¤¤¤Þ¤·¤¿¡£ +¤³¤Î¾ì¹ç¡¢ÍÑ°Õ¤¹¤ë¥Õ¥¡¥¤¥ë¤Ï ejdict.app ¤È howto.app +¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ÉûËÜ.app ¥Õ¥¡¥¤¥ë¤Ï appendix ¤Î¥á¥¤¥ó¥Ç¡¼¥¿¤Ç¤¢¤ë¡¢ +ËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ä³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼ýÏ¿¤·¤¿ appendix ¤ä +furoku ¤È¤¤¤Ã¤¿¥Õ¥¡¥¤¥ë¤ÎÀ¸À®¸µ¤Ë¤Ê¤ê¤Þ¤¹¡£ +(appendix ¤òÅŻҥ֥寷Á¼°¤ÇÀ¸À®¤¹¤ë¤È appendix¡¢EPWING ·Á¼° +¤ÇÀ¸À®¤¹¤ë¤È furoku ¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤Ë¤Ê¤ê¤Þ¤¹¡£) +

+ + +

ÉûËÜ.app ¤Îʸˡ

+ +

+³ÆÉûËܤΥ½¡¼¥¹¥Ç¡¼¥¿¤òµ­¤·¤¿¥Õ¥¡¥¤¥ë¡ÖÉûËÜ.app¡× +¤ÎÃæ¤Ç¤Ï¡¢¶õ¹Ô¡¢¤ª¤è¤Ó¶õÇò°Ê³°¤ÎºÇ½é¤Îʸ»ú¤¬¥Ï¥Ã¥·¥åµ­¹æ (#) +¤Ç¤¢¤ë¹Ô¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +

+ +

+¾¤Î¹Ô¤Ï¤¹¤Ù¤Æ¡¢Ã±ÆȻؼ¨»Ò (single directive) ¤« +Ê£¹ç»Ø¼¨»Ò (group directive) ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +ñÆȻؼ¨»Ò¤ÈÊ£¹ç»Ø¼¨»Ò¤Ï¡¢¤É¤Î¤è¤¦¤Ê½ç½ø¤ÇÄêµÁ¤·¤Æ¤âº¹¤·»Ù¤¨¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+ñÆȻؼ¨»Ò¤È¤Ï¡¢1 ¹Ô¤Ç´°·ë¤¹¤ë»Ø¼¨»Ò¤Ç¤¹¡£ +ñÆȻؼ¨»Ò¤Î°ìÈÌ·Á¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+»Ø¼¨»Ò¤Î̾Á°    »Ø¼¨»Ò¤ÎÃÍ
+
+
+ +

+°Ê²¼¤ÎÎã¤Ç¤Ï¡¢stop-code ¤¬»Ø¼¨»Ò¤Î̾Á°¡¢ +0x1f09 0x0001 ¤¬¤½¤ÎÃͤǤ¹¡£ +

+ +
+
+stop-code          0x1f09 0x0001
+
+
+ +

+»Ø¼¨»Ò̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤¹¤Î¤Ç¡¢stop-code ¤ò +Stop-Code ¤È½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +»Ø¼¨»Ò¤Î̾Á°¤ÈÃͤζèÀÚ¤ê¤Ë¤Ï¡¢¶õÇò¤«¥¿¥Ö¤òÍѤ¤¤Þ¤¹¡£ +Ϣ³¤·¤¿¶õÇò¤È¥¿¥Ö¤¬¡¢¹ÔƬ¤ª¤è¤Ó¹ÔËö¤Ë¤¢¤Ã¤¿¾ì¹ç¡¢¤½¤ì¤é¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +

+ +

+Ê£¹ç»Ø¼¨»Ò¤È¤Ï¡¢µ­½Ò¤¬ÀßÄê¥Õ¥¡¥¤¥ëÆâ¤ÎÊ£¿ô¹Ô¤ËÅϤë»Ø¼¨»Ò¤Ç¤¹¡£ +Ê£¹ç»Ø¼¨»Ò¤Î°ìÈÌ·Á¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+begin Ê£¹ç»Ø¼¨»Ò¤Î̾Á°
+    Éû»Ø¼¨»Ò¤Î̾Á°    Éû»Ø¼¨»Ò¤ÎÃÍ
+             : 
+             : (·«¤êÊÖ¤·)
+             : 
+end
+
+
+ +

+¥­¡¼¥ï¡¼¥É begin ¤¬¡¢Ê£¹ç»Ø¼¨»Ò¤Î³«»Ï¤òɽ¤·¤Þ¤¹¡£ +begin ¤Ï¸å¤í¤Ë Ê£¹ç»Ø¼¨»Ò¤Î̾Á° ¤ò°ú¿ô¤È¤·¤Æ +¼è¤ê¤Þ¤¹¡£ +begin ¤È Ê£¹ç»Ø¼¨»Ò¤Î̾Á° ¤Ï¶õÇò¤«¥¿¥Ö¤Ç¶èÀڤꡢ +ξÊý¤È¤âƱ¤¸¹Ô¤ÎÃæ¤ËÃÖ¤­¤Þ¤¹¡£ +¥­¡¼¥ï¡¼¥É end ¤Ï¡¢Ê£¹ç»Ø¼¨»Ò¤Î½ªÎ»¤òɽ¤·¤Þ¤¹¡£ +end ¤Ï¡¢Ã±ÆÈ¤Ç 1 ¹Ô¤Ë¤·¤ÆÃÖ¤­¤Þ¤¹¡£ +

+ +

+º£¤Î¤È¤³¤í ÉûËÜ.app ¤Ç»ÈÍѤǤ­¤ëÊ£¹ç»Ø¼¨»Ò¤Î̾Á°¤Ï¡¢ +narrow ¤È wide ¤Î 2 ¤Ä¤À¤±¤Ç¤¹¡£ +¤½¤ì¤¾¤ì¤Î Éû»Ø¼¨»Ò ¤Ï¡¢begin ¤È end +¤Î¹Ô¤Î´Ö¤ËÃÖ¤­¤Þ¤¹¡£ +Éû»Ø¼¨»Ò¤Ë´Ø¤¹¤ëµ­½Ò¤Î°ìÈÌŪ¤Êµ¬Â§¤Ï¡¢Ã±ÆȻؼ¨»Ò¤ÈÊѤï¤ê¤Þ¤»¤ó +(¤¿¤È¤¨¤Ð¡¢Éû»Ø¼¨»Ò¤Î̾Á°¤È Éû»Ø¼¨»Ò¤ÎÃÍ ¤Ï¶õÇò¤« +¥¿¥Ö¤Ç¶èÀڤ뤳¤È¤Ê¤É)¡£ +

+ +

+°Ê²¼¤Ï¡¢ narrow Ê£¹ç»Ø¼¨»Ò¤Îµ­½ÒÎã¤Ç¤¹¡£ +

+ +
+
+begin narrow
+    range-start     0xa121
+    range-end       0xa123
+    0xa121          [¢ª»²¾È]
+    0xa122          [¢ª²»À¼]
+    0xa123          [¢ª¿Þ²ò]
+end
+
+
+ + +

ÉûËÜ.app ¤ÎñÆȻؼ¨»Ò

+ +

+ñÆȻؼ¨»Ò¤Ë¤Ï¼¡¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
character-code
+
+appendix ¤Îʸ»ú¥³¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£ +ʸ»ú¥³¡¼¥É¤Ïɬ¤º¡¢CD-ROM ½ñÀҤ˹ç¤ï¤»¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¤Îʸ»ú¥³¡¼¥É¤Ï¡¢ebinfo ¥³¥Þ¥ó¥É¤Î½ÐÎϤò¸«¤ì¤Ð³Îǧ +¤Ç¤­¤Þ¤¹¡£ + +CD-ROM ½ñÀÒ¤¬ ISO 8859-1 ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢»Ø¼¨»Ò¤ÎÃͤȤ·¤Æ +ISO8859-1 ¤ò»ØÄꤷ¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢JISX0208 ¤ò»ØÄꤷ¤Æ²¼¤µ¤¤¡£ + +
+
+character-code          JISX0208
+
+
+ +¤³¤Î»Ø¼¨»Ò¤Ï¡¢ÉûËÜ.app ¥Õ¥¡¥¤¥ëÆâ¤Çɬ¤º°ì²óÄêµÁ +¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÄêµÁ¤·¤Ê¤«¤Ã¤¿¤ê¡¢ÆóÅٰʾåÄêµÁ¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
stop-code
+
+ÉûËܤÎËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ò»ØÄꤷ¤Þ¤¹¡£ +»Ø¼¨»Ò¤ÎÃͤϡ¢¶èÀڤꥳ¡¼¥É¤Îʸ»úÈÖ¹æ¤ò 2 ¤Ä½ñ¤­Ê¤٤¿¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
+
+stop-code          0x1f09 0x0001
+
+
+ +ʸ»úÈÖ¹æ¤Ï¡¢0x ¤Ê¤¤¤· 0X ¤Ë³¤±¤Æ 16¿Ê¿ô 4 ·å +¤Çµ­¤·¤Þ¤¹¡£ +¤¿¤À¤·¡¢1¤ÄÌܤÎʸ»úÈÖ¹æ¤Ï¡¢0x1f09 ¤« 0x1f41 ¤Ç +¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +¤½¤ì°Ê³°¤À¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + +ebstopcode ¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢ÉûËܤËŬÀڤʶèÀڤꥳ¡¼¥É¤ò +ÆÃÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ (¾Ü¤·¤¯¤Ï +ebstopcode ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î +¤³¤È)¡£ + +¤³¤Î»Ø¼¨»Ò¤ÏÄêµÁ¤·¤Ê¤¯¤Æ¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢ÆóÅٰʾåÄêµÁ¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +
+ + +

ÉûËÜ.app ¤ÎÊ£¹ç»Ø¼¨»Ò

+ +

+narrow ¤ª¤è¤Ó wide Ê£¹ç»Ø¼¨»Ò¤Ï¡¢¤½¤ì¤¾¤ìÉûËÜ¤Ë +ÂФ¹¤ëȾ³Ñ³°»ú¤ª¤è¤ÓÁ´³Ñ³°»ú¤ËÂФ¹¤ëÂåÂØʸ»úÎó¤òÄêµÁ¤¹¤ë¤¿¤á¤ËÍѤ¤¤Þ¤¹¡£ +¤¿¤À¤·¡¢ÉûËܤ¬³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Æ¤â¡¢ÂåÂØʸ»úÎó¤òÍøÍѤ¹¤ëɬÍפ¬¤Ê¤±¤ì¤Ð¡¢ +narrow, wide Ê£¹ç»Ø¼¨»Ò¤òµ­½Ò¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ +

+narrow ¤È wide Ê£¹ç»Ø¼¨»ÒÆâ¤ÇÄêµÁ¤Ç¤­¤ëÉû»Ø¼¨»Ò¤Ï¡¢ +¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£ +Éû»Ø¼¨»Ò¤Ë¤Ï¼¡¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +
+
range-start
+
+³°»ú¤ÎÄêµÁÈϰϤòµ­¤·¤Þ¤¹¡£ +³«»Ï°ÌÃÖ¤Îʸ»úÈÖ¹æ¤ò range-start ¤Ç¡¢½ªÎ»°ÌÃÖ¤Îʸ»úÈÖ¹æ¤ò +range-end ¤Ç»ØÄꤷ¤Þ¤¹¡£ +ʸ»úÈÖ¹æ¤Ï¡¢0x ¤Ê¤¤¤· 0X ¤Ë³¤±¤Æ 16¿Ê¿ô 4 ·å¤Ç +µ­¤·¤Þ¤¹¡£ +°Ê²¼¤Ïµ­½ÒÎã¤Ç¤¹¡£ + +
+
+    range-start     0xa121
+    range-end       0xa123
+
+
+ +ÄêµÁÈϰϤϡ¢ebinfo ¥³¥Þ¥ó¥É¤Î½ÐÎÏ·ë²Ì¤Î +¡ÖȾ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú (narrow font characters)¡× +¡ÖÁ´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú (wide font characters)¡× +¤Çµ­¤µ¤ì¤¿ÈϰϤȰìÃפµ¤»¤ë¤è¤¦¤Ë¤·¤Æ²¼¤µ¤¤¡£ + +narrow ¤ª¤è¤Ó wide Ê£¹ç»Ø¼¨»ÒÆâ¤Ç¤Ï¡¢ +ɬ¤º°ì²ó¤º¤Ä range-start ¤ª¤è¤Ó range-end ¤ò +ÄêµÁ¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +ÄêµÁ¤·¤Ê¤«¤Ã¤¿¤ê¡¢ÆóÅٰʾåÄêµÁ¤·¤¿¤ê¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
0xhhhh
+
+hhhh ¤Ï¡¢4 ·å ¤Î 16¿Ê¿ô¤Ç¤¹¡£ +ʸ»úÈÖ¹æ 0xhhhh ¤ÎÁ´³Ñ³°»ú¤Ê¤¤¤·È¾³Ñ³°»ú¤ËÂФ·¤Æ¡¢ +ÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Þ¤¹¡£ + +
+
+    0xa121          [̾]
+
+
+ +appendix ¤¬ ISO 8859-1 ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢ÂåÂØʸ»úÎó¤â ISO 8859-1 +¤ÇÄêµÁ¤·¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢ÂåÂØʸ»úÎó¤òÆüËܸì EUC ¤ÇÄêµÁ¤·¤Þ¤¹¡£ +¤¤¤º¤ì¤â¡¢ÂåÂØʸ»úÎó¤ÏºÇĹ¤Ç 31 ¥Ð¥¤¥È¤Þ¤Ç¤Ç¡¢¤½¤ì¤òĶ¤¨¤ë¤È¥¨¥é¡¼¤Ë +¤Ê¤ê¤Þ¤¹¡£ + +range-start, range-end ¤Ç»ØÄꤷ¤¿ÄêµÁÈÏ°ÏÆâ¤Î +³°»ú¤¹¤Ù¤Æ¤Ë¤Ä¤¤¤Æ¡¢ÂåÂØʸ»úÎó¤òÀßÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢Æ±°ì¤ÎÊ£¹ç»Ø¼¨»ÒÆâ¤Ç¡¢°ì¤Ä¤Îʸ»úÈÖ¹æ¤Î³°»ú¤ËÂФ·¤ÆÂåÂØʸ»úÎó¤ò +ÄêµÁ¤Ç¤­¤ë¤Î¤Ï°ì²ó¤Þ¤Ç¤Ç¤¹¡£ +Ê£¿ô²óÀßÄꤷ¤è¤¦¤È¤¹¤ë¤È¡¢¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢Èϰϳ°¤Îʸ»úÈÖ¹æ¤ÎÂåÂØʸ»úÎó¤òÄêµÁ¤·¤è¤¦¤È¤·¤Æ¤â¡¢¤ä¤Ï¤ê¥¨¥é¡¼¤Ë +¤Ê¤ê¤Þ¤¹¡£ + +CD-ROM ½ñÀÒ¤¬¤É¤Î¤è¤¦¤Ê³°»ú¤òÄêµÁ¤·¤Æ¤¤¤ë¤Î¤«¤Ï¡¢ebfont ¥³¥Þ¥ó¥É +¤ÇÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ (¾Ü¤·¤¯¤Ï +ebfont ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È)¡£ +
+ + +

appendix ¤ÎÀ¸À®

+ +

+appendix ¤Î¥½¡¼¥¹¥Ç¡¼¥¿¤¬½ñ¤±¤¿¤é¡¢ebappendix ¥³¥Þ¥ó¥É¤òÍѤ¤¤Æ +¼ÂºÝ¤Î (¥Ð¥¤¥Ê¥ê·Á¼°¤Î) appendix ¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +

+°Ê²¼¡¢¤³¤Î¾Ï¤Ç¤Ï ebappendix ¤Î¼Â¹ÔÊýË¡¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯ÀâÌÀ¤·¤Þ¤¹¡£ +

+ + + +

ebappendix ¤Î¼Â¹Ô

+ +

+ebappendix ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebappendix ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹
+
+
+ +

+ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹ ¤Ë¤Ï¡¢Æɤ߹þ¤à appendix ¥½¡¼¥¹¥Ç¡¼¥¿¤Î +¥Ç¥£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê catalog.app ¤Þ¤¿¤Ï catalogs.app +¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¾Êά¤·¤¿¾ì¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤¿¤È¤ß¤Ê¤µ¤ì¤Þ¤¹¡£ +

+ +

+ɸ½à¤Ç¤Ï¡¢½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£ +

+ +

+--output-directory ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢ +ebappendix ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤Î¾ì½ê¤Ë½ÐÎϤ¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebappendix --output-directory ½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹ \
+  ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹
+
+
+ +

+¤â¤·½ÐÎϥǥ£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¼«Æ°Åª¤Ë ebappendix +¤¬À¸À®¤·¤Þ¤¹¡£ +

+ +

+¼Â¹Ô¤¹¤ë¤È¡¢ebappendix ¤Ï½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Î²¼¤Ë¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê +¤òºî¤ê¡¢¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ + +

appendix ¤È CD-ROM ½ñÀҤνŤ͹ç¤ï¤»

+ +

+HDD ¾å¤Ë¥³¥Ô¡¼¤·¤¿ CD-ROM ½ñÀÒ¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¢appendix ¤ò½Å¤Í¤Æ +ÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+¤³¤ì¤Ë¤Ï¡¢ebappendix ¤Î --output-directory ¤È +--no-catalog ¥ª¥×¥·¥ç¥ó¤ò»È¤¤¤Þ¤¹¡£ +--output-directory ¥ª¥×¥·¥ç¥ó¤Ë¤Ï¡¢CD-ROM ½ñÀҤΠ+¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +
+
+% ebappendix --no-catalog --output-directory ½ÐÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹ \
+  ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹
+
+
+ +

+¤Ê¤ª¡¢appendix ¤Î·Á¼° (ÅŻҥ֥寤« EPWING ¤«) ¤Ï CD-ROM ½ñÀҤ˹ç¤ï¤»¤ë +¤è¤¦¤Ë¤·¤Þ¤¹ +(¾Ü¤·¤¯¤Ï +¡Öcatalog(s).app ¤Î½ñ¤­Êý¡× +¤ò»²¾È)¡£ +

+ +

+ebappendix ¤Î¼Â¹ÔÁ°¸å¤Ç CD-ROM ½ñÀҤΥǥ£¥ì¥¯¥È¥ê¹½À®¤¬ +¤É¤Î¤è¤¦¤ËÊѲ½¤¹¤ë¤Î¤«¡¢Îã¤òµ­¤·¤Æ¤ß¤Þ¤¹¡£ +¤Þ¤ºÅŻҥ֥寤ξì¹ç¤Ç¤¹¤¬¡¢¼Â¹ÔÁ°¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¼¡¤Î¤è¤¦¤Ë +¤Ê¤Ã¤Æ¤¤¤¿¤È¤·¤Þ¤¹¡£ +

+ +
+
+catalog
+ejdict/start
+howto/start
+
+
+ +

+ebappendix ¤Ç appendix ¤ò½Å¤Í¹ç¤ï¤»¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ê¹½À®¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+catalog
+ejdict/start
+ejdict/appendix  ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+howto/start
+howto/appendix   ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+
+
+ +

+ƱÍͤˡ¢EPWING ¤Ç¼Â¹ÔÁ°¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤È +¤¹¤ë¤È¡¢ +

+ +
+
+catalogs
+ejdict/data/honmon
+howto/data/honmon
+
+
+ +

+¼Â¹Ô¸å¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¹½À®¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+catalogs
+ejdict/data/honmon
+ejdict/data/furoku  ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+howto/data/honmon
+howto/data/furoku   ¢« appendix ¤Î¥Õ¥¡¥¤¥ë
+
+
+ +

+CD-ROM ½ñÀҤˤè¤Ã¤Æ¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê̾¤ËÂçʸ»ú¤¬º®¤¸¤Ã¤Æ¤¤¤ë¤³¤È¤¬ +¤¢¤ê¤Þ¤¹¤¬¡¢ebappendix ¤Ï¤½¤ì¤ò¸¡½Ð¤·¤Þ¤¹¤Î¤Ç¡¢Ì¾Á°¤ò¾®Ê¸»ú¤Ë +ÊѤ¨¤¿¥Ç¥£¥ì¥¯¥È¥ê¤òÊÌÅÓºî¤Ã¤Æ¤·¤Þ¤¦¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+--no-catalog ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebappendix ¤Ï +¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë catalog ¤ä catalogs ¥Õ¥¡¥¤¥ë¤ò +À¸À®¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î appendix ¤ò EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤«¤é»È¤¦ºÝ¤Ï¡¢ +CD-ROM ½ñÀҤ˺ǽ餫¤éÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë catalog ¤ä +catalogs ¥Õ¥¡¥¤¥ë¤ò CD-ROM ½ñÀÒ¡¢appendix ¶¦ÍѤΠ+¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤È¤·¤ÆήÍѤ¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +

+appendix ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ï¡¢CD-ROM ½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÎÉôʬ½¸¹ç +¤È¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢¤³¤¦¤·¤¿»ö¤¬²Äǽ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +--no-catalog ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ˺¤ì¤ë¤È¡¢ +ebappendix ¤Ï CD-ROM ½ñÀҤΥ«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­ +¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ebappendix ¤Î¥ª¥×¥·¥ç¥ó

+ +

+ebappendix ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤ +Ť¤¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ +¤¹¡£ +

+ +
+
-b ½ñÀҤηÁ¼°
+
--booktype ½ñÀҤηÁ¼°
+
+appendix ¤òÅŻҥ֥寡¢EPWING ¤Î¤É¤Á¤é¤Î·Á¼°¤Î¥ì¥¤¥¢¥¦¥È¤Ë»÷¤»¤Æºî¤ë +¤Î¤«¤ò»ØÄꤷ¤Þ¤¹¡£ +ÅŻҥ֥寷Á¼°¤Ê¤é eb¡¢EPWING ·Á¼°¤Ê¤é epwing +¤È»ØÄꤷ¤Þ¤¹¡£ + +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¼¡¤ÎÍ×ÎΤǤɤÁ¤é¤Î·Á¼°¤ÇÀ¸À®¤¹¤ë +¤Î¤«¤¬¤¬·èÄꤵ¤ì¤Þ¤¹¡£ +¤Þ¤º¡¢ÆþÎϥǥ£¥ì¥¯¥È¥ê¤Ë catalog.app ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ì¤Ð +¤½¤ì¤¬Æɤ߹þ¤Þ¤ì¡¢ÅŻҥ֥寷Á¼°¤Î appendix ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ +catalog.app ¤¬¤Ê¤¯¡¢Âå¤ï¤ê¤Ë catalogs.app ¤¬ +¸ºß¤¹¤ì¤Ð¤½¤ì¤¬Æɤ߹þ¤Þ¤ì¡¢EPWING ·Á¼°¤Î appendix ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£ +(catalogs.app ¤â catalog.app ¤Ê¤±¤ì¤Ð¡¢¥¨¥é¡¼ +¤Ë¤Ê¤ê¤Þ¤¹¡£) + +
-d
+
--debug
+
--verbose
+
+¥Ç¥Ð¥Ã¥°ÍѤΥá¥Ã¥»¡¼¥¸¤ò¡¢É¸½à¥¨¥é¡¼½ÐÎϤ˽ÐÎϤ·¤Þ¤¹¡£ + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-n
+
--no-catalog
+
+¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë (catalog ¤ª¤è¤Ó catalogs) ¤ò +À¸À®¤·¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢½ñÀÒ¤È appendix ¤òƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë½Å¤Í¹ç¤ï¤»¤ëºÝ¤Ë +Í­¸ú¤Ç¤¹ +(¾Ü¤·¤¯¤Ï +¡Öappendix ¤È CD-ROM ½ñÀҤνŤ͹ç¤ï¤»¡× +¤ò»²¾È¤Î¤³¤È)¡£ + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+½ÐÎÏÀè¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¾Êά¤¹¤ë¤È¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤Ë +½ÐÎϤ·¤Þ¤¹¡£ +¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¡¢¼«Æ°Åª¤ËÀ¸À®¤µ¤ì¤Þ¤¹¡£ + +
-t
+
--test
+
+¥Õ¥¡¥¤¥ë¤ò½ÐÎϤ·¤Þ¤»¤ó¡£ +ÆþÎÏ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤ó¤Ç¡¢ÆâÍƤΥÁ¥§¥Ã¥¯¤À¤±¤ò¹Ô¤¤¤Þ¤¹¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ + + diff --git a/lib/ebu/doc/ebfont-01.html b/lib/ebu/doc/ebfont-01.html new file mode 100644 index 0000000..73a7a66 --- /dev/null +++ b/lib/ebu/doc/ebfont-01.html @@ -0,0 +1,30 @@ + + + + + + +ebfont ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¤Ï¤¸¤á¤Ë

+ +

+ebfont ¥³¥Þ¥ó¥É¤Ï¡¢CD-ROM ½ñÀҤγ°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò +Æɤ߹þ¤ß¡¢¤½¤ì¤ò»ØÄꤵ¤ì¤¿²èÁü·Á¼°¤ËÊÑ´¹¤·¡¢¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤·¤Þ¤¹¡£ +ebfont ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤Ë +ÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebfont-02.html b/lib/ebu/doc/ebfont-02.html new file mode 100644 index 0000000..a43f29a --- /dev/null +++ b/lib/ebu/doc/ebfont-02.html @@ -0,0 +1,67 @@ + + + + + + +ebfont ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

³°»ú¤È¤Ï

+ +

+CD-ROM ½ñÀҤο¤¯¤Ï¡¢½ñÀÒ¸ÇÍ­¤Îʸ»ú¡¢³°»ú (local characters) ¤òÄêµÁ¤·¤Æ +¤¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢CD-ROM ½ñÀҤ˻Ȥï¤ì¤ëʸ»ú¥»¥Ã¥È¤Ïȯ²»µ­¹æ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤¿¤á¡¢ +±Ñϼ­½ñ¤ÎÃæ¤Ë¤Ïȯ²»µ­¹æ¤òÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀҤϡ¢³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤â»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +ebfont ¥³¥Þ¥ó¥É¤Ï¡¢CD-ROM ½ñÀҤΥӥåȥޥåץǡ¼¥¿¤òÆɤߡ¢ +¤½¤ì¤ò»ØÄꤵ¤ì¤¿²èÁü·Á¼°¤ËÊÑ´¹¤·¡¢¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤·¤Þ¤¹¡£ +ebfont ¤Ï¡¢XBM¡¢XPM¡¢GIF¡¢BMP¡¢PNG ¤Î¤¦¤Á¤Î¤¤¤º¤ì¤«¡¢ +¤Þ¤¿¤ÏÊ£¿ô¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢XBM ·Á¼°¤¬ÁªÂò¤µ¤ì¤Þ¤¹¡£ +

+ +

+³°»ú¤Ï¡¢È¾³Ñ (narrow) ¤È Á´³Ñ +(wide) ¤Î 2 ¼ïÎà¤ËʬÎव¤ì¤Þ¤¹¡£ +Ⱦ³Ñ¤Îʸ»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Ç¤Ï¡¢¹â¤µ¤ÏÉý¤ÎÌóȾʬ¤Ç¤¹¡£ +Á´³Ñ¤Îʸ»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Ç¤Ï¡¢¹â¤µ¤ÈÉý¤Ï¤Û¤ÜƱ¤¸¤Ç¤¹¡£ +CD-ROM ½ñÀҤϡ¢°ìºý¤ÎÃæ¤ËξÊý¤Î¼ïÎà¤Î³°»ú¤òÄêµÁ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¡¢ +ebfont ¤ÏξÊý¤Î¼ïÎà¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒ¤ÎÆâÉô·Á¼°¤Î»ÅÍͽñ¤Ç¤Ï¡¢È¾³Ñ¤ÈÁ´³Ñ¤ÎξÊý¤Î³°»ú¤ËÂФ·¤Æ +4 ¼ïÎà¤Î¥µ¥¤¥º¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +³°»ú¤ÎÉý¡¢¹â¤µ¡¢¥µ¥¤¥º¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ + + + + + + +
¹â¤µ Ⱦ³Ñ Á´³Ñ
16 8x16 16x16
24 16x24 24x24
30 16x30 32x30
48 24x48 48x48
+ +

+Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢ebfont ¤Ï¹â¤µ¤¬ 16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î +²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebfont-03.html b/lib/ebu/doc/ebfont-03.html new file mode 100644 index 0000000..57e8055 --- /dev/null +++ b/lib/ebu/doc/ebfont-03.html @@ -0,0 +1,249 @@ + + + + + + +ebfont ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

ebfont ¤Î¼Â¹Ô

+ +

+ebfont ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebfont ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¥Ñ¥¹¤Ï¡¢¥í¡¼¥«¥ë¤Ê¥Ñ¥¹ (Îã: /mnt/dict) ¤Ç¤â±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò +(Îã: ebnet://localhost/dict) ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont
+
+
+ +

+¤³¤Î¾ì¹ç¡¢ebfont ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤Ë²èÁü¥Õ¥¡¥¤¥ë¤ò +À¸À®¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢¥Õ¥¡¥¤¥ë̾¤Î°ìÈÌ·Á¼°¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+ÉûËÜ/¹â¤µ/narrow/ʸ»úÈÖ¹æ.³ÈÄ¥»Ò
+ÉûËÜ/¹â¤µ/wide/ʸ»úÈÖ¹æ.³ÈÄ¥»Ò
+
+
+ +

+³ÈÄ¥»Ò ¤Ï xbm¡¢xpm¡¢gif¡¢ +bmp png ¤Î¤¤¤º¤ì¤«¤Ç¡¢Ê¸»úÈÖ¹æ ¤Ï +16 ¿Ê¿ô 4 ·å (0 ¤«¤é 9 ¤È a ¤«¤é +f) ¤Ç¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ejdict/16/narrow/a121.xbm
+ejdict/16/wide/a321.xbm
+
+
+ +

+ejdict/16/xbm/narrow ¤Ê¤É¤ÎÃæ´Ö¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¤â¤· +̵¤±¤ì¤Ð ebfont ¤¬À¸À®¤·¤Þ¤¹¡£ +

+ +

+--output-directory ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢ +ebfont ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë +²èÁü¥Õ¥¡¥¤¥ë¤ò½ÐÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤½¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢ebfont ¤ò¼Â¹Ô¤¹¤ëÁ°¤ËºîÀ®¤µ¤ì¤Æ +¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +

+ +
+
+% ebfont --output-directory ¥Ç¥£¥ì¥¯¥È¥ê ½ñÀҤؤΥѥ¹
+
+
+ + + +

²èÁü·Á¼°

+ +

+ebfont ¤Ï XBM, XPM, GIF89a, BMP, PNG ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤ò +À¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +²èÁü·Á¼°¤Ï --image-format (-i) ¥ª¥×¥·¥ç¥ó¤Ç +»ØÄꤷ¤Þ¤¹¡£ +--image-format ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢²èÁü·Á¼°¤Î̾Á°¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ebfont ¤Ï XPM ·Á¼°¤È +GIF ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebfont --image-format xpm,gif ½ñÀҤؤΥѥ¹
+
+
+ +

+--image-format ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont --image-format xpm --image-format gif ½ñÀҤؤΥѥ¹
+
+
+ +

+XPM, GIF, PNG ·Á¼°¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ (RGB ¤Î #000000) ¤Ë¡¢ +ÇØ·Ê¿§¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£ +BMP ·Á¼°¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¤Ë¡¢ÇØ·Ê¿§¤ÏÇò (RGB ¤Î #ffffff) ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebzip ¤Ï GIF ¤Î²èÁü¤òÀ¸À®¤¹¤ëºÝ¤Ë LZW °µ½Ì¥¢¥ë¥´¥ê¥º¥à¤ò +»È¤ï¤Ê¤¤¤¿¤á¡¢¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤ÏÁêÅöÂ礭¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ + +

¹â¤µ

+ +

+Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢ebfont ¤Ï¡¢È¾³Ñ¤ÈÁ´³Ñ¤½¤ì¤¾¤ì¤Ë¤Ä¤¤¤Æ¡¢ +¹â¤µ 16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +--font-height (-f) ¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢ +¾¤Î¹â¤µ¤Î¥Õ¥©¥ó¥È¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +--font-height ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢¥Õ¥©¥ó¥È¤Î¹â¤µ¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ï¡¢16¡¢24¡¢30¡¢ +48 ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ebfont ¤Ï¹â¤µ +16 ¥Ô¥¯¥»¥ë¤È 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebfont --font-height 16,24 ½ñÀҤؤΥѥ¹
+
+
+ +

+--font-height ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont --font-height 16 --font-height 24 ½ñÀҤؤΥѥ¹
+
+
+ + +

ÉûËÜ

+ +

+¤Ê¤Ë¤âÀßÄꤷ¤Ê¤¤¤È¡¢ebzip ¤Ï¤¹¤Ù¤Æ¤ÎÉûËÜ (subbook) ¤òÂÐ¾Ý¤Ë +¤·¤Æ²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¤¬¡¢--subbook (-S) +¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢»ØÄꤷ¤¿ÉûËܤβèÁü¥Õ¥¡¥¤¥ë¤À¤±¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+--subbook ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢¤¢¤Ê¤¿¤Î½êÍ­¤·¤Æ¤¤¤ë½ñÀÒ¤Ë +¤É¤Î¤è¤¦¤ÊÉûËܤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 3
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 3:
+  Âê̾: ¥Ý¥±¥Ã¥ÈÆÈϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: german
+  ¸¡º÷Êý¼°: ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢3 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï +english, french, german +¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È, ebfont ¤Ï english ¤È +french ¤Î²èÁü¥Õ¥¡¥¤¥ë¤À¤±¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebfont --subbook english,french /mnt/cdrom
+
+
+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¦¾®Ê¸»ú¤Î°ã¤¤¤Ï¡¢¶èÊ̤µ¤ì¤Þ¤»¤ó¡£ +--subbook ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont --subbook english --subbook french /mnt/cdrom
+
+
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebfont-04.html b/lib/ebu/doc/ebfont-04.html new file mode 100644 index 0000000..d88ad42 --- /dev/null +++ b/lib/ebu/doc/ebfont-04.html @@ -0,0 +1,91 @@ + + + + + + +ebfont ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [Ìܼ¡] +

+
+

ebfont ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebzip ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-d
+
--debug
+
--verbose
+
+¥Ç¥Ð¥Ã¥°ÍѤξðÊó¤ò¡¢É¸½à¥¨¥é¡¼½ÐÎϤ˽ÐÎϤ·¤Þ¤¹¡£ + +
-f ¹â¤µ
+
--font-height ¹â¤µ
+
+¹â¤µ¤¬ ¹â¤µ ¤Î³°»ú¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +¹â¤µ ¤Ï¡¢¹â¤µ¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀڤäÆʤ٤¿¤â¤Î¤Ç +¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¹â¤µ¤Î»ØÄê¤È¤·¤Æµö¤µ¤ì¤ë¤Î¤Ï¡¢16¡¢24¡¢ +30¡¢48 ¤Ç¤¹¡£ +»ØÄ꤬¤Ê¤±¤ì¤Ð¡¢ebfont ¤Ï¹â¤µ¤¬ 16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î¤â¤Î¤ò +À¸À®¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¹â¤µ¡×¤ò»²¾È¤Î¤³¤È¡£) + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-i ²èÁü·Á¼°
+
--image-format ²èÁü·Á¼°
+
+²èÁü·Á¼° ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +²èÁü·Á¼° ¤Ï¡¢²èÁü·Á¼°Ì¾¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤Ã¤Æ +ʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +Âбþ¤·¤Æ¤¤¤ë²èÁü·Á¼°¤Î̾Á°¤Ï xbm¡¢xpm¡¢ +gif¡¢bmp¡¢gif¡¢png +¤Ç¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢ebfont ¤Ï XBM ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤ò +À¸À®¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö²èÁü·Á¼°¡×¤ò»²¾È¤Î¤³¤È¡£) + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+²èÁü¥Õ¥¡¥¤¥ë¤ò ¥Ç¥£¥ì¥¯¥È¥ê °Ê²¼¤Ë½ÐÎϤ·¤Þ¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢ebfont ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê +(.) ¤Î²¼¤Ë²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Öebfont ¤Î¼Â¹Ô¡× +¤ò»²¾È¤Î¤³¤È¡£) + +
-S ÉûËÜ
+
--subbook ÉûËÜ
+
+ebfont ¤Ë¡¢¤É¤ÎÉûËܤγ°»ú¤òÀ¸À®¤µ¤»¤ë¤Î¤«¤ò»ØÄꤷ¤Þ¤¹¡£ +ÉûËÜ ¤Ï¡¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò¥«¥ó¥Þ (,) ¤Ç +¶èÀڤäÆʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉûËܤ¬À¸À®¤ÎÂоݤˤʤê¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡ÖÉûËܡפò»²¾È¤Î¤³¤È¡£) + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ +
+

+[Á°¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebfont-cat.html b/lib/ebu/doc/ebfont-cat.html new file mode 100644 index 0000000..5c60ad6 --- /dev/null +++ b/lib/ebu/doc/ebfont-cat.html @@ -0,0 +1,397 @@ + + + + + + +ebfont ¥³¥Þ¥ó¥É + + + +

ebfont ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1998-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+ebfont ¥³¥Þ¥ó¥É¤Ï¡¢CD-ROM ½ñÀҤγ°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò +Æɤ߹þ¤ß¡¢¤½¤ì¤ò»ØÄꤵ¤ì¤¿²èÁü·Á¼°¤ËÊÑ´¹¤·¡¢¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤·¤Þ¤¹¡£ +ebfont ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤Ë +ÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ + +

³°»ú¤È¤Ï

+ +

+CD-ROM ½ñÀҤο¤¯¤Ï¡¢½ñÀÒ¸ÇÍ­¤Îʸ»ú¡¢³°»ú (local characters) ¤òÄêµÁ¤·¤Æ +¤¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢CD-ROM ½ñÀҤ˻Ȥï¤ì¤ëʸ»ú¥»¥Ã¥È¤Ïȯ²»µ­¹æ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤¿¤á¡¢ +±Ñϼ­½ñ¤ÎÃæ¤Ë¤Ïȯ²»µ­¹æ¤òÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀҤϡ¢³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤â»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +ebfont ¥³¥Þ¥ó¥É¤Ï¡¢CD-ROM ½ñÀҤΥӥåȥޥåץǡ¼¥¿¤òÆɤߡ¢ +¤½¤ì¤ò»ØÄꤵ¤ì¤¿²èÁü·Á¼°¤ËÊÑ´¹¤·¡¢¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤·¤Þ¤¹¡£ +ebfont ¤Ï¡¢XBM¡¢XPM¡¢GIF¡¢BMP¡¢PNG ¤Î¤¦¤Á¤Î¤¤¤º¤ì¤«¡¢ +¤Þ¤¿¤ÏÊ£¿ô¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢XBM ·Á¼°¤¬ÁªÂò¤µ¤ì¤Þ¤¹¡£ +

+ +

+³°»ú¤Ï¡¢È¾³Ñ (narrow) ¤È Á´³Ñ +(wide) ¤Î 2 ¼ïÎà¤ËʬÎव¤ì¤Þ¤¹¡£ +Ⱦ³Ñ¤Îʸ»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Ç¤Ï¡¢¹â¤µ¤ÏÉý¤ÎÌóȾʬ¤Ç¤¹¡£ +Á´³Ñ¤Îʸ»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Ç¤Ï¡¢¹â¤µ¤ÈÉý¤Ï¤Û¤ÜƱ¤¸¤Ç¤¹¡£ +CD-ROM ½ñÀҤϡ¢°ìºý¤ÎÃæ¤ËξÊý¤Î¼ïÎà¤Î³°»ú¤òÄêµÁ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¡¢ +ebfont ¤ÏξÊý¤Î¼ïÎà¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒ¤ÎÆâÉô·Á¼°¤Î»ÅÍͽñ¤Ç¤Ï¡¢È¾³Ñ¤ÈÁ´³Ñ¤ÎξÊý¤Î³°»ú¤ËÂФ·¤Æ +4 ¼ïÎà¤Î¥µ¥¤¥º¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +³°»ú¤ÎÉý¡¢¹â¤µ¡¢¥µ¥¤¥º¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ + + + + + + +
¹â¤µ Ⱦ³Ñ Á´³Ñ
16 8x16 16x16
24 16x24 24x24
30 16x30 32x30
48 24x48 48x48
+ +

+Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢ebfont ¤Ï¹â¤µ¤¬ 16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î +²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ + +

ebfont ¤Î¼Â¹Ô

+ +

+ebfont ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebfont ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¥Ñ¥¹¤Ï¡¢¥í¡¼¥«¥ë¤Ê¥Ñ¥¹ (Îã: /mnt/dict) ¤Ç¤â±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò +(Îã: ebnet://localhost/dict) ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont
+
+
+ +

+¤³¤Î¾ì¹ç¡¢ebfont ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤Ë²èÁü¥Õ¥¡¥¤¥ë¤ò +À¸À®¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢¥Õ¥¡¥¤¥ë̾¤Î°ìÈÌ·Á¼°¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+ÉûËÜ/¹â¤µ/narrow/ʸ»úÈÖ¹æ.³ÈÄ¥»Ò
+ÉûËÜ/¹â¤µ/wide/ʸ»úÈÖ¹æ.³ÈÄ¥»Ò
+
+
+ +

+³ÈÄ¥»Ò ¤Ï xbm¡¢xpm¡¢gif¡¢ +bmp png ¤Î¤¤¤º¤ì¤«¤Ç¡¢Ê¸»úÈÖ¹æ ¤Ï +16 ¿Ê¿ô 4 ·å (0 ¤«¤é 9 ¤È a ¤«¤é +f) ¤Ç¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ejdict/16/narrow/a121.xbm
+ejdict/16/wide/a321.xbm
+
+
+ +

+ejdict/16/xbm/narrow ¤Ê¤É¤ÎÃæ´Ö¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¤â¤· +̵¤±¤ì¤Ð ebfont ¤¬À¸À®¤·¤Þ¤¹¡£ +

+ +

+--output-directory ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢ +ebfont ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë +²èÁü¥Õ¥¡¥¤¥ë¤ò½ÐÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤½¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢ebfont ¤ò¼Â¹Ô¤¹¤ëÁ°¤ËºîÀ®¤µ¤ì¤Æ +¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +

+ +
+
+% ebfont --output-directory ¥Ç¥£¥ì¥¯¥È¥ê ½ñÀҤؤΥѥ¹
+
+
+ + + +

²èÁü·Á¼°

+ +

+ebfont ¤Ï XBM, XPM, GIF89a, BMP, PNG ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤ò +À¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +²èÁü·Á¼°¤Ï --image-format (-i) ¥ª¥×¥·¥ç¥ó¤Ç +»ØÄꤷ¤Þ¤¹¡£ +--image-format ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢²èÁü·Á¼°¤Î̾Á°¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ebfont ¤Ï XPM ·Á¼°¤È +GIF ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebfont --image-format xpm,gif ½ñÀҤؤΥѥ¹
+
+
+ +

+--image-format ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont --image-format xpm --image-format gif ½ñÀҤؤΥѥ¹
+
+
+ +

+XPM, GIF, PNG ·Á¼°¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ (RGB ¤Î #000000) ¤Ë¡¢ +ÇØ·Ê¿§¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£ +BMP ·Á¼°¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¤Ë¡¢ÇØ·Ê¿§¤ÏÇò (RGB ¤Î #ffffff) ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebzip ¤Ï GIF ¤Î²èÁü¤òÀ¸À®¤¹¤ëºÝ¤Ë LZW °µ½Ì¥¢¥ë¥´¥ê¥º¥à¤ò +»È¤ï¤Ê¤¤¤¿¤á¡¢¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤ÏÁêÅöÂ礭¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ + +

¹â¤µ

+ +

+Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢ebfont ¤Ï¡¢È¾³Ñ¤ÈÁ´³Ñ¤½¤ì¤¾¤ì¤Ë¤Ä¤¤¤Æ¡¢ +¹â¤µ 16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +--font-height (-f) ¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢ +¾¤Î¹â¤µ¤Î¥Õ¥©¥ó¥È¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +--font-height ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢¥Õ¥©¥ó¥È¤Î¹â¤µ¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ï¡¢16¡¢24¡¢30¡¢ +48 ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ebfont ¤Ï¹â¤µ +16 ¥Ô¥¯¥»¥ë¤È 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebfont --font-height 16,24 ½ñÀҤؤΥѥ¹
+
+
+ +

+--font-height ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont --font-height 16 --font-height 24 ½ñÀҤؤΥѥ¹
+
+
+ + +

ÉûËÜ

+ +

+¤Ê¤Ë¤âÀßÄꤷ¤Ê¤¤¤È¡¢ebzip ¤Ï¤¹¤Ù¤Æ¤ÎÉûËÜ (subbook) ¤òÂÐ¾Ý¤Ë +¤·¤Æ²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¤¬¡¢--subbook (-S) +¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢»ØÄꤷ¤¿ÉûËܤβèÁü¥Õ¥¡¥¤¥ë¤À¤±¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+--subbook ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢¤¢¤Ê¤¿¤Î½êÍ­¤·¤Æ¤¤¤ë½ñÀÒ¤Ë +¤É¤Î¤è¤¦¤ÊÉûËܤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 3
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 3:
+  Âê̾: ¥Ý¥±¥Ã¥ÈÆÈϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: german
+  ¸¡º÷Êý¼°: ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢3 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï +english, french, german +¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È, ebfont ¤Ï english ¤È +french ¤Î²èÁü¥Õ¥¡¥¤¥ë¤À¤±¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebfont --subbook english,french /mnt/cdrom
+
+
+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¦¾®Ê¸»ú¤Î°ã¤¤¤Ï¡¢¶èÊ̤µ¤ì¤Þ¤»¤ó¡£ +--subbook ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont --subbook english --subbook french /mnt/cdrom
+
+
+ + +

ebfont ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebzip ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-d
+
--debug
+
--verbose
+
+¥Ç¥Ð¥Ã¥°ÍѤξðÊó¤ò¡¢É¸½à¥¨¥é¡¼½ÐÎϤ˽ÐÎϤ·¤Þ¤¹¡£ + +
-f ¹â¤µ
+
--font-height ¹â¤µ
+
+¹â¤µ¤¬ ¹â¤µ ¤Î³°»ú¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +¹â¤µ ¤Ï¡¢¹â¤µ¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀڤäÆʤ٤¿¤â¤Î¤Ç +¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¹â¤µ¤Î»ØÄê¤È¤·¤Æµö¤µ¤ì¤ë¤Î¤Ï¡¢16¡¢24¡¢ +30¡¢48 ¤Ç¤¹¡£ +»ØÄ꤬¤Ê¤±¤ì¤Ð¡¢ebfont ¤Ï¹â¤µ¤¬ 16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î¤â¤Î¤ò +À¸À®¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¹â¤µ¡×¤ò»²¾È¤Î¤³¤È¡£) + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-i ²èÁü·Á¼°
+
--image-format ²èÁü·Á¼°
+
+²èÁü·Á¼° ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +²èÁü·Á¼° ¤Ï¡¢²èÁü·Á¼°Ì¾¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤Ã¤Æ +ʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +Âбþ¤·¤Æ¤¤¤ë²èÁü·Á¼°¤Î̾Á°¤Ï xbm¡¢xpm¡¢ +gif¡¢bmp¡¢gif¡¢png +¤Ç¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢ebfont ¤Ï XBM ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤ò +À¸À®¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö²èÁü·Á¼°¡×¤ò»²¾È¤Î¤³¤È¡£) + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+²èÁü¥Õ¥¡¥¤¥ë¤ò ¥Ç¥£¥ì¥¯¥È¥ê °Ê²¼¤Ë½ÐÎϤ·¤Þ¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢ebfont ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê +(.) ¤Î²¼¤Ë²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Öebfont ¤Î¼Â¹Ô¡× +¤ò»²¾È¤Î¤³¤È¡£) + +
-S ÉûËÜ
+
--subbook ÉûËÜ
+
+ebfont ¤Ë¡¢¤É¤ÎÉûËܤγ°»ú¤òÀ¸À®¤µ¤»¤ë¤Î¤«¤ò»ØÄꤷ¤Þ¤¹¡£ +ÉûËÜ ¤Ï¡¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò¥«¥ó¥Þ (,) ¤Ç +¶èÀڤäÆʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉûËܤ¬À¸À®¤ÎÂоݤˤʤê¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡ÖÉûËܡפò»²¾È¤Î¤³¤È¡£) + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ + + diff --git a/lib/ebu/doc/ebfont-toc.html b/lib/ebu/doc/ebfont-toc.html new file mode 100644 index 0000000..3270ed9 --- /dev/null +++ b/lib/ebu/doc/ebfont-toc.html @@ -0,0 +1,11 @@ + diff --git a/lib/ebu/doc/ebfont.html b/lib/ebu/doc/ebfont.html new file mode 100644 index 0000000..dc20499 --- /dev/null +++ b/lib/ebu/doc/ebfont.html @@ -0,0 +1,48 @@ + + + + + + +ebfont ¥³¥Þ¥ó¥É + + + +

+[¼¡¤Ø] [Ìܼ¡] +

+
+

ebfont ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1998-2006 Motoyuki Kasahara +

+ + +
+

+[¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebfont.html.in b/lib/ebu/doc/ebfont.html.in new file mode 100644 index 0000000..6eb4c92 --- /dev/null +++ b/lib/ebu/doc/ebfont.html.in @@ -0,0 +1,387 @@ + + + + + + +ebfont ¥³¥Þ¥ó¥É + + + +

ebfont ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó + +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1998-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+ebfont ¥³¥Þ¥ó¥É¤Ï¡¢CD-ROM ½ñÀҤγ°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò +Æɤ߹þ¤ß¡¢¤½¤ì¤ò»ØÄꤵ¤ì¤¿²èÁü·Á¼°¤ËÊÑ´¹¤·¡¢¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤·¤Þ¤¹¡£ +ebfont ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤Ë +ÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ + +

³°»ú¤È¤Ï

+ +

+CD-ROM ½ñÀҤο¤¯¤Ï¡¢½ñÀÒ¸ÇÍ­¤Îʸ»ú¡¢³°»ú (local characters) ¤òÄêµÁ¤·¤Æ +¤¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢CD-ROM ½ñÀҤ˻Ȥï¤ì¤ëʸ»ú¥»¥Ã¥È¤Ïȯ²»µ­¹æ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤¿¤á¡¢ +±Ñϼ­½ñ¤ÎÃæ¤Ë¤Ïȯ²»µ­¹æ¤òÄêµÁ¤·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀҤϡ¢³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤â»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +ebfont ¥³¥Þ¥ó¥É¤Ï¡¢CD-ROM ½ñÀҤΥӥåȥޥåץǡ¼¥¿¤òÆɤߡ¢ +¤½¤ì¤ò»ØÄꤵ¤ì¤¿²èÁü·Á¼°¤ËÊÑ´¹¤·¡¢¥Õ¥¡¥¤¥ë¤Ë½ñ¤­½Ð¤·¤Þ¤¹¡£ +ebfont ¤Ï¡¢XBM¡¢XPM¡¢GIF¡¢BMP¡¢PNG ¤Î¤¦¤Á¤Î¤¤¤º¤ì¤«¡¢ +¤Þ¤¿¤ÏÊ£¿ô¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢XBM ·Á¼°¤¬ÁªÂò¤µ¤ì¤Þ¤¹¡£ +

+ +

+³°»ú¤Ï¡¢È¾³Ñ (narrow) ¤È Á´³Ñ +(wide) ¤Î 2 ¼ïÎà¤ËʬÎव¤ì¤Þ¤¹¡£ +Ⱦ³Ñ¤Îʸ»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Ç¤Ï¡¢¹â¤µ¤ÏÉý¤ÎÌóȾʬ¤Ç¤¹¡£ +Á´³Ñ¤Îʸ»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤Ç¤Ï¡¢¹â¤µ¤ÈÉý¤Ï¤Û¤ÜƱ¤¸¤Ç¤¹¡£ +CD-ROM ½ñÀҤϡ¢°ìºý¤ÎÃæ¤ËξÊý¤Î¼ïÎà¤Î³°»ú¤òÄêµÁ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¡¢ +ebfont ¤ÏξÊý¤Î¼ïÎà¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒ¤ÎÆâÉô·Á¼°¤Î»ÅÍͽñ¤Ç¤Ï¡¢È¾³Ñ¤ÈÁ´³Ñ¤ÎξÊý¤Î³°»ú¤ËÂФ·¤Æ +4 ¼ïÎà¤Î¥µ¥¤¥º¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +³°»ú¤ÎÉý¡¢¹â¤µ¡¢¥µ¥¤¥º¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ + + + + + + +
¹â¤µ Ⱦ³Ñ Á´³Ñ
16 8x16 16x16
24 16x24 24x24
30 16x30 32x30
48 24x48 48x48
+ +

+Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢ebfont ¤Ï¹â¤µ¤¬ 16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î +²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ + +

ebfont ¤Î¼Â¹Ô

+ +

+ebfont ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebfont ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¥Ñ¥¹¤Ï¡¢¥í¡¼¥«¥ë¤Ê¥Ñ¥¹ (Îã: /mnt/dict) ¤Ç¤â±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò +(Îã: ebnet://localhost/dict) ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont
+
+
+ +

+¤³¤Î¾ì¹ç¡¢ebfont ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤Ë²èÁü¥Õ¥¡¥¤¥ë¤ò +À¸À®¤·¤Þ¤¹¡£ +¤³¤Î¤È¤­¡¢¥Õ¥¡¥¤¥ë̾¤Î°ìÈÌ·Á¼°¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+ÉûËÜ/¹â¤µ/narrow/ʸ»úÈÖ¹æ.³ÈÄ¥»Ò
+ÉûËÜ/¹â¤µ/wide/ʸ»úÈÖ¹æ.³ÈÄ¥»Ò
+
+
+ +

+³ÈÄ¥»Ò ¤Ï xbm¡¢xpm¡¢gif¡¢ +bmp png ¤Î¤¤¤º¤ì¤«¤Ç¡¢Ê¸»úÈÖ¹æ ¤Ï +16 ¿Ê¿ô 4 ·å (0 ¤«¤é 9 ¤È a ¤«¤é +f) ¤Ç¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ejdict/16/narrow/a121.xbm
+ejdict/16/wide/a321.xbm
+
+
+ +

+ejdict/16/xbm/narrow ¤Ê¤É¤ÎÃæ´Ö¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢¤â¤· +̵¤±¤ì¤Ð ebfont ¤¬À¸À®¤·¤Þ¤¹¡£ +

+ +

+--output-directory ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¡¢ +ebfont ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë +²èÁü¥Õ¥¡¥¤¥ë¤ò½ÐÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¤½¤Î¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢ebfont ¤ò¼Â¹Ô¤¹¤ëÁ°¤ËºîÀ®¤µ¤ì¤Æ +¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +

+ +
+
+% ebfont --output-directory ¥Ç¥£¥ì¥¯¥È¥ê ½ñÀҤؤΥѥ¹
+
+
+ + + +

²èÁü·Á¼°

+ +

+ebfont ¤Ï XBM, XPM, GIF89a, BMP, PNG ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤ò +À¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +²èÁü·Á¼°¤Ï --image-format (-i) ¥ª¥×¥·¥ç¥ó¤Ç +»ØÄꤷ¤Þ¤¹¡£ +--image-format ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢²èÁü·Á¼°¤Î̾Á°¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ebfont ¤Ï XPM ·Á¼°¤È +GIF ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebfont --image-format xpm,gif ½ñÀҤؤΥѥ¹
+
+
+ +

+--image-format ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont --image-format xpm --image-format gif ½ñÀҤؤΥѥ¹
+
+
+ +

+XPM, GIF, PNG ·Á¼°¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ (RGB ¤Î #000000) ¤Ë¡¢ +ÇØ·Ê¿§¤ÏÆ©ÌÀ¤Ë¤Ê¤ê¤Þ¤¹¡£ +BMP ·Á¼°¤Ç¤Ï¡¢Á°·Ê¿§¤Ï¹õ¤Ë¡¢ÇØ·Ê¿§¤ÏÇò (RGB ¤Î #ffffff) ¤Ë +¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebzip ¤Ï GIF ¤Î²èÁü¤òÀ¸À®¤¹¤ëºÝ¤Ë LZW °µ½Ì¥¢¥ë¥´¥ê¥º¥à¤ò +»È¤ï¤Ê¤¤¤¿¤á¡¢¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤ÏÁêÅöÂ礭¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ + +

¹â¤µ

+ +

+Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢ebfont ¤Ï¡¢È¾³Ñ¤ÈÁ´³Ñ¤½¤ì¤¾¤ì¤Ë¤Ä¤¤¤Æ¡¢ +¹â¤µ 16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +--font-height (-f) ¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢ +¾¤Î¹â¤µ¤Î¥Õ¥©¥ó¥È¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +--font-height ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢¥Õ¥©¥ó¥È¤Î¹â¤µ¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +¥Õ¥©¥ó¥È¤Î¹â¤µ¤Ï¡¢16¡¢24¡¢30¡¢ +48 ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +¤¿¤È¤¨¤Ð¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ebfont ¤Ï¹â¤µ +16 ¥Ô¥¯¥»¥ë¤È 24 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebfont --font-height 16,24 ½ñÀҤؤΥѥ¹
+
+
+ +

+--font-height ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont --font-height 16 --font-height 24 ½ñÀҤؤΥѥ¹
+
+
+ + +

ÉûËÜ

+ +

+¤Ê¤Ë¤âÀßÄꤷ¤Ê¤¤¤È¡¢ebzip ¤Ï¤¹¤Ù¤Æ¤ÎÉûËÜ (subbook) ¤òÂÐ¾Ý¤Ë +¤·¤Æ²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¤¬¡¢--subbook (-S) +¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¡¢»ØÄꤷ¤¿ÉûËܤβèÁü¥Õ¥¡¥¤¥ë¤À¤±¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +

+--subbook ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢¤¢¤Ê¤¿¤Î½êÍ­¤·¤Æ¤¤¤ë½ñÀÒ¤Ë +¤É¤Î¤è¤¦¤ÊÉûËܤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 3
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 3:
+  Âê̾: ¥Ý¥±¥Ã¥ÈÆÈϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: german
+  ¸¡º÷Êý¼°: ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢3 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï +english, french, german +¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È, ebfont ¤Ï english ¤È +french ¤Î²èÁü¥Õ¥¡¥¤¥ë¤À¤±¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebfont --subbook english,french /mnt/cdrom
+
+
+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¦¾®Ê¸»ú¤Î°ã¤¤¤Ï¡¢¶èÊ̤µ¤ì¤Þ¤»¤ó¡£ +--subbook ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebfont --subbook english --subbook french /mnt/cdrom
+
+
+ + +

ebfont ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebzip ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-d
+
--debug
+
--verbose
+
+¥Ç¥Ð¥Ã¥°ÍѤξðÊó¤ò¡¢É¸½à¥¨¥é¡¼½ÐÎϤ˽ÐÎϤ·¤Þ¤¹¡£ + +
-f ¹â¤µ
+
--font-height ¹â¤µ
+
+¹â¤µ¤¬ ¹â¤µ ¤Î³°»ú¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +¹â¤µ ¤Ï¡¢¹â¤µ¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀڤäÆʤ٤¿¤â¤Î¤Ç +¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +¹â¤µ¤Î»ØÄê¤È¤·¤Æµö¤µ¤ì¤ë¤Î¤Ï¡¢16¡¢24¡¢ +30¡¢48 ¤Ç¤¹¡£ +»ØÄ꤬¤Ê¤±¤ì¤Ð¡¢ebfont ¤Ï¹â¤µ¤¬ 16 ¥Ô¥¯¥»¥ë¤Î¥Õ¥©¥ó¥È¤Î¤â¤Î¤ò +À¸À®¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¹â¤µ¡×¤ò»²¾È¤Î¤³¤È¡£) + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-i ²èÁü·Á¼°
+
--image-format ²èÁü·Á¼°
+
+²èÁü·Á¼° ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +²èÁü·Á¼° ¤Ï¡¢²èÁü·Á¼°Ì¾¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤Ã¤Æ +ʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +Âбþ¤·¤Æ¤¤¤ë²èÁü·Á¼°¤Î̾Á°¤Ï xbm¡¢xpm¡¢ +gif¡¢bmp¡¢gif¡¢png +¤Ç¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢ebfont ¤Ï XBM ·Á¼°¤Î²èÁü¥Õ¥¡¥¤¥ë¤ò +À¸À®¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö²èÁü·Á¼°¡×¤ò»²¾È¤Î¤³¤È¡£) + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+²èÁü¥Õ¥¡¥¤¥ë¤ò ¥Ç¥£¥ì¥¯¥È¥ê °Ê²¼¤Ë½ÐÎϤ·¤Þ¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢ebfont ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê +(.) ¤Î²¼¤Ë²èÁü¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Öebfont ¤Î¼Â¹Ô¡× +¤ò»²¾È¤Î¤³¤È¡£) + +
-S ÉûËÜ
+
--subbook ÉûËÜ
+
+ebfont ¤Ë¡¢¤É¤ÎÉûËܤγ°»ú¤òÀ¸À®¤µ¤»¤ë¤Î¤«¤ò»ØÄꤷ¤Þ¤¹¡£ +ÉûËÜ ¤Ï¡¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò¥«¥ó¥Þ (,) ¤Ç +¶èÀڤäÆʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉûËܤ¬À¸À®¤ÎÂоݤˤʤê¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡ÖÉûËܡפò»²¾È¤Î¤³¤È¡£) + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ + + diff --git a/lib/ebu/doc/ebinfo-01.html b/lib/ebu/doc/ebinfo-01.html new file mode 100644 index 0000000..02748e5 --- /dev/null +++ b/lib/ebu/doc/ebinfo-01.html @@ -0,0 +1,29 @@ + + + + + + +ebinfo ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¤Ï¤¸¤á¤Ë

+ +

+ebinfo ¥³¥Þ¥ó¥É¤Ï CD-ROM ½ñÀҤ˴ؤ¹¤ëÍÍ¡¹¤Ê¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ +ebinfo ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤ËÇÛÉÛ +¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebinfo-02.html b/lib/ebu/doc/ebinfo-02.html new file mode 100644 index 0000000..7ae6404 --- /dev/null +++ b/lib/ebu/doc/ebinfo-02.html @@ -0,0 +1,111 @@ + + + + + + +ebinfo ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

ebinfo ¤Î¼Â¹Ô

+ +

+ebinfo ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebinfo ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¥Ñ¥¹¤Ï¡¢¥í¡¼¥«¥ë¤Ê¥Ñ¥¹ (Îã: /mnt/dict) ¤Ç¤â±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò +(Îã: ebnet://localhost/dict) ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo
+
+
+ +

+¤³¤Î¾ì¹ç¡¢ebinfo ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤¬ +»ØÄꤵ¤ì¤¿¤â¤Î¤ÈȽÃǤ·¤Þ¤¹¡£ +ebinfo ¤Ï»ØÄꤵ¤ì¤¿½ñÀҤ˴ؤ¹¤ë¾ðÊó¤ò¡¢¼¡¤Î¤è¤¦¤Ê´¶¤¸¤Ç½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ  1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: ejdict
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ  2:
+  Âê̾: ¤³¤Î½ñÀҤλȤ¤Êý
+  ¥Ç¥£¥ì¥¯¥È¥ê: howto
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+ÉûËÜ (subbook) ¤¬Ê£¹ç¸¡º÷ (multi-search) ¤ËÂбþ¤·¤Æ¤¤¤ë¾ì¹ç¡¢ +--multi-search (¤Þ¤¿¤Ï -m) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ +ebinfo ¤ÏÊ£¹ç¸¡º÷¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ê¾ðÊó¤â¹ç¤ï¤»¤Æ½ÐÎϤ·¤Þ¤¹¡£ +Ê£¹ç¸¡º÷¤Ë´Ø¤¹¤ë¾ðÊó¤Ï¡¢¼¡¤Î¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+  Ê£¹ç¸¡º÷ 1:
+    ¥é¥Ù¥ë 1: ¹ñ¤Þ¤¿¤ÏÃÏ°è
+    ¸õÊä: Í­
+    ¥é¥Ù¥ë 2: »þ´ü
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 3: ¥«¥Æ¥´¥ê
+      ¸õÊä: Í­
+    ¥é¥Ù¥ë 4: ½Ðŵ
+      ¸õÊä: ̵
+  Ê£¹ç¸¡º÷ 2:
+    ¥é¥Ù¥ë 1: Ãø¼Ô
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 2: Âê̾
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 3: ÆüÉÕ
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 4: ½ÐÈǼÒ
+      ¸õÊä: ̵
+
+
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebinfo-03.html b/lib/ebu/doc/ebinfo-03.html new file mode 100644 index 0000000..777c0a9 --- /dev/null +++ b/lib/ebu/doc/ebinfo-03.html @@ -0,0 +1,115 @@ + + + + + + +ebinfo ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

½ÐÎϤµ¤ì¤ë¾ðÊó¤Î¾ÜºÙ¤Ä¤¤¤Æ

+ +

+¤³¤ÎÀá¤Ç¤Ï¡¢ebinfo ¤¬½ÐÎϤ¹¤ë¾ðÊó¤Î¾ÜºÙ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ +
+
disc type:
+
+¤½¤Î½ñÀҤηÁ¼°¡£EB/EBG/EBXA/EBXA-C/S-EBXA ¤Þ¤¿¤Ï EPWING ¤Ç¤¹¡£ + +
character code:
+
+¤½¤Î½ñÀҤǻÈÍѤµ¤ì¤Æ¤¤¤ëʸ»ú¥³¡¼¡£ISO 8859-1 ¤Þ¤¿¤Ï JIS X 0208 ¤Ç¤¹¡£ + +
the number of subbooks:
+
+¤½¤Î½ñÀҤ˼ýÏ¿¤µ¤ì¤Æ¤¤¤ëÉûËÜ (subbbok) ¤Î¿ô¡£ +
+ +

+²Ã¤¨¤Æ¡¢¤½¤Î½ñÀҤΤ½¤ì¤¾¤ì¤ÎÉûËܤˤĤ¤¤Æ¡¢°Ê²¼¤Î¾ðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ +

+ +
+
title:
+
+ÉûËܤÎÂê̾¡£ +½ñÀÒ¤¬ JIS X 0208 ¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤È¤­¤Ï¡¢Âê̾¤Ï EUC (Extended UNIX Code) +¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£ + +
directory:
+
+¤½¤ÎÉûËܤ˴ØÏ¢¤¹¤ë¥Õ¥¡¥¤¥ë¤¬ÃÖ¤«¤ì¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î̾Á°¡£ +±Ñ¾®Ê¸»ú¤ÏÂçʸ»ú¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ + +
search methods:
+
+ÉûËܤ¬Âбþ¤·¤Æ¤¤¤ë¸¡º÷ÊýË¡¤Î°ìÍ÷¡£ +¤³¤Î°ìÍ÷¤Ï¡¢°Ê²¼¤Ëµ­¤·¤¿¸¡º÷ÊýË¡¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´Éô¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ + +
+
copyright
+
+Ãøºî¸¢É½¼¨ (copyright notice)¡£ +¸·Ì©¤Ë¸À¤¨¤Ð¡¢¤³¤ì¤Ï¸¡º÷ÊýË¡¤Ç¤Ï¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢CD-ROM ½ñÀÒ¤ÎÆâÉô·Á¼°¤Î +´Ø·¸¤«¤é¡¢É½¼¨¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ + +
word
+
+Á°Êý°ìÃ׸¡º÷ (Word search)¡£ + +
endword
+
+¸åÊý°ìÃ׸¡º÷ (Endword search)¡£ + +
keyword
+
+¾ò·ï¸¡º÷ (Keyword search)¡£ + +
cross
+
+¥¯¥í¥¹¸¡º÷ (Keyword search)¡£ + +
multi
+
+Ê£¹ç¸¡º÷ (Multi search)¡£ + +
menu
+
+¥á¥Ë¥å¡¼¸¡º÷ (Menu search). + +
graphic
+
+¥°¥é¥Õ¥£¥Ã¥¯¸¡º÷ (Graphic search). + +
+ +

+ÉûËܤ¬»ý¤Ä¡¢¥Õ¥©¥ó¥È¤Î¥µ¥¤¥º¤Î°ìÍ÷¡£ +¤³¤Î°ìÍ÷¤Ë¤Ï¡¢16, 24, 30, 48 ¤È¤¤¤¦ 4 ¤Ä¤Î¥µ¥¤¥º¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´Éô¤«¤é +¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñʸ»ú¤Îʸ»úÈÖ¹æ¤ÎÈÏ°Ï¡£ +

+ +

+ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëÁ´³Ñʸ»ú¤Îʸ»úÈÖ¹æ¤ÎÈÏ°Ï¡£ +

+ +
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebinfo-04.html b/lib/ebu/doc/ebinfo-04.html new file mode 100644 index 0000000..36e916e --- /dev/null +++ b/lib/ebu/doc/ebinfo-04.html @@ -0,0 +1,81 @@ + + + + + + +ebinfo ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

EBNET ¥µ¡¼¥Ð¤Î½ñÀÒ°ìÍ÷

+ +

+Ä̾ï¤Î½ÐÎϤÎÂå¤ï¤ê¤Ë¡¢ebinfo ¤Ï EBNET ¥µ¡¼¥Ð¤¬¸ø³«¤·¤Æ¤¤¤ë +½ñÀҤΰìÍ÷¤ò½ÐÎϤ¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¤Î¥³¥Þ¥ó¥É¹Ô¤Î³µÍפϡ¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+% ebinfo --book-list ±ó³Ö¥µ¡¼¥Ð¼±ÊÌ»Ò
+
+
+ +

+¤³¤³¤Ç¡¢±ó³Ö¥µ¡¼¥Ð¼±ÊÌ»Ò ¤Ï¡¢½ñÀÒ̾¤ò´Þ¤Þ¤Ê¤¤±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò +¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ +

+ +
+
+% ebinfo --book-list ebnet://dict.example.com
+̾Á°             Âê̾
+encycl           ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ
+encycl.app       ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ (appendix)
+crossword        ¥¯¥í¥¹¥ï¡¼¥É¥Ñ¥º¥ë¼­Åµ
+travel           ¥ï¡¼¥ë¥É¥È¥é¥Ù¥ë¥¬¥¤¥É
+
+
+ +

+¡Ö̾Á°¡×¤ÎËöÈø¤Ë .app ¤¬ÉÕ¤¤¤Æ¤¤¤ë¤â¤Î¤Ï appendix (ÉÕÏ¿)¡¢ +¤½¤ì°Ê³°¤Ï½ñÀÒËÜÂΤǤ¹¡£ +¤¿¤À¤·¡¢¤½¤Î¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Ê¤¤½ñÀÒ¤ä appendix ¤Ï +½ÐÎϤµ¤ì¤Þ¤»¤ó¡£ +

+ +

+³¤±¤Æ¡¢¤³¤ÎÃæ¤Î encycl ¤È¤¤¤¦½ñÀҤξðÊó¤ò¸«¤ë¤Ë¤Ï¡¢¼¡¤Î +¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebinfo ebnet://dict.example.com/cncyclopedia
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 1
+
+ÉûËÜ 1:
+  Âê̾: ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ
+  ¥Ç¥£¥ì¥¯¥È¥ê: brown
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï Ê£¹ç ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa452
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa452
+
+
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebinfo-05.html b/lib/ebu/doc/ebinfo-05.html new file mode 100644 index 0000000..900da0d --- /dev/null +++ b/lib/ebu/doc/ebinfo-05.html @@ -0,0 +1,53 @@ + + + + + + +ebinfo ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [Ìܼ¡] +

+
+

ebinfo ¤Î¥ª¥×¥·¥ç¥ó

+ +

+ebinfo ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-l
+
--book-list
+
+Ä̾ï¤Î½ÐÎϤÎÂå¤ï¤ê¤Ë¡¢EBNET ¥µ¡¼¥Ð¤¬¸ø³«¤·¤Æ¤¤¤ë½ñÀҤΰìÍ÷¤ò½ÐÎϤ·¤Þ¤¹¡£ +¥³¥Þ¥ó¥É¹Ô°ú¿ô book-path ¤Ï±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤǤʤ±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ + +
-m
+
--multi-search
+
+Ê£¹ç¸¡º÷ (multi search) ¤Ë´Ø¤¹¤ë¾ðÊó¤â¡¢¹ç¤ï¤»¤Æ½ÐÎϤ·¤Þ¤¹¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ +
+

+[Á°¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebinfo-cat.html b/lib/ebu/doc/ebinfo-cat.html new file mode 100644 index 0000000..1fb6e23 --- /dev/null +++ b/lib/ebu/doc/ebinfo-cat.html @@ -0,0 +1,325 @@ + + + + + + +ebinfo ¥³¥Þ¥ó¥É + + + +

ebinfo ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1997-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+ebinfo ¥³¥Þ¥ó¥É¤Ï CD-ROM ½ñÀҤ˴ؤ¹¤ëÍÍ¡¹¤Ê¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ +ebinfo ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤ËÇÛÉÛ +¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ + +

ebinfo ¤Î¼Â¹Ô

+ +

+ebinfo ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebinfo ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¥Ñ¥¹¤Ï¡¢¥í¡¼¥«¥ë¤Ê¥Ñ¥¹ (Îã: /mnt/dict) ¤Ç¤â±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò +(Îã: ebnet://localhost/dict) ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo
+
+
+ +

+¤³¤Î¾ì¹ç¡¢ebinfo ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤¬ +»ØÄꤵ¤ì¤¿¤â¤Î¤ÈȽÃǤ·¤Þ¤¹¡£ +ebinfo ¤Ï»ØÄꤵ¤ì¤¿½ñÀҤ˴ؤ¹¤ë¾ðÊó¤ò¡¢¼¡¤Î¤è¤¦¤Ê´¶¤¸¤Ç½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ  1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: ejdict
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ  2:
+  Âê̾: ¤³¤Î½ñÀҤλȤ¤Êý
+  ¥Ç¥£¥ì¥¯¥È¥ê: howto
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+ÉûËÜ (subbook) ¤¬Ê£¹ç¸¡º÷ (multi-search) ¤ËÂбþ¤·¤Æ¤¤¤ë¾ì¹ç¡¢ +--multi-search (¤Þ¤¿¤Ï -m) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ +ebinfo ¤ÏÊ£¹ç¸¡º÷¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ê¾ðÊó¤â¹ç¤ï¤»¤Æ½ÐÎϤ·¤Þ¤¹¡£ +Ê£¹ç¸¡º÷¤Ë´Ø¤¹¤ë¾ðÊó¤Ï¡¢¼¡¤Î¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+  Ê£¹ç¸¡º÷ 1:
+    ¥é¥Ù¥ë 1: ¹ñ¤Þ¤¿¤ÏÃÏ°è
+    ¸õÊä: Í­
+    ¥é¥Ù¥ë 2: »þ´ü
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 3: ¥«¥Æ¥´¥ê
+      ¸õÊä: Í­
+    ¥é¥Ù¥ë 4: ½Ðŵ
+      ¸õÊä: ̵
+  Ê£¹ç¸¡º÷ 2:
+    ¥é¥Ù¥ë 1: Ãø¼Ô
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 2: Âê̾
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 3: ÆüÉÕ
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 4: ½ÐÈǼÒ
+      ¸õÊä: ̵
+
+
+ + +

½ÐÎϤµ¤ì¤ë¾ðÊó¤Î¾ÜºÙ¤Ä¤¤¤Æ

+ +

+¤³¤ÎÀá¤Ç¤Ï¡¢ebinfo ¤¬½ÐÎϤ¹¤ë¾ðÊó¤Î¾ÜºÙ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ +
+
disc type:
+
+¤½¤Î½ñÀҤηÁ¼°¡£EB/EBG/EBXA/EBXA-C/S-EBXA ¤Þ¤¿¤Ï EPWING ¤Ç¤¹¡£ + +
character code:
+
+¤½¤Î½ñÀҤǻÈÍѤµ¤ì¤Æ¤¤¤ëʸ»ú¥³¡¼¡£ISO 8859-1 ¤Þ¤¿¤Ï JIS X 0208 ¤Ç¤¹¡£ + +
the number of subbooks:
+
+¤½¤Î½ñÀҤ˼ýÏ¿¤µ¤ì¤Æ¤¤¤ëÉûËÜ (subbbok) ¤Î¿ô¡£ +
+ +

+²Ã¤¨¤Æ¡¢¤½¤Î½ñÀҤΤ½¤ì¤¾¤ì¤ÎÉûËܤˤĤ¤¤Æ¡¢°Ê²¼¤Î¾ðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ +

+ +
+
title:
+
+ÉûËܤÎÂê̾¡£ +½ñÀÒ¤¬ JIS X 0208 ¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤È¤­¤Ï¡¢Âê̾¤Ï EUC (Extended UNIX Code) +¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£ + +
directory:
+
+¤½¤ÎÉûËܤ˴ØÏ¢¤¹¤ë¥Õ¥¡¥¤¥ë¤¬ÃÖ¤«¤ì¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î̾Á°¡£ +±Ñ¾®Ê¸»ú¤ÏÂçʸ»ú¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ + +
search methods:
+
+ÉûËܤ¬Âбþ¤·¤Æ¤¤¤ë¸¡º÷ÊýË¡¤Î°ìÍ÷¡£ +¤³¤Î°ìÍ÷¤Ï¡¢°Ê²¼¤Ëµ­¤·¤¿¸¡º÷ÊýË¡¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´Éô¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ + +
+
copyright
+
+Ãøºî¸¢É½¼¨ (copyright notice)¡£ +¸·Ì©¤Ë¸À¤¨¤Ð¡¢¤³¤ì¤Ï¸¡º÷ÊýË¡¤Ç¤Ï¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢CD-ROM ½ñÀÒ¤ÎÆâÉô·Á¼°¤Î +´Ø·¸¤«¤é¡¢É½¼¨¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ + +
word
+
+Á°Êý°ìÃ׸¡º÷ (Word search)¡£ + +
endword
+
+¸åÊý°ìÃ׸¡º÷ (Endword search)¡£ + +
keyword
+
+¾ò·ï¸¡º÷ (Keyword search)¡£ + +
cross
+
+¥¯¥í¥¹¸¡º÷ (Keyword search)¡£ + +
multi
+
+Ê£¹ç¸¡º÷ (Multi search)¡£ + +
menu
+
+¥á¥Ë¥å¡¼¸¡º÷ (Menu search). + +
graphic
+
+¥°¥é¥Õ¥£¥Ã¥¯¸¡º÷ (Graphic search). + +
+ +

+ÉûËܤ¬»ý¤Ä¡¢¥Õ¥©¥ó¥È¤Î¥µ¥¤¥º¤Î°ìÍ÷¡£ +¤³¤Î°ìÍ÷¤Ë¤Ï¡¢16, 24, 30, 48 ¤È¤¤¤¦ 4 ¤Ä¤Î¥µ¥¤¥º¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´Éô¤«¤é +¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñʸ»ú¤Îʸ»úÈÖ¹æ¤ÎÈÏ°Ï¡£ +

+ +

+ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëÁ´³Ñʸ»ú¤Îʸ»úÈÖ¹æ¤ÎÈÏ°Ï¡£ +

+ +
+ + +

EBNET ¥µ¡¼¥Ð¤Î½ñÀÒ°ìÍ÷

+ +

+Ä̾ï¤Î½ÐÎϤÎÂå¤ï¤ê¤Ë¡¢ebinfo ¤Ï EBNET ¥µ¡¼¥Ð¤¬¸ø³«¤·¤Æ¤¤¤ë +½ñÀҤΰìÍ÷¤ò½ÐÎϤ¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¤Î¥³¥Þ¥ó¥É¹Ô¤Î³µÍפϡ¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+% ebinfo --book-list ±ó³Ö¥µ¡¼¥Ð¼±ÊÌ»Ò
+
+
+ +

+¤³¤³¤Ç¡¢±ó³Ö¥µ¡¼¥Ð¼±ÊÌ»Ò ¤Ï¡¢½ñÀÒ̾¤ò´Þ¤Þ¤Ê¤¤±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò +¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ +

+ +
+
+% ebinfo --book-list ebnet://dict.example.com
+̾Á°             Âê̾
+encycl           ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ
+encycl.app       ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ (appendix)
+crossword        ¥¯¥í¥¹¥ï¡¼¥É¥Ñ¥º¥ë¼­Åµ
+travel           ¥ï¡¼¥ë¥É¥È¥é¥Ù¥ë¥¬¥¤¥É
+
+
+ +

+¡Ö̾Á°¡×¤ÎËöÈø¤Ë .app ¤¬ÉÕ¤¤¤Æ¤¤¤ë¤â¤Î¤Ï appendix (ÉÕÏ¿)¡¢ +¤½¤ì°Ê³°¤Ï½ñÀÒËÜÂΤǤ¹¡£ +¤¿¤À¤·¡¢¤½¤Î¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Ê¤¤½ñÀÒ¤ä appendix ¤Ï +½ÐÎϤµ¤ì¤Þ¤»¤ó¡£ +

+ +

+³¤±¤Æ¡¢¤³¤ÎÃæ¤Î encycl ¤È¤¤¤¦½ñÀҤξðÊó¤ò¸«¤ë¤Ë¤Ï¡¢¼¡¤Î +¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebinfo ebnet://dict.example.com/cncyclopedia
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 1
+
+ÉûËÜ 1:
+  Âê̾: ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ
+  ¥Ç¥£¥ì¥¯¥È¥ê: brown
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï Ê£¹ç ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa452
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa452
+
+
+ + +

ebinfo ¤Î¥ª¥×¥·¥ç¥ó

+ +

+ebinfo ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-l
+
--book-list
+
+Ä̾ï¤Î½ÐÎϤÎÂå¤ï¤ê¤Ë¡¢EBNET ¥µ¡¼¥Ð¤¬¸ø³«¤·¤Æ¤¤¤ë½ñÀҤΰìÍ÷¤ò½ÐÎϤ·¤Þ¤¹¡£ +¥³¥Þ¥ó¥É¹Ô°ú¿ô book-path ¤Ï±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤǤʤ±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ + +
-m
+
--multi-search
+
+Ê£¹ç¸¡º÷ (multi search) ¤Ë´Ø¤¹¤ë¾ðÊó¤â¡¢¹ç¤ï¤»¤Æ½ÐÎϤ·¤Þ¤¹¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ + + diff --git a/lib/ebu/doc/ebinfo-toc.html b/lib/ebu/doc/ebinfo-toc.html new file mode 100644 index 0000000..e9c15af --- /dev/null +++ b/lib/ebu/doc/ebinfo-toc.html @@ -0,0 +1,7 @@ + diff --git a/lib/ebu/doc/ebinfo.html b/lib/ebu/doc/ebinfo.html new file mode 100644 index 0000000..0073fa8 --- /dev/null +++ b/lib/ebu/doc/ebinfo.html @@ -0,0 +1,44 @@ + + + + + + +ebinfo ¥³¥Þ¥ó¥É + + + +

+[¼¡¤Ø] [Ìܼ¡] +

+
+

ebinfo ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1997-2006 Motoyuki Kasahara +

+ + +
+

+[¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebinfo.html.in b/lib/ebu/doc/ebinfo.html.in new file mode 100644 index 0000000..a8144d2 --- /dev/null +++ b/lib/ebu/doc/ebinfo.html.in @@ -0,0 +1,319 @@ + + + + + + +ebinfo ¥³¥Þ¥ó¥É + + + +

ebinfo ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó + +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1997-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+ebinfo ¥³¥Þ¥ó¥É¤Ï CD-ROM ½ñÀҤ˴ؤ¹¤ëÍÍ¡¹¤Ê¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ +ebinfo ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤ËÇÛÉÛ +¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ + +

ebinfo ¤Î¼Â¹Ô

+ +

+ebinfo ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebinfo ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¥Ñ¥¹¤Ï¡¢¥í¡¼¥«¥ë¤Ê¥Ñ¥¹ (Îã: /mnt/dict) ¤Ç¤â±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò +(Îã: ebnet://localhost/dict) ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo
+
+
+ +

+¤³¤Î¾ì¹ç¡¢ebinfo ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤¬ +»ØÄꤵ¤ì¤¿¤â¤Î¤ÈȽÃǤ·¤Þ¤¹¡£ +ebinfo ¤Ï»ØÄꤵ¤ì¤¿½ñÀҤ˴ؤ¹¤ë¾ðÊó¤ò¡¢¼¡¤Î¤è¤¦¤Ê´¶¤¸¤Ç½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ  1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: ejdict
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ  2:
+  Âê̾: ¤³¤Î½ñÀҤλȤ¤Êý
+  ¥Ç¥£¥ì¥¯¥È¥ê: howto
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼ 
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+ÉûËÜ (subbook) ¤¬Ê£¹ç¸¡º÷ (multi-search) ¤ËÂбþ¤·¤Æ¤¤¤ë¾ì¹ç¡¢ +--multi-search (¤Þ¤¿¤Ï -m) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ +ebinfo ¤ÏÊ£¹ç¸¡º÷¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ê¾ðÊó¤â¹ç¤ï¤»¤Æ½ÐÎϤ·¤Þ¤¹¡£ +Ê£¹ç¸¡º÷¤Ë´Ø¤¹¤ë¾ðÊó¤Ï¡¢¼¡¤Î¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+  Ê£¹ç¸¡º÷ 1:
+    ¥é¥Ù¥ë 1: ¹ñ¤Þ¤¿¤ÏÃÏ°è
+    ¸õÊä: Í­
+    ¥é¥Ù¥ë 2: »þ´ü
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 3: ¥«¥Æ¥´¥ê
+      ¸õÊä: Í­
+    ¥é¥Ù¥ë 4: ½Ðŵ
+      ¸õÊä: ̵
+  Ê£¹ç¸¡º÷ 2:
+    ¥é¥Ù¥ë 1: Ãø¼Ô
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 2: Âê̾
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 3: ÆüÉÕ
+      ¸õÊä: ̵
+    ¥é¥Ù¥ë 4: ½ÐÈǼÒ
+      ¸õÊä: ̵
+
+
+ + +

½ÐÎϤµ¤ì¤ë¾ðÊó¤Î¾ÜºÙ¤Ä¤¤¤Æ

+ +

+¤³¤ÎÀá¤Ç¤Ï¡¢ebinfo ¤¬½ÐÎϤ¹¤ë¾ðÊó¤Î¾ÜºÙ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +

+ +
+
disc type:
+
+¤½¤Î½ñÀҤηÁ¼°¡£EB/EBG/EBXA/EBXA-C/S-EBXA ¤Þ¤¿¤Ï EPWING ¤Ç¤¹¡£ + +
character code:
+
+¤½¤Î½ñÀҤǻÈÍѤµ¤ì¤Æ¤¤¤ëʸ»ú¥³¡¼¡£ISO 8859-1 ¤Þ¤¿¤Ï JIS X 0208 ¤Ç¤¹¡£ + +
the number of subbooks:
+
+¤½¤Î½ñÀҤ˼ýÏ¿¤µ¤ì¤Æ¤¤¤ëÉûËÜ (subbbok) ¤Î¿ô¡£ +
+ +

+²Ã¤¨¤Æ¡¢¤½¤Î½ñÀҤΤ½¤ì¤¾¤ì¤ÎÉûËܤˤĤ¤¤Æ¡¢°Ê²¼¤Î¾ðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ +

+ +
+
title:
+
+ÉûËܤÎÂê̾¡£ +½ñÀÒ¤¬ JIS X 0208 ¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤È¤­¤Ï¡¢Âê̾¤Ï EUC (Extended UNIX Code) +¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£ + +
directory:
+
+¤½¤ÎÉûËܤ˴ØÏ¢¤¹¤ë¥Õ¥¡¥¤¥ë¤¬ÃÖ¤«¤ì¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Î̾Á°¡£ +±Ñ¾®Ê¸»ú¤ÏÂçʸ»ú¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡£ + +
search methods:
+
+ÉûËܤ¬Âбþ¤·¤Æ¤¤¤ë¸¡º÷ÊýË¡¤Î°ìÍ÷¡£ +¤³¤Î°ìÍ÷¤Ï¡¢°Ê²¼¤Ëµ­¤·¤¿¸¡º÷ÊýË¡¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´Éô¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ + +
+
copyright
+
+Ãøºî¸¢É½¼¨ (copyright notice)¡£ +¸·Ì©¤Ë¸À¤¨¤Ð¡¢¤³¤ì¤Ï¸¡º÷ÊýË¡¤Ç¤Ï¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢CD-ROM ½ñÀÒ¤ÎÆâÉô·Á¼°¤Î +´Ø·¸¤«¤é¡¢É½¼¨¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ + +
word
+
+Á°Êý°ìÃ׸¡º÷ (Word search)¡£ + +
endword
+
+¸åÊý°ìÃ׸¡º÷ (Endword search)¡£ + +
keyword
+
+¾ò·ï¸¡º÷ (Keyword search)¡£ + +
cross
+
+¥¯¥í¥¹¸¡º÷ (Keyword search)¡£ + +
multi
+
+Ê£¹ç¸¡º÷ (Multi search)¡£ + +
menu
+
+¥á¥Ë¥å¡¼¸¡º÷ (Menu search). + +
graphic
+
+¥°¥é¥Õ¥£¥Ã¥¯¸¡º÷ (Graphic search). + +
+ +

+ÉûËܤ¬»ý¤Ä¡¢¥Õ¥©¥ó¥È¤Î¥µ¥¤¥º¤Î°ìÍ÷¡£ +¤³¤Î°ìÍ÷¤Ë¤Ï¡¢16, 24, 30, 48 ¤È¤¤¤¦ 4 ¤Ä¤Î¥µ¥¤¥º¤Î°ìÉô¡¢¤â¤·¤¯¤ÏÁ´Éô¤«¤é +¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñʸ»ú¤Îʸ»úÈÖ¹æ¤ÎÈÏ°Ï¡£ +

+ +

+ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëÁ´³Ñʸ»ú¤Îʸ»úÈÖ¹æ¤ÎÈÏ°Ï¡£ +

+ +
+ + +

EBNET ¥µ¡¼¥Ð¤Î½ñÀÒ°ìÍ÷

+ +

+Ä̾ï¤Î½ÐÎϤÎÂå¤ï¤ê¤Ë¡¢ebinfo ¤Ï EBNET ¥µ¡¼¥Ð¤¬¸ø³«¤·¤Æ¤¤¤ë +½ñÀҤΰìÍ÷¤ò½ÐÎϤ¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¤Î¥³¥Þ¥ó¥É¹Ô¤Î³µÍפϡ¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+% ebinfo --book-list ±ó³Ö¥µ¡¼¥Ð¼±ÊÌ»Ò
+
+
+ +

+¤³¤³¤Ç¡¢±ó³Ö¥µ¡¼¥Ð¼±ÊÌ»Ò ¤Ï¡¢½ñÀÒ̾¤ò´Þ¤Þ¤Ê¤¤±ó³Ö¥¢¥¯¥»¥¹¼±ÊÌ»Ò +¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢ +

+ +
+
+% ebinfo --book-list ebnet://dict.example.com
+̾Á°             Âê̾
+encycl           ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ
+encycl.app       ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ (appendix)
+crossword        ¥¯¥í¥¹¥ï¡¼¥É¥Ñ¥º¥ë¼­Åµ
+travel           ¥ï¡¼¥ë¥É¥È¥é¥Ù¥ë¥¬¥¤¥É
+
+
+ +

+¡Ö̾Á°¡×¤ÎËöÈø¤Ë .app ¤¬ÉÕ¤¤¤Æ¤¤¤ë¤â¤Î¤Ï appendix (ÉÕÏ¿)¡¢ +¤½¤ì°Ê³°¤Ï½ñÀÒËÜÂΤǤ¹¡£ +¤¿¤À¤·¡¢¤½¤Î¥¯¥é¥¤¥¢¥ó¥È¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤òµö²Ä¤·¤Ê¤¤½ñÀÒ¤ä appendix ¤Ï +½ÐÎϤµ¤ì¤Þ¤»¤ó¡£ +

+ +

+³¤±¤Æ¡¢¤³¤ÎÃæ¤Î encycl ¤È¤¤¤¦½ñÀҤξðÊó¤ò¸«¤ë¤Ë¤Ï¡¢¼¡¤Î +¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebinfo ebnet://dict.example.com/cncyclopedia
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 1
+
+ÉûËÜ 1:
+  Âê̾: ¥Ö¥é¥¦¥ó¥³¥ó¥µ¥¤¥¹É´²Ê»öŵ
+  ¥Ç¥£¥ì¥¯¥È¥ê: brown
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï Ê£¹ç ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa452
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa452
+
+
+ + +

ebinfo ¤Î¥ª¥×¥·¥ç¥ó

+ +

+ebinfo ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-l
+
--book-list
+
+Ä̾ï¤Î½ÐÎϤÎÂå¤ï¤ê¤Ë¡¢EBNET ¥µ¡¼¥Ð¤¬¸ø³«¤·¤Æ¤¤¤ë½ñÀҤΰìÍ÷¤ò½ÐÎϤ·¤Þ¤¹¡£ +¥³¥Þ¥ó¥É¹Ô°ú¿ô book-path ¤Ï±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤǤʤ±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ + +
-m
+
--multi-search
+
+Ê£¹ç¸¡º÷ (multi search) ¤Ë´Ø¤¹¤ë¾ðÊó¤â¡¢¹ç¤ï¤»¤Æ½ÐÎϤ·¤Þ¤¹¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ + + diff --git a/lib/ebu/doc/ebrefile-01.html b/lib/ebu/doc/ebrefile-01.html new file mode 100644 index 0000000..12e2c15 --- /dev/null +++ b/lib/ebu/doc/ebrefile-01.html @@ -0,0 +1,72 @@ + + + + + + +ebrefile ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¤Ï¤¸¤á¤Ë

+ +

+°ìºý¤Î CD-ROM ½ñÀҤϡ¢ÂçÄñÊ£¿ô¤Î ÉûËÜ (subbook) ¤ò +»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¤¢¤ë CD-ROM ½ñÀҤϹñ¸ì¼­Åµ¡¢±Ñϼ­Åµ¡¢Ï±Ѽ­Åµ¤Î 3 ¤Ä¤ÎÉûËܤò +¼ý¤á¤Æ¤¤¤Þ¤¹¡£ +¸Ä¡¹¤ÎÉûËܤϡ¢¤½¤ì¼«ÂΤ¬ÆÈΩ¤·¤¿¡Ö½ñÀҡפˤʤäƤ¤¤Þ¤¹¡£ +

+ +
+
+     (CD-ROM ½ñÀÒ)
++-----------------------+
+|   [¹ñ¸ì¼­Åµ] (ÉûËÜ)   |
+|   [±Ñϼ­Åµ] (ÉûËÜ)   |
+|   [ϱѼ­Åµ] (ÉûËÜ)   |
++-----------------------+
+
+
+ +

+EB/EBG/EBXA/EBXA-C/S-EBXA ·Á¼°¤Î CD-ROM ½ñÀÒ¤Ï catalog +¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò¡¢EPWING ·Á¼°¤Î CD-ROM ½ñÀÒ¤Ï catalogs +¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¤½¤Î CD-ROM ½ñÀҤˤϤɤó¤ÊÉûËܤ¬¼ý¤á¤é¤ì¤Æ¤¤¤ë¤Î¤«¤ò +ÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+ebrefile ¤Ï¸µ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÆɤߡ¢¥æ¡¼¥¶¤«¤é»ØÄꤵ¤ì¤¿ +ÉûËܤÀ¤±¤ò¼è¤ê¹þ¤ó¤À¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +¸À¤¤´¹¤¨¤ì¤Ð¡¢ebrefile ¤ÏÆÃÄê¤ÎÉûËܤÎÄêµÁ¤ò¡¢¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë +¤«¤éºï½ü¤·¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¤¬ 3 ¤Ä¤ÎÉûËܤò»ý¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢ebrefile ¤Ï +¤½¤Î¤¦¤Á¤ÎǤ°Õ¤Î 1 ¤Ä¤Þ¤¿¤Ï 2 ¤Ä¤ÎÉûËܤò¡¢¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë +¼è¤ê¹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤Ë CD-ROM ½ñÀҤΰìÉô¤À¤±¤ò¥³¥Ô¡¼¤·¤¿¤¤¤È¤­¤Ë¡¢ +ebrefile ¤ÏÊØÍø¤Ç¤¹¡£ +ebrefile ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤¢¤Ê¤¿¤Ï¡¢¼«Ê¬¤Î½êÍ­¤¹¤ë CD-ROM ½ñÀҤλÈÍѵöÂú¤ò¼é¤é¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +ebrefile ¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¤¬¡¢¤¢¤Ê¤¿¤Î½ñÀÒ¤¬¼«Í³¤Ë +»È¤¨¤ë¤â¤Î¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +ebrefile ¤Ï¡¢CD-ROM ½ñÀҤΤ¢¤ë¥Õ¥¡¥¤¥ë¤ÎÆâÍƤËÊѹ¹¤ò²Ã¤¨¤Þ¤¹¡£ +¤´Ãí°Õ²¼¤µ¤¤¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebrefile-02.html b/lib/ebu/doc/ebrefile-02.html new file mode 100644 index 0000000..ddda7f3 --- /dev/null +++ b/lib/ebu/doc/ebrefile-02.html @@ -0,0 +1,254 @@ + + + + + + +ebrefile ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

ebrefile ¤Î¼Â¹Ô

+ +

+ebrefile ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebrefile ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebrefile
+
+
+ +

+¤³¤Î¾ì¹ç¡¢ebrefile ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) +¤¬»ØÄꤵ¤ì¤¿¤â¤Î¤ÈȽÃǤ·¤Þ¤¹¡£ +

+ +

+±ó³Ö¥¢¥¯¥»¥¹¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤϻÈÍѤǤ­¤Þ¤»¤ó¡£ +

+ +
+
+% ebrefile ebnet://localhost/cdrom
+ebrefile: ebnet ¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£
+
+
+ + + +

ÉûËܤÎÁªÂò

+ +

+Æä˻ØÄ꤬¤Ê¤¤¤È¡¢ebrefile ¤Ï¡¢¸µ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÇÄêµÁ +¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎÉûËܤò¿·¤·¤¤ÉûËܤ˼è¤ê¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ï¡¢Ã±¤Ë¸µ¤Î¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î¿¶¤ëÉñ¤¤¤Ï¡¢Ìò¤ËΩ¤Á¤Þ¤»¤ó¡£ +ebrefile ¤Ï¡¢Ä̾ï --subbook (-S) +¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æµ¯Æ°¤·¤Þ¤¹¡£ +

+ +

+--subbook (-S) ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢ +¤½¤³¤Ë¥«¥ó¥Þ (,) ¤Ç¶èÀڤäơ¢¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë +¼è¤ê¹þ¤ß¤¿¤¤ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢¤¢¤Ê¤¿¤Î½êÍ­¤·¤Æ¤¤¤ë½ñÀÒ¤Ë +¤É¤Î¤è¤¦¤ÊÉûËܤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 3
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 3:
+  Âê̾: ¥Ý¥±¥Ã¥ÈÆÈϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: german
+  ¸¡º÷Êý¼°: ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢3 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤Î̾Á°¤Ï english +french, german ¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ebrefile ¤ÏÉûËܤȤ·¤Æ +english ¤È french ¤À¤±¤òÄêµÁ¤·¤¿¿·¤·¤¤¥«¥¿¥í¥° +¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebrefile --subbook english,french
+
+
+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¦¾®Ê¸»ú¤Î°ã¤¤¤Ï¡¢¶èÊ̤µ¤ì¤Þ¤»¤ó¡£ +--subbook ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebrefile --subbook english --subbook french
+
+
+ +

+ebrefile ¤ÏÉûËܤÎÄêµÁ½ç½ø¤òÊѤ¨¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤Î¤Ç¡¢ +--subbook ¤ËÍ¿¤¨¤ë°ú¿ô¤Î½ç½ø¤ÏǤ°Õ¤Ç¤¹¡£ +

+ +

+¤³¤ì¤ÇºÆ¹½À®¤Ï´°Î»¤Ç¤¹¡£ +¤â¤¦¤¤¤Á¤É ebinfo ¤òµ¯Æ°¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£ +ÉûËÜ german ¤¬¾Ã¤¨¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+¤â¤·¡¢CD-ROM ½ñÀÒÁ´ÂΤò¤¹¤Ç¤Ë¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤Ë¥³¥Ô¡¼¤·¤Æ¤¤¤ë¤Ê¤é¡¢ +ÉûËÜ german ¤Î¥Õ¥¡¥¤¥ë¤Ïºï½ü¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +¥Ç¥£¥ì¥¯¥È¥ê̾¤¬¾®Ê¸»ú¤Ç¹½À®¤µ¤ì¤Æ¤¤¤ë¤Ê¤é¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% rm -r german
+
+
+ +

+ebrefile ¤Ï¡¢Æɤ߹þ¤ó¤À¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë¤½¤Î¤Þ¤Þ¾å½ñ¤­¤·¤Æ +¿·¤¿¤Ê¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¤¬¡¢¸µ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÎÊ£À½¤¬¡¢ +catalog(s).old ¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤ÇÊݸ¤µ¤ì¤Þ¤¹¡£ +ÉûËܤÎÁªÂò¤ò´Ö°ã¤¨¤Æ¤·¤Þ¤Ã¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó¸µ¤ËÌᤷ¤Þ¤·¤ç¤¦¡£ +(°Ê²¼¤Ç¤Ï¡¢¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬ catalogs ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£) +

+ +
+
+% mv catalogs.old catalogs
+
+
+ +

+¤¿¤À¤· ¼Â¹Ô»þ¤Ë catalog(s).old ¤¬´û¤Ë¸ºß¤·¤Æ¤¤¤ë¤È¡¢¾å½ñ¤­ +¤»¤º¤Ë»Ä¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÎÊ£À½¤Ï¿·¤¿¤Ëºî¤é¤ì¤Þ¤»¤ó¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ebzip ¤È¤ÎÏ¢·È

+ +

+ebrefile ¤Ï¡¢ebzip ¤È¤¤¤¦ CD-ROM ½ñÀÒ¤ò°µ½Ì¤¹¤ë +¥³¥Þ¥ó¥É¤ÈÊ»ÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ +(ebzip ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebzip ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +Ä̾ ebzip ¤È ebrefile ¤Ë¤Ï¥³¥Þ¥ó¥É¹Ô¤ÇƱ¤¸ +°ú¿ô¤òÍ¿¤¨¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒ¤¬ /cdrom ¤Ë¥Þ¥¦¥ó¥È¤µ¤ì¡¢¤³¤Î½ñÀÒ¤Ë¤Ï +english¡¢french¡¢german ¤È¤¤¤¦ +3 ¤Ä¤ÎÉûËܤ¬¼ý¤á¤é¤ì¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£ +°Ê²¼¤Ëµ­¤·¤¿Áàºî¤Ë¤è¤Ã¤Æ¡¢ÉûËÜ english¡¢french +¤Ï°µ½Ì¤µ¤ì¤Æ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤ËÃÖ¤«¤ì¡¢ÉûËÜ german ¤Ï +ÉûËܤΥꥹ¥È¤«¤éºï½ü¤µ¤ì¤Þ¤¹¡£ +

+ +
+
+% ebzip --subbook english,french /cdrom
+% ebrefile --subbook english,french /cdrom
+
+
+ +

+°µ½Ì¤·¤¿¥Õ¥¡¥¤¥ë¤ò¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤ËÃÖ¤¯¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebzip --output-directory /dict --subbook english,french /cdrom
+% ebrefile --output-directory /dict --subbook english,french /cdrom
+
+
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebrefile-03.html b/lib/ebu/doc/ebrefile-03.html new file mode 100644 index 0000000..7a104ac --- /dev/null +++ b/lib/ebu/doc/ebrefile-03.html @@ -0,0 +1,59 @@ + + + + + + +ebrefile ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [Ìܼ¡] +

+
+

ebrefile ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebrefile ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤ +Ť¤¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤Ë¤Ê¤ê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Öebrefile ¤Î¼Â¹Ô¡× +¤ò»²¾È¤Î¤³¤È)¡£ + +
-S ÉûËÜ
+
--subbook ÉûËÜ
+
+ebrefile ¤¬¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë¼è¤ê¹þ¤à¤Ù¤­ÉûËܤò»ØÄꤷ¤Þ¤¹¡£ +ÉûËÜ ¤Ï¡¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤Ã¤Æ +ʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉûËܤ¬Âоݤˤʤê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡ÖÉûËܤÎÁªÂò¡× ¤ò»²¾È¤Î¤³¤È)¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ +
+

+[Á°¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebrefile-cat.html b/lib/ebu/doc/ebrefile-cat.html new file mode 100644 index 0000000..c073f07 --- /dev/null +++ b/lib/ebu/doc/ebrefile-cat.html @@ -0,0 +1,363 @@ + + + + + + +ebrefile ¥³¥Þ¥ó¥É + + + +

ebrefile ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1998-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+°ìºý¤Î CD-ROM ½ñÀҤϡ¢ÂçÄñÊ£¿ô¤Î ÉûËÜ (subbook) ¤ò +»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¤¢¤ë CD-ROM ½ñÀҤϹñ¸ì¼­Åµ¡¢±Ñϼ­Åµ¡¢Ï±Ѽ­Åµ¤Î 3 ¤Ä¤ÎÉûËܤò +¼ý¤á¤Æ¤¤¤Þ¤¹¡£ +¸Ä¡¹¤ÎÉûËܤϡ¢¤½¤ì¼«ÂΤ¬ÆÈΩ¤·¤¿¡Ö½ñÀҡפˤʤäƤ¤¤Þ¤¹¡£ +

+ +
+
+     (CD-ROM ½ñÀÒ)
++-----------------------+
+|   [¹ñ¸ì¼­Åµ] (ÉûËÜ)   |
+|   [±Ñϼ­Åµ] (ÉûËÜ)   |
+|   [ϱѼ­Åµ] (ÉûËÜ)   |
++-----------------------+
+
+
+ +

+EB/EBG/EBXA/EBXA-C/S-EBXA ·Á¼°¤Î CD-ROM ½ñÀÒ¤Ï catalog +¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò¡¢EPWING ·Á¼°¤Î CD-ROM ½ñÀÒ¤Ï catalogs +¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¤½¤Î CD-ROM ½ñÀҤˤϤɤó¤ÊÉûËܤ¬¼ý¤á¤é¤ì¤Æ¤¤¤ë¤Î¤«¤ò +ÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+ebrefile ¤Ï¸µ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÆɤߡ¢¥æ¡¼¥¶¤«¤é»ØÄꤵ¤ì¤¿ +ÉûËܤÀ¤±¤ò¼è¤ê¹þ¤ó¤À¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +¸À¤¤´¹¤¨¤ì¤Ð¡¢ebrefile ¤ÏÆÃÄê¤ÎÉûËܤÎÄêµÁ¤ò¡¢¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë +¤«¤éºï½ü¤·¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¤¬ 3 ¤Ä¤ÎÉûËܤò»ý¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢ebrefile ¤Ï +¤½¤Î¤¦¤Á¤ÎǤ°Õ¤Î 1 ¤Ä¤Þ¤¿¤Ï 2 ¤Ä¤ÎÉûËܤò¡¢¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë +¼è¤ê¹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤Ë CD-ROM ½ñÀҤΰìÉô¤À¤±¤ò¥³¥Ô¡¼¤·¤¿¤¤¤È¤­¤Ë¡¢ +ebrefile ¤ÏÊØÍø¤Ç¤¹¡£ +ebrefile ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤¢¤Ê¤¿¤Ï¡¢¼«Ê¬¤Î½êÍ­¤¹¤ë CD-ROM ½ñÀҤλÈÍѵöÂú¤ò¼é¤é¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +ebrefile ¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¤¬¡¢¤¢¤Ê¤¿¤Î½ñÀÒ¤¬¼«Í³¤Ë +»È¤¨¤ë¤â¤Î¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +ebrefile ¤Ï¡¢CD-ROM ½ñÀҤΤ¢¤ë¥Õ¥¡¥¤¥ë¤ÎÆâÍƤËÊѹ¹¤ò²Ã¤¨¤Þ¤¹¡£ +¤´Ãí°Õ²¼¤µ¤¤¡£ +

+ + +

ebrefile ¤Î¼Â¹Ô

+ +

+ebrefile ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebrefile ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebrefile
+
+
+ +

+¤³¤Î¾ì¹ç¡¢ebrefile ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) +¤¬»ØÄꤵ¤ì¤¿¤â¤Î¤ÈȽÃǤ·¤Þ¤¹¡£ +

+ +

+±ó³Ö¥¢¥¯¥»¥¹¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤϻÈÍѤǤ­¤Þ¤»¤ó¡£ +

+ +
+
+% ebrefile ebnet://localhost/cdrom
+ebrefile: ebnet ¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£
+
+
+ + + +

ÉûËܤÎÁªÂò

+ +

+Æä˻ØÄ꤬¤Ê¤¤¤È¡¢ebrefile ¤Ï¡¢¸µ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÇÄêµÁ +¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎÉûËܤò¿·¤·¤¤ÉûËܤ˼è¤ê¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ï¡¢Ã±¤Ë¸µ¤Î¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î¿¶¤ëÉñ¤¤¤Ï¡¢Ìò¤ËΩ¤Á¤Þ¤»¤ó¡£ +ebrefile ¤Ï¡¢Ä̾ï --subbook (-S) +¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æµ¯Æ°¤·¤Þ¤¹¡£ +

+ +

+--subbook (-S) ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢ +¤½¤³¤Ë¥«¥ó¥Þ (,) ¤Ç¶èÀڤäơ¢¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë +¼è¤ê¹þ¤ß¤¿¤¤ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢¤¢¤Ê¤¿¤Î½êÍ­¤·¤Æ¤¤¤ë½ñÀÒ¤Ë +¤É¤Î¤è¤¦¤ÊÉûËܤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 3
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 3:
+  Âê̾: ¥Ý¥±¥Ã¥ÈÆÈϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: german
+  ¸¡º÷Êý¼°: ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢3 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤Î̾Á°¤Ï english +french, german ¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ebrefile ¤ÏÉûËܤȤ·¤Æ +english ¤È french ¤À¤±¤òÄêµÁ¤·¤¿¿·¤·¤¤¥«¥¿¥í¥° +¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebrefile --subbook english,french
+
+
+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¦¾®Ê¸»ú¤Î°ã¤¤¤Ï¡¢¶èÊ̤µ¤ì¤Þ¤»¤ó¡£ +--subbook ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebrefile --subbook english --subbook french
+
+
+ +

+ebrefile ¤ÏÉûËܤÎÄêµÁ½ç½ø¤òÊѤ¨¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤Î¤Ç¡¢ +--subbook ¤ËÍ¿¤¨¤ë°ú¿ô¤Î½ç½ø¤ÏǤ°Õ¤Ç¤¹¡£ +

+ +

+¤³¤ì¤ÇºÆ¹½À®¤Ï´°Î»¤Ç¤¹¡£ +¤â¤¦¤¤¤Á¤É ebinfo ¤òµ¯Æ°¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£ +ÉûËÜ german ¤¬¾Ã¤¨¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+¤â¤·¡¢CD-ROM ½ñÀÒÁ´ÂΤò¤¹¤Ç¤Ë¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤Ë¥³¥Ô¡¼¤·¤Æ¤¤¤ë¤Ê¤é¡¢ +ÉûËÜ german ¤Î¥Õ¥¡¥¤¥ë¤Ïºï½ü¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +¥Ç¥£¥ì¥¯¥È¥ê̾¤¬¾®Ê¸»ú¤Ç¹½À®¤µ¤ì¤Æ¤¤¤ë¤Ê¤é¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% rm -r german
+
+
+ +

+ebrefile ¤Ï¡¢Æɤ߹þ¤ó¤À¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë¤½¤Î¤Þ¤Þ¾å½ñ¤­¤·¤Æ +¿·¤¿¤Ê¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¤¬¡¢¸µ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÎÊ£À½¤¬¡¢ +catalog(s).old ¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤ÇÊݸ¤µ¤ì¤Þ¤¹¡£ +ÉûËܤÎÁªÂò¤ò´Ö°ã¤¨¤Æ¤·¤Þ¤Ã¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó¸µ¤ËÌᤷ¤Þ¤·¤ç¤¦¡£ +(°Ê²¼¤Ç¤Ï¡¢¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬ catalogs ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£) +

+ +
+
+% mv catalogs.old catalogs
+
+
+ +

+¤¿¤À¤· ¼Â¹Ô»þ¤Ë catalog(s).old ¤¬´û¤Ë¸ºß¤·¤Æ¤¤¤ë¤È¡¢¾å½ñ¤­ +¤»¤º¤Ë»Ä¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÎÊ£À½¤Ï¿·¤¿¤Ëºî¤é¤ì¤Þ¤»¤ó¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ebzip ¤È¤ÎÏ¢·È

+ +

+ebrefile ¤Ï¡¢ebzip ¤È¤¤¤¦ CD-ROM ½ñÀÒ¤ò°µ½Ì¤¹¤ë +¥³¥Þ¥ó¥É¤ÈÊ»ÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ +(ebzip ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebzip ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +Ä̾ ebzip ¤È ebrefile ¤Ë¤Ï¥³¥Þ¥ó¥É¹Ô¤ÇƱ¤¸ +°ú¿ô¤òÍ¿¤¨¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒ¤¬ /cdrom ¤Ë¥Þ¥¦¥ó¥È¤µ¤ì¡¢¤³¤Î½ñÀÒ¤Ë¤Ï +english¡¢french¡¢german ¤È¤¤¤¦ +3 ¤Ä¤ÎÉûËܤ¬¼ý¤á¤é¤ì¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£ +°Ê²¼¤Ëµ­¤·¤¿Áàºî¤Ë¤è¤Ã¤Æ¡¢ÉûËÜ english¡¢french +¤Ï°µ½Ì¤µ¤ì¤Æ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤ËÃÖ¤«¤ì¡¢ÉûËÜ german ¤Ï +ÉûËܤΥꥹ¥È¤«¤éºï½ü¤µ¤ì¤Þ¤¹¡£ +

+ +
+
+% ebzip --subbook english,french /cdrom
+% ebrefile --subbook english,french /cdrom
+
+
+ +

+°µ½Ì¤·¤¿¥Õ¥¡¥¤¥ë¤ò¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤ËÃÖ¤¯¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebzip --output-directory /dict --subbook english,french /cdrom
+% ebrefile --output-directory /dict --subbook english,french /cdrom
+
+
+ + +

ebrefile ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebrefile ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤ +Ť¤¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤Ë¤Ê¤ê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Öebrefile ¤Î¼Â¹Ô¡× +¤ò»²¾È¤Î¤³¤È)¡£ + +
-S ÉûËÜ
+
--subbook ÉûËÜ
+
+ebrefile ¤¬¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë¼è¤ê¹þ¤à¤Ù¤­ÉûËܤò»ØÄꤷ¤Þ¤¹¡£ +ÉûËÜ ¤Ï¡¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤Ã¤Æ +ʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉûËܤ¬Âоݤˤʤê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡ÖÉûËܤÎÁªÂò¡× ¤ò»²¾È¤Î¤³¤È)¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ + + diff --git a/lib/ebu/doc/ebrefile-toc.html b/lib/ebu/doc/ebrefile-toc.html new file mode 100644 index 0000000..b3cff0b --- /dev/null +++ b/lib/ebu/doc/ebrefile-toc.html @@ -0,0 +1,9 @@ + diff --git a/lib/ebu/doc/ebrefile.html b/lib/ebu/doc/ebrefile.html new file mode 100644 index 0000000..916f6df --- /dev/null +++ b/lib/ebu/doc/ebrefile.html @@ -0,0 +1,46 @@ + + + + + + +ebrefile ¥³¥Þ¥ó¥É + + + +

+[¼¡¤Ø] [Ìܼ¡] +

+
+

ebrefile ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1998-2006 Motoyuki Kasahara +

+ + +
+

+[¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebrefile.html.in b/lib/ebu/doc/ebrefile.html.in new file mode 100644 index 0000000..b30032a --- /dev/null +++ b/lib/ebu/doc/ebrefile.html.in @@ -0,0 +1,355 @@ + + + + + + +ebrefile ¥³¥Þ¥ó¥É + + + +

ebrefile ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó + +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1998-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+°ìºý¤Î CD-ROM ½ñÀҤϡ¢ÂçÄñÊ£¿ô¤Î ÉûËÜ (subbook) ¤ò +»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¤¢¤ë CD-ROM ½ñÀҤϹñ¸ì¼­Åµ¡¢±Ñϼ­Åµ¡¢Ï±Ѽ­Åµ¤Î 3 ¤Ä¤ÎÉûËܤò +¼ý¤á¤Æ¤¤¤Þ¤¹¡£ +¸Ä¡¹¤ÎÉûËܤϡ¢¤½¤ì¼«ÂΤ¬ÆÈΩ¤·¤¿¡Ö½ñÀҡפˤʤäƤ¤¤Þ¤¹¡£ +

+ +
+
+     (CD-ROM ½ñÀÒ)
++-----------------------+
+|   [¹ñ¸ì¼­Åµ] (ÉûËÜ)   |
+|   [±Ñϼ­Åµ] (ÉûËÜ)   |
+|   [ϱѼ­Åµ] (ÉûËÜ)   |
++-----------------------+
+
+
+ +

+EB/EBG/EBXA/EBXA-C/S-EBXA ·Á¼°¤Î CD-ROM ½ñÀÒ¤Ï catalog +¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò¡¢EPWING ·Á¼°¤Î CD-ROM ½ñÀÒ¤Ï catalogs +¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¤½¤Î CD-ROM ½ñÀҤˤϤɤó¤ÊÉûËܤ¬¼ý¤á¤é¤ì¤Æ¤¤¤ë¤Î¤«¤ò +ÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+ebrefile ¤Ï¸µ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÆɤߡ¢¥æ¡¼¥¶¤«¤é»ØÄꤵ¤ì¤¿ +ÉûËܤÀ¤±¤ò¼è¤ê¹þ¤ó¤À¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ +¸À¤¤´¹¤¨¤ì¤Ð¡¢ebrefile ¤ÏÆÃÄê¤ÎÉûËܤÎÄêµÁ¤ò¡¢¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë +¤«¤éºï½ü¤·¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¤¬ 3 ¤Ä¤ÎÉûËܤò»ý¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢ebrefile ¤Ï +¤½¤Î¤¦¤Á¤ÎǤ°Õ¤Î 1 ¤Ä¤Þ¤¿¤Ï 2 ¤Ä¤ÎÉûËܤò¡¢¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë +¼è¤ê¹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤Ë CD-ROM ½ñÀҤΰìÉô¤À¤±¤ò¥³¥Ô¡¼¤·¤¿¤¤¤È¤­¤Ë¡¢ +ebrefile ¤ÏÊØÍø¤Ç¤¹¡£ +ebrefile ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤¢¤Ê¤¿¤Ï¡¢¼«Ê¬¤Î½êÍ­¤¹¤ë CD-ROM ½ñÀҤλÈÍѵöÂú¤ò¼é¤é¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +ebrefile ¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¤¬¡¢¤¢¤Ê¤¿¤Î½ñÀÒ¤¬¼«Í³¤Ë +»È¤¨¤ë¤â¤Î¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +ebrefile ¤Ï¡¢CD-ROM ½ñÀҤΤ¢¤ë¥Õ¥¡¥¤¥ë¤ÎÆâÍƤËÊѹ¹¤ò²Ã¤¨¤Þ¤¹¡£ +¤´Ãí°Õ²¼¤µ¤¤¡£ +

+ + +

ebrefile ¤Î¼Â¹Ô

+ +

+ebrefile ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebrefile ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebrefile
+
+
+ +

+¤³¤Î¾ì¹ç¡¢ebrefile ¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) +¤¬»ØÄꤵ¤ì¤¿¤â¤Î¤ÈȽÃǤ·¤Þ¤¹¡£ +

+ +

+±ó³Ö¥¢¥¯¥»¥¹¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤϻÈÍѤǤ­¤Þ¤»¤ó¡£ +

+ +
+
+% ebrefile ebnet://localhost/cdrom
+ebrefile: ebnet ¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£
+
+
+ + + +

ÉûËܤÎÁªÂò

+ +

+Æä˻ØÄ꤬¤Ê¤¤¤È¡¢ebrefile ¤Ï¡¢¸µ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÇÄêµÁ +¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎÉûËܤò¿·¤·¤¤ÉûËܤ˼è¤ê¹þ¤ß¤Þ¤¹¡£ +¤Ä¤Þ¤ê¡¢¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ï¡¢Ã±¤Ë¸µ¤Î¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î¿¶¤ëÉñ¤¤¤Ï¡¢Ìò¤ËΩ¤Á¤Þ¤»¤ó¡£ +ebrefile ¤Ï¡¢Ä̾ï --subbook (-S) +¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æµ¯Æ°¤·¤Þ¤¹¡£ +

+ +

+--subbook (-S) ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢ +¤½¤³¤Ë¥«¥ó¥Þ (,) ¤Ç¶èÀڤäơ¢¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë +¼è¤ê¹þ¤ß¤¿¤¤ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤òʤ٤ƽñ¤­¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢¤¢¤Ê¤¿¤Î½êÍ­¤·¤Æ¤¤¤ë½ñÀÒ¤Ë +¤É¤Î¤è¤¦¤ÊÉûËܤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 3
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 3:
+  Âê̾: ¥Ý¥±¥Ã¥ÈÆÈϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: german
+  ¸¡º÷Êý¼°: ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢3 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤Î̾Á°¤Ï english +french, german ¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢ebrefile ¤ÏÉûËܤȤ·¤Æ +english ¤È french ¤À¤±¤òÄêµÁ¤·¤¿¿·¤·¤¤¥«¥¿¥í¥° +¤òÀ¸À®¤·¤Þ¤¹¡£ +

+ +
+
+% ebrefile --subbook english,french
+
+
+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¦¾®Ê¸»ú¤Î°ã¤¤¤Ï¡¢¶èÊ̤µ¤ì¤Þ¤»¤ó¡£ +--subbook ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebrefile --subbook english --subbook french
+
+
+ +

+ebrefile ¤ÏÉûËܤÎÄêµÁ½ç½ø¤òÊѤ¨¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤Î¤Ç¡¢ +--subbook ¤ËÍ¿¤¨¤ë°ú¿ô¤Î½ç½ø¤ÏǤ°Õ¤Ç¤¹¡£ +

+ +

+¤³¤ì¤ÇºÆ¹½À®¤Ï´°Î»¤Ç¤¹¡£ +¤â¤¦¤¤¤Á¤É ebinfo ¤òµ¯Æ°¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£ +ÉûËÜ german ¤¬¾Ã¤¨¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+¤â¤·¡¢CD-ROM ½ñÀÒÁ´ÂΤò¤¹¤Ç¤Ë¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤Ë¥³¥Ô¡¼¤·¤Æ¤¤¤ë¤Ê¤é¡¢ +ÉûËÜ german ¤Î¥Õ¥¡¥¤¥ë¤Ïºï½ü¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +¥Ç¥£¥ì¥¯¥È¥ê̾¤¬¾®Ê¸»ú¤Ç¹½À®¤µ¤ì¤Æ¤¤¤ë¤Ê¤é¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% rm -r german
+
+
+ +

+ebrefile ¤Ï¡¢Æɤ߹þ¤ó¤À¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë¤½¤Î¤Þ¤Þ¾å½ñ¤­¤·¤Æ +¿·¤¿¤Ê¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¤¬¡¢¸µ¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÎÊ£À½¤¬¡¢ +catalog(s).old ¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤ÇÊݸ¤µ¤ì¤Þ¤¹¡£ +ÉûËܤÎÁªÂò¤ò´Ö°ã¤¨¤Æ¤·¤Þ¤Ã¤¿¾ì¹ç¤Ï¡¢¤¤¤Ã¤¿¤ó¸µ¤ËÌᤷ¤Þ¤·¤ç¤¦¡£ +(°Ê²¼¤Ç¤Ï¡¢¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬ catalogs ¤À¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£) +

+ +
+
+% mv catalogs.old catalogs
+
+
+ +

+¤¿¤À¤· ¼Â¹Ô»þ¤Ë catalog(s).old ¤¬´û¤Ë¸ºß¤·¤Æ¤¤¤ë¤È¡¢¾å½ñ¤­ +¤»¤º¤Ë»Ä¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤ÎÊ£À½¤Ï¿·¤¿¤Ëºî¤é¤ì¤Þ¤»¤ó¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +

+ + +

ebzip ¤È¤ÎÏ¢·È

+ +

+ebrefile ¤Ï¡¢ebzip ¤È¤¤¤¦ CD-ROM ½ñÀÒ¤ò°µ½Ì¤¹¤ë +¥³¥Þ¥ó¥É¤ÈÊ»ÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹ +(ebzip ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebzip ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +Ä̾ ebzip ¤È ebrefile ¤Ë¤Ï¥³¥Þ¥ó¥É¹Ô¤ÇƱ¤¸ +°ú¿ô¤òÍ¿¤¨¤Þ¤¹¡£ +

+ +

+CD-ROM ½ñÀÒ¤¬ /cdrom ¤Ë¥Þ¥¦¥ó¥È¤µ¤ì¡¢¤³¤Î½ñÀÒ¤Ë¤Ï +english¡¢french¡¢german ¤È¤¤¤¦ +3 ¤Ä¤ÎÉûËܤ¬¼ý¤á¤é¤ì¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£ +°Ê²¼¤Ëµ­¤·¤¿Áàºî¤Ë¤è¤Ã¤Æ¡¢ÉûËÜ english¡¢french +¤Ï°µ½Ì¤µ¤ì¤Æ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤ËÃÖ¤«¤ì¡¢ÉûËÜ german ¤Ï +ÉûËܤΥꥹ¥È¤«¤éºï½ü¤µ¤ì¤Þ¤¹¡£ +

+ +
+
+% ebzip --subbook english,french /cdrom
+% ebrefile --subbook english,french /cdrom
+
+
+ +

+°µ½Ì¤·¤¿¥Õ¥¡¥¤¥ë¤ò¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤ËÃÖ¤¯¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebzip --output-directory /dict --subbook english,french /cdrom
+% ebrefile --output-directory /dict --subbook english,french /cdrom
+
+
+ + +

ebrefile ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebrefile ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤ +Ť¤¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤Ë¤Ê¤ê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Öebrefile ¤Î¼Â¹Ô¡× +¤ò»²¾È¤Î¤³¤È)¡£ + +
-S ÉûËÜ
+
--subbook ÉûËÜ
+
+ebrefile ¤¬¿·¤·¤¤¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Ë¼è¤ê¹þ¤à¤Ù¤­ÉûËܤò»ØÄꤷ¤Þ¤¹¡£ +ÉûËÜ ¤Ï¡¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤Ã¤Æ +ʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉûËܤ¬Âоݤˤʤê¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡ÖÉûËܤÎÁªÂò¡× ¤ò»²¾È¤Î¤³¤È)¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ + + diff --git a/lib/ebu/doc/ebstopcode-01.html b/lib/ebu/doc/ebstopcode-01.html new file mode 100644 index 0000000..17f3a7b --- /dev/null +++ b/lib/ebu/doc/ebstopcode-01.html @@ -0,0 +1,47 @@ + + + + + + +ebstopcode ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¤Ï¤¸¤á¤Ë

+ +

+¤¢¤Ê¤¿¤¬ EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò»È¤Ã¤Æ CD-ROM ½ñÀÒ¤ÎÃæ¤Î¤¢¤ë +ñ¸ì¤ò°ú¤¯ºÝ¡¢¤½¤Îñ¸ì¤ÎÀâÌÀ¤¬½ªÎ»¤¹¤ë²Õ½ê¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬ËÜʸ¤Î +½ÐÎϤò»ß¤á¤ë¤³¤È¤ò¤¢¤Ê¤¿¤Ï´üÂÔ¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£ +¤·¤«¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¤½¤Î¤è¤¦¤ÊÆ°ºî¤òÊݾڤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ +¤Ê¤¼¤Ê¤é¡¢CD-ROM ½ñÀÒ¤ÎËÜʸ¤Ë¤Ï¡¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤¬Â¸ºß¤·¤Ê¤¤¤«¤é +¤Ç¤¹¡£ +

+ +

+¹¬¤¤¤Ë¤â¡¢Â¿¤¯¤Î CD-ROM ½ñÀҤˤϡ¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤ÎÂåÂؤȤ·¤Æ +»È¤¨¤ë¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É (text stop code) ¤È¤¤¤¦¤â¤Î¤ò»ý¤Ã¤Æ +¤¤¤Þ¤¹¡£ +Ä̾EB ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¶èÀڤꥳ¡¼¥É¤ò¼«Æ°Åª¤Ë¿ä¬¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ +¤¤¤ë¤Î¤Ç¤¹¤¬¡¢»þ¡¹¸í¤Ã¤¿¶èÀڤꥳ¡¼¥É¤òƳ¤­½Ð¤¹¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤½¤Î¾ì¹ç¤Ï¡¢appendix (ÉÕÏ¿) ¤È¤¤¤¦¤â¤Î¤òÍѤ¤¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë +Àµ¤·¤¤¶èÀڤꥳ¡¼¥É¤ò¶µ¤¨¤Æ¤ä¤é¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +

+ +

+ebstopcode ¥³¥Þ¥ó¥É¤Ï¡¢CD-ROM ½ñÀÒ¤ÎËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ò²òÀÏ +¤¹¤ë¤¿¤á¤Î¥Ä¡¼¥ë¤Ç¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebstopcode-02.html b/lib/ebu/doc/ebstopcode-02.html new file mode 100644 index 0000000..5a94208 --- /dev/null +++ b/lib/ebu/doc/ebstopcode-02.html @@ -0,0 +1,143 @@ + + + + + + +ebstopcode ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

ebstopcode ¤Î¼Â¹Ô

+ +

+ebstopcode ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebstopcode ½ñÀҤؤΥѥ¹¡¡ÉûËÜ
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +±ó³Ö¥¢¥¯¥»¥¹ÍѤμ±ÊÌ»Ò (ebnet://...) ¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ +½ñÀҤؤΥѥ¹ ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤¬»ØÄꤵ¤ì¤¿ +¤â¤Î¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£ +

+ +

+ÉûËÜ ¤Ë¤Ï¡¢½èÍý¤ÎÂоݤȤ¹¤ëÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò»ØÄꤷ¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢CD-ROM ½ñÀҤˤɤΤ褦¤ÊÉûËܤ¬ +´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢2 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤Î̾Á°¤Ï english +¤È french ¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+ÉûËÜ english ¤Î¶èÀڤꥳ¡¼¥É¤ò²òÀϤ¹¤ë¤Ë¤Ï¡¢°Ê²¼¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +

+ +
+
+% ebstopcode /cdrom english
+
+
+ +

+ebstopcode ¤Ï¡¢ÉûËܤÎËÜʸ¤È¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò¼¡¤Î¤è¤¦¤Ë +½ÐÎϤ·¤Þ¤¹¡£ +

+ +
+
+=== stop-code?: 0x1f09 0x0001 ===
+
+=== stop-code?: 0x1f41 0x0100 ===
+A
+
+=== stop-code?: 0x1f09 0x0001 ===
+[̾] 1: A ¹³¸¶¤òÍ­¤¹¤ëÀÖ·ìµå¤ò»ý¤Ä·ì±Õ·¿
+
+=== stop-code?: 0x1f09 0x0001 ===
+2: ¥á¡¼¥È¥ë´ð½à¤ÎŤµ¤Îñ°Ì¡£10²¯Ê¬¤Î 1 ¥á¡¼¥È¥ë¡£
+
+=== stop-code?: 0x1f09 0x0001 ===
+3: ¥¢¥ó¥Ú¥¢¡£ÅÅή¤Î´ðËÜñ°Ì¤Ç¡¢SIñ°Ì·Ï¤Î°ì¤Ä¡£
+
+=== stop-code?: 0x1f09 0x0001 ===
+
+=== stop-code?: 0x1f41 0x0100 ===
+(°Ê²¼Î¬)
+
+
+ +

+stop-code?: ¤È½ñ¤«¤ì¤¿¹Ô¤Ï¤½¤ì¤¾¤ì¡¢¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò +¼¨¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤ò¶èÀڤꥳ¡¼¥É¤È¤·¤Æ»ØÄꤹ¤ë¤È¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¤½¤ÎÃÏÅÀ¤ÇËÜʸ¤Î +½ÐÎϤòÄä»ß¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î english ¤È¤¤¤¦ÉûËܤÎŬÀڤʶèÀڤꥳ¡¼¥É¤Ï¡¢"0x1f41 0x0100" +¤Ë¤Ê¤ê¤Þ¤¹¡£ +--no-candidate ¤È --code ¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢¤³¤Î +¶èÀڤꥳ¡¼¥É¤ò»î¤·¤Æ¤ß¤Þ¤¹¡£ +

+ +
+
+% ebstopcode --no-candidate --code "0x1f41 0x0100" /cdrom english
+A
+[̾] 1: A ¹³¸¶¤òÍ­¤¹¤ëÀÖ·ìµå¤ò»ý¤Ä·ì±Õ·¿¡£
+2: ¥á¡¼¥È¥ë´ð½à¤ÎŤµ¤Îñ°Ì¡£10²¯Ê¬¤Î 1 ¥á¡¼¥È¥ë¡£
+3: ¥¢¥ó¥Ú¥¢¡£ÅÅή¤Î´ðËÜñ°Ì¤Ç¡¢SIñ°Ì·Ï¤Î°ì¤Ä¡£
+
+
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebstopcode-03.html b/lib/ebu/doc/ebstopcode-03.html new file mode 100644 index 0000000..0703d3c --- /dev/null +++ b/lib/ebu/doc/ebstopcode-03.html @@ -0,0 +1,74 @@ + + + + + + +ebstopcode ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [Ìܼ¡] +

+
+

ebstopcode ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebstopcode ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-c ¥³¡¼¥É
+
--code ¥³¡¼¥É
+
+¥³¡¼¥É ¤ò¶èÀڤꥳ¡¼¥É¤Ë»ØÄꤷ¤Þ¤¹ (Îã: "0x1f09 0x0001")¡£ +ebstopcode ¤Ï¡¢¥³¡¼¥É ¤ò¸«¤Ä¤±¤ë¤Þ¤ÇËÜʸ¤ò½ÐÎϤ·¤Þ¤¹¡£ + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-l Ťµ
+
--length Ťµ
+
+ËÜʸ¥Ç¡¼¥¿¤òºÇĹ¤Ç Ĺ¤µ ¥Ð¥¤¥È¤Þ¤Ç½ÐÎϤ·¤Þ¤¹¡£ +Ťµ ¤ò 0 ¤Ë¤¹¤ë¤È¡¢ebstopcode ¤ÏËÜʸÁ´ÂΤò½ÐÎϤ·¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢2048 ¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
-n
+
--no-candidates
+
+¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò½ÐÎϤ·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£ + +
-p ¥Ú¡¼¥¸:¥ª¥Õ¥»¥Ã¥È
+
--text-position ¥Ú¡¼¥¸:¥ª¥Õ¥»¥Ã¥È
+
+ËÜʸ¥Ç¡¼¥¿¤Î½ÐÎϤò¤³¤Î°ÌÃÖ¤«¤é³«»Ï¤·¤Þ¤¹¡£ +¥Ú¡¼¥¸ ¤Ë¤Ï 0 ¤è¤êÂ礭¤¤ 16¿ÊÀ°¿ô¤ò¡¢¥ª¥Õ¥»¥Ã¥È ¤Ë¤Ï¡¢ +0¡Á0x7FF ¤Î´Ö¤Î 16¿ÊÀ°¿ô¤ò¤½¤ì¤¾¤ì»ØÄꤷ¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢ËÜʸ¥Ç¡¼¥¿¤ÎÀèƬ°ÌÃÖ¤«¤é½ÐÎϤ·¤Þ¤¹¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ +

+--code (-c) ¤È --length +(-l) ¥ª¥×¥·¥ç¥ó¤Ï¡¢¸ß¤¤¤Ë¤â¤¦°ìÊý¤Î¥ª¥×¥·¥ç¥ó¤òÂǤÁ¾Ã¤·¤Þ¤¹¡£ +

+ +
+

+[Á°¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebstopcode-cat.html b/lib/ebu/doc/ebstopcode-cat.html new file mode 100644 index 0000000..77be583 --- /dev/null +++ b/lib/ebu/doc/ebstopcode-cat.html @@ -0,0 +1,238 @@ + + + + + + +ebstopcode ¥³¥Þ¥ó¥É + + + +

ebstopcode ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 2003-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+¤¢¤Ê¤¿¤¬ EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò»È¤Ã¤Æ CD-ROM ½ñÀÒ¤ÎÃæ¤Î¤¢¤ë +ñ¸ì¤ò°ú¤¯ºÝ¡¢¤½¤Îñ¸ì¤ÎÀâÌÀ¤¬½ªÎ»¤¹¤ë²Õ½ê¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬ËÜʸ¤Î +½ÐÎϤò»ß¤á¤ë¤³¤È¤ò¤¢¤Ê¤¿¤Ï´üÂÔ¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£ +¤·¤«¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¤½¤Î¤è¤¦¤ÊÆ°ºî¤òÊݾڤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ +¤Ê¤¼¤Ê¤é¡¢CD-ROM ½ñÀÒ¤ÎËÜʸ¤Ë¤Ï¡¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤¬Â¸ºß¤·¤Ê¤¤¤«¤é +¤Ç¤¹¡£ +

+ +

+¹¬¤¤¤Ë¤â¡¢Â¿¤¯¤Î CD-ROM ½ñÀҤˤϡ¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤ÎÂåÂؤȤ·¤Æ +»È¤¨¤ë¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É (text stop code) ¤È¤¤¤¦¤â¤Î¤ò»ý¤Ã¤Æ +¤¤¤Þ¤¹¡£ +Ä̾EB ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¶èÀڤꥳ¡¼¥É¤ò¼«Æ°Åª¤Ë¿ä¬¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ +¤¤¤ë¤Î¤Ç¤¹¤¬¡¢»þ¡¹¸í¤Ã¤¿¶èÀڤꥳ¡¼¥É¤òƳ¤­½Ð¤¹¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤½¤Î¾ì¹ç¤Ï¡¢appendix (ÉÕÏ¿) ¤È¤¤¤¦¤â¤Î¤òÍѤ¤¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë +Àµ¤·¤¤¶èÀڤꥳ¡¼¥É¤ò¶µ¤¨¤Æ¤ä¤é¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +

+ +

+ebstopcode ¥³¥Þ¥ó¥É¤Ï¡¢CD-ROM ½ñÀÒ¤ÎËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ò²òÀÏ +¤¹¤ë¤¿¤á¤Î¥Ä¡¼¥ë¤Ç¤¹¡£ +

+ + +

ebstopcode ¤Î¼Â¹Ô

+ +

+ebstopcode ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebstopcode ½ñÀҤؤΥѥ¹¡¡ÉûËÜ
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +±ó³Ö¥¢¥¯¥»¥¹ÍѤμ±ÊÌ»Ò (ebnet://...) ¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ +½ñÀҤؤΥѥ¹ ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤¬»ØÄꤵ¤ì¤¿ +¤â¤Î¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£ +

+ +

+ÉûËÜ ¤Ë¤Ï¡¢½èÍý¤ÎÂоݤȤ¹¤ëÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò»ØÄꤷ¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢CD-ROM ½ñÀҤˤɤΤ褦¤ÊÉûËܤ¬ +´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢2 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤Î̾Á°¤Ï english +¤È french ¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+ÉûËÜ english ¤Î¶èÀڤꥳ¡¼¥É¤ò²òÀϤ¹¤ë¤Ë¤Ï¡¢°Ê²¼¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +

+ +
+
+% ebstopcode /cdrom english
+
+
+ +

+ebstopcode ¤Ï¡¢ÉûËܤÎËÜʸ¤È¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò¼¡¤Î¤è¤¦¤Ë +½ÐÎϤ·¤Þ¤¹¡£ +

+ +
+
+=== stop-code?: 0x1f09 0x0001 ===
+
+=== stop-code?: 0x1f41 0x0100 ===
+A
+
+=== stop-code?: 0x1f09 0x0001 ===
+[̾] 1: A ¹³¸¶¤òÍ­¤¹¤ëÀÖ·ìµå¤ò»ý¤Ä·ì±Õ·¿
+
+=== stop-code?: 0x1f09 0x0001 ===
+2: ¥á¡¼¥È¥ë´ð½à¤ÎŤµ¤Îñ°Ì¡£10²¯Ê¬¤Î 1 ¥á¡¼¥È¥ë¡£
+
+=== stop-code?: 0x1f09 0x0001 ===
+3: ¥¢¥ó¥Ú¥¢¡£ÅÅή¤Î´ðËÜñ°Ì¤Ç¡¢SIñ°Ì·Ï¤Î°ì¤Ä¡£
+
+=== stop-code?: 0x1f09 0x0001 ===
+
+=== stop-code?: 0x1f41 0x0100 ===
+(°Ê²¼Î¬)
+
+
+ +

+stop-code?: ¤È½ñ¤«¤ì¤¿¹Ô¤Ï¤½¤ì¤¾¤ì¡¢¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò +¼¨¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤ò¶èÀڤꥳ¡¼¥É¤È¤·¤Æ»ØÄꤹ¤ë¤È¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¤½¤ÎÃÏÅÀ¤ÇËÜʸ¤Î +½ÐÎϤòÄä»ß¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î english ¤È¤¤¤¦ÉûËܤÎŬÀڤʶèÀڤꥳ¡¼¥É¤Ï¡¢"0x1f41 0x0100" +¤Ë¤Ê¤ê¤Þ¤¹¡£ +--no-candidate ¤È --code ¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢¤³¤Î +¶èÀڤꥳ¡¼¥É¤ò»î¤·¤Æ¤ß¤Þ¤¹¡£ +

+ +
+
+% ebstopcode --no-candidate --code "0x1f41 0x0100" /cdrom english
+A
+[̾] 1: A ¹³¸¶¤òÍ­¤¹¤ëÀÖ·ìµå¤ò»ý¤Ä·ì±Õ·¿¡£
+2: ¥á¡¼¥È¥ë´ð½à¤ÎŤµ¤Îñ°Ì¡£10²¯Ê¬¤Î 1 ¥á¡¼¥È¥ë¡£
+3: ¥¢¥ó¥Ú¥¢¡£ÅÅή¤Î´ðËÜñ°Ì¤Ç¡¢SIñ°Ì·Ï¤Î°ì¤Ä¡£
+
+
+ + +

ebstopcode ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebstopcode ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-c ¥³¡¼¥É
+
--code ¥³¡¼¥É
+
+¥³¡¼¥É ¤ò¶èÀڤꥳ¡¼¥É¤Ë»ØÄꤷ¤Þ¤¹ (Îã: "0x1f09 0x0001")¡£ +ebstopcode ¤Ï¡¢¥³¡¼¥É ¤ò¸«¤Ä¤±¤ë¤Þ¤ÇËÜʸ¤ò½ÐÎϤ·¤Þ¤¹¡£ + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-l Ťµ
+
--length Ťµ
+
+ËÜʸ¥Ç¡¼¥¿¤òºÇĹ¤Ç Ĺ¤µ ¥Ð¥¤¥È¤Þ¤Ç½ÐÎϤ·¤Þ¤¹¡£ +Ťµ ¤ò 0 ¤Ë¤¹¤ë¤È¡¢ebstopcode ¤ÏËÜʸÁ´ÂΤò½ÐÎϤ·¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢2048 ¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
-n
+
--no-candidates
+
+¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò½ÐÎϤ·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£ + +
-p ¥Ú¡¼¥¸:¥ª¥Õ¥»¥Ã¥È
+
--text-position ¥Ú¡¼¥¸:¥ª¥Õ¥»¥Ã¥È
+
+ËÜʸ¥Ç¡¼¥¿¤Î½ÐÎϤò¤³¤Î°ÌÃÖ¤«¤é³«»Ï¤·¤Þ¤¹¡£ +¥Ú¡¼¥¸ ¤Ë¤Ï 0 ¤è¤êÂ礭¤¤ 16¿ÊÀ°¿ô¤ò¡¢¥ª¥Õ¥»¥Ã¥È ¤Ë¤Ï¡¢ +0¡Á0x7FF ¤Î´Ö¤Î 16¿ÊÀ°¿ô¤ò¤½¤ì¤¾¤ì»ØÄꤷ¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢ËÜʸ¥Ç¡¼¥¿¤ÎÀèƬ°ÌÃÖ¤«¤é½ÐÎϤ·¤Þ¤¹¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ +

+--code (-c) ¤È --length +(-l) ¥ª¥×¥·¥ç¥ó¤Ï¡¢¸ß¤¤¤Ë¤â¤¦°ìÊý¤Î¥ª¥×¥·¥ç¥ó¤òÂǤÁ¾Ã¤·¤Þ¤¹¡£ +

+ + + diff --git a/lib/ebu/doc/ebstopcode-toc.html b/lib/ebu/doc/ebstopcode-toc.html new file mode 100644 index 0000000..d642742 --- /dev/null +++ b/lib/ebu/doc/ebstopcode-toc.html @@ -0,0 +1,5 @@ + diff --git a/lib/ebu/doc/ebstopcode.html b/lib/ebu/doc/ebstopcode.html new file mode 100644 index 0000000..c01728e --- /dev/null +++ b/lib/ebu/doc/ebstopcode.html @@ -0,0 +1,42 @@ + + + + + + +ebstopcode ¥³¥Þ¥ó¥É + + + +

+[¼¡¤Ø] [Ìܼ¡] +

+
+

ebstopcode ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 2003-2006 Motoyuki Kasahara +

+ + +
+

+[¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebstopcode.html.in b/lib/ebu/doc/ebstopcode.html.in new file mode 100644 index 0000000..f9968f9 --- /dev/null +++ b/lib/ebu/doc/ebstopcode.html.in @@ -0,0 +1,234 @@ + + + + + + +ebstopcode ¥³¥Þ¥ó¥É + + + +

ebstopcode ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó + +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 2003-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+¤¢¤Ê¤¿¤¬ EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò»È¤Ã¤Æ CD-ROM ½ñÀÒ¤ÎÃæ¤Î¤¢¤ë +ñ¸ì¤ò°ú¤¯ºÝ¡¢¤½¤Îñ¸ì¤ÎÀâÌÀ¤¬½ªÎ»¤¹¤ë²Õ½ê¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬ËÜʸ¤Î +½ÐÎϤò»ß¤á¤ë¤³¤È¤ò¤¢¤Ê¤¿¤Ï´üÂÔ¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£ +¤·¤«¤·¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¤½¤Î¤è¤¦¤ÊÆ°ºî¤òÊݾڤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ +¤Ê¤¼¤Ê¤é¡¢CD-ROM ½ñÀÒ¤ÎËÜʸ¤Ë¤Ï¡¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤¬Â¸ºß¤·¤Ê¤¤¤«¤é +¤Ç¤¹¡£ +

+ +

+¹¬¤¤¤Ë¤â¡¢Â¿¤¯¤Î CD-ROM ½ñÀҤˤϡ¢¹àÌܤνª¤ï¤ê¤ò¼¨¤¹°õ¤ÎÂåÂؤȤ·¤Æ +»È¤¨¤ë¡¢ËÜʸ¤Î¶èÀڤꥳ¡¼¥É (text stop code) ¤È¤¤¤¦¤â¤Î¤ò»ý¤Ã¤Æ +¤¤¤Þ¤¹¡£ +Ä̾EB ¥é¥¤¥Ö¥é¥ê¤Ï¤³¤Î¶èÀڤꥳ¡¼¥É¤ò¼«Æ°Åª¤Ë¿ä¬¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ +¤¤¤ë¤Î¤Ç¤¹¤¬¡¢»þ¡¹¸í¤Ã¤¿¶èÀڤꥳ¡¼¥É¤òƳ¤­½Ð¤¹¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¤½¤Î¾ì¹ç¤Ï¡¢appendix (ÉÕÏ¿) ¤È¤¤¤¦¤â¤Î¤òÍѤ¤¤Æ¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ë +Àµ¤·¤¤¶èÀڤꥳ¡¼¥É¤ò¶µ¤¨¤Æ¤ä¤é¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ +

+ +

+ebstopcode ¥³¥Þ¥ó¥É¤Ï¡¢CD-ROM ½ñÀÒ¤ÎËÜʸ¤Î¶èÀڤꥳ¡¼¥É¤ò²òÀÏ +¤¹¤ë¤¿¤á¤Î¥Ä¡¼¥ë¤Ç¤¹¡£ +

+ + +

ebstopcode ¤Î¼Â¹Ô

+ +

+ebstopcode ¤Î°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebstopcode ½ñÀҤؤΥѥ¹¡¡ÉûËÜ
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +±ó³Ö¥¢¥¯¥»¥¹ÍѤμ±ÊÌ»Ò (ebnet://...) ¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ +½ñÀҤؤΥѥ¹ ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤¬»ØÄꤵ¤ì¤¿ +¤â¤Î¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£ +

+ +

+ÉûËÜ ¤Ë¤Ï¡¢½èÍý¤ÎÂоݤȤ¹¤ëÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò»ØÄꤷ¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢CD-ROM ½ñÀҤˤɤΤ褦¤ÊÉûËܤ¬ +´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 2
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢2 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤Î̾Á°¤Ï english +¤È french ¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+ÉûËÜ english ¤Î¶èÀڤꥳ¡¼¥É¤ò²òÀϤ¹¤ë¤Ë¤Ï¡¢°Ê²¼¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +

+ +
+
+% ebstopcode /cdrom english
+
+
+ +

+ebstopcode ¤Ï¡¢ÉûËܤÎËÜʸ¤È¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò¼¡¤Î¤è¤¦¤Ë +½ÐÎϤ·¤Þ¤¹¡£ +

+ +
+
+=== stop-code?: 0x1f09 0x0001 ===
+
+=== stop-code?: 0x1f41 0x0100 ===
+A
+
+=== stop-code?: 0x1f09 0x0001 ===
+[̾] 1: A ¹³¸¶¤òÍ­¤¹¤ëÀÖ·ìµå¤ò»ý¤Ä·ì±Õ·¿
+
+=== stop-code?: 0x1f09 0x0001 ===
+2: ¥á¡¼¥È¥ë´ð½à¤ÎŤµ¤Îñ°Ì¡£10²¯Ê¬¤Î 1 ¥á¡¼¥È¥ë¡£
+
+=== stop-code?: 0x1f09 0x0001 ===
+3: ¥¢¥ó¥Ú¥¢¡£ÅÅή¤Î´ðËÜñ°Ì¤Ç¡¢SIñ°Ì·Ï¤Î°ì¤Ä¡£
+
+=== stop-code?: 0x1f09 0x0001 ===
+
+=== stop-code?: 0x1f41 0x0100 ===
+(°Ê²¼Î¬)
+
+
+ +

+stop-code?: ¤È½ñ¤«¤ì¤¿¹Ô¤Ï¤½¤ì¤¾¤ì¡¢¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò +¼¨¤·¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤ò¶èÀڤꥳ¡¼¥É¤È¤·¤Æ»ØÄꤹ¤ë¤È¡¢EB ¥é¥¤¥Ö¥é¥ê¤Ï¤½¤ÎÃÏÅÀ¤ÇËÜʸ¤Î +½ÐÎϤòÄä»ß¤·¤Þ¤¹¡£ +

+ +

+¤³¤Î english ¤È¤¤¤¦ÉûËܤÎŬÀڤʶèÀڤꥳ¡¼¥É¤Ï¡¢"0x1f41 0x0100" +¤Ë¤Ê¤ê¤Þ¤¹¡£ +--no-candidate ¤È --code ¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢¤³¤Î +¶èÀڤꥳ¡¼¥É¤ò»î¤·¤Æ¤ß¤Þ¤¹¡£ +

+ +
+
+% ebstopcode --no-candidate --code "0x1f41 0x0100" /cdrom english
+A
+[̾] 1: A ¹³¸¶¤òÍ­¤¹¤ëÀÖ·ìµå¤ò»ý¤Ä·ì±Õ·¿¡£
+2: ¥á¡¼¥È¥ë´ð½à¤ÎŤµ¤Îñ°Ì¡£10²¯Ê¬¤Î 1 ¥á¡¼¥È¥ë¡£
+3: ¥¢¥ó¥Ú¥¢¡£ÅÅή¤Î´ðËÜñ°Ì¤Ç¡¢SIñ°Ì·Ï¤Î°ì¤Ä¡£
+
+
+ + +

ebstopcode ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebstopcode ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬ +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-c ¥³¡¼¥É
+
--code ¥³¡¼¥É
+
+¥³¡¼¥É ¤ò¶èÀڤꥳ¡¼¥É¤Ë»ØÄꤷ¤Þ¤¹ (Îã: "0x1f09 0x0001")¡£ +ebstopcode ¤Ï¡¢¥³¡¼¥É ¤ò¸«¤Ä¤±¤ë¤Þ¤ÇËÜʸ¤ò½ÐÎϤ·¤Þ¤¹¡£ + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-l Ťµ
+
--length Ťµ
+
+ËÜʸ¥Ç¡¼¥¿¤òºÇĹ¤Ç Ĺ¤µ ¥Ð¥¤¥È¤Þ¤Ç½ÐÎϤ·¤Þ¤¹¡£ +Ťµ ¤ò 0 ¤Ë¤¹¤ë¤È¡¢ebstopcode ¤ÏËÜʸÁ´ÂΤò½ÐÎϤ·¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢2048 ¤Ë¤Ê¤ê¤Þ¤¹¡£ + +
-n
+
--no-candidates
+
+¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò½ÐÎϤ·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£ + +
-p ¥Ú¡¼¥¸:¥ª¥Õ¥»¥Ã¥È
+
--text-position ¥Ú¡¼¥¸:¥ª¥Õ¥»¥Ã¥È
+
+ËÜʸ¥Ç¡¼¥¿¤Î½ÐÎϤò¤³¤Î°ÌÃÖ¤«¤é³«»Ï¤·¤Þ¤¹¡£ +¥Ú¡¼¥¸ ¤Ë¤Ï 0 ¤è¤êÂ礭¤¤ 16¿ÊÀ°¿ô¤ò¡¢¥ª¥Õ¥»¥Ã¥È ¤Ë¤Ï¡¢ +0¡Á0x7FF ¤Î´Ö¤Î 16¿ÊÀ°¿ô¤ò¤½¤ì¤¾¤ì»ØÄꤷ¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢ËÜʸ¥Ç¡¼¥¿¤ÎÀèƬ°ÌÃÖ¤«¤é½ÐÎϤ·¤Þ¤¹¡£ + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ +
+ +

+--code (-c) ¤È --length +(-l) ¥ª¥×¥·¥ç¥ó¤Ï¡¢¸ß¤¤¤Ë¤â¤¦°ìÊý¤Î¥ª¥×¥·¥ç¥ó¤òÂǤÁ¾Ã¤·¤Þ¤¹¡£ +

+ + + diff --git a/lib/ebu/doc/ebutils.css b/lib/ebu/doc/ebutils.css new file mode 100644 index 0000000..8c529a3 --- /dev/null +++ b/lib/ebu/doc/ebutils.css @@ -0,0 +1,37 @@ +body { + color: #000000; + background-color: #ffffff; +} + +td { + border-style: solid; + border-width: 1px; +} + +table { + border-style: solid; + border-width: 2px; +} + +h2 { + font-size: x-large; + background-color: #cfcfcf; + padding: 3px; + border-style: solid; + border-width: 1px; +} + +h3 { + font-size: large; + background-color: #cfcfcf; + padding: 3px; + border-style: solid; + border-width: 1px; +} + +h4 { + font-size: medium; + border-style: solid; + border-width: 2px; + padding: 8px; +} diff --git a/lib/ebu/doc/ebzip-01.html b/lib/ebu/doc/ebzip-01.html new file mode 100644 index 0000000..cc1c418 --- /dev/null +++ b/lib/ebu/doc/ebzip-01.html @@ -0,0 +1,42 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¤Ï¤¸¤á¤Ë

+ +

+ebzip ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥óÍѤˡ¢CD-ROM ½ñÀҤΠ+°µ½Ì¡¦¿­Ä¹¤ò¹Ô¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢µ¡Ç½Åª¤Ë¤Ï²¿¤ÎÀ©¸Â¤â¤Ê¤¯°µ½Ì¤µ¤ì¤¿ +CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹ (¤¿¤À¤·¡¢½èÍý®Å٤Ϥâ¤È¤Î½ñÀÒ¤ËÈæ¤Ù¤ÆÃÙ +¤¯¤Ê¤ë¤«¤âÃΤì¤Þ¤»¤ó)¡£ +°µ½Ì¥Ç¡¼¥¿·Á¼°¤Ï¡¢CPU ¤Î¼ïÎà¤ä¡¢OS¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤Ï°Í¸¤·¤Æ¤¤¤Þ¤» +¤ó¤Î¤Ç¡¢ebzip ¤Ç°µ½Ì¤·¤¿¥Õ¥¡¥¤¥ë¤Ï¶¦ÍѤ¬²Äǽ¤Ç¤¹¡£ +ebzip ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤¢¤Ê¤¿¤Ï¡¢¼«Ê¬¤Î½êÍ­¤¹¤ë CD-ROM ½ñÀҤλÈÍѵöÂú¤ò¼é¤é¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +ebzip ¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¤¬¡¢¤¢¤Ê¤¿¤Î½ñÀÒ¤¬¼«Í³¤Ë»È¤¨¤ë +¤â¤Î¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +CD-ROM ½ñÀҤνÐÈǼҤ¬¥Ï¡¼¥É¥Ç¥£¥¹¥¯ (¤ª¤è¤Ó¾¤ÎÊä½õµ­²±ÁõÃÖ) ¤Ë½ñÀÒ¤ò +¥³¥Ô¡¼¤¹¤ë¤³¤È¤òµö²Ä¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢¤½¤Î½ñÀҤΰµ½Ì¤ÏÄü¤á¤Æ²¼¤µ¤¤¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-02.html b/lib/ebu/doc/ebzip-02.html new file mode 100644 index 0000000..ae06966 --- /dev/null +++ b/lib/ebu/doc/ebzip-02.html @@ -0,0 +1,90 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

Æ°ºî¤È¥³¥Þ¥ó¥É̾

+ +

+ebzip ¤Ï»°¤Ä¤Î Æ°ºî (action) ¥â¡¼¥É¤ò +È÷¤¨¤Æ¤¤¤Þ¤¹¡£ +°µ½Ì (compression)¡¢¿­Ä¹ (uncompression) ¤È¾ðÊó½ÐÎÏ (information) ¤Ç¤¹¡£ +

+ +
    +
  • °µ½Ì (compression)
    +°ìºý¤Î CD-ROM ½ñÀÒ¤ò°µ½Ì¤·¤Þ¤¹¡£ + +
  • ¿­Ä¹ (uncompression)
    +ebzip ¤Ç°µ½Ì¤µ¤ì¤¿¡¢°ìºý¤Î CD-ROM ½ñÀÒ¤ò¿­Ä¹¤·¤Þ¤¹¡£ + +
  • ¾ðÊó½ÐÎÏ (information)
    +ebzip ¤Ç°µ½Ì¤µ¤ì¤¿¡¢°ìºý¤Î CD-ROM ½ñÀҤΰµ½Ì¾õÂ֤˴ؤ¹¤ë +¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ + +
+ +

+ebzip ¤Ïµ¯Æ°»þ¤Ë¡¢µ¯Æ°»þ¤Ë»ÈÍѤµ¤ì¤¿¥³¥Þ¥ó¥É̾¤È +¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤«¤éÆ°ºî¥â¡¼¥É¤ò·èÄꤷ¤Þ¤¹¡£ +ebzip ¤Î°ì²ó¤Î¼Â¹Ô¤Î´Ö¤Ç¡¢Æ°ºî¥â¡¼¥É¤¬ÊѤï¤ë¤³¤È¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+ebzip ¤Ï ebzip¡¢ebunzip, +ebzipinfo ¤È¤¤¤¦°Û¤Ê¤ë 3 ¤Ä¤Î¥³¥Þ¥ó¥É̾¤Ç¥¤¥ó¥¹¥È¡¼¥ë +¤µ¤ì¤Þ¤¹¡£ +(°ìÉô¤Î´Ä¶­¤Ç¤Ï¡¢ebzipinfo ¤Ï ebzipinf +¤È¤¤¤¦Ì¾Á°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£) + +

+ebunzip ¤È¤¤¤¦Ì¾Á°¤Çµ¯Æ°¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¿­Ä¹¤ò¹Ô¤¤¤Þ¤¹¡£ +ebzipinfo ¤È¤¤¤¦Ì¾Á°¤Çµ¯Æ°¤µ¤ì¤¿¾ì¹ç¡¢¾ðÊó½ÐÎϤò¹Ô¤¤¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢°µ½Ì¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Ç¤â¡¢Æ°ºî¥â¡¼¥É¤ò·èÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +--compress (-z) ¤Ç°µ½Ì¡¢--uncompress +(-u) ¤Ç¿­Ä¹¡¢--information (-i) +¤Ç¾ðÊó½ÐÎϤò¹Ô¤¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó¤Ï¡¢µ¯Æ°»þ¤Î¥³¥Þ¥ó¥É̾¤è¤êÍ¥À褷¤Þ¤¹¡£ +¼¡¤ÎÎã¤Ç¤Ï¡¢¤¤¤º¤ì¤âÆ°ºî¥â¡¼¥É¤¬¡Ö¿­Ä¹¡×¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ebunzip
+ebzip --uncompress
+ebzipinfo --uncompress
+
+
+ +

+±ó³Ö¥¢¥¯¥»¥¹¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤϻÈÍѤǤ­¤Þ¤»¤ó¡£ +

+ +
+
+% ebzip ebnet://localhost/cdrom
+ebzip: ebnet ¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£
+
+
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-03.html b/lib/ebu/doc/ebzip-03.html new file mode 100644 index 0000000..e60c288 --- /dev/null +++ b/lib/ebu/doc/ebzip-03.html @@ -0,0 +1,57 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

ebzip ¤Î¼Â¹Ô

+ +

+ebinfo¡¢ebunzip¡¢ebzipinfo ¤Î +°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebzip ½ñÀҤؤΥѥ¹
+% ebunzip ½ñÀҤؤΥѥ¹
+% ebzipinfo ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebzip
+% ebunzip
+% ebzipinfo
+
+
+ +

+¤³¤Î¾ì¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤¬»ØÄꤵ¤ì¤¿¤â¤Î¤È +ȽÃǤµ¤ì¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-04.html b/lib/ebu/doc/ebzip-04.html new file mode 100644 index 0000000..746e1ce --- /dev/null +++ b/lib/ebu/doc/ebzip-04.html @@ -0,0 +1,414 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

°µ½Ì

+ +

+ebzip (ebunzip --compress¡¢ +ebzipinfo --compress ¤ÈÅù²Á) ¤Ï CD-ROM ½ñÀҤΰµ½Ì¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ + + +

°µ½Ì¤Î¼Â¹ÔÎã (1)

+ +

+¤³¤ÎÀá¤Ç¤Ï¡¢¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤Ë¤¹¤Ç¤Ë¥³¥Ô¡¼¤·¤Æ¤¢¤ë CD-ROM ½ñÀÒ¤ò°µ½Ì¤¹¤ë¤Ë¤Ï +¤É¤¦¤·¤¿¤é¤¤¤¤¤«¤òÀâÌÀ¤·¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¤¬¤¹¤Ç¤Ë /dict ¤Ë¥³¥Ô¡¼¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Î¡¢¤Þ¤À°µ½Ì +¤µ¤ì¤Æ¤¤¤Ê¤¤¤È²¾Äꤷ¤Þ¤¹¡£ +¤³¤Î½ñÀÒ¤Ï /dict ¤Î²¼¤Ë¡¢¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language
+/dict/kanji/start
+/dict/english/start
+
+
+ +

+¤³¤Î½ñÀÒ¤ò°µ½Ì¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% cd /dict
+% ebzip
+
+
+ +

+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤âƱ¤¸¤Ç¤¹¡£ +

+ +
+
+% ebzip --output-directory /dict /dict
+
+
+ +

+°µ½Ì¤Ë¤Ï¡¢¤·¤Ð¤é¤¯¤«¤«¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +°µ½Ì¤Î´Ö¡¢ebzip ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¾õ¶·¤òÃΤ餻¤ë¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ +
+
+==> /dict/kanji/start ¤ò°µ½Ì <==
+./dict/kanji/start.ebz ¤Ë½ÐÎÏ
+ 1.0% ½èÍýºÑ¤ß (2097152 / 220069888 ¥Ð¥¤¥È)
+ 1.9% ½èÍýºÑ¤ß (4194304 / 220069888 ¥Ð¥¤¥È)
+ 2.9% ½èÍýºÑ¤ß (6291456 / 220069888 ¥Ð¥¤¥È)
+        : (ά)
+´°Î» (220069888 / 220069888 ¥Ð¥¤¥È)
+220069888 -> 78163751 ¥Ð¥¤¥È (35.5%)
+
+
+ +

+°µ½Ì¤¬´°Î»¤¹¤ë¤È¡¢/dict ¤Î²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¾¯¤·ÊѲ½¤·¤Æ +¤¤¤ë¤Î¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language.ebz
+/dict/kanji/start.ebz
+/dict/english/start.ebz
+
+
+ +

+³ÈÄ¥»Ò .ebz ¤¬¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë +(/dict/language.ebz¡¢/dict/kanji/start.ebz¡¢ +/dict/english/start.ebz) ¤ËÉÕ¤¤¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤¬°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ +¾¤Î¥Õ¥¡¥¤¥ë¤ÏÊѲ½¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

+ +

+ebzip ¤¬°µ½Ì¤¹¤ë¥Õ¥¡¥¤¥ë¤Ï¡¢ +START¡¢HONMON¡¢HONMON2¡¢ +HONMONS¡¢LANGUAGE ¥Õ¥¡¥¤¥ë¤È GAIJI +¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë³°»ú¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ +

+ + +

°µ½Ì¤Î¼Â¹ÔÎã (2)

+ +

+¤³¤ÎÀá¤Ç¤Ï¤â¤¦°ì¤ÄÊ̤ÎÎã¤È¤·¤Æ¡¢CD-ROM ¥Ç¥£¥¹¥¯¤Î¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¡¢¤½¤ì +¤ò¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤ËÃÖ¤¯ÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +¸µ¤Î CD-ROM ½ñÀÒ¤¬ /cdrom ¤Ë¥Þ¥¦¥ó¥È¤µ¤ì¡¢½ñÀÒ¤Ï +/cdrom ¤Î²¼¤Ë¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤ë¤È²¾Äꤷ¤Þ¤¹¡£ +

+ +
+
+/cdrom/catalog
+/cdrom/language
+/cdrom/german/start
+/cdrom/french/start
+/cdrom/italian/start
+
+
+ +

+¤³¤Î½ñÀÒ¤ò°µ½Ì¤·¡¢/dict ¤Î²¼¤ËÃÖ¤¯¤¿¤á¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò +¼Â¹Ô¤·¤Þ¤¹¡£ +

+ +
+
+% cd /dict
+% ebzip --keep /cdrom
+
+
+ +

+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤âƱ¤¸¤Ç¤¹¡£ +

+ +
+
+% ebzip --keep --output-directory /dict /cdrom
+
+
+ +

+½ÐÎϦ¤Î¥Ç¥£¥ì¥¯¥È¥ê /dict ¤Ï¶õ¤Ç¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢°µ½ÌÁ°¤Ë +¤¢¤é¤«¤¸¤áºî¤Ã¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢--keep ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ +Æä˻ØÄꤷ¤Ê¤±¤ì¤Ð¡¢ebzip ¤Ï¡¢°µ½Ì¸å¤Ë¸µ¤Î¥Õ¥¡¥¤¥ë¤òºï½ü +¤·¤Þ¤¹¤¬¡¢--keep ¥ª¥×¥·¥ç¥ó¤Ï¤³¤Î¿¶¤ëÉñ¤¤¤òÍÞÀ©¤·¤Þ¤¹¡£ +

+ +

+/dict ¤È /cdrom ¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤Ï¤Û¤È¤ó¤É +Ʊ¤¸¤Ç¤¹¤¬¡¢/dict ¤Î²¼¤Î°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ë¤Ï³ÈÄ¥»Ò +.ebz ¤¬ÉÕ¤¤¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language.ebz
+/dict/german/start.ebz
+/dict/french/start.ebz
+/dict/italian/start.ebz
+
+
+ +

+Ãæ´Ö¤Î¥Ç¥£¥ì¥¯¥È¥ê /dict/german¡¢/dict/french¡¢ +/dict/italian ¤Ï¡¢¤â¤·Ìµ¤±¤ì¤Ð ebzip ¤Ë¤è¤Ã¤Æ +ºîÀ®¤µ¤ì¤Þ¤¹¡£ +catalog ¤È catalogs ¤Ï¡¢½ÐÎϦ¤Î¥Ç¥£¥ì¥¯¥È¥ê +¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤¬Âбþ¤·¤Æ¤¤¤Ê¤¤¥Õ¥¡¥¤¥ë¡¢¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +ebzip ¤Ï̵»ë¤·¤Þ¤¹ (°µ½Ì¤â¥³¥Ô¡¼¤â¤·¤Þ¤»¤ó)¡£ +

+ + +

°µ½Ì¥ì¥Ù¥ë

+ +

+ebzip ¤Ï¡¢0 ¡Á 5 ¤È¤¤¤¦ 6 ¤Ä¤Î°µ½Ì¥ì¥Ù¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +°µ½Ì¥ì¥Ù¥ë 0 ¤Ï¡¢°µ½Ì¡¦¿­Ä¹¤¬ºÇ¤â®¤¤¤Ç¤¹¤¬¡¢°µ½ÌΨ¤ÏºÇ°­¤Ç¤¹¡£ +°µ½Ì¥ì¥Ù¥ë 5 ¤Ï¡¢°µ½ÌΨ¤¬ºÇÎɤǤ¹¤¬¡¢°µ½Ì¡¦¿­Ä¹¤ÏºÇ¤âÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£ +°µ½Ì¥ì¥Ù¥ë¤Ï¡¢--level (-l) ¥ª¥×¥·¥ç¥ó¤ÇÀßÄꤷ¤Þ¤¹¡£ +

+ +
+
+% ebzip --level 2 --output-directory /dict /dict
+
+
+ +

+̵»ØÄê»þ¤Î¥ì¥Ù¥ë¤Ï 0 (ºÇ®¤À¤¬°µ½ÌΨ¤ÏºÇ°­) ¤Ç¤¹¡£ +

+ + +

¥Æ¥¹¥È

+ +

+ebzip ¤ò --test (-t) ¥ª¥×¥·¥ç¥óÉÕ¤­ +¤Ç¼Â¹Ô¤¹¤ë¤È¡¢ebzip ¤Ï°µ½Ì¤·¤¿¥Ç¡¼¥¿¤ò¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï +½ñ¤­¹þ¤Þ¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +°µ½Ì¤¹¤ëÁ°¤Ë°µ½Ì¸å¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òÃΤꤿ¤¤¤È¤­¤Ë¡¢ÊØÍø¤Ç¤¹¡£ +

+ +
+
+% ebzip --test /dict /dict
+
+
+ + +

°ìÉô¤À¤±¤Î°µ½Ì

+ +

+¤Ê¤Ë¤âÀßÄꤷ¤Ê¤¤¤È¡¢ebzip ¤Ï½ñÀÒ°ìºý¤ÎÁ´ÂΤò°µ½Ì¤·¤Þ¤¹¤¬¡¢ +--subbook (-S) ¤ä --skip-content +(-s) ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È°ìÉô¤À¤±¤ò°µ½Ì¤Ç¤­¤Þ¤¹¡£ +

+ +

+--subbook ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢°µ½Ì¤·¤¿¤¤ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤òÊÂ¤Ù¤Æ +½ñ¤­¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢¤¢¤Ê¤¿¤Î½êÍ­¤·¤Æ¤¤¤ë½ñÀÒ¤Ë +¤É¤Î¤è¤¦¤ÊÉûËܤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 3
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 3:
+  Âê̾: ¥Ý¥±¥Ã¥ÈÆÈϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: german
+  ¸¡º÷Êý¼°: ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢3 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤ì¤é¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï +english, french, german +¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+english ¤È german ¤À¤±¤ò°µ½Ì¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î +¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebzip --subbook english,french /dict
+
+
+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¢¾®Ê¸»ú¤Î°ã¤¤¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +--subbook ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebzip --subbook english --subbook french /dict
+
+
+ +

+»Ä¤ê¤ÎÉûËÜ (¤³¤ÎÎã¤Ç¤Ï german) ¤Î¥Õ¥¡¥¤¥ë¤Ï°µ½Ì¤µ¤ì¤ë¤³¤È¤â +¥³¥Ô¡¼¤µ¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¤³¤Î»þÅÀ¤Ç¤Ï¤Þ¤À¤³¤Î½ñÀÒ¤ËÂФ¹¤ë°µ½Ì¤Î +ºî¶È¤Ï´°Î»¤·¤Æ¤¤¤Þ¤»¤ó¡£ +¤³¤Î½ñÀÒ¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢¤µ¤é¤Ê¤ëÁàºî¤ò¹Ô¤Ã¤Æ»Ä¤ê¤ÎÉûËܤò°µ½Ì¤¹¤ë¤«¡¢ +ebrefile ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ»Ä¤ê¤ÎÉûËܤò catalog(s) +¥Õ¥¡¥¤¥ë¤ÎÉûËÜÅÐÏ¿¥ê¥¹¥È¤«¤éºï½ü¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó +(ebrefile ¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯¤Ï¡¢ +ebrefile ¥³¥Þ¥ó¥É ¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öebzip ¤È¤ÎÏ¢·È¡×¹à¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ÉûËܤΰìÉô¤º¤Ä¤òÊ£¿ô²ó¤Ëʬ¤±¤Æ°µ½Ì¤¹¤ë¾ì¹ç¡¢¤¹¤Ù¤Æ¤ÎÉûËܤÇƱ¤¸°µ½Ì¥ì¥Ù¥ë +¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +(¤¿¤È¤¨¤Ð¡¢english ¤È french ¤Ï¥ì¥Ù¥ë 0 ¤Ç°µ½Ì¤·¡¢ +german ¤Ï¥ì¥Ù¥ë 2 ¤Ç°µ½Ì¤¹¤ë)¡£ +

+ +

+--skip-content (-s) ¤Ï --subbook +¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢--skip-content ¤Ç¤Ï̵»ë¤¹¤ë¥Õ¥¡¥¤¥ë¤Î +¥Ç¡¼¥¿·¿¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +
+
+% ebzip --skip-content sound,movie --subbook french /dict
+
+
+ +

+¤³¤ÎÎã¤Ç¤Ï¡¢ebzip ¤Ï²»À¼¤ÈÆ°²è¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢ebzip ¤Ë¤è¤Ã¤Æǧ¼±¤µ¤ì¤ë¥Ç¡¼¥¿·¿¤Ï¡¢ +¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
    +
  • font
    +³°»ú¤Î¥Õ¥©¥ó¥È +
  • graphic
    +²èÁü¥Ç¡¼¥¿ +
  • sound
    +²»À¼¥Ç¡¼¥¿ +
  • movie
    +Æ°²è¥Ç¡¼¥¿ +
+ + +

¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­

+ +

+½ñ¤­¹þ¤â¤¦¤È¤·¤¿¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¤È¤­¡¢ebzip ¤Ï +¾å½ñ¤­¤·¤ÆÎɤ¤¤«¤É¤¦¤«¤Î³Îǧ¤òµá¤á¤Æ¤­¤Þ¤¹¡£ +

+ +
+
+==> /dict/science/data/honmon ¤ò°µ½Ì <==
+/dict/science/data/honmon.ebz ¤Ë½ÐÎÏ
+
+¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹: /dict/science/data/honmon.ebz
+¾å½ñ¤­¤·¤Þ¤¹¤« (¤Ï¤¤:y, ¤¤¤¤¤¨:n)?
+
+
+ +

+y ¤« n ¤ÇÅú¤¨¤Æ²¼¤µ¤¤¡£ +n ¤ÈÅú¤¨¤ë¤È¡¢ebzip ¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤·¤Æ¡¢ +¼¡¤Ë¿Ê¤ß¤Þ¤¹¡£ +

+ +

+--force-overwrite ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebzip +¤Ï¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¡¢³Îǧ¤Ê¤·¤Ë¾å½ñ¤­¤·¤Þ¤¹¡£ +ƱÍͤˡ¢--no-overwrite ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ +ebzip ¤Ï³Îǧ¤Ê¤·¤Ë¤½¤Î¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤·¤Æ¼¡¤Ë¿Ê¤ß¤Þ¤¹¡£ +

+ + +

°µ½Ì¤µ¤ì¤¿½ñÀҤΰµ½Ì

+ +

+S-EBXA ¤ª¤è¤Ó EPWING µ¬³Ê¤Ë¤ª¤¤¤Æ¤â°µ½Ì·Á¼°¤òÄêµÁ¤·¤Æ¤ª¤ê¡¢CD-ROM ½ñÀÒ +¤Ë¤Ï¤³¤ì¤é¤Î°µ½Ì·Á¼°¤ò¼ÂºÝ¤ËºÎÍѤ·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤é¤Î°µ½Ì·Á¼°¤Ï¡¢ebzip ¤Î°µ½Ì·Á¼°¤È¤Ï°Û¤Ê¤ë¤â¤Î¤Ç¤¹¡£ +

+ +

+ebzip ¤Ï S-EBXA ¤ä EPWING °µ½Ì·Á¼°¤Ç°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀÒ¤â +¿­Ä¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢°µ½Ì¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +

+ +

+ebzip ¤ËÂФ·¤Æ¡¢´û¤Ë°µ½Ì¤µ¤ì¤Æ¤¤¤ë CD-ROM ½ñÀÒ¤ò°µ½Ì¤¹¤ë¤è¤¦¤Ë +Ì¿¤¸¤ë¤È¡¢ebzip ¤Ï¤¤¤Ã¤¿¤ó½ñÀÒ¤ò¿­Ä¹¤·¤Æ¤«¤é¡¢ebzip ¤Î°µ½Ì·Á¼°¤Ç +°µ½Ì¤·Ä¾¤·¤Þ¤¹¡£ +

+ +

+°ìÈÌ¤Ë ebzip ¤Î°µ½Ì·Á¼°¤ÎÊý¤¬ S-EBXA ¤ä EPWING ¤Î°µ½Ì·Á¼°¤è¤ê¤â°µ½ÌΨ¤¬ +Îɹ¥¤Ç¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-05.html b/lib/ebu/doc/ebzip-05.html new file mode 100644 index 0000000..64b4260 --- /dev/null +++ b/lib/ebu/doc/ebzip-05.html @@ -0,0 +1,185 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¿­Ä¹

+ +

+ebunzip (ebzip --uncompress¡¢ +ebzipinfo --uncompress ¤ÈƱ¤¸) ¤Ï¡¢ebzip ¤Ç +°µ½Ì¤·¤¿ CD-ROM ½ñÀÒ¤ò¿­Ä¹¤·¤Þ¤¹¡£ +

+ + + +

¿­Ä¹¤Î¼Â¹ÔÎã

+ +

+¿­Ä¹¤Î½èÍý¼ê½ç¤Ï¡¢°µ½Ì¤È¤«¤Ê¤ê»÷¤Æ¤¤¤Þ¤¹¡£ +/dict ¤Î²¼¤Ë°µ½Ì¤µ¤ì¤¿½ñÀÒ¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¤â¤Î¤È²¾Äꤷ¤Þ¤¹¡£ +¤³¤Î½ñÀҤˤϡ¢/dict ¤Î²¼¤Ë¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language.ebz
+/dict/kanji/start.ebz
+/dict/english/start.ebz
+
+
+ +

+¤³¤Î½ñÀÒ¤ò¿­Ä¹¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +

+ +
+
+% cd /dict
+% ebunzip
+
+
+ +

+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤âƱ¤¸¤Ç¤¹¡£ +

+ +
+
+% ebunzip --output-directory /dict /dict
+
+
+ +

+¿­Ä¹¤Ë¤Ï¡¢¤·¤Ð¤é¤¯¤«¤«¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¿­Ä¹¤Î´Ö¡¢ebunzip ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¾õ¶·¤òÃΤ餻¤ë¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ +
+
+==> /dict/kanji/start.ebz ¤ò¿­Ä¹ <==
+./kanji/start.ebz ¤Ë½ÐÎÏ
+ 5.1% ½èÍýºÑ¤ß (4194304 / 82460672 ¥Ð¥¤¥È)
+10.2% ½èÍýºÑ¤ß (8388608 / 82460672 ¥Ð¥¤¥È)
+15.3% ½èÍýºÑ¤ß (12582912 / 82460672 ¥Ð¥¤¥È)
+        : (ά)
+´°Î» (82460672 / 82460672 ¥Ð¥¤¥È)
+25681439 -> 82460672 ¥Ð¥¤¥È
+
+
+ +

+¿­Ä¹¤Î´Ö¡¢ebunzip ¤Ï¡¢¤¹¤Ç¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Æ¤âÎɤ¤¤« +¤É¤¦¤«³Îǧ¤òµá¤á¤Æ¤­¤Þ¤¹¡£ +

+ +
+
+==> /dict/kanji/start.ebz ¤ò¿­Ä¹ <==
+/dict/kanji/start ¤Ë½ÐÎÏ
+
+¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹: /dict/kanji/start
+¾å½ñ¤­¤·¤Þ¤¹¤« (¤Ï¤¤:y, ¤¤¤¤¤¨:n)?
+
+
+ +

+¿­Ä¹¤¬´°Î»¤¹¤ë¤È¡¢/dict ¤Î²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤Ï¾¯¤·ÊѲ½¤·¤Æ +¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language
+/dict/kanji/start
+/dict/english/start
+
+
+ +

+¿­Ä¹¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¥Õ¥¡¥¤¥ë̾¤¬ÊѲ½¤·¡¢ +³ÈÄ¥»Ò .ebz ¤¬¼è¤ê½ü¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ + +

¿­Ä¹¤Î¥ª¥×¥·¥ç¥ó

+ +

+¿¤¯¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢°µ½Ì»þ¤È¿­Ä¹»þ¤È¤ÇƱ¤¸°ÕÌ£¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+--keep ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebunzip ¤Ï¡¢ +¿­Ä¹¤·¤¿¸å¤Ë°µ½Ì¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +

+--test ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebunzip ¤Ï¿­Ä¹ +¤·¤¿¥Ç¡¼¥¿¤ò¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Õ¥¡¥¤¥ë¤¬Àµ¤·¤¯°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤ò³Îǧ¤¹¤ë¤È¤­¤ËÊØÍø +¤Ç¤¹ +(--test ¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö¥Æ¥¹¥È¡×¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+--subbook ¤ä --skip-content ¥ª¥×¥·¥ç¥ó¤ò»ØÄê +¤¹¤ë¤È¡¢¾ò·ï¤Ë¹çÃפ·¤¿¥Õ¥¡¥¤¥ë¤À¤±¤·¤«¿­Ä¹¤·¤Þ¤»¤ó +(¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö°ìÉô¤À¤±¤Î°µ½Ì¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+--force-overwrite ¤ä --no-overwrite ¥ª¥×¥·¥ç¥ó +¤ò»ØÄꤹ¤ë¤È¡¢ebunzip ¤Ï¾å½ñ¤­¤·¤Æ¤âÎɤ¤¤«¤É¤¦¤«¤Î³Îǧ¤Ê¤·¤Ë¡¢ +¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤¿¤êÈô¤Ð¤·¤Æ¼¡¤Ë¿Ê¤ó¤À¤ê¤·¤Þ¤¹ +(--force-overwrite ¤È --no-overwrite ¥ª¥×¥·¥ç¥ó +¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ebunzip ¤Ï¡¢--level ¥ª¥×¥·¥ç¥ó¤ò̵»ë¤·¤Þ¤¹¡£ +¿­Ä¹»þ¤Ë --level ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ + +

°µ½Ì¤µ¤ì¤¿½ñÀҤο­Ä¹

+ +

+S-EBXA ¤ª¤è¤Ó EPWING µ¬³Ê¤Ç¤â°µ½Ì·Á¼°¤òÄêµÁ¤·¤Æ¤ª¤ê¡¢CD-ROM ½ñÀÒ¤Ë¤Ï +¤³¤ì¤é¤Î°µ½Ì·Á¼°¤ò¼ÂºÝ¤ËºÎÍѤ·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +¤·¤«¤·¡¢S-EBXA ¤ä EPWING¤Î°µ½Ì·Á¼°¤Ï¡¢ebzip ¤Î°µ½Ì·Á¼°¤È¤Ï°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebzip ¤Ï S-EBXA ¤ä EPWING °µ½Ì·Á¼°¤Ç°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀÒ¤â +¿­Ä¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢°µ½Ì¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +

+ +

+S-EBXA ·Á¼°¤Ç°µ½Ì¤µ¤ì¤¿ START ¥Õ¥¡¥¤¥ë¤ä¡¢EPWING ·Á¼°¤Ç°µ½Ì +¤µ¤ì¤¿ HONMON2, HONMONS ¥Õ¥¡¥¤¥ë¤ò¿­Ä¹¤¹¤ë¤È¡¢ +¿­Ä¹¸å¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï³ÈÄ¥»Ò .org ¤¬Éղ䵤ì¤Þ¤¹ +(Îã: honmon2 ¢ª honmon2.org)¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-06.html b/lib/ebu/doc/ebzip-06.html new file mode 100644 index 0000000..828a32a --- /dev/null +++ b/lib/ebu/doc/ebzip-06.html @@ -0,0 +1,80 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

¾ðÊó½ÐÎÏ

+ +

+ebzipinfo (ebzip --information +ebunzip --information ¤ÈƱ¤¸) ¤Ï CD-ROM ½ñÀҤΰµ½Ì¾õÂÖ¤ò½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ + + +

¾ðÊó½ÐÎϤμ¹ÔÎã

+ +

+/dict ¤Ë¤¢¤ë¡¢°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀҤξðÊó¤ò½ÐÎϤ¹¤ë¤Ë¤Ï +¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +/dict ¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¡¢°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀҤξðÊó¤ò½ÐÎÏ +¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebzipifo /dict
+
+
+ +

+ebzipinfo ¤Ïɸ½à½ÐÎϤ˼¡¤Î¤è¤¦¤Ê¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ +

+ +
+
+==> /dict/spanish/spanish/start.ebz <==
+154290176 -> 54881862 ¥Ð¥¤¥È (35.6%, ebzip °µ½Ì¥ì¥Ù¥ë 0)
+
+==> /dict/spanish/language.ebz <==
+compressed: 12288 -> 4121 ¥Ð¥¤¥È (33.5%, ebzip °µ½Ì¥ì¥Ù¥ë 0)
+
+==> /dict/spanish/catalog <==
+2048 ¥Ð¥¤¥È (Èó°µ½Ì)
+
+
+ + +

¾ðÊó½ÐÎϤΥª¥×¥·¥ç¥ó

+ +

+--subbook ¤ä --skip-content ¥ª¥×¥·¥ç¥ó¤ò +»ØÄꤹ¤ë¤È¡¢¾ò·ï¤Ë¹çÃפ·¤¿¥Õ¥¡¥¤¥ë¤Î¾ðÊó¤À¤±¤ò½ÐÎϤ·¤Þ¤¹ +(¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö°ìÉô¤À¤±¤Î°µ½Ì¡×¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ebzipinfo ¤Ï --force-overwrite¡¢ +--keep¡¢--level¡¢--no-overwrite¡¢ +--output-directory¡¢--quiet¡¢--silence¡¢ +--test ¥ª¥×¥·¥ç¥ó¤ò̵»ë¤·¤Þ¤¹¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-07.html b/lib/ebu/doc/ebzip-07.html new file mode 100644 index 0000000..75af881 --- /dev/null +++ b/lib/ebu/doc/ebzip-07.html @@ -0,0 +1,39 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

½ñÀҤκï½ü

+ +

+ebzip ¤Ï¡¢¥Ï¡¼¥É¥Ç¥£¥¹¥¯¾å¤Ë°µ½Ì¤·¤¿¼­½ñ¤Îºï½üµ¡Ç½¤Ï»ý¤Ã¤Æ +¤¤¤Þ¤»¤ó¡£ +Âå¤ï¤ê¤Ë rm ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ²¼¤µ¤¤¡£ +

+ +
+
+% rm -r /dict
+
+
+ +

+¤³¤Îºî¶È¤Ï¡¢Ãí°Õ¤·¤Æ¹Ô¤Ã¤Æ²¼¤µ¤¤¡£ +

+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-08.html b/lib/ebu/doc/ebzip-08.html new file mode 100644 index 0000000..a212321 --- /dev/null +++ b/lib/ebu/doc/ebzip-08.html @@ -0,0 +1,152 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

ebzip ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebzip ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-f
+
--force-overwrite
+
+³Îǧ¤òµá¤á¤º¤Ë¡¢´û¤Ë¸ºß¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¡× ¤ò +»²¾È¤Î¤³¤È)¡£ + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-i
+
--information
+
+»ØÄꤵ¤ì¤¿ CD-ROM ½ñÀҤΰµ½Ì¾õÂÖ¤ò½ÐÎϤ·¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢ ¡Ö¾ðÊó½ÐÎÏ¡× ¤ò»²¾È¤Î¤³¤È)¡£ + +
-k
+
--keep
+
+½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤ò½ñ¤­¹þ¤ß½ª¤ï¤Ã¤Æ¤â¡¢Âбþ¤¹¤ëÆþÎϦ¤Î¥Õ¥¡¥¤¥ë¤Ï +ºï½ü¤·¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö°µ½Ì¤Î¼Â¹ÔÎã (2)¡× +¤ò»²¾È¤Î¤³¤È)¡£ + +
-l À°¿ô
+
--level À°¿ô
+
+°µ½Ì¥ì¥Ù¥ë¤ò»ØÄꤷ¤Þ¤¹¡£ +À°¿ô ¤Ï¡¢0¡¢1¡¢2¡¢ +3¡¢4¡¢5 ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï +¤¤¤±¤Þ¤»¤ó¡£ +¥ì¥Ù¥ë 0 ¤Ï¡¢ºÇ¤â®¤¤¤â¤Î¤Î°µ½ÌΨ¤ÏºÇ°­¤Ç¤¹¡£ +¥ì¥Ù¥ë 3 ¤Ï¡¢ºÇ¤âÃÙ¤¤¤â¤Î¤Î°µ½ÌΨ¤ÏºÇÎɤǤ¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Î¥ì¥Ù¥ë¤Ï 0 ¤Ç¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢°µ½Ì°Ê³°¤ÎÆ°ºî¤Î¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö°µ½Ì¥ì¥Ù¥ë¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
-n
+
--no-overwrite
+
+´û¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë¤¬¤¢¤Ã¤¿¾ì¹ç¡¢¾å½ñ¤­¤Î³Îǧ¤òµá¤á¤º¤Ë¡¢¤½¤Î¥Õ¥¡¥¤¥ë +¤ÏÈô¤Ð¤·¤Æ¼¡¤Î¥Õ¥¡¥¤¥ë¤Ë¿Ê¤ß¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¡× +¤ò»²¾È¤Î¤³¤È¡£) + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹ + +
-q
+
--quiet
+
--silence
+
+¾ðÊó¡¢·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢°µ½Ì¡¦¿­Ä¹»þ¤Ë½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤·¤Æ¤¤¤ë¤È¡¢ +ebzip ¤Ï¤½¤Î½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤ÆÎɤ¤¤«¤É¤¦¤« +¿Ö¤¤¤Æ¤­¤Þ¤¹¡£ +¤³¤Î¼ÁÌä¤òÍÞÀ©¤¹¤ë¤Ë¤Ï¡¢--force-overwrite(-f) +¤Þ¤¿¤Ï --no-overwrite(-n) ¤ò»ØÄꤷ¤Æ²¼¤µ¤¤¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤Ï¡¢Ìµ»ë¤µ¤ì¤Þ¤¹ + +
-s ·¿
+
--skip-content ·¿
+
+̵»ë¤¹¤ë¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿·¿¤ò»ØÄꤷ¤Þ¤¹¡£ +·¿ ¤Ï¡¢¥Ç¡¼¥¿·¿¤Î̾Á°¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤Ã¤Æ +ʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +ebzip ¤¬¸½ºß¤Î¤È¤³¤íǧ¼±¤¹¤ë¥Ç¡¼¥¿·¿¤Î̾Á°¤Ï¡¢ +font (³°»ú¤Î¥Õ¥©¥ó¥È)¡¢graphic (²èÁü¥Ç¡¼¥¿)¡¢ +sound (²»À¼¥Ç¡¼¥¿)¡¢movie (Æ°²è¥Ç¡¼¥¿) ¤Ç¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤É¤Î¥Õ¥¡¥¤¥ë¤â̵»ë¤µ¤ì¤Þ¤»¤ó¡£ + +
-S ÉûËÜ
+
--subbook ÉûËÜ
+
+°µ½Ì¡¦¿­Ä¹¡¦¾ðÊó½ÐÎϤÎÂоݤȤ¹¤ëÉûËܤò»ØÄꤷ¤Þ¤¹¡£ +ÉûËÜ ¤Ï¡¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò¥«¥ó¥Þ (,) ¤Ç +¶èÀڤäÆʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉûËܤ¬Âоݤˤʤê¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö°ìÉô¤À¤±¤Î°µ½Ì¡× ¤ò»²¾È +¤Î¤³¤È¡£) + +
-t
+
--test
+
+°µ½Ì¡¦¿­Ä¹¤·¤¿¥Ç¡¼¥¿¤ò¡¢¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö¥Æ¥¹¥È¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
-u
+
--uncompress
+
+CD-ROM ½ñÀÒ¤ò¿­Ä¹¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö¿­Ä¹¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-z
+
--compress
+
+CD-ROM ½ñÀÒ¤ò°µ½Ì¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö°µ½Ì¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-09.html b/lib/ebu/doc/ebzip-09.html new file mode 100644 index 0000000..eb7c2a6 --- /dev/null +++ b/lib/ebu/doc/ebzip-09.html @@ -0,0 +1,90 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+
+

°µ½Ì·ë²Ì¤ÎÎã

+ +

+¼¡¤Îɽ¤Ï¡¢¤¢¤ë±ÑÏ¡¦Ï±Ѽ­Åµ (EBXA) ¤Î START ¥Õ¥¡¥¤¥ë¤ò +°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(¸µ¤Î¥Õ¥¡¥¤¥ë) 154476544 bytes 100.0%
¥ì¥Ù¥ë 0 54922039 bytes 35.6%
¥ì¥Ù¥ë 1 49615791 bytes 32.1%
¥ì¥Ù¥ë 2 45983464 bytes 29.8%
¥ì¥Ù¥ë 3 43431397 bytes 28.1%
(»²¹Í: gzip -6) 38712247 bytes 25.0%
+ +

+¤¢¤ë±Ñ¡¹¼­Åµ (EBG) ¤Î START ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(¸µ¤Î¥Õ¥¡¥¤¥ë) 55511040 bytes 100.0%
¥ì¥Ù¥ë 0 25866491 bytes 46.6%
¥ì¥Ù¥ë 1 24419066 bytes 44.0%
¥ì¥Ù¥ë 2 23453212 bytes 42.2%
¥ì¥Ù¥ë 3 22748840 bytes 41.0%
(»²¹Í: gzip -6) 20930009 bytes 37.7%
+ +

+¤¢¤ë¹ñ¸ì¼­Åµ (EPWING V1) ¤Î HONMON ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(¸µ¤Î¥Õ¥¡¥¤¥ë) 23642112 bytes 100.0%
¥ì¥Ù¥ë 0 9927048 bytes 42.0%
¥ì¥Ù¥ë 1 9213184 bytes 39.0%
¥ì¥Ù¥ë 2 8767603 bytes 37.1%
¥ì¥Ù¥ë 3 8495563 bytes 35.9%
(»²¹Í: gzip -6) 8114658 bytes 34.3%
+ +

+¤¢¤ë¹ñ¸ì¼­Åµ (EPWING V5) ¤Î HONMON2 ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(Èó°µ½Ì) 220069888 bytes 100.0%
(¸µ¤Î¥Õ¥¡¥¤¥ë) 149139690 bytes 67.8%
¥ì¥Ù¥ë 0 82973263 bytes 37.7%
¥ì¥Ù¥ë 1 78163751 bytes 35.5%
+ +

+¤¢¤ëÉ´²Ê»öŵ (S-EBXA) ¤Î START ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + +
°µ½Ì¥ì¥Ù¥ë file size ratio
(Èó°µ½Ì) 225140735 bytes 100.0%
(¸µ¤Î¥Õ¥¡¥¤¥ë) 176467968 bytes 78.4%
¥ì¥Ù¥ë 0 146045331 bytes 64.9%
¥ì¥Ù¥ë 1 138137218 bytes 61.4%
+ + +
+

+[Á°¤Ø] [¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-10.html b/lib/ebu/doc/ebzip-10.html new file mode 100644 index 0000000..a033d1b --- /dev/null +++ b/lib/ebu/doc/ebzip-10.html @@ -0,0 +1,335 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[Á°¤Ø] [Ìܼ¡] +

+
+

°µ½Ì¥Õ¥¡¥¤¥ë¤Î·Á¼°

+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢ebzip ¤¬°·¤Ã¤Æ¤¤¤ë°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Î¾ÜºÙ¤Ë¤Ä¤¤¤ÆÀâ +ÌÀ¤·¤Þ¤¹¡£ +

+ + +

°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Î³µÍ×

+ +

+°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Ï¼¡¤Î¤è¤¦¤ÊÆÃħ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
    +
  • CPU ¤Î¼ïÎà¡¢¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë°Í¸¤·¤Þ¤»¤ó¡£ + +
  • È󻼺°µ½Ì¤Ç¤¹¡£
    +°µ½Ì¥Õ¥¡¥¤¥ë¤ò¿­Ä¹¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¸µ¤Î¥Õ¥¡¥¤¥ë¤òÉü¸µ¤Ç¤­¤Þ¤¹¡£ + +
  • 6 ¤Ä¤Î°µ½Ì¥ì¥Ù¥ë¤¬¤¢¤ê¤Þ¤¹¡£
    +¿­Ä¹¤Î®¤µ¤«°µ½ÌΨ¤ÎÎɤµ¤Î¡¢¤¤¤º¤ì¤«¤òÁª¤Ö¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +
+ +

+°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¡¢¥Ø¥Ã¥ÀÉô¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹Éô¡¢¤ª¤è¤Ó¥Ç¡¼¥¿Éô¤«¤é¹½À® +¤µ¤ì¡¢¤³¤Î½ç¤Ç¥Õ¥¡¥¤¥ë¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£ +

+ +
+
++--------+-------------+-----------------------------+
+| ¥Ø¥Ã¥À |¥¤¥ó¥Ç¥Ã¥¯¥¹ |          ¥Ç¡¼¥¿             |
++--------+-------------+-----------------------------+
+                                                     EOF
+
+
+ + +

¥Ç¡¼¥¿Éô

+ +

+¸µ¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¼¡¤Î¹ÔÄø¤Ç°µ½Ì¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢ebzip ¤Ï¸µ¤Î¥Õ¥¡¥¤¥ë¤òʬ³ä¤·¤Þ¤¹¡£ +¸Ä¡¹¤Î ¥¹¥é¥¤¥¹ (slice) ¤Ï¡¢ËöÈø¤Î¤â¤Î¤ò½ü¤±¤Ð¡¢ +Ʊ¤¸Â礭¤µ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
++---------------+---------------+--   --+----------+
+|  ¥¹¥é¥¤¥¹ 1   |  ¥¹¥é¥¤¥¹ 2   |  ...  |¥¹¥é¥¤¥¹ N|
++---------------+---------------+--   --+----------+
+                                                  EOF
+
+
+ +

+¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤Ï¡¢°µ½Ì¥ì¥Ù¥ë¤«¤é·è¤Þ¤ê¤Þ¤¹ +(°µ½Ì¥ì¥Ù¥ë¤Ë¤Ä¤¤¤Æ¤Ï ¡Ö°µ½Ì¥ì¥Ù¥ë¡×¤ò +»²¾È¤Î¤³¤È)¡£ +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥¹¥é¥¤¥¹¤ÎÂ礭¤µ
0 2048 ¥Ð¥¤¥È
1 4096 ¥Ð¥¤¥È
2 8192 ¥Ð¥¤¥È
3 16384 ¥Ð¥¤¥È
4 32768 ¥Ð¥¤¥È
5 65536 ¥Ð¥¤¥È
+ +

+¼¡¤Ë¡¢ËöÈø¤Î¥¹¥é¥¤¥¹¤¬¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤è¤ê¤âû¤«¤Ã¤¿¾ì¹ç¡¢ +ebzip ¤Ï¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤ÈƱ¤¸¤Ë¤Ê¤ë¤Þ¤Ç¿­¤Ð¤·¡¢¿­¤Ð¤·¤¿ +Éôʬ¤Ë 0x00 ¤òËä¤á¤Þ¤¹¡£ +

+ +
+
+                                                 ¿­¤·¤¿Éôʬ
++---------------+---------------+--   --+---------+-----+
+|  ¥¹¥é¥¤¥¹ 1   |  ¥¹¥é¥¤¥¹ 2   |  ...  |  ¥¹¥é¥¤¥¹ N   |
++---------------+---------------+--   --+---------+-----+
+                                                        EOF
+
+
+ +

+ºÇ¸å¤Ë¡¢ebzip ¤Ï¸Ä¡¹¤Î¥¹¥é¥¤¥¹¤ò¡¢RFC 1951 ¤Ëµ­¤µ¤ì¤Æ¤¤¤ë +DEFLATE °µ½Ì¥Ç¡¼¥¿·Á¼°¤Ç°µ½Ì¤·¤Þ¤¹¡£ +¤ª¤Î¤ª¤Î¤Î¥¹¥é¥¤¥¹¤Ï¡¢Â¾¤Î¥¹¥é¥¤¥¹¤È¤ÏÆÈΩ¤·¤Æ°µ½Ì¤µ¤ì¤Þ¤¹¡£ +°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤Î¥Ó¥Ã¥È¿ô¤¬ 8 ¤ÎÇÜ¿ô¤Ç¤Ê¤±¤ì¤Ð¡¢1 ¡Á 7 ¥Ó¥Ã¥È¤ò°µ +½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤ÎËöÈø¤Ë­¤·¡¢8 ¤ÎÇÜ¿ô¤Ë¤Ê¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤è¤ê¡¢°µ½Ì¤µ¤ì¤¿¤½¤ì¤¾¤ì¤Î¥¹¥é¥¤¥¹¤Ï¥Ð¥¤¥È¤Î¶­³¦¤«¤é³«»Ï¤µ¤ì¤Þ¤¹¡£ +­¤µ¤ì¤¿¥Ó¥Ã¥È¤ÎÆâÍƤÏ̤ÄêµÁ¤Ç¤¹¤¬¡¢¤³¤Î¥Ó¥Ã¥È¤Ï·è¤·¤Æ»ÈÍѤµ¤ì¤Þ¤»¤ó¡£ +

+ +
+
++------------+----------+--   --+--------------+
+| °µ½Ì¤µ¤ì¤¿ |°µ½Ì¤µ¤ì¤¿|  ...  |  °µ½Ì¤µ¤ì¤¿  |
+| ¥¹¥é¥¤¥¹ 1 |¥¹¥é¥¤¥¹ 2|  ...  |  ¥¹¥é¥¤¥¹ N  |
++------------+----------+--   --+--------------+
+
+
+ +

+¤³¤ì¤¬°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Ë¤ª¤±¤ë ¥Ç¡¼¥¿Éô ¤Ë¤Ê¤ê¡¢°µ½Ì¤µ¤ì¤¿ +¥¹¥é¥¤¥¹¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+ËöÈø¤Î¥¹¥é¥¤¥¹¤Î¿­¤Ð¤·¤¿Éôʬ¤Ï¡¢ËöÈø¤Î¥¹¥é¥¤¥¹¤Î°ìÉô¤È¤·¤Æ°µ½Ì¤µ¤ì +¤Þ¤¹¡£ +ebunzip ¤¬ËöÈø¤Î¥¹¥é¥¤¥¹¤òÉü¸µ¤¹¤ë¤È¤­¤Ï¡¢¥¹¥é¥¤¥¹¤ò¿­Ä¹¤·¤Æ +¤«¤é¿­¤Ð¤·¤¿Éôʬ¤ò¼è¤ê½ü¤¯¤È¤¤¤¦ºî¶È¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+°µ½Ì¤·¤¿¥¹¥é¥¤¥¹¤ÎÂ礭¤µ¤¬¡¢¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤è¤ê¤âÂ礭¤¤¤«Åù¤·¤¤¤È¤­¤Ï¡¢ +ebzip ¤Ï¤½¤Î¥¹¥é¥¤¥¹¤Î°µ½Ì¥Ç¡¼¥¿¤òÇÑ´þ¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢ebzip ¤Ï¸µ¤Î¥Ç¡¼¥¿¤ò¤½¤Î¥¹¥é¥¤¥¹¤Î°µ½Ì¥Ç¡¼¥¿¤È¤·¤Æ +Âå¤ï¤ê¤Ëµ­Ï¿¤·¤Þ¤¹¡£ +

+ +

+¸µ¤Î¥Õ¥¡¥¤¥ë¤¬¶õ¤À¤Ã¤¿¤È¤­¤Ï¡¢°µ½Ì¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿Éô¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥¤¥ó¥Ç¥Ã¥¯¥¹Éô

+ +

+°µ½Ì»þ¤Ë¡¢ebzip ¤Ï°µ½Ì¤·¤¿¸Ä¡¹¤Î¥¹¥é¥¤¥¹¤Î +¥¤¥ó¥Ç¥Ã¥¯¥¹ (index) ¤òµ­Ï¿¤·¤Þ¤¹¡£ +¸Ä¡¹¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢°µ½Ì¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤ÎÀèƬ +¤Þ¤Ç¤Îµ÷Î¥¤òɽ¤·¤Þ¤¹¡£ +µ÷Î¥¤Îñ°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ +
+
++---------+---------+--           --+---------+---------+
+|¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |  ...........  |¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |
+|¥¯¥¹ 1   |¥¯¥¹ 2   |  ...........  |¥¯¥¹ N   |¥¯¥¹ END |
++---------+---------+--           --+---------+---------+
+     |         |                        |         |
+ +---+         +----+                   +------+  +-----------+
+ V                  V                          V              V
++------------------+------------------+--   --+--------------+
+|    °µ½Ì¤µ¤ì¤¿    |    °µ½Ì¤µ¤ì¤¿    |  ...  |  °µ½Ì¤µ¤ì¤¿  |
+|    ¥¹¥é¥¤¥¹ 1    |    ¥¹¥é¥¤¥¹ 2    |  ...  |  ¥¹¥é¥¤¥¹ N  |
++------------------+------------------+--   --+--------------+
+
+
+ +

+¸Ä¡¹¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï 2 ¡Á 5 ¥Ð¥¤¥È¤ÎÂ礭¤µ¤ò»ý¤Á¤Þ¤¹¡£ +¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÎÂ礭¤µ¤Ï¡¢¸µ¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤Ç·è¤Þ¤ê¤Þ¤¹¡£ +

+ + + + + + + +
¸µ¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÎÂ礭¤µ
0 ¡Á 65535 ¥Ð¥¤¥È 2 ¥Ð¥¤¥È
65535 ¡Á 16777215 ¥Ð¥¤¥È 3 ¥Ð¥¤¥È
16777216 ¡Á 4294967295 ¥Ð¥¤¥È 4 ¥Ð¥¤¥È
4294967296 ¡Á 1099511627775 ¥Ð¥¤¥È 5 ¥Ð¥¤¥È
+ +

+¥¤¥ó¥Ç¥Ã¥¯¥¹Æâ¤Ç¤Î¡¢Ê£¿ô¥Ð¥¤¥È¤«¤é¤Ê¤ë¿ôÃͤϤ¹¤Ù¤Æ¡¢ÃͤÎÂ礭¤¤Êý¤ÎÉôʬ +¤òɽ¤¹¥Ð¥¤¥È (most significant byte) ¤¬Àè¤ËÍ褿·Á¤Çµ­Ï¿¤µ¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢0x1234 ¤Ï¼¡¤Î¤è¤¦¤Ëµ­Ï¿¤µ¤ì¤Þ¤¹¡£ +ºÇ½é¤Î¥Ð¥¤¥È¤Ï 0x12 ¤È¤Ê¤ê¡¢¼¡¤Î¥Ð¥¤¥È¤Ï 0x34 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
++---------+---------+
+|0001 0010|0011 0100|
++---------+---------+
+  (0x12)    (0x34)
+
+
+ +

+¥¤¥ó¥Ç¥Ã¥¯¥¹Éô¤Ï¡¢°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ 1 ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç»Ï¤Þ¤ê¡¢¤½¤Î¸å¤í +¤Ë°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ 2 ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬Â³¤­¤Þ¤¹¡£ +°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ N ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¸å¤í¤Ë¤Ï¡¢¡Ö½ªÃ¼¡×¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹ +¤¬ÃÖ¤«¤ì¤Þ¤¹¡£ +¤³¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ N ¤ÎËöÈø¤Î¼¡¤Î¥Ð¥¤¥È¤Ø¤Î +¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤ò¼¨¤¹¤³¤È¤Ë¤â¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
++---------+---------+--           --+---------+---------+
+|¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |  ...........  |¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |
+|¥¯¥¹ 1   |¥¯¥¹ 2   |  ...........  |¥¯¥¹ N   |¥¯¥¹ END |
++---------+---------+--           --+---------+---------+
+
+
+ +

+°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤ÎÂ礭¤µ¤¬¥¹¥é¥¤¥¹¥µ¥¤¥º¤ËÅù¤·¤¤¤È¤­¤Ï¡¢¤½¤Î¥¹¥é¥¤¥¹ +¤Î¥Ç¡¼¥¿¤Ï¼ÂºÝ¤Ë¤Ï°µ½Ì¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +

+ +

+¸µ¤Î¥Õ¥¡¥¤¥ë¤¬¶õ¤À¤Ã¤¿¤È¤­¤Ï¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹Éô¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò°ì¤Ä¤À¤± +»ý¤Á¤Þ¤¹¡£ +¤³¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òɽ¤·¤Þ¤¹¡£ +

+ + +

¥Ø¥Ã¥ÀÉô

+ +

+¥Ø¥Ã¥ÀÉô¤Ï 22 ¥Ð¥¤¥È¤«¤é¤Ê¤ê¤Þ¤¹¡£ +¼¡¤Î¥Õ¥£¡¼¥ë¥É¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +
+
++--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+| ¥Þ¥¸¥Ã¥¯ ID  |*1| *2  |¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ | Adler-32  | ½¤Àµ»þ¹ï  |
++--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21
+
+*1: zip ¥â¡¼¥É¤È°µ½Ì¥ì¥Ù¥ë
+*2: ͽÌóÎΰè
+
+
+ +
+
¥Þ¥¸¥Ã¥¯ ID (5 ¥Ð¥¤¥È)
+
+0x45, 0x42, 0x5a, 0x69, 0x70 (ASCII ʸ»úÎó¤Çɽ¤¹¤È EBZip) +¤È¤¤¤¦¸ÇÄꤷ¤¿Ãͤò»ý¤Á¤Þ¤¹¡£ + +
zip ¥â¡¼¥É (MSB ¦¤Î 4 ¥Ó¥Ã¥È)
+
+°µ½Ì¥â¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +¸µ¤Î (È󰵽̻þ¤Î) ¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤¬ 4294967295 ¥Ð¥¤¥È (= 4G¥Ð¥¤¥È) +°ÊÆâ¤Î¤È¤­¤Ï 1 (2 ¿Ê¿ô¤Ç 0001)¡¢¤½¤ì¤è¤êÂ礭¤¤¤È¤­¤Ï 2 (2 ¿Ê¿ô¤Ç 0002) +¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£ + +

+¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤ÇÃͤ¬ÊѤï¤ë¤Î¤Ï¡¢Îò»ËŪ¤Ê»ö¾ð¤Ë¤è¤ê¤Þ¤¹¡£ +°ÊÁ°¤Î EB Library ¤Ï°µ½Ì¥â¡¼¥É 1 ¤·¤«´ûÄꤷ¤Æ¤ª¤é¤º¡¢¤Þ¤¿ 4GB ¥Ð¥¤¥È +¤òĶ¤¨¤ë¥Õ¥¡¥¤¥ë¤ò°·¤¨¤Þ¤»¤ó¤Ç¤·¤¿¡£ +4G ¥Ð¥¤¥È¤òĶ¤¨¤ë¥Õ¥¡¥¤¥ë¤ò°·¤¨¤ë¤è¤¦¤Ë EB Library ¤ò²þÎɤ·¤¿ºÝ¤Ë¡¢ +¡Ö4G ¥Ð¥¤¥È¤òĶ¤¨¤¿¤é¡¢°µ½Ì¥â¡¼¥É¤Ï 2 ¤Ë¥»¥Ã¥È¤¹¤ë¡×¤È¤¤¤¦¥ë¡¼¥ë¤ò +¿·¤¿¤ËÀߤ±¤Þ¤·¤¿¡£ +¤³¤ì¤Ë¤è¤ê¡¢°ÊÁ°¤Î EB Library ¤Ç 4GB ¥Ð¥¤¥È¤òĶ¤¨¤¿¥Õ¥¡¥¤¥ë¤ò°·¤ª¤¦ +¤È¤¹¤ë¤È¡¢ÈóÂбþ¤Î°µ½Ì¥â¡¼¥É¤È¤ß¤Ê¤µ¤ì¡¢¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ +¤¤¤Þ¤¹¡£ +

+ +
°µ½Ì¥ì¥Ù¥ë (LSB ¦¤Î 4 ¥Ó¥Ã¥È)
+
+°µ½Ì¥ì¥Ù¥ë¤òɽ¤·¤Þ¤¹¡£ + +
ͽÌóÎΰè (2 ¥Ð¥¤¥È)
+
+ͽÌ󤵤ì¤Æ¤¤¤Þ¤¹¤¬¡¢»È¤ï¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +0x0000 ¤ÇËä¤á¤é¤ì¤Þ¤¹¡£ + +
¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ (6 ¥Ð¥¤¥È)
+
+¸µ¤Î (È󰵽̻þ¤Î) ¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òµ­Ï¿¤·¤Æ¤¤¤Þ¤¹¡£ + +
Adler-32 (4 ¥Ð¥¤¥È)
+
+RFC 1950 ¤Ëµ­¤µ¤ì¤Æ¤¤¤ë Adler-32 ¤È¤¤¤¦¥¢¥ë¥´¥ê¥º¥à¤òÍѤ¤¤Æ·×»»¤·¤¿¡¢ +È󰵽̥ǡ¼¥¿¤Î¥Á¥§¥Ã¥¯¥µ¥à¤ÎÃͤǤ¹¡£ + +
½¤Àµ»þ¹ï (4 ¥Ð¥¤¥È)
+
+¸µ¤Î¥Õ¥¡¥¤¥ë¤ÎºÇ½ª½¤Àµ»þ¹ï¤Ç¤¹¡£ +¥°¥ê¥Ë¥Ã¥¸É¸½à»þ¤Î 1970 ǯ 1 ·î 1 Æü 0 »þ 0 ʬ 0 É䫤é¤Î·Ð²áÉÿô¤Ç +ɽ¤·¤Þ¤¹¡£ +
+ +

+zip ¥â¡¼¥É ¤È °µ½Ì¥ì¥Ù¥ë ¤Ï¡¢Î¾Êý¤È¤â¥Ø¥Ã¥À¤Î +5 ¥Ð¥¤¥ÈÌܤËÆþ¤ê¤Þ¤¹¡£ +zip ¥â¡¼¥É ¤Ï¡¢ÃͤκǤâÂ礭¤¤Éôʬ¤òɽ¤¹¥Ó¥Ã¥È +(most significant bit) ¤ò´Þ¤ß¡¢°µ½Ì¥ì¥Ù¥ë ¤ÏºÇ¤â¾®¤µ¤¤Éôʬ¤ò +ɽ¤¹¥Ó¥Ã¥È (least significant bit) ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£ +zip ¥â¡¼¥É ¤¬ 1 ¤Ç¡¢°µ½Ì¥ì¥Ù¥ë ¤¬ 2 ¤Ê¤é¡¢ +¥Ø¥Ã¥À¤Î 5 ¥Ð¥¤¥ÈÌÜ¤Ï 0x12 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ MSB                         LSB
++---+---+---+---+---+---+---+---+
+| 0   0   0   1   0   0   1   0 | = 0x12
++---+---+---+---+---+---+---+---+
+  (zip ¥â¡¼¥É)  |  (°µ½Ì¥ì¥Ù¥ë)
+
+
+ +

+¥Ø¥Ã¥ÀÆâ¤Ç¤Î¡¢Ê£¿ô¥Ð¥¤¥È¤«¤é¤Ê¤ë¿ôÃͤϤ¹¤Ù¤Æ¡¢ÃͤÎÂ礭¤¤Êý¤ÎÉôʬ +¤òɽ¤¹¥Ð¥¤¥È (most significant byte) ¤¬Àè¤ËÍ褿·Á¤Çµ­Ï¿¤µ¤ì¤Þ¤¹¡£ +

+ +
+

+[Á°¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip-cat.html b/lib/ebu/doc/ebzip-cat.html new file mode 100644 index 0000000..e455d72 --- /dev/null +++ b/lib/ebu/doc/ebzip-cat.html @@ -0,0 +1,1349 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

ebzip ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1998-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+ebzip ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥óÍѤˡ¢CD-ROM ½ñÀҤΠ+°µ½Ì¡¦¿­Ä¹¤ò¹Ô¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢µ¡Ç½Åª¤Ë¤Ï²¿¤ÎÀ©¸Â¤â¤Ê¤¯°µ½Ì¤µ¤ì¤¿ +CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹ (¤¿¤À¤·¡¢½èÍý®Å٤Ϥâ¤È¤Î½ñÀÒ¤ËÈæ¤Ù¤ÆÃÙ +¤¯¤Ê¤ë¤«¤âÃΤì¤Þ¤»¤ó)¡£ +°µ½Ì¥Ç¡¼¥¿·Á¼°¤Ï¡¢CPU ¤Î¼ïÎà¤ä¡¢OS¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤Ï°Í¸¤·¤Æ¤¤¤Þ¤» +¤ó¤Î¤Ç¡¢ebzip ¤Ç°µ½Ì¤·¤¿¥Õ¥¡¥¤¥ë¤Ï¶¦ÍѤ¬²Äǽ¤Ç¤¹¡£ +ebzip ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤¢¤Ê¤¿¤Ï¡¢¼«Ê¬¤Î½êÍ­¤¹¤ë CD-ROM ½ñÀҤλÈÍѵöÂú¤ò¼é¤é¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +ebzip ¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¤¬¡¢¤¢¤Ê¤¿¤Î½ñÀÒ¤¬¼«Í³¤Ë»È¤¨¤ë +¤â¤Î¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +CD-ROM ½ñÀҤνÐÈǼҤ¬¥Ï¡¼¥É¥Ç¥£¥¹¥¯ (¤ª¤è¤Ó¾¤ÎÊä½õµ­²±ÁõÃÖ) ¤Ë½ñÀÒ¤ò +¥³¥Ô¡¼¤¹¤ë¤³¤È¤òµö²Ä¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢¤½¤Î½ñÀҤΰµ½Ì¤ÏÄü¤á¤Æ²¼¤µ¤¤¡£ +

+ + +

Æ°ºî¤È¥³¥Þ¥ó¥É̾

+ +

+ebzip ¤Ï»°¤Ä¤Î Æ°ºî (action) ¥â¡¼¥É¤ò +È÷¤¨¤Æ¤¤¤Þ¤¹¡£ +°µ½Ì (compression)¡¢¿­Ä¹ (uncompression) ¤È¾ðÊó½ÐÎÏ (information) ¤Ç¤¹¡£ +

+ +
    +
  • °µ½Ì (compression)
    +°ìºý¤Î CD-ROM ½ñÀÒ¤ò°µ½Ì¤·¤Þ¤¹¡£ + +
  • ¿­Ä¹ (uncompression)
    +ebzip ¤Ç°µ½Ì¤µ¤ì¤¿¡¢°ìºý¤Î CD-ROM ½ñÀÒ¤ò¿­Ä¹¤·¤Þ¤¹¡£ + +
  • ¾ðÊó½ÐÎÏ (information)
    +ebzip ¤Ç°µ½Ì¤µ¤ì¤¿¡¢°ìºý¤Î CD-ROM ½ñÀҤΰµ½Ì¾õÂ֤˴ؤ¹¤ë +¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ + +
+ +

+ebzip ¤Ïµ¯Æ°»þ¤Ë¡¢µ¯Æ°»þ¤Ë»ÈÍѤµ¤ì¤¿¥³¥Þ¥ó¥É̾¤È +¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤«¤éÆ°ºî¥â¡¼¥É¤ò·èÄꤷ¤Þ¤¹¡£ +ebzip ¤Î°ì²ó¤Î¼Â¹Ô¤Î´Ö¤Ç¡¢Æ°ºî¥â¡¼¥É¤¬ÊѤï¤ë¤³¤È¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+ebzip ¤Ï ebzip¡¢ebunzip, +ebzipinfo ¤È¤¤¤¦°Û¤Ê¤ë 3 ¤Ä¤Î¥³¥Þ¥ó¥É̾¤Ç¥¤¥ó¥¹¥È¡¼¥ë +¤µ¤ì¤Þ¤¹¡£ +(°ìÉô¤Î´Ä¶­¤Ç¤Ï¡¢ebzipinfo ¤Ï ebzipinf +¤È¤¤¤¦Ì¾Á°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£) + +

+ebunzip ¤È¤¤¤¦Ì¾Á°¤Çµ¯Æ°¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¿­Ä¹¤ò¹Ô¤¤¤Þ¤¹¡£ +ebzipinfo ¤È¤¤¤¦Ì¾Á°¤Çµ¯Æ°¤µ¤ì¤¿¾ì¹ç¡¢¾ðÊó½ÐÎϤò¹Ô¤¤¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢°µ½Ì¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Ç¤â¡¢Æ°ºî¥â¡¼¥É¤ò·èÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +--compress (-z) ¤Ç°µ½Ì¡¢--uncompress +(-u) ¤Ç¿­Ä¹¡¢--information (-i) +¤Ç¾ðÊó½ÐÎϤò¹Ô¤¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó¤Ï¡¢µ¯Æ°»þ¤Î¥³¥Þ¥ó¥É̾¤è¤êÍ¥À褷¤Þ¤¹¡£ +¼¡¤ÎÎã¤Ç¤Ï¡¢¤¤¤º¤ì¤âÆ°ºî¥â¡¼¥É¤¬¡Ö¿­Ä¹¡×¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ebunzip
+ebzip --uncompress
+ebzipinfo --uncompress
+
+
+ +

+±ó³Ö¥¢¥¯¥»¥¹¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤϻÈÍѤǤ­¤Þ¤»¤ó¡£ +

+ +
+
+% ebzip ebnet://localhost/cdrom
+ebzip: ebnet ¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£
+
+
+ + +

ebzip ¤Î¼Â¹Ô

+ +

+ebinfo¡¢ebunzip¡¢ebzipinfo ¤Î +°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebzip ½ñÀҤؤΥѥ¹
+% ebunzip ½ñÀҤؤΥѥ¹
+% ebzipinfo ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebzip
+% ebunzip
+% ebzipinfo
+
+
+ +

+¤³¤Î¾ì¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤¬»ØÄꤵ¤ì¤¿¤â¤Î¤È +ȽÃǤµ¤ì¤Þ¤¹¡£ +

+ + +

°µ½Ì

+ +

+ebzip (ebunzip --compress¡¢ +ebzipinfo --compress ¤ÈÅù²Á) ¤Ï CD-ROM ½ñÀҤΰµ½Ì¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ + + +

°µ½Ì¤Î¼Â¹ÔÎã (1)

+ +

+¤³¤ÎÀá¤Ç¤Ï¡¢¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤Ë¤¹¤Ç¤Ë¥³¥Ô¡¼¤·¤Æ¤¢¤ë CD-ROM ½ñÀÒ¤ò°µ½Ì¤¹¤ë¤Ë¤Ï +¤É¤¦¤·¤¿¤é¤¤¤¤¤«¤òÀâÌÀ¤·¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¤¬¤¹¤Ç¤Ë /dict ¤Ë¥³¥Ô¡¼¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Î¡¢¤Þ¤À°µ½Ì +¤µ¤ì¤Æ¤¤¤Ê¤¤¤È²¾Äꤷ¤Þ¤¹¡£ +¤³¤Î½ñÀÒ¤Ï /dict ¤Î²¼¤Ë¡¢¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language
+/dict/kanji/start
+/dict/english/start
+
+
+ +

+¤³¤Î½ñÀÒ¤ò°µ½Ì¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% cd /dict
+% ebzip
+
+
+ +

+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤âƱ¤¸¤Ç¤¹¡£ +

+ +
+
+% ebzip --output-directory /dict /dict
+
+
+ +

+°µ½Ì¤Ë¤Ï¡¢¤·¤Ð¤é¤¯¤«¤«¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +°µ½Ì¤Î´Ö¡¢ebzip ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¾õ¶·¤òÃΤ餻¤ë¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ +
+
+==> /dict/kanji/start ¤ò°µ½Ì <==
+./dict/kanji/start.ebz ¤Ë½ÐÎÏ
+ 1.0% ½èÍýºÑ¤ß (2097152 / 220069888 ¥Ð¥¤¥È)
+ 1.9% ½èÍýºÑ¤ß (4194304 / 220069888 ¥Ð¥¤¥È)
+ 2.9% ½èÍýºÑ¤ß (6291456 / 220069888 ¥Ð¥¤¥È)
+        : (ά)
+´°Î» (220069888 / 220069888 ¥Ð¥¤¥È)
+220069888 -> 78163751 ¥Ð¥¤¥È (35.5%)
+
+
+ +

+°µ½Ì¤¬´°Î»¤¹¤ë¤È¡¢/dict ¤Î²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¾¯¤·ÊѲ½¤·¤Æ +¤¤¤ë¤Î¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language.ebz
+/dict/kanji/start.ebz
+/dict/english/start.ebz
+
+
+ +

+³ÈÄ¥»Ò .ebz ¤¬¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë +(/dict/language.ebz¡¢/dict/kanji/start.ebz¡¢ +/dict/english/start.ebz) ¤ËÉÕ¤¤¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤¬°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ +¾¤Î¥Õ¥¡¥¤¥ë¤ÏÊѲ½¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

+ +

+ebzip ¤¬°µ½Ì¤¹¤ë¥Õ¥¡¥¤¥ë¤Ï¡¢ +START¡¢HONMON¡¢HONMON2¡¢ +HONMONS¡¢LANGUAGE ¥Õ¥¡¥¤¥ë¤È GAIJI +¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë³°»ú¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ +

+ + +

°µ½Ì¤Î¼Â¹ÔÎã (2)

+ +

+¤³¤ÎÀá¤Ç¤Ï¤â¤¦°ì¤ÄÊ̤ÎÎã¤È¤·¤Æ¡¢CD-ROM ¥Ç¥£¥¹¥¯¤Î¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¡¢¤½¤ì +¤ò¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤ËÃÖ¤¯ÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +¸µ¤Î CD-ROM ½ñÀÒ¤¬ /cdrom ¤Ë¥Þ¥¦¥ó¥È¤µ¤ì¡¢½ñÀÒ¤Ï +/cdrom ¤Î²¼¤Ë¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤ë¤È²¾Äꤷ¤Þ¤¹¡£ +

+ +
+
+/cdrom/catalog
+/cdrom/language
+/cdrom/german/start
+/cdrom/french/start
+/cdrom/italian/start
+
+
+ +

+¤³¤Î½ñÀÒ¤ò°µ½Ì¤·¡¢/dict ¤Î²¼¤ËÃÖ¤¯¤¿¤á¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò +¼Â¹Ô¤·¤Þ¤¹¡£ +

+ +
+
+% cd /dict
+% ebzip --keep /cdrom
+
+
+ +

+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤âƱ¤¸¤Ç¤¹¡£ +

+ +
+
+% ebzip --keep --output-directory /dict /cdrom
+
+
+ +

+½ÐÎϦ¤Î¥Ç¥£¥ì¥¯¥È¥ê /dict ¤Ï¶õ¤Ç¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢°µ½ÌÁ°¤Ë +¤¢¤é¤«¤¸¤áºî¤Ã¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢--keep ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ +Æä˻ØÄꤷ¤Ê¤±¤ì¤Ð¡¢ebzip ¤Ï¡¢°µ½Ì¸å¤Ë¸µ¤Î¥Õ¥¡¥¤¥ë¤òºï½ü +¤·¤Þ¤¹¤¬¡¢--keep ¥ª¥×¥·¥ç¥ó¤Ï¤³¤Î¿¶¤ëÉñ¤¤¤òÍÞÀ©¤·¤Þ¤¹¡£ +

+ +

+/dict ¤È /cdrom ¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤Ï¤Û¤È¤ó¤É +Ʊ¤¸¤Ç¤¹¤¬¡¢/dict ¤Î²¼¤Î°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ë¤Ï³ÈÄ¥»Ò +.ebz ¤¬ÉÕ¤¤¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language.ebz
+/dict/german/start.ebz
+/dict/french/start.ebz
+/dict/italian/start.ebz
+
+
+ +

+Ãæ´Ö¤Î¥Ç¥£¥ì¥¯¥È¥ê /dict/german¡¢/dict/french¡¢ +/dict/italian ¤Ï¡¢¤â¤·Ìµ¤±¤ì¤Ð ebzip ¤Ë¤è¤Ã¤Æ +ºîÀ®¤µ¤ì¤Þ¤¹¡£ +catalog ¤È catalogs ¤Ï¡¢½ÐÎϦ¤Î¥Ç¥£¥ì¥¯¥È¥ê +¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤¬Âбþ¤·¤Æ¤¤¤Ê¤¤¥Õ¥¡¥¤¥ë¡¢¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +ebzip ¤Ï̵»ë¤·¤Þ¤¹ (°µ½Ì¤â¥³¥Ô¡¼¤â¤·¤Þ¤»¤ó)¡£ +

+ + +

°µ½Ì¥ì¥Ù¥ë

+ +

+ebzip ¤Ï¡¢0 ¡Á 5 ¤È¤¤¤¦ 6 ¤Ä¤Î°µ½Ì¥ì¥Ù¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +°µ½Ì¥ì¥Ù¥ë 0 ¤Ï¡¢°µ½Ì¡¦¿­Ä¹¤¬ºÇ¤â®¤¤¤Ç¤¹¤¬¡¢°µ½ÌΨ¤ÏºÇ°­¤Ç¤¹¡£ +°µ½Ì¥ì¥Ù¥ë 5 ¤Ï¡¢°µ½ÌΨ¤¬ºÇÎɤǤ¹¤¬¡¢°µ½Ì¡¦¿­Ä¹¤ÏºÇ¤âÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£ +°µ½Ì¥ì¥Ù¥ë¤Ï¡¢--level (-l) ¥ª¥×¥·¥ç¥ó¤ÇÀßÄꤷ¤Þ¤¹¡£ +

+ +
+
+% ebzip --level 2 --output-directory /dict /dict
+
+
+ +

+̵»ØÄê»þ¤Î¥ì¥Ù¥ë¤Ï 0 (ºÇ®¤À¤¬°µ½ÌΨ¤ÏºÇ°­) ¤Ç¤¹¡£ +

+ + +

¥Æ¥¹¥È

+ +

+ebzip ¤ò --test (-t) ¥ª¥×¥·¥ç¥óÉÕ¤­ +¤Ç¼Â¹Ô¤¹¤ë¤È¡¢ebzip ¤Ï°µ½Ì¤·¤¿¥Ç¡¼¥¿¤ò¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï +½ñ¤­¹þ¤Þ¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +°µ½Ì¤¹¤ëÁ°¤Ë°µ½Ì¸å¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òÃΤꤿ¤¤¤È¤­¤Ë¡¢ÊØÍø¤Ç¤¹¡£ +

+ +
+
+% ebzip --test /dict /dict
+
+
+ + +

°ìÉô¤À¤±¤Î°µ½Ì

+ +

+¤Ê¤Ë¤âÀßÄꤷ¤Ê¤¤¤È¡¢ebzip ¤Ï½ñÀÒ°ìºý¤ÎÁ´ÂΤò°µ½Ì¤·¤Þ¤¹¤¬¡¢ +--subbook (-S) ¤ä --skip-content +(-s) ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È°ìÉô¤À¤±¤ò°µ½Ì¤Ç¤­¤Þ¤¹¡£ +

+ +

+--subbook ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢°µ½Ì¤·¤¿¤¤ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤òÊÂ¤Ù¤Æ +½ñ¤­¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢¤¢¤Ê¤¿¤Î½êÍ­¤·¤Æ¤¤¤ë½ñÀÒ¤Ë +¤É¤Î¤è¤¦¤ÊÉûËܤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 3
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 3:
+  Âê̾: ¥Ý¥±¥Ã¥ÈÆÈϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: german
+  ¸¡º÷Êý¼°: ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢3 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤ì¤é¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï +english, french, german +¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+english ¤È german ¤À¤±¤ò°µ½Ì¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î +¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebzip --subbook english,french /dict
+
+
+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¢¾®Ê¸»ú¤Î°ã¤¤¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +--subbook ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebzip --subbook english --subbook french /dict
+
+
+ +

+»Ä¤ê¤ÎÉûËÜ (¤³¤ÎÎã¤Ç¤Ï german) ¤Î¥Õ¥¡¥¤¥ë¤Ï°µ½Ì¤µ¤ì¤ë¤³¤È¤â +¥³¥Ô¡¼¤µ¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¤³¤Î»þÅÀ¤Ç¤Ï¤Þ¤À¤³¤Î½ñÀÒ¤ËÂФ¹¤ë°µ½Ì¤Î +ºî¶È¤Ï´°Î»¤·¤Æ¤¤¤Þ¤»¤ó¡£ +¤³¤Î½ñÀÒ¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢¤µ¤é¤Ê¤ëÁàºî¤ò¹Ô¤Ã¤Æ»Ä¤ê¤ÎÉûËܤò°µ½Ì¤¹¤ë¤«¡¢ +ebrefile ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ»Ä¤ê¤ÎÉûËܤò catalog(s) +¥Õ¥¡¥¤¥ë¤ÎÉûËÜÅÐÏ¿¥ê¥¹¥È¤«¤éºï½ü¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó +(ebrefile ¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯¤Ï¡¢ +ebrefile ¥³¥Þ¥ó¥É ¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öebzip ¤È¤ÎÏ¢·È¡×¹à¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ÉûËܤΰìÉô¤º¤Ä¤òÊ£¿ô²ó¤Ëʬ¤±¤Æ°µ½Ì¤¹¤ë¾ì¹ç¡¢¤¹¤Ù¤Æ¤ÎÉûËܤÇƱ¤¸°µ½Ì¥ì¥Ù¥ë +¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +(¤¿¤È¤¨¤Ð¡¢english ¤È french ¤Ï¥ì¥Ù¥ë 0 ¤Ç°µ½Ì¤·¡¢ +german ¤Ï¥ì¥Ù¥ë 2 ¤Ç°µ½Ì¤¹¤ë)¡£ +

+ +

+--skip-content (-s) ¤Ï --subbook +¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢--skip-content ¤Ç¤Ï̵»ë¤¹¤ë¥Õ¥¡¥¤¥ë¤Î +¥Ç¡¼¥¿·¿¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +
+
+% ebzip --skip-content sound,movie --subbook french /dict
+
+
+ +

+¤³¤ÎÎã¤Ç¤Ï¡¢ebzip ¤Ï²»À¼¤ÈÆ°²è¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢ebzip ¤Ë¤è¤Ã¤Æǧ¼±¤µ¤ì¤ë¥Ç¡¼¥¿·¿¤Ï¡¢ +¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
    +
  • font
    +³°»ú¤Î¥Õ¥©¥ó¥È +
  • graphic
    +²èÁü¥Ç¡¼¥¿ +
  • sound
    +²»À¼¥Ç¡¼¥¿ +
  • movie
    +Æ°²è¥Ç¡¼¥¿ +
+ + +

¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­

+ +

+½ñ¤­¹þ¤â¤¦¤È¤·¤¿¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¤È¤­¡¢ebzip ¤Ï +¾å½ñ¤­¤·¤ÆÎɤ¤¤«¤É¤¦¤«¤Î³Îǧ¤òµá¤á¤Æ¤­¤Þ¤¹¡£ +

+ +
+
+==> /dict/science/data/honmon ¤ò°µ½Ì <==
+/dict/science/data/honmon.ebz ¤Ë½ÐÎÏ
+
+¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹: /dict/science/data/honmon.ebz
+¾å½ñ¤­¤·¤Þ¤¹¤« (¤Ï¤¤:y, ¤¤¤¤¤¨:n)?
+
+
+ +

+y ¤« n ¤ÇÅú¤¨¤Æ²¼¤µ¤¤¡£ +n ¤ÈÅú¤¨¤ë¤È¡¢ebzip ¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤·¤Æ¡¢ +¼¡¤Ë¿Ê¤ß¤Þ¤¹¡£ +

+ +

+--force-overwrite ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebzip +¤Ï¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¡¢³Îǧ¤Ê¤·¤Ë¾å½ñ¤­¤·¤Þ¤¹¡£ +ƱÍͤˡ¢--no-overwrite ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ +ebzip ¤Ï³Îǧ¤Ê¤·¤Ë¤½¤Î¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤·¤Æ¼¡¤Ë¿Ê¤ß¤Þ¤¹¡£ +

+ + +

°µ½Ì¤µ¤ì¤¿½ñÀҤΰµ½Ì

+ +

+S-EBXA ¤ª¤è¤Ó EPWING µ¬³Ê¤Ë¤ª¤¤¤Æ¤â°µ½Ì·Á¼°¤òÄêµÁ¤·¤Æ¤ª¤ê¡¢CD-ROM ½ñÀÒ +¤Ë¤Ï¤³¤ì¤é¤Î°µ½Ì·Á¼°¤ò¼ÂºÝ¤ËºÎÍѤ·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤é¤Î°µ½Ì·Á¼°¤Ï¡¢ebzip ¤Î°µ½Ì·Á¼°¤È¤Ï°Û¤Ê¤ë¤â¤Î¤Ç¤¹¡£ +

+ +

+ebzip ¤Ï S-EBXA ¤ä EPWING °µ½Ì·Á¼°¤Ç°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀÒ¤â +¿­Ä¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢°µ½Ì¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +

+ +

+ebzip ¤ËÂФ·¤Æ¡¢´û¤Ë°µ½Ì¤µ¤ì¤Æ¤¤¤ë CD-ROM ½ñÀÒ¤ò°µ½Ì¤¹¤ë¤è¤¦¤Ë +Ì¿¤¸¤ë¤È¡¢ebzip ¤Ï¤¤¤Ã¤¿¤ó½ñÀÒ¤ò¿­Ä¹¤·¤Æ¤«¤é¡¢ebzip ¤Î°µ½Ì·Á¼°¤Ç +°µ½Ì¤·Ä¾¤·¤Þ¤¹¡£ +

+ +

+°ìÈÌ¤Ë ebzip ¤Î°µ½Ì·Á¼°¤ÎÊý¤¬ S-EBXA ¤ä EPWING ¤Î°µ½Ì·Á¼°¤è¤ê¤â°µ½ÌΨ¤¬ +Îɹ¥¤Ç¤¹¡£ +

+ + +

¿­Ä¹

+ +

+ebunzip (ebzip --uncompress¡¢ +ebzipinfo --uncompress ¤ÈƱ¤¸) ¤Ï¡¢ebzip ¤Ç +°µ½Ì¤·¤¿ CD-ROM ½ñÀÒ¤ò¿­Ä¹¤·¤Þ¤¹¡£ +

+ + + +

¿­Ä¹¤Î¼Â¹ÔÎã

+ +

+¿­Ä¹¤Î½èÍý¼ê½ç¤Ï¡¢°µ½Ì¤È¤«¤Ê¤ê»÷¤Æ¤¤¤Þ¤¹¡£ +/dict ¤Î²¼¤Ë°µ½Ì¤µ¤ì¤¿½ñÀÒ¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¤â¤Î¤È²¾Äꤷ¤Þ¤¹¡£ +¤³¤Î½ñÀҤˤϡ¢/dict ¤Î²¼¤Ë¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language.ebz
+/dict/kanji/start.ebz
+/dict/english/start.ebz
+
+
+ +

+¤³¤Î½ñÀÒ¤ò¿­Ä¹¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +

+ +
+
+% cd /dict
+% ebunzip
+
+
+ +

+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤âƱ¤¸¤Ç¤¹¡£ +

+ +
+
+% ebunzip --output-directory /dict /dict
+
+
+ +

+¿­Ä¹¤Ë¤Ï¡¢¤·¤Ð¤é¤¯¤«¤«¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¿­Ä¹¤Î´Ö¡¢ebunzip ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¾õ¶·¤òÃΤ餻¤ë¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ +
+
+==> /dict/kanji/start.ebz ¤ò¿­Ä¹ <==
+./kanji/start.ebz ¤Ë½ÐÎÏ
+ 5.1% ½èÍýºÑ¤ß (4194304 / 82460672 ¥Ð¥¤¥È)
+10.2% ½èÍýºÑ¤ß (8388608 / 82460672 ¥Ð¥¤¥È)
+15.3% ½èÍýºÑ¤ß (12582912 / 82460672 ¥Ð¥¤¥È)
+        : (ά)
+´°Î» (82460672 / 82460672 ¥Ð¥¤¥È)
+25681439 -> 82460672 ¥Ð¥¤¥È
+
+
+ +

+¿­Ä¹¤Î´Ö¡¢ebunzip ¤Ï¡¢¤¹¤Ç¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Æ¤âÎɤ¤¤« +¤É¤¦¤«³Îǧ¤òµá¤á¤Æ¤­¤Þ¤¹¡£ +

+ +
+
+==> /dict/kanji/start.ebz ¤ò¿­Ä¹ <==
+/dict/kanji/start ¤Ë½ÐÎÏ
+
+¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹: /dict/kanji/start
+¾å½ñ¤­¤·¤Þ¤¹¤« (¤Ï¤¤:y, ¤¤¤¤¤¨:n)?
+
+
+ +

+¿­Ä¹¤¬´°Î»¤¹¤ë¤È¡¢/dict ¤Î²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤Ï¾¯¤·ÊѲ½¤·¤Æ +¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language
+/dict/kanji/start
+/dict/english/start
+
+
+ +

+¿­Ä¹¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¥Õ¥¡¥¤¥ë̾¤¬ÊѲ½¤·¡¢ +³ÈÄ¥»Ò .ebz ¤¬¼è¤ê½ü¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ + +

¿­Ä¹¤Î¥ª¥×¥·¥ç¥ó

+ +

+¿¤¯¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢°µ½Ì»þ¤È¿­Ä¹»þ¤È¤ÇƱ¤¸°ÕÌ£¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+--keep ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebunzip ¤Ï¡¢ +¿­Ä¹¤·¤¿¸å¤Ë°µ½Ì¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +

+--test ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebunzip ¤Ï¿­Ä¹ +¤·¤¿¥Ç¡¼¥¿¤ò¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Õ¥¡¥¤¥ë¤¬Àµ¤·¤¯°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤ò³Îǧ¤¹¤ë¤È¤­¤ËÊØÍø +¤Ç¤¹ +(--test ¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö¥Æ¥¹¥È¡×¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+--subbook ¤ä --skip-content ¥ª¥×¥·¥ç¥ó¤ò»ØÄê +¤¹¤ë¤È¡¢¾ò·ï¤Ë¹çÃפ·¤¿¥Õ¥¡¥¤¥ë¤À¤±¤·¤«¿­Ä¹¤·¤Þ¤»¤ó +(¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö°ìÉô¤À¤±¤Î°µ½Ì¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+--force-overwrite ¤ä --no-overwrite ¥ª¥×¥·¥ç¥ó +¤ò»ØÄꤹ¤ë¤È¡¢ebunzip ¤Ï¾å½ñ¤­¤·¤Æ¤âÎɤ¤¤«¤É¤¦¤«¤Î³Îǧ¤Ê¤·¤Ë¡¢ +¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤¿¤êÈô¤Ð¤·¤Æ¼¡¤Ë¿Ê¤ó¤À¤ê¤·¤Þ¤¹ +(--force-overwrite ¤È --no-overwrite ¥ª¥×¥·¥ç¥ó +¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ebunzip ¤Ï¡¢--level ¥ª¥×¥·¥ç¥ó¤ò̵»ë¤·¤Þ¤¹¡£ +¿­Ä¹»þ¤Ë --level ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ + +

°µ½Ì¤µ¤ì¤¿½ñÀҤο­Ä¹

+ +

+S-EBXA ¤ª¤è¤Ó EPWING µ¬³Ê¤Ç¤â°µ½Ì·Á¼°¤òÄêµÁ¤·¤Æ¤ª¤ê¡¢CD-ROM ½ñÀÒ¤Ë¤Ï +¤³¤ì¤é¤Î°µ½Ì·Á¼°¤ò¼ÂºÝ¤ËºÎÍѤ·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +¤·¤«¤·¡¢S-EBXA ¤ä EPWING¤Î°µ½Ì·Á¼°¤Ï¡¢ebzip ¤Î°µ½Ì·Á¼°¤È¤Ï°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebzip ¤Ï S-EBXA ¤ä EPWING °µ½Ì·Á¼°¤Ç°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀÒ¤â +¿­Ä¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢°µ½Ì¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +

+ +

+S-EBXA ·Á¼°¤Ç°µ½Ì¤µ¤ì¤¿ START ¥Õ¥¡¥¤¥ë¤ä¡¢EPWING ·Á¼°¤Ç°µ½Ì +¤µ¤ì¤¿ HONMON2, HONMONS ¥Õ¥¡¥¤¥ë¤ò¿­Ä¹¤¹¤ë¤È¡¢ +¿­Ä¹¸å¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï³ÈÄ¥»Ò .org ¤¬Éղ䵤ì¤Þ¤¹ +(Îã: honmon2 ¢ª honmon2.org)¡£ +

+ + +

¾ðÊó½ÐÎÏ

+ +

+ebzipinfo (ebzip --information +ebunzip --information ¤ÈƱ¤¸) ¤Ï CD-ROM ½ñÀҤΰµ½Ì¾õÂÖ¤ò½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ + + +

¾ðÊó½ÐÎϤμ¹ÔÎã

+ +

+/dict ¤Ë¤¢¤ë¡¢°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀҤξðÊó¤ò½ÐÎϤ¹¤ë¤Ë¤Ï +¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +/dict ¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¡¢°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀҤξðÊó¤ò½ÐÎÏ +¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebzipifo /dict
+
+
+ +

+ebzipinfo ¤Ïɸ½à½ÐÎϤ˼¡¤Î¤è¤¦¤Ê¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ +

+ +
+
+==> /dict/spanish/spanish/start.ebz <==
+154290176 -> 54881862 ¥Ð¥¤¥È (35.6%, ebzip °µ½Ì¥ì¥Ù¥ë 0)
+
+==> /dict/spanish/language.ebz <==
+compressed: 12288 -> 4121 ¥Ð¥¤¥È (33.5%, ebzip °µ½Ì¥ì¥Ù¥ë 0)
+
+==> /dict/spanish/catalog <==
+2048 ¥Ð¥¤¥È (Èó°µ½Ì)
+
+
+ + +

¾ðÊó½ÐÎϤΥª¥×¥·¥ç¥ó

+ +

+--subbook ¤ä --skip-content ¥ª¥×¥·¥ç¥ó¤ò +»ØÄꤹ¤ë¤È¡¢¾ò·ï¤Ë¹çÃפ·¤¿¥Õ¥¡¥¤¥ë¤Î¾ðÊó¤À¤±¤ò½ÐÎϤ·¤Þ¤¹ +(¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö°ìÉô¤À¤±¤Î°µ½Ì¡×¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ebzipinfo ¤Ï --force-overwrite¡¢ +--keep¡¢--level¡¢--no-overwrite¡¢ +--output-directory¡¢--quiet¡¢--silence¡¢ +--test ¥ª¥×¥·¥ç¥ó¤ò̵»ë¤·¤Þ¤¹¡£ +

+ + +

½ñÀҤκï½ü

+ +

+ebzip ¤Ï¡¢¥Ï¡¼¥É¥Ç¥£¥¹¥¯¾å¤Ë°µ½Ì¤·¤¿¼­½ñ¤Îºï½üµ¡Ç½¤Ï»ý¤Ã¤Æ +¤¤¤Þ¤»¤ó¡£ +Âå¤ï¤ê¤Ë rm ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ²¼¤µ¤¤¡£ +

+ +
+
+% rm -r /dict
+
+
+ +

+¤³¤Îºî¶È¤Ï¡¢Ãí°Õ¤·¤Æ¹Ô¤Ã¤Æ²¼¤µ¤¤¡£ +

+ + +

ebzip ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebzip ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-f
+
--force-overwrite
+
+³Îǧ¤òµá¤á¤º¤Ë¡¢´û¤Ë¸ºß¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¡× ¤ò +»²¾È¤Î¤³¤È)¡£ + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-i
+
--information
+
+»ØÄꤵ¤ì¤¿ CD-ROM ½ñÀҤΰµ½Ì¾õÂÖ¤ò½ÐÎϤ·¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢ ¡Ö¾ðÊó½ÐÎÏ¡× ¤ò»²¾È¤Î¤³¤È)¡£ + +
-k
+
--keep
+
+½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤ò½ñ¤­¹þ¤ß½ª¤ï¤Ã¤Æ¤â¡¢Âбþ¤¹¤ëÆþÎϦ¤Î¥Õ¥¡¥¤¥ë¤Ï +ºï½ü¤·¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö°µ½Ì¤Î¼Â¹ÔÎã (2)¡× +¤ò»²¾È¤Î¤³¤È)¡£ + +
-l À°¿ô
+
--level À°¿ô
+
+°µ½Ì¥ì¥Ù¥ë¤ò»ØÄꤷ¤Þ¤¹¡£ +À°¿ô ¤Ï¡¢0¡¢1¡¢2¡¢ +3¡¢4¡¢5 ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï +¤¤¤±¤Þ¤»¤ó¡£ +¥ì¥Ù¥ë 0 ¤Ï¡¢ºÇ¤â®¤¤¤â¤Î¤Î°µ½ÌΨ¤ÏºÇ°­¤Ç¤¹¡£ +¥ì¥Ù¥ë 3 ¤Ï¡¢ºÇ¤âÃÙ¤¤¤â¤Î¤Î°µ½ÌΨ¤ÏºÇÎɤǤ¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Î¥ì¥Ù¥ë¤Ï 0 ¤Ç¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢°µ½Ì°Ê³°¤ÎÆ°ºî¤Î¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö°µ½Ì¥ì¥Ù¥ë¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
-n
+
--no-overwrite
+
+´û¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë¤¬¤¢¤Ã¤¿¾ì¹ç¡¢¾å½ñ¤­¤Î³Îǧ¤òµá¤á¤º¤Ë¡¢¤½¤Î¥Õ¥¡¥¤¥ë +¤ÏÈô¤Ð¤·¤Æ¼¡¤Î¥Õ¥¡¥¤¥ë¤Ë¿Ê¤ß¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¡× +¤ò»²¾È¤Î¤³¤È¡£) + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹ + +
-q
+
--quiet
+
--silence
+
+¾ðÊó¡¢·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢°µ½Ì¡¦¿­Ä¹»þ¤Ë½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤·¤Æ¤¤¤ë¤È¡¢ +ebzip ¤Ï¤½¤Î½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤ÆÎɤ¤¤«¤É¤¦¤« +¿Ö¤¤¤Æ¤­¤Þ¤¹¡£ +¤³¤Î¼ÁÌä¤òÍÞÀ©¤¹¤ë¤Ë¤Ï¡¢--force-overwrite(-f) +¤Þ¤¿¤Ï --no-overwrite(-n) ¤ò»ØÄꤷ¤Æ²¼¤µ¤¤¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤Ï¡¢Ìµ»ë¤µ¤ì¤Þ¤¹ + +
-s ·¿
+
--skip-content ·¿
+
+̵»ë¤¹¤ë¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿·¿¤ò»ØÄꤷ¤Þ¤¹¡£ +·¿ ¤Ï¡¢¥Ç¡¼¥¿·¿¤Î̾Á°¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤Ã¤Æ +ʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +ebzip ¤¬¸½ºß¤Î¤È¤³¤íǧ¼±¤¹¤ë¥Ç¡¼¥¿·¿¤Î̾Á°¤Ï¡¢ +font (³°»ú¤Î¥Õ¥©¥ó¥È)¡¢graphic (²èÁü¥Ç¡¼¥¿)¡¢ +sound (²»À¼¥Ç¡¼¥¿)¡¢movie (Æ°²è¥Ç¡¼¥¿) ¤Ç¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤É¤Î¥Õ¥¡¥¤¥ë¤â̵»ë¤µ¤ì¤Þ¤»¤ó¡£ + +
-S ÉûËÜ
+
--subbook ÉûËÜ
+
+°µ½Ì¡¦¿­Ä¹¡¦¾ðÊó½ÐÎϤÎÂоݤȤ¹¤ëÉûËܤò»ØÄꤷ¤Þ¤¹¡£ +ÉûËÜ ¤Ï¡¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò¥«¥ó¥Þ (,) ¤Ç +¶èÀڤäÆʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉûËܤ¬Âоݤˤʤê¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö°ìÉô¤À¤±¤Î°µ½Ì¡× ¤ò»²¾È +¤Î¤³¤È¡£) + +
-t
+
--test
+
+°µ½Ì¡¦¿­Ä¹¤·¤¿¥Ç¡¼¥¿¤ò¡¢¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö¥Æ¥¹¥È¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
-u
+
--uncompress
+
+CD-ROM ½ñÀÒ¤ò¿­Ä¹¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö¿­Ä¹¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-z
+
--compress
+
+CD-ROM ½ñÀÒ¤ò°µ½Ì¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö°µ½Ì¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
+ + +

°µ½Ì·ë²Ì¤ÎÎã

+ +

+¼¡¤Îɽ¤Ï¡¢¤¢¤ë±ÑÏ¡¦Ï±Ѽ­Åµ (EBXA) ¤Î START ¥Õ¥¡¥¤¥ë¤ò +°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(¸µ¤Î¥Õ¥¡¥¤¥ë) 154476544 bytes 100.0%
¥ì¥Ù¥ë 0 54922039 bytes 35.6%
¥ì¥Ù¥ë 1 49615791 bytes 32.1%
¥ì¥Ù¥ë 2 45983464 bytes 29.8%
¥ì¥Ù¥ë 3 43431397 bytes 28.1%
(»²¹Í: gzip -6) 38712247 bytes 25.0%
+ +

+¤¢¤ë±Ñ¡¹¼­Åµ (EBG) ¤Î START ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(¸µ¤Î¥Õ¥¡¥¤¥ë) 55511040 bytes 100.0%
¥ì¥Ù¥ë 0 25866491 bytes 46.6%
¥ì¥Ù¥ë 1 24419066 bytes 44.0%
¥ì¥Ù¥ë 2 23453212 bytes 42.2%
¥ì¥Ù¥ë 3 22748840 bytes 41.0%
(»²¹Í: gzip -6) 20930009 bytes 37.7%
+ +

+¤¢¤ë¹ñ¸ì¼­Åµ (EPWING V1) ¤Î HONMON ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(¸µ¤Î¥Õ¥¡¥¤¥ë) 23642112 bytes 100.0%
¥ì¥Ù¥ë 0 9927048 bytes 42.0%
¥ì¥Ù¥ë 1 9213184 bytes 39.0%
¥ì¥Ù¥ë 2 8767603 bytes 37.1%
¥ì¥Ù¥ë 3 8495563 bytes 35.9%
(»²¹Í: gzip -6) 8114658 bytes 34.3%
+ +

+¤¢¤ë¹ñ¸ì¼­Åµ (EPWING V5) ¤Î HONMON2 ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(Èó°µ½Ì) 220069888 bytes 100.0%
(¸µ¤Î¥Õ¥¡¥¤¥ë) 149139690 bytes 67.8%
¥ì¥Ù¥ë 0 82973263 bytes 37.7%
¥ì¥Ù¥ë 1 78163751 bytes 35.5%
+ +

+¤¢¤ëÉ´²Ê»öŵ (S-EBXA) ¤Î START ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + +
°µ½Ì¥ì¥Ù¥ë file size ratio
(Èó°µ½Ì) 225140735 bytes 100.0%
(¸µ¤Î¥Õ¥¡¥¤¥ë) 176467968 bytes 78.4%
¥ì¥Ù¥ë 0 146045331 bytes 64.9%
¥ì¥Ù¥ë 1 138137218 bytes 61.4%
+ + +

°µ½Ì¥Õ¥¡¥¤¥ë¤Î·Á¼°

+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢ebzip ¤¬°·¤Ã¤Æ¤¤¤ë°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Î¾ÜºÙ¤Ë¤Ä¤¤¤ÆÀâ +ÌÀ¤·¤Þ¤¹¡£ +

+ + +

°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Î³µÍ×

+ +

+°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Ï¼¡¤Î¤è¤¦¤ÊÆÃħ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
    +
  • CPU ¤Î¼ïÎà¡¢¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë°Í¸¤·¤Þ¤»¤ó¡£ + +
  • È󻼺°µ½Ì¤Ç¤¹¡£
    +°µ½Ì¥Õ¥¡¥¤¥ë¤ò¿­Ä¹¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¸µ¤Î¥Õ¥¡¥¤¥ë¤òÉü¸µ¤Ç¤­¤Þ¤¹¡£ + +
  • 6 ¤Ä¤Î°µ½Ì¥ì¥Ù¥ë¤¬¤¢¤ê¤Þ¤¹¡£
    +¿­Ä¹¤Î®¤µ¤«°µ½ÌΨ¤ÎÎɤµ¤Î¡¢¤¤¤º¤ì¤«¤òÁª¤Ö¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +
+ +

+°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¡¢¥Ø¥Ã¥ÀÉô¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹Éô¡¢¤ª¤è¤Ó¥Ç¡¼¥¿Éô¤«¤é¹½À® +¤µ¤ì¡¢¤³¤Î½ç¤Ç¥Õ¥¡¥¤¥ë¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£ +

+ +
+
++--------+-------------+-----------------------------+
+| ¥Ø¥Ã¥À |¥¤¥ó¥Ç¥Ã¥¯¥¹ |          ¥Ç¡¼¥¿             |
++--------+-------------+-----------------------------+
+                                                     EOF
+
+
+ + +

¥Ç¡¼¥¿Éô

+ +

+¸µ¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¼¡¤Î¹ÔÄø¤Ç°µ½Ì¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢ebzip ¤Ï¸µ¤Î¥Õ¥¡¥¤¥ë¤òʬ³ä¤·¤Þ¤¹¡£ +¸Ä¡¹¤Î ¥¹¥é¥¤¥¹ (slice) ¤Ï¡¢ËöÈø¤Î¤â¤Î¤ò½ü¤±¤Ð¡¢ +Ʊ¤¸Â礭¤µ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
++---------------+---------------+--   --+----------+
+|  ¥¹¥é¥¤¥¹ 1   |  ¥¹¥é¥¤¥¹ 2   |  ...  |¥¹¥é¥¤¥¹ N|
++---------------+---------------+--   --+----------+
+                                                  EOF
+
+
+ +

+¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤Ï¡¢°µ½Ì¥ì¥Ù¥ë¤«¤é·è¤Þ¤ê¤Þ¤¹ +(°µ½Ì¥ì¥Ù¥ë¤Ë¤Ä¤¤¤Æ¤Ï ¡Ö°µ½Ì¥ì¥Ù¥ë¡×¤ò +»²¾È¤Î¤³¤È)¡£ +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥¹¥é¥¤¥¹¤ÎÂ礭¤µ
0 2048 ¥Ð¥¤¥È
1 4096 ¥Ð¥¤¥È
2 8192 ¥Ð¥¤¥È
3 16384 ¥Ð¥¤¥È
4 32768 ¥Ð¥¤¥È
5 65536 ¥Ð¥¤¥È
+ +

+¼¡¤Ë¡¢ËöÈø¤Î¥¹¥é¥¤¥¹¤¬¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤è¤ê¤âû¤«¤Ã¤¿¾ì¹ç¡¢ +ebzip ¤Ï¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤ÈƱ¤¸¤Ë¤Ê¤ë¤Þ¤Ç¿­¤Ð¤·¡¢¿­¤Ð¤·¤¿ +Éôʬ¤Ë 0x00 ¤òËä¤á¤Þ¤¹¡£ +

+ +
+
+                                                 ¿­¤·¤¿Éôʬ
++---------------+---------------+--   --+---------+-----+
+|  ¥¹¥é¥¤¥¹ 1   |  ¥¹¥é¥¤¥¹ 2   |  ...  |  ¥¹¥é¥¤¥¹ N   |
++---------------+---------------+--   --+---------+-----+
+                                                        EOF
+
+
+ +

+ºÇ¸å¤Ë¡¢ebzip ¤Ï¸Ä¡¹¤Î¥¹¥é¥¤¥¹¤ò¡¢RFC 1951 ¤Ëµ­¤µ¤ì¤Æ¤¤¤ë +DEFLATE °µ½Ì¥Ç¡¼¥¿·Á¼°¤Ç°µ½Ì¤·¤Þ¤¹¡£ +¤ª¤Î¤ª¤Î¤Î¥¹¥é¥¤¥¹¤Ï¡¢Â¾¤Î¥¹¥é¥¤¥¹¤È¤ÏÆÈΩ¤·¤Æ°µ½Ì¤µ¤ì¤Þ¤¹¡£ +°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤Î¥Ó¥Ã¥È¿ô¤¬ 8 ¤ÎÇÜ¿ô¤Ç¤Ê¤±¤ì¤Ð¡¢1 ¡Á 7 ¥Ó¥Ã¥È¤ò°µ +½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤ÎËöÈø¤Ë­¤·¡¢8 ¤ÎÇÜ¿ô¤Ë¤Ê¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤è¤ê¡¢°µ½Ì¤µ¤ì¤¿¤½¤ì¤¾¤ì¤Î¥¹¥é¥¤¥¹¤Ï¥Ð¥¤¥È¤Î¶­³¦¤«¤é³«»Ï¤µ¤ì¤Þ¤¹¡£ +­¤µ¤ì¤¿¥Ó¥Ã¥È¤ÎÆâÍƤÏ̤ÄêµÁ¤Ç¤¹¤¬¡¢¤³¤Î¥Ó¥Ã¥È¤Ï·è¤·¤Æ»ÈÍѤµ¤ì¤Þ¤»¤ó¡£ +

+ +
+
++------------+----------+--   --+--------------+
+| °µ½Ì¤µ¤ì¤¿ |°µ½Ì¤µ¤ì¤¿|  ...  |  °µ½Ì¤µ¤ì¤¿  |
+| ¥¹¥é¥¤¥¹ 1 |¥¹¥é¥¤¥¹ 2|  ...  |  ¥¹¥é¥¤¥¹ N  |
++------------+----------+--   --+--------------+
+
+
+ +

+¤³¤ì¤¬°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Ë¤ª¤±¤ë ¥Ç¡¼¥¿Éô ¤Ë¤Ê¤ê¡¢°µ½Ì¤µ¤ì¤¿ +¥¹¥é¥¤¥¹¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+ËöÈø¤Î¥¹¥é¥¤¥¹¤Î¿­¤Ð¤·¤¿Éôʬ¤Ï¡¢ËöÈø¤Î¥¹¥é¥¤¥¹¤Î°ìÉô¤È¤·¤Æ°µ½Ì¤µ¤ì +¤Þ¤¹¡£ +ebunzip ¤¬ËöÈø¤Î¥¹¥é¥¤¥¹¤òÉü¸µ¤¹¤ë¤È¤­¤Ï¡¢¥¹¥é¥¤¥¹¤ò¿­Ä¹¤·¤Æ +¤«¤é¿­¤Ð¤·¤¿Éôʬ¤ò¼è¤ê½ü¤¯¤È¤¤¤¦ºî¶È¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+°µ½Ì¤·¤¿¥¹¥é¥¤¥¹¤ÎÂ礭¤µ¤¬¡¢¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤è¤ê¤âÂ礭¤¤¤«Åù¤·¤¤¤È¤­¤Ï¡¢ +ebzip ¤Ï¤½¤Î¥¹¥é¥¤¥¹¤Î°µ½Ì¥Ç¡¼¥¿¤òÇÑ´þ¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢ebzip ¤Ï¸µ¤Î¥Ç¡¼¥¿¤ò¤½¤Î¥¹¥é¥¤¥¹¤Î°µ½Ì¥Ç¡¼¥¿¤È¤·¤Æ +Âå¤ï¤ê¤Ëµ­Ï¿¤·¤Þ¤¹¡£ +

+ +

+¸µ¤Î¥Õ¥¡¥¤¥ë¤¬¶õ¤À¤Ã¤¿¤È¤­¤Ï¡¢°µ½Ì¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿Éô¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥¤¥ó¥Ç¥Ã¥¯¥¹Éô

+ +

+°µ½Ì»þ¤Ë¡¢ebzip ¤Ï°µ½Ì¤·¤¿¸Ä¡¹¤Î¥¹¥é¥¤¥¹¤Î +¥¤¥ó¥Ç¥Ã¥¯¥¹ (index) ¤òµ­Ï¿¤·¤Þ¤¹¡£ +¸Ä¡¹¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢°µ½Ì¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤ÎÀèƬ +¤Þ¤Ç¤Îµ÷Î¥¤òɽ¤·¤Þ¤¹¡£ +µ÷Î¥¤Îñ°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ +
+
++---------+---------+--           --+---------+---------+
+|¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |  ...........  |¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |
+|¥¯¥¹ 1   |¥¯¥¹ 2   |  ...........  |¥¯¥¹ N   |¥¯¥¹ END |
++---------+---------+--           --+---------+---------+
+     |         |                        |         |
+ +---+         +----+                   +------+  +-----------+
+ V                  V                          V              V
++------------------+------------------+--   --+--------------+
+|    °µ½Ì¤µ¤ì¤¿    |    °µ½Ì¤µ¤ì¤¿    |  ...  |  °µ½Ì¤µ¤ì¤¿  |
+|    ¥¹¥é¥¤¥¹ 1    |    ¥¹¥é¥¤¥¹ 2    |  ...  |  ¥¹¥é¥¤¥¹ N  |
++------------------+------------------+--   --+--------------+
+
+
+ +

+¸Ä¡¹¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï 2 ¡Á 5 ¥Ð¥¤¥È¤ÎÂ礭¤µ¤ò»ý¤Á¤Þ¤¹¡£ +¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÎÂ礭¤µ¤Ï¡¢¸µ¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤Ç·è¤Þ¤ê¤Þ¤¹¡£ +

+ + + + + + + +
¸µ¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÎÂ礭¤µ
0 ¡Á 65535 ¥Ð¥¤¥È 2 ¥Ð¥¤¥È
65535 ¡Á 16777215 ¥Ð¥¤¥È 3 ¥Ð¥¤¥È
16777216 ¡Á 4294967295 ¥Ð¥¤¥È 4 ¥Ð¥¤¥È
4294967296 ¡Á 1099511627775 ¥Ð¥¤¥È 5 ¥Ð¥¤¥È
+ +

+¥¤¥ó¥Ç¥Ã¥¯¥¹Æâ¤Ç¤Î¡¢Ê£¿ô¥Ð¥¤¥È¤«¤é¤Ê¤ë¿ôÃͤϤ¹¤Ù¤Æ¡¢ÃͤÎÂ礭¤¤Êý¤ÎÉôʬ +¤òɽ¤¹¥Ð¥¤¥È (most significant byte) ¤¬Àè¤ËÍ褿·Á¤Çµ­Ï¿¤µ¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢0x1234 ¤Ï¼¡¤Î¤è¤¦¤Ëµ­Ï¿¤µ¤ì¤Þ¤¹¡£ +ºÇ½é¤Î¥Ð¥¤¥È¤Ï 0x12 ¤È¤Ê¤ê¡¢¼¡¤Î¥Ð¥¤¥È¤Ï 0x34 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
++---------+---------+
+|0001 0010|0011 0100|
++---------+---------+
+  (0x12)    (0x34)
+
+
+ +

+¥¤¥ó¥Ç¥Ã¥¯¥¹Éô¤Ï¡¢°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ 1 ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç»Ï¤Þ¤ê¡¢¤½¤Î¸å¤í +¤Ë°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ 2 ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬Â³¤­¤Þ¤¹¡£ +°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ N ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¸å¤í¤Ë¤Ï¡¢¡Ö½ªÃ¼¡×¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹ +¤¬ÃÖ¤«¤ì¤Þ¤¹¡£ +¤³¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ N ¤ÎËöÈø¤Î¼¡¤Î¥Ð¥¤¥È¤Ø¤Î +¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤ò¼¨¤¹¤³¤È¤Ë¤â¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
++---------+---------+--           --+---------+---------+
+|¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |  ...........  |¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |
+|¥¯¥¹ 1   |¥¯¥¹ 2   |  ...........  |¥¯¥¹ N   |¥¯¥¹ END |
++---------+---------+--           --+---------+---------+
+
+
+ +

+°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤ÎÂ礭¤µ¤¬¥¹¥é¥¤¥¹¥µ¥¤¥º¤ËÅù¤·¤¤¤È¤­¤Ï¡¢¤½¤Î¥¹¥é¥¤¥¹ +¤Î¥Ç¡¼¥¿¤Ï¼ÂºÝ¤Ë¤Ï°µ½Ì¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +

+ +

+¸µ¤Î¥Õ¥¡¥¤¥ë¤¬¶õ¤À¤Ã¤¿¤È¤­¤Ï¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹Éô¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò°ì¤Ä¤À¤± +»ý¤Á¤Þ¤¹¡£ +¤³¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òɽ¤·¤Þ¤¹¡£ +

+ + +

¥Ø¥Ã¥ÀÉô

+ +

+¥Ø¥Ã¥ÀÉô¤Ï 22 ¥Ð¥¤¥È¤«¤é¤Ê¤ê¤Þ¤¹¡£ +¼¡¤Î¥Õ¥£¡¼¥ë¥É¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +
+
++--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+| ¥Þ¥¸¥Ã¥¯ ID  |*1| *2  |¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ | Adler-32  | ½¤Àµ»þ¹ï  |
++--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21
+
+*1: zip ¥â¡¼¥É¤È°µ½Ì¥ì¥Ù¥ë
+*2: ͽÌóÎΰè
+
+
+ +
+
¥Þ¥¸¥Ã¥¯ ID (5 ¥Ð¥¤¥È)
+
+0x45, 0x42, 0x5a, 0x69, 0x70 (ASCII ʸ»úÎó¤Çɽ¤¹¤È EBZip) +¤È¤¤¤¦¸ÇÄꤷ¤¿Ãͤò»ý¤Á¤Þ¤¹¡£ + +
zip ¥â¡¼¥É (MSB ¦¤Î 4 ¥Ó¥Ã¥È)
+
+°µ½Ì¥â¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +¸µ¤Î (È󰵽̻þ¤Î) ¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤¬ 4294967295 ¥Ð¥¤¥È (= 4G¥Ð¥¤¥È) +°ÊÆâ¤Î¤È¤­¤Ï 1 (2 ¿Ê¿ô¤Ç 0001)¡¢¤½¤ì¤è¤êÂ礭¤¤¤È¤­¤Ï 2 (2 ¿Ê¿ô¤Ç 0002) +¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£ + +

+¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤ÇÃͤ¬ÊѤï¤ë¤Î¤Ï¡¢Îò»ËŪ¤Ê»ö¾ð¤Ë¤è¤ê¤Þ¤¹¡£ +°ÊÁ°¤Î EB Library ¤Ï°µ½Ì¥â¡¼¥É 1 ¤·¤«´ûÄꤷ¤Æ¤ª¤é¤º¡¢¤Þ¤¿ 4GB ¥Ð¥¤¥È +¤òĶ¤¨¤ë¥Õ¥¡¥¤¥ë¤ò°·¤¨¤Þ¤»¤ó¤Ç¤·¤¿¡£ +4G ¥Ð¥¤¥È¤òĶ¤¨¤ë¥Õ¥¡¥¤¥ë¤ò°·¤¨¤ë¤è¤¦¤Ë EB Library ¤ò²þÎɤ·¤¿ºÝ¤Ë¡¢ +¡Ö4G ¥Ð¥¤¥È¤òĶ¤¨¤¿¤é¡¢°µ½Ì¥â¡¼¥É¤Ï 2 ¤Ë¥»¥Ã¥È¤¹¤ë¡×¤È¤¤¤¦¥ë¡¼¥ë¤ò +¿·¤¿¤ËÀߤ±¤Þ¤·¤¿¡£ +¤³¤ì¤Ë¤è¤ê¡¢°ÊÁ°¤Î EB Library ¤Ç 4GB ¥Ð¥¤¥È¤òĶ¤¨¤¿¥Õ¥¡¥¤¥ë¤ò°·¤ª¤¦ +¤È¤¹¤ë¤È¡¢ÈóÂбþ¤Î°µ½Ì¥â¡¼¥É¤È¤ß¤Ê¤µ¤ì¡¢¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ +¤¤¤Þ¤¹¡£ +

+ +
°µ½Ì¥ì¥Ù¥ë (LSB ¦¤Î 4 ¥Ó¥Ã¥È)
+
+°µ½Ì¥ì¥Ù¥ë¤òɽ¤·¤Þ¤¹¡£ + +
ͽÌóÎΰè (2 ¥Ð¥¤¥È)
+
+ͽÌ󤵤ì¤Æ¤¤¤Þ¤¹¤¬¡¢»È¤ï¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +0x0000 ¤ÇËä¤á¤é¤ì¤Þ¤¹¡£ + +
¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ (6 ¥Ð¥¤¥È)
+
+¸µ¤Î (È󰵽̻þ¤Î) ¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òµ­Ï¿¤·¤Æ¤¤¤Þ¤¹¡£ + +
Adler-32 (4 ¥Ð¥¤¥È)
+
+RFC 1950 ¤Ëµ­¤µ¤ì¤Æ¤¤¤ë Adler-32 ¤È¤¤¤¦¥¢¥ë¥´¥ê¥º¥à¤òÍѤ¤¤Æ·×»»¤·¤¿¡¢ +È󰵽̥ǡ¼¥¿¤Î¥Á¥§¥Ã¥¯¥µ¥à¤ÎÃͤǤ¹¡£ + +
½¤Àµ»þ¹ï (4 ¥Ð¥¤¥È)
+
+¸µ¤Î¥Õ¥¡¥¤¥ë¤ÎºÇ½ª½¤Àµ»þ¹ï¤Ç¤¹¡£ +¥°¥ê¥Ë¥Ã¥¸É¸½à»þ¤Î 1970 ǯ 1 ·î 1 Æü 0 »þ 0 ʬ 0 É䫤é¤Î·Ð²áÉÿô¤Ç +ɽ¤·¤Þ¤¹¡£ +
+ +

+zip ¥â¡¼¥É ¤È °µ½Ì¥ì¥Ù¥ë ¤Ï¡¢Î¾Êý¤È¤â¥Ø¥Ã¥À¤Î +5 ¥Ð¥¤¥ÈÌܤËÆþ¤ê¤Þ¤¹¡£ +zip ¥â¡¼¥É ¤Ï¡¢ÃͤκǤâÂ礭¤¤Éôʬ¤òɽ¤¹¥Ó¥Ã¥È +(most significant bit) ¤ò´Þ¤ß¡¢°µ½Ì¥ì¥Ù¥ë ¤ÏºÇ¤â¾®¤µ¤¤Éôʬ¤ò +ɽ¤¹¥Ó¥Ã¥È (least significant bit) ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£ +zip ¥â¡¼¥É ¤¬ 1 ¤Ç¡¢°µ½Ì¥ì¥Ù¥ë ¤¬ 2 ¤Ê¤é¡¢ +¥Ø¥Ã¥À¤Î 5 ¥Ð¥¤¥ÈÌÜ¤Ï 0x12 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ MSB                         LSB
++---+---+---+---+---+---+---+---+
+| 0   0   0   1   0   0   1   0 | = 0x12
++---+---+---+---+---+---+---+---+
+  (zip ¥â¡¼¥É)  |  (°µ½Ì¥ì¥Ù¥ë)
+
+
+ +

+¥Ø¥Ã¥ÀÆâ¤Ç¤Î¡¢Ê£¿ô¥Ð¥¤¥È¤«¤é¤Ê¤ë¿ôÃͤϤ¹¤Ù¤Æ¡¢ÃͤÎÂ礭¤¤Êý¤ÎÉôʬ +¤òɽ¤¹¥Ð¥¤¥È (most significant byte) ¤¬Àè¤ËÍ褿·Á¤Çµ­Ï¿¤µ¤ì¤Þ¤¹¡£ +

+ + + diff --git a/lib/ebu/doc/ebzip-toc.html b/lib/ebu/doc/ebzip-toc.html new file mode 100644 index 0000000..4b14e81 --- /dev/null +++ b/lib/ebu/doc/ebzip-toc.html @@ -0,0 +1,36 @@ + diff --git a/lib/ebu/doc/ebzip.html b/lib/ebu/doc/ebzip.html new file mode 100644 index 0000000..30fa174 --- /dev/null +++ b/lib/ebu/doc/ebzip.html @@ -0,0 +1,73 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

+[¼¡¤Ø] [Ìܼ¡] +

+
+

ebzip ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó +4.5-20200413 +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1998-2006 Motoyuki Kasahara +

+ + +
+

+[¼¡¤Ø] [Ìܼ¡] +

+ + diff --git a/lib/ebu/doc/ebzip.html.in b/lib/ebu/doc/ebzip.html.in new file mode 100644 index 0000000..ccbccc1 --- /dev/null +++ b/lib/ebu/doc/ebzip.html.in @@ -0,0 +1,1314 @@ + + + + + + +ebzip ¥³¥Þ¥ó¥É + + + +

ebzip ¥³¥Þ¥ó¥É

+

+¤³¤Îʸ½ñ¤Ï EB ¥é¥¤¥Ö¥é¥ê¥Ð¡¼¥¸¥ç¥ó + +¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£ +

+ +

+Ìܼ¡: +

+ + + +

+Copyright (c) 1998-2006 Motoyuki Kasahara +

+ + +

¤Ï¤¸¤á¤Ë

+ +

+ebzip ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥óÍѤˡ¢CD-ROM ½ñÀҤΠ+°µ½Ì¡¦¿­Ä¹¤ò¹Ô¤¤¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢µ¡Ç½Åª¤Ë¤Ï²¿¤ÎÀ©¸Â¤â¤Ê¤¯°µ½Ì¤µ¤ì¤¿ +CD-ROM ½ñÀҤ˥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹ (¤¿¤À¤·¡¢½èÍý®Å٤Ϥâ¤È¤Î½ñÀÒ¤ËÈæ¤Ù¤ÆÃÙ +¤¯¤Ê¤ë¤«¤âÃΤì¤Þ¤»¤ó)¡£ +°µ½Ì¥Ç¡¼¥¿·Á¼°¤Ï¡¢CPU ¤Î¼ïÎà¤ä¡¢OS¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤Ï°Í¸¤·¤Æ¤¤¤Þ¤» +¤ó¤Î¤Ç¡¢ebzip ¤Ç°µ½Ì¤·¤¿¥Õ¥¡¥¤¥ë¤Ï¶¦ÍѤ¬²Äǽ¤Ç¤¹¡£ +ebzip ¤Ï EB ¥é¥¤¥Ö¥é¥ê¤È°ì½ï¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ +

+¤¢¤Ê¤¿¤Ï¡¢¼«Ê¬¤Î½êÍ­¤¹¤ë CD-ROM ½ñÀҤλÈÍѵöÂú¤ò¼é¤é¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +ebzip ¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¤¬¡¢¤¢¤Ê¤¿¤Î½ñÀÒ¤¬¼«Í³¤Ë»È¤¨¤ë +¤â¤Î¤Ç¤¢¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ +CD-ROM ½ñÀҤνÐÈǼҤ¬¥Ï¡¼¥É¥Ç¥£¥¹¥¯ (¤ª¤è¤Ó¾¤ÎÊä½õµ­²±ÁõÃÖ) ¤Ë½ñÀÒ¤ò +¥³¥Ô¡¼¤¹¤ë¤³¤È¤òµö²Ä¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢¤½¤Î½ñÀҤΰµ½Ì¤ÏÄü¤á¤Æ²¼¤µ¤¤¡£ +

+ + +

Æ°ºî¤È¥³¥Þ¥ó¥É̾

+ +

+ebzip ¤Ï»°¤Ä¤Î Æ°ºî (action) ¥â¡¼¥É¤ò +È÷¤¨¤Æ¤¤¤Þ¤¹¡£ +°µ½Ì (compression)¡¢¿­Ä¹ (uncompression) ¤È¾ðÊó½ÐÎÏ (information) ¤Ç¤¹¡£ +

+ +
    +
  • °µ½Ì (compression)
    +°ìºý¤Î CD-ROM ½ñÀÒ¤ò°µ½Ì¤·¤Þ¤¹¡£ + +
  • ¿­Ä¹ (uncompression)
    +ebzip ¤Ç°µ½Ì¤µ¤ì¤¿¡¢°ìºý¤Î CD-ROM ½ñÀÒ¤ò¿­Ä¹¤·¤Þ¤¹¡£ + +
  • ¾ðÊó½ÐÎÏ (information)
    +ebzip ¤Ç°µ½Ì¤µ¤ì¤¿¡¢°ìºý¤Î CD-ROM ½ñÀҤΰµ½Ì¾õÂ֤˴ؤ¹¤ë +¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ + +
+ +

+ebzip ¤Ïµ¯Æ°»þ¤Ë¡¢µ¯Æ°»þ¤Ë»ÈÍѤµ¤ì¤¿¥³¥Þ¥ó¥É̾¤È +¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤«¤éÆ°ºî¥â¡¼¥É¤ò·èÄꤷ¤Þ¤¹¡£ +ebzip ¤Î°ì²ó¤Î¼Â¹Ô¤Î´Ö¤Ç¡¢Æ°ºî¥â¡¼¥É¤¬ÊѤï¤ë¤³¤È¤Ï +¤¢¤ê¤Þ¤»¤ó¡£ +

+ +

+ebzip ¤Ï ebzip¡¢ebunzip, +ebzipinfo ¤È¤¤¤¦°Û¤Ê¤ë 3 ¤Ä¤Î¥³¥Þ¥ó¥É̾¤Ç¥¤¥ó¥¹¥È¡¼¥ë +¤µ¤ì¤Þ¤¹¡£ +(°ìÉô¤Î´Ä¶­¤Ç¤Ï¡¢ebzipinfo ¤Ï ebzipinf +¤È¤¤¤¦Ì¾Á°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£) + +

+ebunzip ¤È¤¤¤¦Ì¾Á°¤Çµ¯Æ°¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¿­Ä¹¤ò¹Ô¤¤¤Þ¤¹¡£ +ebzipinfo ¤È¤¤¤¦Ì¾Á°¤Çµ¯Æ°¤µ¤ì¤¿¾ì¹ç¡¢¾ðÊó½ÐÎϤò¹Ô¤¤¤Þ¤¹¡£ +¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢°µ½Ì¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Ç¤â¡¢Æ°ºî¥â¡¼¥É¤ò·èÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +--compress (-z) ¤Ç°µ½Ì¡¢--uncompress +(-u) ¤Ç¿­Ä¹¡¢--information (-i) +¤Ç¾ðÊó½ÐÎϤò¹Ô¤¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó¤Ï¡¢µ¯Æ°»þ¤Î¥³¥Þ¥ó¥É̾¤è¤êÍ¥À褷¤Þ¤¹¡£ +¼¡¤ÎÎã¤Ç¤Ï¡¢¤¤¤º¤ì¤âÆ°ºî¥â¡¼¥É¤¬¡Ö¿­Ä¹¡×¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ebunzip
+ebzip --uncompress
+ebzipinfo --uncompress
+
+
+ +

+±ó³Ö¥¢¥¯¥»¥¹¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤Ç¡¢±ó³Ö¥¢¥¯¥»¥¹¼±Ê̻ҤϻÈÍѤǤ­¤Þ¤»¤ó¡£ +

+ +
+
+% ebzip ebnet://localhost/cdrom
+ebzip: ebnet ¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£
+
+
+ + +

ebzip ¤Î¼Â¹Ô

+ +

+ebinfo¡¢ebunzip¡¢ebzipinfo ¤Î +°ìÈÌŪ¤Êµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
+
+% ebzip ½ñÀҤؤΥѥ¹
+% ebunzip ½ñÀҤؤΥѥ¹
+% ebzipinfo ½ñÀҤؤΥѥ¹
+
+
+ +

+½ñÀҤؤΥѥ¹ ¤Ë¤Ï¡¢CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê¡¢¤Ä¤Þ¤ê +catalog ¤Þ¤¿¤Ï catalogs ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë +¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +Ê£¿ô¤Î¥Ñ¥¹¤ò½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¡¢¥Ñ¥¹¤Î»ØÄê¤ò¾Ê¤¯¤³¤È¤Ï +¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebzip
+% ebunzip
+% ebzipinfo
+
+
+ +

+¤³¤Î¾ì¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤¬»ØÄꤵ¤ì¤¿¤â¤Î¤È +ȽÃǤµ¤ì¤Þ¤¹¡£ +

+ + +

°µ½Ì

+ +

+ebzip (ebunzip --compress¡¢ +ebzipinfo --compress ¤ÈÅù²Á) ¤Ï CD-ROM ½ñÀҤΰµ½Ì¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ + + +

°µ½Ì¤Î¼Â¹ÔÎã (1)

+ +

+¤³¤ÎÀá¤Ç¤Ï¡¢¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤Ë¤¹¤Ç¤Ë¥³¥Ô¡¼¤·¤Æ¤¢¤ë CD-ROM ½ñÀÒ¤ò°µ½Ì¤¹¤ë¤Ë¤Ï +¤É¤¦¤·¤¿¤é¤¤¤¤¤«¤òÀâÌÀ¤·¤Þ¤¹¡£ +CD-ROM ½ñÀÒ¤¬¤¹¤Ç¤Ë /dict ¤Ë¥³¥Ô¡¼¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Î¡¢¤Þ¤À°µ½Ì +¤µ¤ì¤Æ¤¤¤Ê¤¤¤È²¾Äꤷ¤Þ¤¹¡£ +¤³¤Î½ñÀÒ¤Ï /dict ¤Î²¼¤Ë¡¢¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language
+/dict/kanji/start
+/dict/english/start
+
+
+ +

+¤³¤Î½ñÀÒ¤ò°µ½Ì¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% cd /dict
+% ebzip
+
+
+ +

+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤âƱ¤¸¤Ç¤¹¡£ +

+ +
+
+% ebzip --output-directory /dict /dict
+
+
+ +

+°µ½Ì¤Ë¤Ï¡¢¤·¤Ð¤é¤¯¤«¤«¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +°µ½Ì¤Î´Ö¡¢ebzip ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¾õ¶·¤òÃΤ餻¤ë¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ +
+
+==> /dict/kanji/start ¤ò°µ½Ì <==
+./dict/kanji/start.ebz ¤Ë½ÐÎÏ
+ 1.0% ½èÍýºÑ¤ß (2097152 / 220069888 ¥Ð¥¤¥È)
+ 1.9% ½èÍýºÑ¤ß (4194304 / 220069888 ¥Ð¥¤¥È)
+ 2.9% ½èÍýºÑ¤ß (6291456 / 220069888 ¥Ð¥¤¥È)
+        : (ά)
+´°Î» (220069888 / 220069888 ¥Ð¥¤¥È)
+220069888 -> 78163751 ¥Ð¥¤¥È (35.5%)
+
+
+ +

+°µ½Ì¤¬´°Î»¤¹¤ë¤È¡¢/dict ¤Î²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¾¯¤·ÊѲ½¤·¤Æ +¤¤¤ë¤Î¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language.ebz
+/dict/kanji/start.ebz
+/dict/english/start.ebz
+
+
+ +

+³ÈÄ¥»Ò .ebz ¤¬¤¤¤¯¤Ä¤«¤Î¥Õ¥¡¥¤¥ë +(/dict/language.ebz¡¢/dict/kanji/start.ebz¡¢ +/dict/english/start.ebz) ¤ËÉÕ¤¤¤Æ¤¤¤Þ¤¹¡£ +¤³¤ì¤é¤¬°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ +¾¤Î¥Õ¥¡¥¤¥ë¤ÏÊѲ½¤·¤Æ¤¤¤Þ¤»¤ó¡£ +

+ +

+ebzip ¤¬°µ½Ì¤¹¤ë¥Õ¥¡¥¤¥ë¤Ï¡¢ +START¡¢HONMON¡¢HONMON2¡¢ +HONMONS¡¢LANGUAGE ¥Õ¥¡¥¤¥ë¤È GAIJI +¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë³°»ú¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ +

+ + +

°µ½Ì¤Î¼Â¹ÔÎã (2)

+ +

+¤³¤ÎÀá¤Ç¤Ï¤â¤¦°ì¤ÄÊ̤ÎÎã¤È¤·¤Æ¡¢CD-ROM ¥Ç¥£¥¹¥¯¤Î¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¡¢¤½¤ì +¤ò¥Ï¡¼¥É¥Ç¥£¥¹¥¯¤ËÃÖ¤¯ÊýË¡¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£ +¸µ¤Î CD-ROM ½ñÀÒ¤¬ /cdrom ¤Ë¥Þ¥¦¥ó¥È¤µ¤ì¡¢½ñÀÒ¤Ï +/cdrom ¤Î²¼¤Ë¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤ë¤È²¾Äꤷ¤Þ¤¹¡£ +

+ +
+
+/cdrom/catalog
+/cdrom/language
+/cdrom/german/start
+/cdrom/french/start
+/cdrom/italian/start
+
+
+ +

+¤³¤Î½ñÀÒ¤ò°µ½Ì¤·¡¢/dict ¤Î²¼¤ËÃÖ¤¯¤¿¤á¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò +¼Â¹Ô¤·¤Þ¤¹¡£ +

+ +
+
+% cd /dict
+% ebzip --keep /cdrom
+
+
+ +

+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤âƱ¤¸¤Ç¤¹¡£ +

+ +
+
+% ebzip --keep --output-directory /dict /cdrom
+
+
+ +

+½ÐÎϦ¤Î¥Ç¥£¥ì¥¯¥È¥ê /dict ¤Ï¶õ¤Ç¤â¹½¤¤¤Þ¤»¤ó¤¬¡¢°µ½ÌÁ°¤Ë +¤¢¤é¤«¤¸¤áºî¤Ã¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ç¡¢Ãí°Õ¤·¤Æ²¼¤µ¤¤¡£ +¤³¤ÎÎã¤Ç¤Ï¡¢--keep ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£ +Æä˻ØÄꤷ¤Ê¤±¤ì¤Ð¡¢ebzip ¤Ï¡¢°µ½Ì¸å¤Ë¸µ¤Î¥Õ¥¡¥¤¥ë¤òºï½ü +¤·¤Þ¤¹¤¬¡¢--keep ¥ª¥×¥·¥ç¥ó¤Ï¤³¤Î¿¶¤ëÉñ¤¤¤òÍÞÀ©¤·¤Þ¤¹¡£ +

+ +

+/dict ¤È /cdrom ¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤Ï¤Û¤È¤ó¤É +Ʊ¤¸¤Ç¤¹¤¬¡¢/dict ¤Î²¼¤Î°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ë¤Ï³ÈÄ¥»Ò +.ebz ¤¬ÉÕ¤¤¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language.ebz
+/dict/german/start.ebz
+/dict/french/start.ebz
+/dict/italian/start.ebz
+
+
+ +

+Ãæ´Ö¤Î¥Ç¥£¥ì¥¯¥È¥ê /dict/german¡¢/dict/french¡¢ +/dict/italian ¤Ï¡¢¤â¤·Ìµ¤±¤ì¤Ð ebzip ¤Ë¤è¤Ã¤Æ +ºîÀ®¤µ¤ì¤Þ¤¹¡£ +catalog ¤È catalogs ¤Ï¡¢½ÐÎϦ¤Î¥Ç¥£¥ì¥¯¥È¥ê +¤Ë¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ +EB ¥é¥¤¥Ö¥é¥ê¤¬Âбþ¤·¤Æ¤¤¤Ê¤¤¥Õ¥¡¥¤¥ë¡¢¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ä¤¤¤Æ¤Ï¡¢ +ebzip ¤Ï̵»ë¤·¤Þ¤¹ (°µ½Ì¤â¥³¥Ô¡¼¤â¤·¤Þ¤»¤ó)¡£ +

+ + +

°µ½Ì¥ì¥Ù¥ë

+ +

+ebzip ¤Ï¡¢0 ¡Á 5 ¤È¤¤¤¦ 6 ¤Ä¤Î°µ½Ì¥ì¥Ù¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +°µ½Ì¥ì¥Ù¥ë 0 ¤Ï¡¢°µ½Ì¡¦¿­Ä¹¤¬ºÇ¤â®¤¤¤Ç¤¹¤¬¡¢°µ½ÌΨ¤ÏºÇ°­¤Ç¤¹¡£ +°µ½Ì¥ì¥Ù¥ë 5 ¤Ï¡¢°µ½ÌΨ¤¬ºÇÎɤǤ¹¤¬¡¢°µ½Ì¡¦¿­Ä¹¤ÏºÇ¤âÃÙ¤¯¤Ê¤ê¤Þ¤¹¡£ +°µ½Ì¥ì¥Ù¥ë¤Ï¡¢--level (-l) ¥ª¥×¥·¥ç¥ó¤ÇÀßÄꤷ¤Þ¤¹¡£ +

+ +
+
+% ebzip --level 2 --output-directory /dict /dict
+
+
+ +

+̵»ØÄê»þ¤Î¥ì¥Ù¥ë¤Ï 0 (ºÇ®¤À¤¬°µ½ÌΨ¤ÏºÇ°­) ¤Ç¤¹¡£ +

+ + +

¥Æ¥¹¥È

+ +

+ebzip ¤ò --test (-t) ¥ª¥×¥·¥ç¥óÉÕ¤­ +¤Ç¼Â¹Ô¤¹¤ë¤È¡¢ebzip ¤Ï°µ½Ì¤·¤¿¥Ç¡¼¥¿¤ò¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï +½ñ¤­¹þ¤Þ¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +°µ½Ì¤¹¤ëÁ°¤Ë°µ½Ì¸å¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òÃΤꤿ¤¤¤È¤­¤Ë¡¢ÊØÍø¤Ç¤¹¡£ +

+ +
+
+% ebzip --test /dict /dict
+
+
+ + +

°ìÉô¤À¤±¤Î°µ½Ì

+ +

+¤Ê¤Ë¤âÀßÄꤷ¤Ê¤¤¤È¡¢ebzip ¤Ï½ñÀÒ°ìºý¤ÎÁ´ÂΤò°µ½Ì¤·¤Þ¤¹¤¬¡¢ +--subbook (-S) ¤ä --skip-content +(-s) ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È°ìÉô¤À¤±¤ò°µ½Ì¤Ç¤­¤Þ¤¹¡£ +

+ +

+--subbook ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤ò°ì¤Ä¼è¤ê¡¢¤½¤³¤Ë¥«¥ó¥Þ +(,) ¤Ç¶èÀڤäơ¢°µ½Ì¤·¤¿¤¤ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤òÊÂ¤Ù¤Æ +½ñ¤­¤Þ¤¹¡£ +ebinfo ¥³¥Þ¥ó¥É¤òÍѤ¤¤ë¤È¡¢¤¢¤Ê¤¿¤Î½êÍ­¤·¤Æ¤¤¤ë½ñÀÒ¤Ë +¤É¤Î¤è¤¦¤ÊÉûËܤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤Î¤«¤òÃΤ뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebinfo /mnt/cdrom
+¥Ç¥£¥¹¥¯¤Î·Á¼°: EB/EBG/EBXA/EBXA-C/S-EBXA
+ʸ»ú¥³¡¼¥É: JIS X 0208
+ÉûËܤοô: 3
+
+ÉûËÜ 1:
+  Âê̾: ¿·±Ñϼ­Åµ¡ÊÂè»ÍÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: english
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa121 -- 0xa24e
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 2:
+  Âê̾: CD-ROM ʩϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: french
+  ¸¡º÷Êý¼°: Á°Êý°ìÃ× ¸åÊý°ìÃ× ¾ò·ï ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+ÉûËÜ 3:
+  Âê̾: ¥Ý¥±¥Ã¥ÈÆÈϼ­Åµ¡ÊÂè»°ÈÇ¡Ë
+  ¥Ç¥£¥ì¥¯¥È¥ê: german
+  ¸¡º÷Êý¼°: ¥á¥Ë¥å¡¼
+  ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: 16 24 30 48
+  Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 
+  Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: 0xa321 -- 0xa27e
+
+
+ +

+(ebinfo ¥³¥Þ¥ó¥É¤Ë´Ø¤·¤Æ¤Î¾ÜºÙ¤Ï¡¢ +ebinfo ¥³¥Þ¥ó¥É¤Î¥Þ¥Ë¥å¥¢¥ë ¤ò»²¾È¤Î¤³¤È¡£) +¤³¤ÎÎã¤Ç¤Ï¡¢3 ¤Ä¤ÎÉûËܤ¬½ñÀҤˤϴޤޤì¤Æ¤ª¤ê¡¢¤½¤ì¤é¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤Ï +english, french, german +¤À¤È¤¤¤¦¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£ +

+ +

+english ¤È german ¤À¤±¤ò°µ½Ì¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î +¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebzip --subbook english,french /dict
+
+
+ +

+¥Ç¥£¥ì¥¯¥È¥ê̾¤ÎÂçʸ»ú¡¢¾®Ê¸»ú¤Î°ã¤¤¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +--subbook ¤Î°ú¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʬ¤±¤Æ½ñ¤¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ +

+ +
+
+% ebzip --subbook english --subbook french /dict
+
+
+ +

+»Ä¤ê¤ÎÉûËÜ (¤³¤ÎÎã¤Ç¤Ï german) ¤Î¥Õ¥¡¥¤¥ë¤Ï°µ½Ì¤µ¤ì¤ë¤³¤È¤â +¥³¥Ô¡¼¤µ¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¤³¤Î»þÅÀ¤Ç¤Ï¤Þ¤À¤³¤Î½ñÀÒ¤ËÂФ¹¤ë°µ½Ì¤Î +ºî¶È¤Ï´°Î»¤·¤Æ¤¤¤Þ¤»¤ó¡£ +¤³¤Î½ñÀÒ¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢¤µ¤é¤Ê¤ëÁàºî¤ò¹Ô¤Ã¤Æ»Ä¤ê¤ÎÉûËܤò°µ½Ì¤¹¤ë¤«¡¢ +ebrefile ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ»Ä¤ê¤ÎÉûËܤò catalog(s) +¥Õ¥¡¥¤¥ë¤ÎÉûËÜÅÐÏ¿¥ê¥¹¥È¤«¤éºï½ü¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó +(ebrefile ¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤Æ¾Ü¤·¤¯¤Ï¡¢ +ebrefile ¥³¥Þ¥ó¥É ¤Î¥Þ¥Ë¥å¥¢¥ë +¤Î¡Öebzip ¤È¤ÎÏ¢·È¡×¹à¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ÉûËܤΰìÉô¤º¤Ä¤òÊ£¿ô²ó¤Ëʬ¤±¤Æ°µ½Ì¤¹¤ë¾ì¹ç¡¢¤¹¤Ù¤Æ¤ÎÉûËܤÇƱ¤¸°µ½Ì¥ì¥Ù¥ë +¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +(¤¿¤È¤¨¤Ð¡¢english ¤È french ¤Ï¥ì¥Ù¥ë 0 ¤Ç°µ½Ì¤·¡¢ +german ¤Ï¥ì¥Ù¥ë 2 ¤Ç°µ½Ì¤¹¤ë)¡£ +

+ +

+--skip-content (-s) ¤Ï --subbook +¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢--skip-content ¤Ç¤Ï̵»ë¤¹¤ë¥Õ¥¡¥¤¥ë¤Î +¥Ç¡¼¥¿·¿¤ò»ØÄꤷ¤Þ¤¹¡£ +

+ +
+
+% ebzip --skip-content sound,movie --subbook french /dict
+
+
+ +

+¤³¤ÎÎã¤Ç¤Ï¡¢ebzip ¤Ï²»À¼¤ÈÆ°²è¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤·¤Þ¤¹¡£ +¸½ºß¤Î¤È¤³¤í¡¢ebzip ¤Ë¤è¤Ã¤Æǧ¼±¤µ¤ì¤ë¥Ç¡¼¥¿·¿¤Ï¡¢ +¼¡¤ÎÄ̤ê¤Ç¤¹¡£ +

+ +
    +
  • font
    +³°»ú¤Î¥Õ¥©¥ó¥È +
  • graphic
    +²èÁü¥Ç¡¼¥¿ +
  • sound
    +²»À¼¥Ç¡¼¥¿ +
  • movie
    +Æ°²è¥Ç¡¼¥¿ +
+ + +

¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­

+ +

+½ñ¤­¹þ¤â¤¦¤È¤·¤¿¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¤È¤­¡¢ebzip ¤Ï +¾å½ñ¤­¤·¤ÆÎɤ¤¤«¤É¤¦¤«¤Î³Îǧ¤òµá¤á¤Æ¤­¤Þ¤¹¡£ +

+ +
+
+==> /dict/science/data/honmon ¤ò°µ½Ì <==
+/dict/science/data/honmon.ebz ¤Ë½ÐÎÏ
+
+¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹: /dict/science/data/honmon.ebz
+¾å½ñ¤­¤·¤Þ¤¹¤« (¤Ï¤¤:y, ¤¤¤¤¤¨:n)?
+
+
+ +

+y ¤« n ¤ÇÅú¤¨¤Æ²¼¤µ¤¤¡£ +n ¤ÈÅú¤¨¤ë¤È¡¢ebzip ¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤·¤Æ¡¢ +¼¡¤Ë¿Ê¤ß¤Þ¤¹¡£ +

+ +

+--force-overwrite ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebzip +¤Ï¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¡¢³Îǧ¤Ê¤·¤Ë¾å½ñ¤­¤·¤Þ¤¹¡£ +ƱÍͤˡ¢--no-overwrite ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ +ebzip ¤Ï³Îǧ¤Ê¤·¤Ë¤½¤Î¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤·¤Æ¼¡¤Ë¿Ê¤ß¤Þ¤¹¡£ +

+ + +

°µ½Ì¤µ¤ì¤¿½ñÀҤΰµ½Ì

+ +

+S-EBXA ¤ª¤è¤Ó EPWING µ¬³Ê¤Ë¤ª¤¤¤Æ¤â°µ½Ì·Á¼°¤òÄêµÁ¤·¤Æ¤ª¤ê¡¢CD-ROM ½ñÀÒ +¤Ë¤Ï¤³¤ì¤é¤Î°µ½Ì·Á¼°¤ò¼ÂºÝ¤ËºÎÍѤ·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤ì¤é¤Î°µ½Ì·Á¼°¤Ï¡¢ebzip ¤Î°µ½Ì·Á¼°¤È¤Ï°Û¤Ê¤ë¤â¤Î¤Ç¤¹¡£ +

+ +

+ebzip ¤Ï S-EBXA ¤ä EPWING °µ½Ì·Á¼°¤Ç°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀÒ¤â +¿­Ä¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢°µ½Ì¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +

+ +

+ebzip ¤ËÂФ·¤Æ¡¢´û¤Ë°µ½Ì¤µ¤ì¤Æ¤¤¤ë CD-ROM ½ñÀÒ¤ò°µ½Ì¤¹¤ë¤è¤¦¤Ë +Ì¿¤¸¤ë¤È¡¢ebzip ¤Ï¤¤¤Ã¤¿¤ó½ñÀÒ¤ò¿­Ä¹¤·¤Æ¤«¤é¡¢ebzip ¤Î°µ½Ì·Á¼°¤Ç +°µ½Ì¤·Ä¾¤·¤Þ¤¹¡£ +

+ +

+°ìÈÌ¤Ë ebzip ¤Î°µ½Ì·Á¼°¤ÎÊý¤¬ S-EBXA ¤ä EPWING ¤Î°µ½Ì·Á¼°¤è¤ê¤â°µ½ÌΨ¤¬ +Îɹ¥¤Ç¤¹¡£ +

+ + +

¿­Ä¹

+ +

+ebunzip (ebzip --uncompress¡¢ +ebzipinfo --uncompress ¤ÈƱ¤¸) ¤Ï¡¢ebzip ¤Ç +°µ½Ì¤·¤¿ CD-ROM ½ñÀÒ¤ò¿­Ä¹¤·¤Þ¤¹¡£ +

+ + + +

¿­Ä¹¤Î¼Â¹ÔÎã

+ +

+¿­Ä¹¤Î½èÍý¼ê½ç¤Ï¡¢°µ½Ì¤È¤«¤Ê¤ê»÷¤Æ¤¤¤Þ¤¹¡£ +/dict ¤Î²¼¤Ë°µ½Ì¤µ¤ì¤¿½ñÀÒ¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¤â¤Î¤È²¾Äꤷ¤Þ¤¹¡£ +¤³¤Î½ñÀҤˤϡ¢/dict ¤Î²¼¤Ë¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language.ebz
+/dict/kanji/start.ebz
+/dict/english/start.ebz
+
+
+ +

+¤³¤Î½ñÀÒ¤ò¿­Ä¹¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +

+ +
+
+% cd /dict
+% ebunzip
+
+
+ +

+¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤âƱ¤¸¤Ç¤¹¡£ +

+ +
+
+% ebunzip --output-directory /dict /dict
+
+
+ +

+¿­Ä¹¤Ë¤Ï¡¢¤·¤Ð¤é¤¯¤«¤«¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ +¿­Ä¹¤Î´Ö¡¢ebunzip ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¾õ¶·¤òÃΤ餻¤ë¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ +
+
+==> /dict/kanji/start.ebz ¤ò¿­Ä¹ <==
+./kanji/start.ebz ¤Ë½ÐÎÏ
+ 5.1% ½èÍýºÑ¤ß (4194304 / 82460672 ¥Ð¥¤¥È)
+10.2% ½èÍýºÑ¤ß (8388608 / 82460672 ¥Ð¥¤¥È)
+15.3% ½èÍýºÑ¤ß (12582912 / 82460672 ¥Ð¥¤¥È)
+        : (ά)
+´°Î» (82460672 / 82460672 ¥Ð¥¤¥È)
+25681439 -> 82460672 ¥Ð¥¤¥È
+
+
+ +

+¿­Ä¹¤Î´Ö¡¢ebunzip ¤Ï¡¢¤¹¤Ç¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Æ¤âÎɤ¤¤« +¤É¤¦¤«³Îǧ¤òµá¤á¤Æ¤­¤Þ¤¹¡£ +

+ +
+
+==> /dict/kanji/start.ebz ¤ò¿­Ä¹ <==
+/dict/kanji/start ¤Ë½ÐÎÏ
+
+¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹: /dict/kanji/start
+¾å½ñ¤­¤·¤Þ¤¹¤« (¤Ï¤¤:y, ¤¤¤¤¤¨:n)?
+
+
+ +

+¿­Ä¹¤¬´°Î»¤¹¤ë¤È¡¢/dict ¤Î²¼¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤Ï¾¯¤·ÊѲ½¤·¤Æ +¤¤¤Þ¤¹¡£ +

+ +
+
+/dict/catalog
+/dict/language
+/dict/kanji/start
+/dict/english/start
+
+
+ +

+¿­Ä¹¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¥Õ¥¡¥¤¥ë̾¤¬ÊѲ½¤·¡¢ +³ÈÄ¥»Ò .ebz ¤¬¼è¤ê½ü¤«¤ì¤Æ¤¤¤Þ¤¹¡£ +

+ + +

¿­Ä¹¤Î¥ª¥×¥·¥ç¥ó

+ +

+¿¤¯¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢°µ½Ì»þ¤È¿­Ä¹»þ¤È¤ÇƱ¤¸°ÕÌ£¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +

+--keep ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebunzip ¤Ï¡¢ +¿­Ä¹¤·¤¿¸å¤Ë°µ½Ì¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ +

+ +

+--test ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È¡¢ebunzip ¤Ï¿­Ä¹ +¤·¤¿¥Ç¡¼¥¿¤ò¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Õ¥¡¥¤¥ë¤¬Àµ¤·¤¯°µ½Ì¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤ò³Îǧ¤¹¤ë¤È¤­¤ËÊØÍø +¤Ç¤¹ +(--test ¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö¥Æ¥¹¥È¡×¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+--subbook ¤ä --skip-content ¥ª¥×¥·¥ç¥ó¤ò»ØÄê +¤¹¤ë¤È¡¢¾ò·ï¤Ë¹çÃפ·¤¿¥Õ¥¡¥¤¥ë¤À¤±¤·¤«¿­Ä¹¤·¤Þ¤»¤ó +(¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö°ìÉô¤À¤±¤Î°µ½Ì¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+--force-overwrite ¤ä --no-overwrite ¥ª¥×¥·¥ç¥ó +¤ò»ØÄꤹ¤ë¤È¡¢ebunzip ¤Ï¾å½ñ¤­¤·¤Æ¤âÎɤ¤¤«¤É¤¦¤«¤Î³Îǧ¤Ê¤·¤Ë¡¢ +¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤¿¤êÈô¤Ð¤·¤Æ¼¡¤Ë¿Ê¤ó¤À¤ê¤·¤Þ¤¹ +(--force-overwrite ¤È --no-overwrite ¥ª¥×¥·¥ç¥ó +¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¡× ¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ebunzip ¤Ï¡¢--level ¥ª¥×¥·¥ç¥ó¤ò̵»ë¤·¤Þ¤¹¡£ +¿­Ä¹»þ¤Ë --level ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£ +

+ + +

°µ½Ì¤µ¤ì¤¿½ñÀҤο­Ä¹

+ +

+S-EBXA ¤ª¤è¤Ó EPWING µ¬³Ê¤Ç¤â°µ½Ì·Á¼°¤òÄêµÁ¤·¤Æ¤ª¤ê¡¢CD-ROM ½ñÀÒ¤Ë¤Ï +¤³¤ì¤é¤Î°µ½Ì·Á¼°¤ò¼ÂºÝ¤ËºÎÍѤ·¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£ +¤·¤«¤·¡¢S-EBXA ¤ä EPWING¤Î°µ½Ì·Á¼°¤Ï¡¢ebzip ¤Î°µ½Ì·Á¼°¤È¤Ï°Û¤Ê¤ê¤Þ¤¹¡£ +

+ +

+ebzip ¤Ï S-EBXA ¤ä EPWING °µ½Ì·Á¼°¤Ç°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀÒ¤â +¿­Ä¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢°µ½Ì¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ +

+ +

+S-EBXA ·Á¼°¤Ç°µ½Ì¤µ¤ì¤¿ START ¥Õ¥¡¥¤¥ë¤ä¡¢EPWING ·Á¼°¤Ç°µ½Ì +¤µ¤ì¤¿ HONMON2, HONMONS ¥Õ¥¡¥¤¥ë¤ò¿­Ä¹¤¹¤ë¤È¡¢ +¿­Ä¹¸å¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï³ÈÄ¥»Ò .org ¤¬Éղ䵤ì¤Þ¤¹ +(Îã: honmon2 ¢ª honmon2.org)¡£ +

+ + +

¾ðÊó½ÐÎÏ

+ +

+ebzipinfo (ebzip --information +ebunzip --information ¤ÈƱ¤¸) ¤Ï CD-ROM ½ñÀҤΰµ½Ì¾õÂÖ¤ò½ÐÎÏ +¤·¤Þ¤¹¡£ +

+ + + +

¾ðÊó½ÐÎϤμ¹ÔÎã

+ +

+/dict ¤Ë¤¢¤ë¡¢°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀҤξðÊó¤ò½ÐÎϤ¹¤ë¤Ë¤Ï +¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +/dict ¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¡¢°µ½Ì¤µ¤ì¤¿ CD-ROM ½ñÀҤξðÊó¤ò½ÐÎÏ +¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ +

+ +
+
+% ebzipifo /dict
+
+
+ +

+ebzipinfo ¤Ïɸ½à½ÐÎϤ˼¡¤Î¤è¤¦¤Ê¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ +

+ +
+
+==> /dict/spanish/spanish/start.ebz <==
+154290176 -> 54881862 ¥Ð¥¤¥È (35.6%, ebzip °µ½Ì¥ì¥Ù¥ë 0)
+
+==> /dict/spanish/language.ebz <==
+compressed: 12288 -> 4121 ¥Ð¥¤¥È (33.5%, ebzip °µ½Ì¥ì¥Ù¥ë 0)
+
+==> /dict/spanish/catalog <==
+2048 ¥Ð¥¤¥È (Èó°µ½Ì)
+
+
+ + +

¾ðÊó½ÐÎϤΥª¥×¥·¥ç¥ó

+ +

+--subbook ¤ä --skip-content ¥ª¥×¥·¥ç¥ó¤ò +»ØÄꤹ¤ë¤È¡¢¾ò·ï¤Ë¹çÃפ·¤¿¥Õ¥¡¥¤¥ë¤Î¾ðÊó¤À¤±¤ò½ÐÎϤ·¤Þ¤¹ +(¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï¡¢ +¡Ö°ìÉô¤À¤±¤Î°µ½Ì¡×¤ò»²¾È¤Î¤³¤È)¡£ +

+ +

+ebzipinfo ¤Ï --force-overwrite¡¢ +--keep¡¢--level¡¢--no-overwrite¡¢ +--output-directory¡¢--quiet¡¢--silence¡¢ +--test ¥ª¥×¥·¥ç¥ó¤ò̵»ë¤·¤Þ¤¹¡£ +

+ + +

½ñÀҤκï½ü

+ +

+ebzip ¤Ï¡¢¥Ï¡¼¥É¥Ç¥£¥¹¥¯¾å¤Ë°µ½Ì¤·¤¿¼­½ñ¤Îºï½üµ¡Ç½¤Ï»ý¤Ã¤Æ +¤¤¤Þ¤»¤ó¡£ +Âå¤ï¤ê¤Ë rm ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ²¼¤µ¤¤¡£ +

+ +
+
+% rm -r /dict
+
+
+ +

+¤³¤Îºî¶È¤Ï¡¢Ãí°Õ¤·¤Æ¹Ô¤Ã¤Æ²¼¤µ¤¤¡£ +

+ + +

ebzip ¤Î¥ª¥×¥·¥ç¥ó°ìÍ÷

+ +

+ebzip ¥³¥Þ¥ó¥É¤Ï¡¢ÅÁÅýŪ¤Ê°ìʸ»ú¥ª¥×¥·¥ç¥ó̾¤È³Ð¤¨¤ä¤¹¤¤Ä¹¤¤ +¥ª¥×¥·¥ç¥ó̾¤ÎξÊý¤ò°·¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +Ť¤¥ª¥×¥·¥ç¥ó̾¤òɽ¤¹¤Ë¤Ï¡¢- ¤Ç¤Ï¤Ê¤¯ -- ¤ò +ÍѤ¤¤Þ¤¹¡£ +¥ª¥×¥·¥ç¥ó̾¤¬°ì°Õ¤Ë·è¤Þ¤ëÈÏ°ÏÆâ¤Ç¡¢Ì¾Á°¤Î¸åÊýÉôʬ¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +

+ +
+
-f
+
--force-overwrite
+
+³Îǧ¤òµá¤á¤º¤Ë¡¢´û¤Ë¸ºß¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¡× ¤ò +»²¾È¤Î¤³¤È)¡£ + +
-h
+
--help
+
+¥Ø¥ë¥×¥á¥Ã¥»¡¼¥¸¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-i
+
--information
+
+»ØÄꤵ¤ì¤¿ CD-ROM ½ñÀҤΰµ½Ì¾õÂÖ¤ò½ÐÎϤ·¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢ ¡Ö¾ðÊó½ÐÎÏ¡× ¤ò»²¾È¤Î¤³¤È)¡£ + +
-k
+
--keep
+
+½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤ò½ñ¤­¹þ¤ß½ª¤ï¤Ã¤Æ¤â¡¢Âбþ¤¹¤ëÆþÎϦ¤Î¥Õ¥¡¥¤¥ë¤Ï +ºï½ü¤·¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹ +(¾Ü¤·¤¯¤Ï¡¢¡Ö°µ½Ì¤Î¼Â¹ÔÎã (2)¡× +¤ò»²¾È¤Î¤³¤È)¡£ + +
-l À°¿ô
+
--level À°¿ô
+
+°µ½Ì¥ì¥Ù¥ë¤ò»ØÄꤷ¤Þ¤¹¡£ +À°¿ô ¤Ï¡¢0¡¢1¡¢2¡¢ +3¡¢4¡¢5 ¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤¯¤Æ¤Ï +¤¤¤±¤Þ¤»¤ó¡£ +¥ì¥Ù¥ë 0 ¤Ï¡¢ºÇ¤â®¤¤¤â¤Î¤Î°µ½ÌΨ¤ÏºÇ°­¤Ç¤¹¡£ +¥ì¥Ù¥ë 3 ¤Ï¡¢ºÇ¤âÃÙ¤¤¤â¤Î¤Î°µ½ÌΨ¤ÏºÇÎɤǤ¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Î¥ì¥Ù¥ë¤Ï 0 ¤Ç¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢°µ½Ì°Ê³°¤ÎÆ°ºî¤Î¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö°µ½Ì¥ì¥Ù¥ë¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
-n
+
--no-overwrite
+
+´û¤Ë¸ºß¤¹¤ë¥Õ¥¡¥¤¥ë¤¬¤¢¤Ã¤¿¾ì¹ç¡¢¾å½ñ¤­¤Î³Îǧ¤òµá¤á¤º¤Ë¡¢¤½¤Î¥Õ¥¡¥¤¥ë +¤ÏÈô¤Ð¤·¤Æ¼¡¤Î¥Õ¥¡¥¤¥ë¤Ë¿Ê¤ß¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï¡¢¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¡× +¤ò»²¾È¤Î¤³¤È¡£) + +
-o ¥Ç¥£¥ì¥¯¥È¥ê
+
--output-directory ¥Ç¥£¥ì¥¯¥È¥ê
+
+½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê (.) ¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤ä¡¢--test +(-t) ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹ + +
-q
+
--quiet
+
--silence
+
+¾ðÊó¡¢·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤»¤ó¡£ +¤¿¤À¤·¡¢°µ½Ì¡¦¿­Ä¹»þ¤Ë½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤·¤Æ¤¤¤ë¤È¡¢ +ebzip ¤Ï¤½¤Î½ÐÎϦ¤Î¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤ÆÎɤ¤¤«¤É¤¦¤« +¿Ö¤¤¤Æ¤­¤Þ¤¹¡£ +¤³¤Î¼ÁÌä¤òÍÞÀ©¤¹¤ë¤Ë¤Ï¡¢--force-overwrite(-f) +¤Þ¤¿¤Ï --no-overwrite(-n) ¤ò»ØÄꤷ¤Æ²¼¤µ¤¤¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤Ï¡¢Ìµ»ë¤µ¤ì¤Þ¤¹ + +
-s ·¿
+
--skip-content ·¿
+
+̵»ë¤¹¤ë¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿·¿¤ò»ØÄꤷ¤Þ¤¹¡£ +·¿ ¤Ï¡¢¥Ç¡¼¥¿·¿¤Î̾Á°¤ò¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤Ã¤Æ +ʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +ebzip ¤¬¸½ºß¤Î¤È¤³¤íǧ¼±¤¹¤ë¥Ç¡¼¥¿·¿¤Î̾Á°¤Ï¡¢ +font (³°»ú¤Î¥Õ¥©¥ó¥È)¡¢graphic (²èÁü¥Ç¡¼¥¿)¡¢ +sound (²»À¼¥Ç¡¼¥¿)¡¢movie (Æ°²è¥Ç¡¼¥¿) ¤Ç¤¹¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤É¤Î¥Õ¥¡¥¤¥ë¤â̵»ë¤µ¤ì¤Þ¤»¤ó¡£ + +
-S ÉûËÜ
+
--subbook ÉûËÜ
+
+°µ½Ì¡¦¿­Ä¹¡¦¾ðÊó½ÐÎϤÎÂоݤȤ¹¤ëÉûËܤò»ØÄꤷ¤Þ¤¹¡£ +ÉûËÜ ¤Ï¡¢ÉûËܤΥǥ£¥ì¥¯¥È¥ê̾¤ò¥«¥ó¥Þ (,) ¤Ç +¶èÀڤäÆʤ٤¿¤â¤Î¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ +»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¢¤¹¤Ù¤Æ¤ÎÉûËܤ¬Âоݤˤʤê¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö°ìÉô¤À¤±¤Î°µ½Ì¡× ¤ò»²¾È +¤Î¤³¤È¡£) + +
-t
+
--test
+
+°µ½Ì¡¦¿­Ä¹¤·¤¿¥Ç¡¼¥¿¤ò¡¢¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï½ñ¤­¹þ¤ß¤Þ¤»¤ó¡£ +¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¾ðÊó½ÐÎϤÎÆ°ºî¤Î¤È¤­¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö¥Æ¥¹¥È¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
-u
+
--uncompress
+
+CD-ROM ½ñÀÒ¤ò¿­Ä¹¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö¿­Ä¹¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
-v
+
--version
+
+¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Æ¡¢½ªÎ»¤·¤Þ¤¹¡£ + +
-z
+
--compress
+
+CD-ROM ½ñÀÒ¤ò°µ½Ì¤·¤Þ¤¹¡£ +(¾Ü¤·¤¯¤Ï ¡Ö°µ½Ì¡× ¤ò»²¾È¤Î¤³¤È¡£) + +
+ + +

°µ½Ì·ë²Ì¤ÎÎã

+ +

+¼¡¤Îɽ¤Ï¡¢¤¢¤ë±ÑÏ¡¦Ï±Ѽ­Åµ (EBXA) ¤Î START ¥Õ¥¡¥¤¥ë¤ò +°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(¸µ¤Î¥Õ¥¡¥¤¥ë) 154476544 bytes 100.0%
¥ì¥Ù¥ë 0 54922039 bytes 35.6%
¥ì¥Ù¥ë 1 49615791 bytes 32.1%
¥ì¥Ù¥ë 2 45983464 bytes 29.8%
¥ì¥Ù¥ë 3 43431397 bytes 28.1%
(»²¹Í: gzip -6) 38712247 bytes 25.0%
+ +

+¤¢¤ë±Ñ¡¹¼­Åµ (EBG) ¤Î START ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(¸µ¤Î¥Õ¥¡¥¤¥ë) 55511040 bytes 100.0%
¥ì¥Ù¥ë 0 25866491 bytes 46.6%
¥ì¥Ù¥ë 1 24419066 bytes 44.0%
¥ì¥Ù¥ë 2 23453212 bytes 42.2%
¥ì¥Ù¥ë 3 22748840 bytes 41.0%
(»²¹Í: gzip -6) 20930009 bytes 37.7%
+ +

+¤¢¤ë¹ñ¸ì¼­Åµ (EPWING V1) ¤Î HONMON ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(¸µ¤Î¥Õ¥¡¥¤¥ë) 23642112 bytes 100.0%
¥ì¥Ù¥ë 0 9927048 bytes 42.0%
¥ì¥Ù¥ë 1 9213184 bytes 39.0%
¥ì¥Ù¥ë 2 8767603 bytes 37.1%
¥ì¥Ù¥ë 3 8495563 bytes 35.9%
(»²¹Í: gzip -6) 8114658 bytes 34.3%
+ +

+¤¢¤ë¹ñ¸ì¼­Åµ (EPWING V5) ¤Î HONMON2 ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥Õ¥¡¥¤¥ë¥µ¥¤¥º °µ½ÌΨ
(Èó°µ½Ì) 220069888 bytes 100.0%
(¸µ¤Î¥Õ¥¡¥¤¥ë) 149139690 bytes 67.8%
¥ì¥Ù¥ë 0 82973263 bytes 37.7%
¥ì¥Ù¥ë 1 78163751 bytes 35.5%
+ +

+¤¢¤ëÉ´²Ê»öŵ (S-EBXA) ¤Î START ¥Õ¥¡¥¤¥ë¤ò°µ½Ì¤·¤¿·ë²Ì: +

+ + + + + + + +
°µ½Ì¥ì¥Ù¥ë file size ratio
(Èó°µ½Ì) 225140735 bytes 100.0%
(¸µ¤Î¥Õ¥¡¥¤¥ë) 176467968 bytes 78.4%
¥ì¥Ù¥ë 0 146045331 bytes 64.9%
¥ì¥Ù¥ë 1 138137218 bytes 61.4%
+ + +

°µ½Ì¥Õ¥¡¥¤¥ë¤Î·Á¼°

+ +

+¤³¤Î¾Ï¤Ç¤Ï¡¢ebzip ¤¬°·¤Ã¤Æ¤¤¤ë°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Î¾ÜºÙ¤Ë¤Ä¤¤¤ÆÀâ +ÌÀ¤·¤Þ¤¹¡£ +

+ + +

°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Î³µÍ×

+ +

+°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Ï¼¡¤Î¤è¤¦¤ÊÆÃħ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
    +
  • CPU ¤Î¼ïÎà¡¢¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë°Í¸¤·¤Þ¤»¤ó¡£ + +
  • È󻼺°µ½Ì¤Ç¤¹¡£
    +°µ½Ì¥Õ¥¡¥¤¥ë¤ò¿­Ä¹¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¸µ¤Î¥Õ¥¡¥¤¥ë¤òÉü¸µ¤Ç¤­¤Þ¤¹¡£ + +
  • 6 ¤Ä¤Î°µ½Ì¥ì¥Ù¥ë¤¬¤¢¤ê¤Þ¤¹¡£
    +¿­Ä¹¤Î®¤µ¤«°µ½ÌΨ¤ÎÎɤµ¤Î¡¢¤¤¤º¤ì¤«¤òÁª¤Ö¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +
+ +

+°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï¡¢¥Ø¥Ã¥ÀÉô¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹Éô¡¢¤ª¤è¤Ó¥Ç¡¼¥¿Éô¤«¤é¹½À® +¤µ¤ì¡¢¤³¤Î½ç¤Ç¥Õ¥¡¥¤¥ë¤ËÇÛÃÖ¤µ¤ì¤Þ¤¹¡£ +

+ +
+
++--------+-------------+-----------------------------+
+| ¥Ø¥Ã¥À |¥¤¥ó¥Ç¥Ã¥¯¥¹ |          ¥Ç¡¼¥¿             |
++--------+-------------+-----------------------------+
+                                                     EOF
+
+
+ + +

¥Ç¡¼¥¿Éô

+ +

+¸µ¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢¼¡¤Î¹ÔÄø¤Ç°µ½Ì¤µ¤ì¤Þ¤¹¡£ +

+ +

+¤Þ¤º¡¢ebzip ¤Ï¸µ¤Î¥Õ¥¡¥¤¥ë¤òʬ³ä¤·¤Þ¤¹¡£ +¸Ä¡¹¤Î ¥¹¥é¥¤¥¹ (slice) ¤Ï¡¢ËöÈø¤Î¤â¤Î¤ò½ü¤±¤Ð¡¢ +Ʊ¤¸Â礭¤µ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ +

+ +
+
++---------------+---------------+--   --+----------+
+|  ¥¹¥é¥¤¥¹ 1   |  ¥¹¥é¥¤¥¹ 2   |  ...  |¥¹¥é¥¤¥¹ N|
++---------------+---------------+--   --+----------+
+                                                  EOF
+
+
+ +

+¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤Ï¡¢°µ½Ì¥ì¥Ù¥ë¤«¤é·è¤Þ¤ê¤Þ¤¹ +(°µ½Ì¥ì¥Ù¥ë¤Ë¤Ä¤¤¤Æ¤Ï ¡Ö°µ½Ì¥ì¥Ù¥ë¡×¤ò +»²¾È¤Î¤³¤È)¡£ +

+ + + + + + + + + +
°µ½Ì¥ì¥Ù¥ë ¥¹¥é¥¤¥¹¤ÎÂ礭¤µ
0 2048 ¥Ð¥¤¥È
1 4096 ¥Ð¥¤¥È
2 8192 ¥Ð¥¤¥È
3 16384 ¥Ð¥¤¥È
4 32768 ¥Ð¥¤¥È
5 65536 ¥Ð¥¤¥È
+ +

+¼¡¤Ë¡¢ËöÈø¤Î¥¹¥é¥¤¥¹¤¬¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤è¤ê¤âû¤«¤Ã¤¿¾ì¹ç¡¢ +ebzip ¤Ï¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤ÈƱ¤¸¤Ë¤Ê¤ë¤Þ¤Ç¿­¤Ð¤·¡¢¿­¤Ð¤·¤¿ +Éôʬ¤Ë 0x00 ¤òËä¤á¤Þ¤¹¡£ +

+ +
+
+                                                 ¿­¤·¤¿Éôʬ
++---------------+---------------+--   --+---------+-----+
+|  ¥¹¥é¥¤¥¹ 1   |  ¥¹¥é¥¤¥¹ 2   |  ...  |  ¥¹¥é¥¤¥¹ N   |
++---------------+---------------+--   --+---------+-----+
+                                                        EOF
+
+
+ +

+ºÇ¸å¤Ë¡¢ebzip ¤Ï¸Ä¡¹¤Î¥¹¥é¥¤¥¹¤ò¡¢RFC 1951 ¤Ëµ­¤µ¤ì¤Æ¤¤¤ë +DEFLATE °µ½Ì¥Ç¡¼¥¿·Á¼°¤Ç°µ½Ì¤·¤Þ¤¹¡£ +¤ª¤Î¤ª¤Î¤Î¥¹¥é¥¤¥¹¤Ï¡¢Â¾¤Î¥¹¥é¥¤¥¹¤È¤ÏÆÈΩ¤·¤Æ°µ½Ì¤µ¤ì¤Þ¤¹¡£ +°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤Î¥Ó¥Ã¥È¿ô¤¬ 8 ¤ÎÇÜ¿ô¤Ç¤Ê¤±¤ì¤Ð¡¢1 ¡Á 7 ¥Ó¥Ã¥È¤ò°µ +½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤ÎËöÈø¤Ë­¤·¡¢8 ¤ÎÇÜ¿ô¤Ë¤Ê¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ +¤³¤ì¤Ë¤è¤ê¡¢°µ½Ì¤µ¤ì¤¿¤½¤ì¤¾¤ì¤Î¥¹¥é¥¤¥¹¤Ï¥Ð¥¤¥È¤Î¶­³¦¤«¤é³«»Ï¤µ¤ì¤Þ¤¹¡£ +­¤µ¤ì¤¿¥Ó¥Ã¥È¤ÎÆâÍƤÏ̤ÄêµÁ¤Ç¤¹¤¬¡¢¤³¤Î¥Ó¥Ã¥È¤Ï·è¤·¤Æ»ÈÍѤµ¤ì¤Þ¤»¤ó¡£ +

+ +
+
++------------+----------+--   --+--------------+
+| °µ½Ì¤µ¤ì¤¿ |°µ½Ì¤µ¤ì¤¿|  ...  |  °µ½Ì¤µ¤ì¤¿  |
+| ¥¹¥é¥¤¥¹ 1 |¥¹¥é¥¤¥¹ 2|  ...  |  ¥¹¥é¥¤¥¹ N  |
++------------+----------+--   --+--------------+
+
+
+ +

+¤³¤ì¤¬°µ½Ì¥Õ¥¡¥¤¥ë·Á¼°¤Ë¤ª¤±¤ë ¥Ç¡¼¥¿Éô ¤Ë¤Ê¤ê¡¢°µ½Ì¤µ¤ì¤¿ +¥¹¥é¥¤¥¹¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +

+ËöÈø¤Î¥¹¥é¥¤¥¹¤Î¿­¤Ð¤·¤¿Éôʬ¤Ï¡¢ËöÈø¤Î¥¹¥é¥¤¥¹¤Î°ìÉô¤È¤·¤Æ°µ½Ì¤µ¤ì +¤Þ¤¹¡£ +ebunzip ¤¬ËöÈø¤Î¥¹¥é¥¤¥¹¤òÉü¸µ¤¹¤ë¤È¤­¤Ï¡¢¥¹¥é¥¤¥¹¤ò¿­Ä¹¤·¤Æ +¤«¤é¿­¤Ð¤·¤¿Éôʬ¤ò¼è¤ê½ü¤¯¤È¤¤¤¦ºî¶È¤ò¹Ô¤¤¤Þ¤¹¡£ +

+ +

+°µ½Ì¤·¤¿¥¹¥é¥¤¥¹¤ÎÂ礭¤µ¤¬¡¢¥¹¥é¥¤¥¹¡¦¥µ¥¤¥º¤è¤ê¤âÂ礭¤¤¤«Åù¤·¤¤¤È¤­¤Ï¡¢ +ebzip ¤Ï¤½¤Î¥¹¥é¥¤¥¹¤Î°µ½Ì¥Ç¡¼¥¿¤òÇÑ´þ¤·¤Þ¤¹¡£ +¤³¤Î¾ì¹ç¡¢ebzip ¤Ï¸µ¤Î¥Ç¡¼¥¿¤ò¤½¤Î¥¹¥é¥¤¥¹¤Î°µ½Ì¥Ç¡¼¥¿¤È¤·¤Æ +Âå¤ï¤ê¤Ëµ­Ï¿¤·¤Þ¤¹¡£ +

+ +

+¸µ¤Î¥Õ¥¡¥¤¥ë¤¬¶õ¤À¤Ã¤¿¤È¤­¤Ï¡¢°µ½Ì¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿Éô¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +

+ + +

¥¤¥ó¥Ç¥Ã¥¯¥¹Éô

+ +

+°µ½Ì»þ¤Ë¡¢ebzip ¤Ï°µ½Ì¤·¤¿¸Ä¡¹¤Î¥¹¥é¥¤¥¹¤Î +¥¤¥ó¥Ç¥Ã¥¯¥¹ (index) ¤òµ­Ï¿¤·¤Þ¤¹¡£ +¸Ä¡¹¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢°µ½Ì¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤ÎÀèƬ +¤Þ¤Ç¤Îµ÷Î¥¤òɽ¤·¤Þ¤¹¡£ +µ÷Î¥¤Îñ°Ì¤Ï¥Ð¥¤¥È¤Ç¤¹¡£ +

+ +
+
++---------+---------+--           --+---------+---------+
+|¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |  ...........  |¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |
+|¥¯¥¹ 1   |¥¯¥¹ 2   |  ...........  |¥¯¥¹ N   |¥¯¥¹ END |
++---------+---------+--           --+---------+---------+
+     |         |                        |         |
+ +---+         +----+                   +------+  +-----------+
+ V                  V                          V              V
++------------------+------------------+--   --+--------------+
+|    °µ½Ì¤µ¤ì¤¿    |    °µ½Ì¤µ¤ì¤¿    |  ...  |  °µ½Ì¤µ¤ì¤¿  |
+|    ¥¹¥é¥¤¥¹ 1    |    ¥¹¥é¥¤¥¹ 2    |  ...  |  ¥¹¥é¥¤¥¹ N  |
++------------------+------------------+--   --+--------------+
+
+
+ +

+¸Ä¡¹¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï 2 ¡Á 5 ¥Ð¥¤¥È¤ÎÂ礭¤µ¤ò»ý¤Á¤Þ¤¹¡£ +¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÎÂ礭¤µ¤Ï¡¢¸µ¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤Ç·è¤Þ¤ê¤Þ¤¹¡£ +

+ + + + + + + +
¸µ¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÎÂ礭¤µ
0 ¡Á 65535 ¥Ð¥¤¥È 2 ¥Ð¥¤¥È
65535 ¡Á 16777215 ¥Ð¥¤¥È 3 ¥Ð¥¤¥È
16777216 ¡Á 4294967295 ¥Ð¥¤¥È 4 ¥Ð¥¤¥È
4294967296 ¡Á 1099511627775 ¥Ð¥¤¥È 5 ¥Ð¥¤¥È
+ +

+¥¤¥ó¥Ç¥Ã¥¯¥¹Æâ¤Ç¤Î¡¢Ê£¿ô¥Ð¥¤¥È¤«¤é¤Ê¤ë¿ôÃͤϤ¹¤Ù¤Æ¡¢ÃͤÎÂ礭¤¤Êý¤ÎÉôʬ +¤òɽ¤¹¥Ð¥¤¥È (most significant byte) ¤¬Àè¤ËÍ褿·Á¤Çµ­Ï¿¤µ¤ì¤Þ¤¹¡£ +¤¿¤È¤¨¤Ð¡¢0x1234 ¤Ï¼¡¤Î¤è¤¦¤Ëµ­Ï¿¤µ¤ì¤Þ¤¹¡£ +ºÇ½é¤Î¥Ð¥¤¥È¤Ï 0x12 ¤È¤Ê¤ê¡¢¼¡¤Î¥Ð¥¤¥È¤Ï 0x34 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
++---------+---------+
+|0001 0010|0011 0100|
++---------+---------+
+  (0x12)    (0x34)
+
+
+ +

+¥¤¥ó¥Ç¥Ã¥¯¥¹Éô¤Ï¡¢°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ 1 ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç»Ï¤Þ¤ê¡¢¤½¤Î¸å¤í +¤Ë°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ 2 ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬Â³¤­¤Þ¤¹¡£ +°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ N ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¸å¤í¤Ë¤Ï¡¢¡Ö½ªÃ¼¡×¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹ +¤¬ÃÖ¤«¤ì¤Þ¤¹¡£ +¤³¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹ N ¤ÎËöÈø¤Î¼¡¤Î¥Ð¥¤¥È¤Ø¤Î +¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£ +¤Þ¤¿¡¢°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤ò¼¨¤¹¤³¤È¤Ë¤â¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
++---------+---------+--           --+---------+---------+
+|¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |  ...........  |¥¤¥ó¥Ç¥Ã |¥¤¥ó¥Ç¥Ã |
+|¥¯¥¹ 1   |¥¯¥¹ 2   |  ...........  |¥¯¥¹ N   |¥¯¥¹ END |
++---------+---------+--           --+---------+---------+
+
+
+ +

+°µ½Ì¤µ¤ì¤¿¥¹¥é¥¤¥¹¤ÎÂ礭¤µ¤¬¥¹¥é¥¤¥¹¥µ¥¤¥º¤ËÅù¤·¤¤¤È¤­¤Ï¡¢¤½¤Î¥¹¥é¥¤¥¹ +¤Î¥Ç¡¼¥¿¤Ï¼ÂºÝ¤Ë¤Ï°µ½Ì¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +

+ +

+¸µ¤Î¥Õ¥¡¥¤¥ë¤¬¶õ¤À¤Ã¤¿¤È¤­¤Ï¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹Éô¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò°ì¤Ä¤À¤± +»ý¤Á¤Þ¤¹¡£ +¤³¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï°µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òɽ¤·¤Þ¤¹¡£ +

+ + +

¥Ø¥Ã¥ÀÉô

+ +

+¥Ø¥Ã¥ÀÉô¤Ï 22 ¥Ð¥¤¥È¤«¤é¤Ê¤ê¤Þ¤¹¡£ +¼¡¤Î¥Õ¥£¡¼¥ë¥É¤«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ +

+ +
+
++--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+| ¥Þ¥¸¥Ã¥¯ ID  |*1| *2  |¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ | Adler-32  | ½¤Àµ»þ¹ï  |
++--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+ 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21
+
+*1: zip ¥â¡¼¥É¤È°µ½Ì¥ì¥Ù¥ë
+*2: ͽÌóÎΰè
+
+
+ +
+
¥Þ¥¸¥Ã¥¯ ID (5 ¥Ð¥¤¥È)
+
+0x45, 0x42, 0x5a, 0x69, 0x70 (ASCII ʸ»úÎó¤Çɽ¤¹¤È EBZip) +¤È¤¤¤¦¸ÇÄꤷ¤¿Ãͤò»ý¤Á¤Þ¤¹¡£ + +
zip ¥â¡¼¥É (MSB ¦¤Î 4 ¥Ó¥Ã¥È)
+
+°µ½Ì¥â¡¼¥É¤òɽ¤·¤Þ¤¹¡£ +¸µ¤Î (È󰵽̻þ¤Î) ¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤¬ 4294967295 ¥Ð¥¤¥È (= 4G¥Ð¥¤¥È) +°ÊÆâ¤Î¤È¤­¤Ï 1 (2 ¿Ê¿ô¤Ç 0001)¡¢¤½¤ì¤è¤êÂ礭¤¤¤È¤­¤Ï 2 (2 ¿Ê¿ô¤Ç 0002) +¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£ + +

+¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤ÇÃͤ¬ÊѤï¤ë¤Î¤Ï¡¢Îò»ËŪ¤Ê»ö¾ð¤Ë¤è¤ê¤Þ¤¹¡£ +°ÊÁ°¤Î EB Library ¤Ï°µ½Ì¥â¡¼¥É 1 ¤·¤«´ûÄꤷ¤Æ¤ª¤é¤º¡¢¤Þ¤¿ 4GB ¥Ð¥¤¥È +¤òĶ¤¨¤ë¥Õ¥¡¥¤¥ë¤ò°·¤¨¤Þ¤»¤ó¤Ç¤·¤¿¡£ +4G ¥Ð¥¤¥È¤òĶ¤¨¤ë¥Õ¥¡¥¤¥ë¤ò°·¤¨¤ë¤è¤¦¤Ë EB Library ¤ò²þÎɤ·¤¿ºÝ¤Ë¡¢ +¡Ö4G ¥Ð¥¤¥È¤òĶ¤¨¤¿¤é¡¢°µ½Ì¥â¡¼¥É¤Ï 2 ¤Ë¥»¥Ã¥È¤¹¤ë¡×¤È¤¤¤¦¥ë¡¼¥ë¤ò +¿·¤¿¤ËÀߤ±¤Þ¤·¤¿¡£ +¤³¤ì¤Ë¤è¤ê¡¢°ÊÁ°¤Î EB Library ¤Ç 4GB ¥Ð¥¤¥È¤òĶ¤¨¤¿¥Õ¥¡¥¤¥ë¤ò°·¤ª¤¦ +¤È¤¹¤ë¤È¡¢ÈóÂбþ¤Î°µ½Ì¥â¡¼¥É¤È¤ß¤Ê¤µ¤ì¡¢¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ +¤¤¤Þ¤¹¡£ +

+ +
°µ½Ì¥ì¥Ù¥ë (LSB ¦¤Î 4 ¥Ó¥Ã¥È)
+
+°µ½Ì¥ì¥Ù¥ë¤òɽ¤·¤Þ¤¹¡£ + +
ͽÌóÎΰè (2 ¥Ð¥¤¥È)
+
+ͽÌ󤵤ì¤Æ¤¤¤Þ¤¹¤¬¡¢»È¤ï¤ì¤Æ¤¤¤Þ¤»¤ó¡£ +0x0000 ¤ÇËä¤á¤é¤ì¤Þ¤¹¡£ + +
¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ (6 ¥Ð¥¤¥È)
+
+¸µ¤Î (È󰵽̻þ¤Î) ¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òµ­Ï¿¤·¤Æ¤¤¤Þ¤¹¡£ + +
Adler-32 (4 ¥Ð¥¤¥È)
+
+RFC 1950 ¤Ëµ­¤µ¤ì¤Æ¤¤¤ë Adler-32 ¤È¤¤¤¦¥¢¥ë¥´¥ê¥º¥à¤òÍѤ¤¤Æ·×»»¤·¤¿¡¢ +È󰵽̥ǡ¼¥¿¤Î¥Á¥§¥Ã¥¯¥µ¥à¤ÎÃͤǤ¹¡£ + +
½¤Àµ»þ¹ï (4 ¥Ð¥¤¥È)
+
+¸µ¤Î¥Õ¥¡¥¤¥ë¤ÎºÇ½ª½¤Àµ»þ¹ï¤Ç¤¹¡£ +¥°¥ê¥Ë¥Ã¥¸É¸½à»þ¤Î 1970 ǯ 1 ·î 1 Æü 0 »þ 0 ʬ 0 É䫤é¤Î·Ð²áÉÿô¤Ç +ɽ¤·¤Þ¤¹¡£ +
+ +

+zip ¥â¡¼¥É ¤È °µ½Ì¥ì¥Ù¥ë ¤Ï¡¢Î¾Êý¤È¤â¥Ø¥Ã¥À¤Î +5 ¥Ð¥¤¥ÈÌܤËÆþ¤ê¤Þ¤¹¡£ +zip ¥â¡¼¥É ¤Ï¡¢ÃͤκǤâÂ礭¤¤Éôʬ¤òɽ¤¹¥Ó¥Ã¥È +(most significant bit) ¤ò´Þ¤ß¡¢°µ½Ì¥ì¥Ù¥ë ¤ÏºÇ¤â¾®¤µ¤¤Éôʬ¤ò +ɽ¤¹¥Ó¥Ã¥È (least significant bit) ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£ +zip ¥â¡¼¥É ¤¬ 1 ¤Ç¡¢°µ½Ì¥ì¥Ù¥ë ¤¬ 2 ¤Ê¤é¡¢ +¥Ø¥Ã¥À¤Î 5 ¥Ð¥¤¥ÈÌÜ¤Ï 0x12 ¤Ë¤Ê¤ê¤Þ¤¹¡£ +

+ +
+
+ MSB                         LSB
++---+---+---+---+---+---+---+---+
+| 0   0   0   1   0   0   1   0 | = 0x12
++---+---+---+---+---+---+---+---+
+  (zip ¥â¡¼¥É)  |  (°µ½Ì¥ì¥Ù¥ë)
+
+
+ +

+¥Ø¥Ã¥ÀÆâ¤Ç¤Î¡¢Ê£¿ô¥Ð¥¤¥È¤«¤é¤Ê¤ë¿ôÃͤϤ¹¤Ù¤Æ¡¢ÃͤÎÂ礭¤¤Êý¤ÎÉôʬ +¤òɽ¤¹¥Ð¥¤¥È (most significant byte) ¤¬Àè¤ËÍ褿·Á¤Çµ­Ï¿¤µ¤ì¤Þ¤¹¡£ +

+ + + diff --git a/lib/ebu/doc/html-include b/lib/ebu/doc/html-include new file mode 100644 index 0000000..9b95750 --- /dev/null +++ b/lib/ebu/doc/html-include @@ -0,0 +1,211 @@ +#! /usr/bin/perl +# +# Copyright (c) 2005-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +# +# html-include -- tiny file inclusion processoor for HTML. +# +# Usage: +# html-include [-o output-file] [input-file] +# +# `html-include' extracts file inclusion directives in HTML, and output +# the result. The following is file inclusion directive line that +# `html-include' recognizes: +# +# +# +# Note that "[ \t]*$|) { + # + # This is file inclusion directive line. + # + if (++$i >= $max_nest_level) { + die "$0: too deep inclusion\n"; + } + + $in_files[$i] = {'handle' => new FileHandle, + 'name' => search_file($1), + 'lineno' => 0}; + if (!$in_files[$i]->{handle}->open('<' . $in_files[$i]->{name})) { + die "$0: failed to open the file, $!: " . + $in_files[$i]->{name} . "\n"; + } + + if ($comment_mode) { + print $out_file->{handle}->printf("\n", + $in_files[$i]->{name}, + $in_files[$i]->{lineno} + 1); + } + } else { + $out_file->{handle}->print($_, "\n"); + } + + $out_file->{lineno}++; + } + + $in_files[$i]->{handle}->close(); + last if (--$i < 0); + + if ($comment_mode) { + $out_file->{handle}->printf("\n", + $in_files[$i]->{name}, + $in_files[$i]->{lineno} + 1); + } +} + + +sub search_file ($) { + my ($file) = @_; + + foreach my $dir (@search_paths) { + return "$dir/$file" if (-r "$dir/$file"); + } + + return $file; +} diff --git a/lib/ebu/doc/html-index b/lib/ebu/doc/html-index new file mode 100644 index 0000000..0d284d2 --- /dev/null +++ b/lib/ebu/doc/html-index @@ -0,0 +1,157 @@ +#! /usr/bin/perl +# +# Copyright (c) 2005 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +# +# html-index -- make index page of HTML files. +# +# Usage: +# html-index [option...] input-file... +# +# `html-index' reads HTML files, and generates their indice. The indice +# are created from tags in the HTML files. Since `html-index' +# doesn't parse HTML precisely, `<' and `>' in tag must be in the same +# line and be the following form: +# +# +# +# The corresponding reference in the index looks like: +# +# name +# +# or, if two or more input files are specified: +# +# name +# +# `category' above is category name of index. It is used to generate +# more than one indice: function index and concept index, for example. +# By default, the script generates `index-.html' for each index +# category. +# +# In input HTML files, the following line has the special meaning: +# +# +# +# It sets file name in in the indice. +# +# Options: +# -p prefix set prefix of index files. +# (default: `index-') +# -s suffix set suffix of index files. +# (default: `html') +# -h do not output file name in . +# + +require 5.005; +use Getopt::Std; + +# +# Usage +# +my $usage = "Usage: $0 [-p prefix] [-s suffix] [-h] file...\n"; + +# +# Variables +# +my $out_prefix = 'index'; +my $out_suffix = 'html'; +my %indice = (); +my $fragment_only = 0; + +# +# Parse command line arguments. +# +my %options; +getopts('p:s:h', \%options) or die $usage; +die $usage if (@ARGV == 0); + +$out_prefix = $options{p} if (defined($options{p})); +$out_suffix = $options{s} if (defined($options{s})); +$fragment_only = 1 if (defined($options{h}) || @ARGV == 1); + +# +# Read HTML files. +# +for (my $i = 0; $i < @ARGV; $i++) { + my $in_file_name = $ARGV[$i]; + if (!open(IN_FILE, "< $in_file_name")) { + die "$0: failed to open the file, $!: $in_file_name\n"; + } + + while () { + chomp; + if (m|^[ \t]*$|) { + $in_file_name = $1; + } elsif (m||) { + my $name = $1; + if ($name =~ m|^([a-z_][0-9a-z_]+):(.+)$|) { + my $type = $1; + my $value = $2; + if (!defined($indice{$type})) { + $indice{$type} = {}; + } + $indice{$type}->{$value} = $in_file_name; + } + } + } + + close(IN_FILE); +} + +# +# Generate index files. +# +foreach my $i (sort {uc($a) cmp uc($b)} keys(%indice)) { + my $out_file_name = sprintf("%s-%s.%s", $out_prefix, $i, $out_suffix); + + if (!open(OUT_FILE, "> $out_file_name")) { + die "$0: failed to open the file, $!: $out_file_name\n"; + } + + print OUT_FILE "
\n"; + my $prev_head_char = ''; + + foreach my $j (sort(keys(%{$indice{$i}}))) { + my $cur_head_char = uc(substr($j, 0, 1)); + if ($cur_head_char ne $prev_head_char) { + print OUT_FILE '
', $cur_head_char, "\n"; + } + + if ($fragment_only) { + printf(OUT_FILE "
%s\n", + $i, $j, $j); + } else { + printf(OUT_FILE "
%s\n", + $indice{$i}->{$j}, $i, $j, $j); + } + $prev_head_char = $cur_head_char; + } + + print OUT_FILE "
\n"; + close(OUT_FILE); +} diff --git a/lib/ebu/doc/html-split b/lib/ebu/doc/html-split new file mode 100644 index 0000000..d95eeb7 --- /dev/null +++ b/lib/ebu/doc/html-split @@ -0,0 +1,238 @@ +#! /usr/bin/perl +# +# Copyright (c) 2005-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +# +# html-split -- split an HTML file. +# +# Usage: +# html-split [option...] input-file +# +# `html-split' splits an HTML file with heading tags (

...

). +# Suppose that `input-file' is `foo.html', HTML files splitted by +# `html-split' are `foo-0.html', `foo-1.html', and so on. +# +# Options: +# -Z do not add `-0' to the first split. +# -l LEVEL split with this heading level +# (default: h2) +# -p PREFIX prefix of splitted HTML files. +# -s SUFFIX suffix of splitted HTML files. +# (default: html) +# -w WIDTH minimum width of split number. +# (default: 1) +# -t TOC fragment name of `Table of Contents'. +# (default: toc) +# + +require 5.005; +use Getopt::Std; +use File::Basename; + +# +# Usage +# +my $usage = "Usage: $0 [option...] input-file\n"; + +# +# Variables +# +my $in_file; +my $out_prefix; +my $out_suffix; +my $counter_width = 1; +my $split_level = 2; +my $toc_tag = 'toc'; +my $supress_zero_flag = 0; + +my @toc = (); +my @indice = (); +my @preamble = (); +my $toc_page = 0; + +# +# Parse command line arguments. +# +my %options; +getopts('Zl:w:p:s:t:', \%options) or die $usage; +die $usage if (@ARGV != 1); + +$in_file = $ARGV[0]; +if (defined($options{l})) { + $options{l} =~ s/^h//; + $split_level = $options{l}; +} +$counter_width = $options{w} if (defined($options{w})); +$supress_zero_flag = defined($options{Z}); +$toc_tag = $options{t} if (defined($options{t})); + +if (defined($options{p})) { + $out_prefix = $options{p}; +} else { + $out_prefix = basename($in_file, '.htm', '.html'); +} + +if (defined($options{s})) { + $out_suffix = $options{s}; +} elsif ($in_file =~ m|\.htm$|) { + $out_suffix = 'htm'; +} else { + $out_suffix = 'html'; +} + +# +# Read an HTML file. +# +if (!open(IN_FILE, "< $in_file")) { + die "$0: failed to open the file, $!: $in_file\n"; +} + +my $toc_found = 0; +my $page = 0; + +while () { + last if (m|^|); + push(@preamble, $_); +} + +while () { + chomp; + last if (m|^|); + if (m|^| && $1 <= $split_level) { + $page++ if (@toc > 0); + push(@toc, $_); + } + if (m||) { + my $tag = $1; + if ($tag eq $toc_tag) { + $toc_page = $page; + $toc_found = 1; + } + push(@indice, {'tag' => $tag, 'page' => $page}); + } +} + +close(IN_FILE); + +if (!$toc_found) { + die "$0: not found\n"; +} + +# +# Generate splitted HTML files. +# +if (!open(IN_FILE, "< $in_file")) { + die "$0: failed to open the file, $!: $in_file\n"; +} + +while () { + last if (m|^|); +} + +for (my $page = 0; $page < @toc; $page++) { + my $bar = ''; + if ($page > 0) { + $bar .= sprintf("[Á°¤Ø] ", + splitted_file_name($page - 1)); + } + + if ($page + 1 < @toc) { + $bar .= sprintf("[¼¡¤Ø] ", + splitted_file_name($page + 1)); + } + + $bar .= sprintf("[Ìܼ¡] ", + splitted_file_name($toc_page), $toc_tag); + + my $out_file = splitted_file_name($page); + if (!open(OUT_FILE, "> $out_file")) { + die "$0: failed to open the file, $!: $out_file\n"; + } + + foreach my $j (@preamble) { + print OUT_FILE $j; + } + + print OUT_FILE "\n"; + print OUT_FILE "

\n", $bar, "\n

\n
\n"; + print OUT_FILE $toc[$page], "\n"; + + for (;;) { + $_ = ; + chomp; + if (!defined($_) || m|^|) { + 1 while (); + last; + } + elsif (m|^| && $1 <= $split_level) { + next if ($page == 0 && $_ eq $toc[$page]); + last; + } + 1 while (s||&rewrite_href($1)|e); + print OUT_FILE $_, "\n"; + } + + print OUT_FILE "
\n

\n", $bar, "\n

\n"; + print OUT_FILE "\n"; + print OUT_FILE "\n"; + + close(OUT_FILE); +} + +close(IN_FILE); + +# +# Return n'th splitted file name. +# +sub splitted_file_name ($) { + my ($n) = @_; + + if ($n == 0 && $supress_zero_flag) { + return sprintf("%s.%s", $out_prefix, $out_suffix); + } else { + return sprintf("%s-%0${counter_width}d.%s", + $out_prefix, $n, $out_suffix); + } +} + +# +# Rewrite
. +# +sub rewrite_href ($) { + my ($tag) = @_; + + for (my $i = 0; $i < @indice; $i++) { + if ($indice[$i]->{tag} eq $tag) { + return sprintf("", + splitted_file_name($indice[$i]->{page}), $tag); + } + } + + warn "$0: unknown tag \`$tag'\n"; + return ""; +} diff --git a/lib/ebu/doc/html-toc b/lib/ebu/doc/html-toc new file mode 100644 index 0000000..3e5828f --- /dev/null +++ b/lib/ebu/doc/html-toc @@ -0,0 +1,151 @@ +#! /usr/bin/perl +# +# Copyright (c) 2005-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +# +# html-toc -- make `table of contents' of HTML files. +# +# Usage: +# html-index [option...] input-file... +# +# `html-toc' reads HTML files, and generates `table of contents' (TOC) +# of the HTML files. The TOC is created from

...

tags and +# tag in the HTML files. Since `html-toc' doesn't parse +# HTML precisely, the tags must be the following form: +# +# heading +# +# where `?' is 1..6. Note that and above must be in the same +# line. +# +# `html-toc' outputs TOC to standard out by default. +# +# Options: +# -o file specify output file. +# -h do not output file name in . +# -m level minimum target heading level +# (default: h1) +# -M level maximum target heading level +# (default: h6) + +require 5.005; +use Getopt::Std; + +# +# Usage +# +my $usage = "Usage: $0 [option...] input-file...\n"; + +# +# Variables +# +my $out_file = '-'; +my @preamble = (); +my $fragment_only = 0; +my $min_level = 1; +my $max_level = 6; + +# +# Parse command line arguments. +# +my %options; +getopts('o:hm:M:', \%options) or die $usage; +die $usage if (@ARGV == 0); + +$fragment_only = 1 if (defined($options{h}) || @ARGV == 1); +$out_file = $options{o} if (defined($options{o})); +if (defined($options{m})) { + $options{m} =~ s/^h//; + $min_level = $options{m}; +} +if (defined($options{M})) { + $options{M} =~ s/^h//; + $max_level = $options{M}; +} + +# +# Read an HTML file. +# +$current_level = $min_level; + +if ($out_file eq '-') { + $out_file = 'stdout'; + open(OUT_FILE, ">& STDOUT"); +} else { + if (!open(OUT_FILE, "> $out_file")) { + die "$0: failed to open the file, $!: $out_file\n"; + } +} + +print OUT_FILE "\n"; + } + while ($current_level < $level) { + print OUT_FILE ' ' x ($current_level - $min_level + 1); + print OUT_FILE "
    \n"; + $current_level++; + } + + print OUT_FILE ' ' x ($current_level - $min_level + 1); + if ($fragment_only) { + print OUT_FILE sprintf("
  • %s\n", + $tag, $heading); + } else { + print OUT_FILE sprintf("
  • %s\n", + $in_file, $tag, $heading); + } + } + } + + close(IN_FILE); +} + +while ($current_level > $min_level) { + $current_level--; + print OUT_FILE ' ' x ($current_level - $min_level + 1); + print OUT_FILE "
\n"; +} + +print OUT_FILE "\n"; + +close(OUT_FILE); diff --git a/lib/ebu/doc/version.html b/lib/ebu/doc/version.html new file mode 100644 index 0000000..8c23b2d --- /dev/null +++ b/lib/ebu/doc/version.html @@ -0,0 +1 @@ +4.5-20200413 diff --git a/lib/ebu/ebappendix/Makefile b/lib/ebu/ebappendix/Makefile new file mode 100644 index 0000000..4b1eecd --- /dev/null +++ b/lib/ebu/ebappendix/Makefile @@ -0,0 +1,421 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# ebappendix/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = ebappendix +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(bin_SCRIPTS) +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu/ebappendix +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu/ebappendix +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +bin_SCRIPTS = ebuappendix +EXTRA_DIST = ebappendix.in +CLEANFILES = ebuappendix ebappendix.tmp +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebappendix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebappendix/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ + else :; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binSCRIPTS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binSCRIPTS + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binSCRIPTS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-binSCRIPTS + + +ebuappendix: ebappendix.in $(top_srcdir)/libebutils/getopt_long.pl Makefile + rm -f ebuappendix + sed -e 's;\@PERL\@;$(PERL);' \ + $(srcdir)/ebappendix.in | sed '/^$$/q' > ebappendix.tmp + cat $(top_srcdir)/libebutils/getopt_long.pl >> ebappendix.tmp + sed -e 's;\@VERSION\@;$(VERSION);' \ + -e 's;\@MAILING_ADDRESS\@;$(MAILING_ADDRESS);' \ + $(srcdir)/ebappendix.in | sed '1,/^$$/d' >> ebappendix.tmp + cp ebappendix.tmp ebuappendix + chmod +x ebuappendix + rm -f ebappendix.tmp +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebappendix/Makefile.am b/lib/ebu/ebappendix/Makefile.am new file mode 100644 index 0000000..3358568 --- /dev/null +++ b/lib/ebu/ebappendix/Makefile.am @@ -0,0 +1,16 @@ +bin_SCRIPTS = ebuappendix + +EXTRA_DIST = ebappendix.in +CLEANFILES = ebuappendix ebappendix.tmp + +ebuappendix: ebappendix.in $(top_srcdir)/libebutils/getopt_long.pl Makefile + rm -f ebuappendix + sed -e 's;\@PERL\@;$(PERL);' \ + $(srcdir)/ebappendix.in | sed '/^$$/q' > ebappendix.tmp + cat $(top_srcdir)/libebutils/getopt_long.pl >> ebappendix.tmp + sed -e 's;\@VERSION\@;$(VERSION);' \ + -e 's;\@MAILING_ADDRESS\@;$(MAILING_ADDRESS);' \ + $(srcdir)/ebappendix.in | sed '1,/^$$/d' >> ebappendix.tmp + cp ebappendix.tmp ebuappendix + chmod +x ebuappendix + rm -f ebappendix.tmp diff --git a/lib/ebu/ebappendix/Makefile.in b/lib/ebu/ebappendix/Makefile.in new file mode 100644 index 0000000..3d894e2 --- /dev/null +++ b/lib/ebu/ebappendix/Makefile.in @@ -0,0 +1,421 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = ebappendix +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(bin_SCRIPTS) +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +bin_SCRIPTS = ebuappendix +EXTRA_DIST = ebappendix.in +CLEANFILES = ebuappendix ebappendix.tmp +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebappendix/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebappendix/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ + else :; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binSCRIPTS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binSCRIPTS + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binSCRIPTS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-binSCRIPTS + + +ebuappendix: ebappendix.in $(top_srcdir)/libebutils/getopt_long.pl Makefile + rm -f ebuappendix + sed -e 's;\@PERL\@;$(PERL);' \ + $(srcdir)/ebappendix.in | sed '/^$$/q' > ebappendix.tmp + cat $(top_srcdir)/libebutils/getopt_long.pl >> ebappendix.tmp + sed -e 's;\@VERSION\@;$(VERSION);' \ + -e 's;\@MAILING_ADDRESS\@;$(MAILING_ADDRESS);' \ + $(srcdir)/ebappendix.in | sed '1,/^$$/d' >> ebappendix.tmp + cp ebappendix.tmp ebuappendix + chmod +x ebuappendix + rm -f ebappendix.tmp +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebappendix/ebappendix.in b/lib/ebu/ebappendix/ebappendix.in new file mode 100644 index 0000000..60a2626 --- /dev/null +++ b/lib/ebu/ebappendix/ebappendix.in @@ -0,0 +1,757 @@ +#! @PERL@ + +# +# Copyright (c) 1997-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +require 5.005; +use File::Basename; + +# Program name, program version and mailing address. +my $progname='ebappendix'; +my $version = '@VERSION@'; +my $mailing_address = '@MAILING_ADDRESS@'; + +# Help message. +my $help = "Usage: $progname [option...] [input-directory] +Options: + -b BOOK-TYPE --book-type BOOK-TYPE + make an appendix as BOOK-TYPE; eb or epwing + (default: depend on \`catalog(s).app\') + -d --debug --verbose debug mode + -h --help output this help, then exit + -n --no-catalog don't output a catalog file + -o DIRECTORY --output-directory DIRECTORY + output files to DIRECTORY + (default: .) + -t --test only check for input files + -v --version output version number, then exit + +Argument: + input-directory input files at this directory + (default: .) + +Report bugs to $mailing_address. +"; + +# `try ...' message. +my $tryhelp = "try \`$0 --help\' for more information\n"; + +# Disc type: `eb' or `epwing'. +my $disc = ''; + +# Read files on the directory. +my $indir = '.'; + +# Create files under the directory. +my $outdir = '.'; + +# The maximum number of subbooks in a book. +my $max_subbooks = 50; + +# Subbook list. +my @subbooks = (); + +# The maximum length of an alternation text for a character. +my $maxlen_alt = 31; + +# The maximum length of a subbook name. +my $maxlen_subname = 8; + +# Page size. +my $size_page = 2048; + +# File mode for mkdir. +my $dirmode = umask ^ 0777; + +# Test mode flag. +my $check_only = 0; + +# Debug mode flag. +my $debug = 0; + +# No-catalog mode. +my $no_catalog = 0; + +# Show help then exit. +my $help_only = 0; + +# Show version then exit. +my $version_only = 0; + +# Command line options. +@long_options = ('-b --book-type required-argument', + '-d --debug --verbose no-argument', + '-h --help no-argument', + '-n --no-catalog no-argument', + '-o --output-directory required-argument', + '-t --test no-argument', + '-v --version no-argument'); + +# +# Parse command line options. +# +&getopt_initialize(@long_options); +while (($optname, $optarg) = &getopt_long) { + if ($optname eq '-b') { + if ($optarg !~ /^(eb|epwing)$/i) { + warn "$0: unknown book type \`$optarg\'\n"; + die $tryhelp; + } + $disc = lc($optarg); + } elsif ($optname eq '-d') { + $debug = 1; + } elsif ($optname eq '-h') { + print $help; + exit(0); + } elsif ($optname eq '-n') { + $no_catalog = 1; + } elsif ($optname eq '-o') { + $outdir = $optarg; + } elsif ($optname eq '-v') { + print "$progname (EB Library) version $version\n"; + print $copyright; + exit(0); + } elsif ($optname eq '-t') { + $check_only = 1; + } else { + die $tryhelp; + } +} + +$indir = shift if (0 < @ARGV); +if (@ARGV != 0) { + warn "$0: too many arguments\n"; + die $tryhelp; +} + +# +# Remove a slash (`/') in the tail of the directory names. +# +$indir =~ s/\/$//; +$outdir =~ s/\/$//; + +# +# Compose filenames. +# +my $infile = find_file($indir, 'catalog.app', 'undef'); +if (!defined($infile)) { + $infile = find_file($indir, 'catalogs.app', 'undef'); +} +if (!defined($infile)) { + die "catalog(s).app: no such file\n"; +} + +if ($disc ne 'eb' && $disc ne 'epwing') { + if (basename($infile) =~ /^catalog\.app/i) { + $disc = 'eb'; + } else { + $disc = 'epwing'; + } +} + +my $outfile; +if ($disc eq 'eb') { + $outfile = find_file($outdir, 'catalog', 'default'); +} else { + $outfile = find_file($outdir, 'catalogs', 'default'); +} + +# +# Open the `CATALOG(S).APP' file to read. +# +if (!open(CATALOG_APP, $infile)) { + die "$infile: cannot open the file, $!\n"; +} + +# +# Read a subbook list from `CATALOG(S).APP'. +# +while () { + s/^\s+//; + s/\s+$//; + next if (/^$/ || /^\#/); + push(@subbooks, lc($_)); +} + +# +# Checks for subbook names. +# +die "$infile: no subbooks described\n" if (@subbooks == 0); +die "$infile: too many subbooks\n" if ($max_subbooks < @subbooks); +foreach my $sub (@subbooks) { + die "$infile: invalid subbook name \`$sub\'\n" + if ($sub !~ /\w{1,$maxlen_subname}/); +} + +# +# Close the file `CATALOG(S).APP'. +# +close(CATALOG_APP); + +# +# Create the `CATALOG(S)' file. +# +if (!$check_only && !$no_catalog) { + # + # Open the `CATALOG(S)' file to write. + # + if (!open(CATALOG, "> $outfile")) { + die "$outfile: cannot open the file, $!\n"; + } + + # + # Write the number of subbooks in the book. + # + print CATALOG "\0", pack('C', scalar(@subbooks)), "\0" x 14; + + # + # Write subbook names. + # + for (my $i = 0; $i < @subbooks; $i++) { + if ($disc eq 'eb') { + print CATALOG pack('C', $i + 1), "\0"; + print CATALOG "\0" x 30; + print CATALOG uc($subbooks[$i]); + print CATALOG "\0" x ($maxlen_subname - length($subbooks[$i])); + } else { + print CATALOG pack('C', $i + 1), "\0"; + print CATALOG "\0" x 80; + print CATALOG uc($subbooks[$i]); + print CATALOG "\0" x ($maxlen_subname - length($subbooks[$i])); + print CATALOG "\0" x 74; + } + } + + # + # Close the `CATALOG(S)' file. + # + close(CATALOG); +} + +# +# Create `APPENDIX (or FUROKU)' files. +# +foreach my $sub (@subbooks) { + # + # Compose filenames. + # + $infile = find_file($indir, "$sub.app"); + die "$sub.app: no such file\n" if (!defined($infile)); + + if ($disc eq 'eb') { + $outfile = find_file($outdir, "$sub/appendix", 'default'); + } else { + $outfile = find_file($outdir, "$sub/data/furoku", 'default'); + } + $outfile =~ s|//+|/|g; + + # + # Open the `.APP' file to read. + # + if (!open(SUBBOOK_APP, $infile)) { + warn "$infile: cannot open the file, $!\n"; + next; + } + warn "$infile: debug: opened\n" if ($debug); + + my $narrow_def = 0; + my $narrow_start = 0; + my $narrow_start_def = 0; + my $narrow_end = 0; + my $narrow_end_def = 0; + my $narrow_len = 0; + my %narrow_alt = (); + my %narrow_lineno = (); + + my $wide_def = 0; + my $wide_start = 0; + my $wide_start_def = 0; + my $wide_end = 0; + my $wide_end_def = 0; + my $wide_len = 0; + my %wide_alt = (); + my %wide_lineno = (); + + my @stop = (); + my $stop_def = 0; + my $code = 'JISX0208'; + my $code_def = 0; + my $block = ''; + + my $start = \$narrow_start; + my $start_def = \$narrow_start_def; + my $end = \$narrow_end; + my $end_def = \$narrow_end_def; + my $alt = \%narrow_alt; + my $lineno = \%narrow_lineno; + + # + # Parse each line in `.APP'. + # + while () { + s/^\s+//; + s/\s+$//; + next if (/^$/ || /^\#/); + + my ($key, $arg) = split(/[ \t]+/, $_, 2); + + if ($key eq 'begin') { + # + # `begin ...' + # + die "$infile:$.: unexpected \`$key\'\n" if ($block ne ''); + die "$infile:$.: missing argument to \`$key\'\n" if ($arg eq ''); + + if ($arg eq 'narrow') { + # + # `begin narrow' + # + die "$infile:$.: block \`$arg\' is redefined\n" + if (0 < $narrow_def++); + + $block = $arg; + $start = \$narrow_start; + $start_def = \$narrow_start_def; + $end = \$narrow_end; + $end_def = \$narrow_end_def; + $alt = \%narrow_alt; + $lineno = \%narrow_lineno; + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } elsif ($arg eq 'wide') { + # + # `begin wide' + # + die "$infile:$.: block \`$arg\' is redefined\n" + if (0 < $wide_def++); + + $block = $arg; + $start = \$wide_start; + $start_def = \$wide_start_def; + $end = \$wide_end; + $end_def = \$wide_end_def; + $alt = \%wide_alt; + $lineno = \%wide_lineno; + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } else { + die "$infile:$.: invalid argument \`$arg\'\n"; + } + + } elsif ($key eq 'end') { + # + # `end' + # + die "$infile:$.: unexpected \`$key\'\n" if ($block eq ''); + die "$infile:$.: not allowed argument to \`$key\'\n" + if ($arg ne ''); + + $block = ''; + warn "$infile:$.: debug: $key\n" if ($debug); + + } elsif ($key eq 'range-start') { + # + # `range-start' + # + die "$infile:$.: unexpected \`$key\'\n" + if ($block ne 'narrow' && $block ne 'wide'); + die "$infile:$.: incorrect hexadecimal number.\n" + if ($arg !~ /^0[xX]([0-9a-fA-F]{4})$/); + die "$infile:$.: \`$key\' is redefined\n" if (0 < $$start_def++); + + $$start = hex($1); + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } elsif ($key eq 'range-end') { + # + # `range-end' + # + die "$infile:$.: unexpected \`$key\'\n" + if ($block ne 'narrow' && $block ne 'wide'); + die "$infile:$.: incorrect hexadecimal number.\n" + if ($arg !~ /^0[xX]([0-9a-fA-F]{4})$/); + die "$infile:$.: \`$key\' is redefined\n" if (0 < $$end_def++); + + $$end = hex($1); + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } elsif ($key =~ /^0[xX]/) { + # + # `0x' + # + die "$infile:$.: unexpected \`$key\'\n" + if ($block ne 'narrow' && $block ne 'wide'); + die "$infile:$.: incorrect hexadecimal number.\n" + if ($key !~ /^0[xX]([0-9a-fA-F]{4})$/); + + my $ch = hex($1); + $arg = &convert_to_euc($arg); + my $len = length($arg); + + die "$infile:$.: alternation string too long\n" + if ($maxlen_alt < $len); + die "$infile:$.: character \`$key\' redefined\n" + if (defined($alt->{$ch})); + + $alt->{$ch} = $arg; + $lineno->{$ch} = $.; + warn "$infile:$.: debug: $key\n" if ($debug); + + } elsif ($key eq 'character-code') { + # + # `character-code' + # + die "$infile:$.: unexpected \`$key\'\n" if ($block ne ''); + die "$infile:$.: \`$key\' redefined\n" if (0 < $code_def++); + die "$infile:$.: invalid character code \`$arg\'\n" + if ($arg !~ /^(JISX0208|ISO8859-1|UTF-8)$/i); + $code = uc($arg); + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } elsif ($key eq 'stop-code') { + # + # `stop-code' + # + die "$infile:$.: unexpected \`$key\'\n" if ($block ne ''); + die "$infile:$.: \`$key\' redefined\n" if (0 < $stop_def++); + die "$infile:$.: invalid stop-code \`$arg\'\n" + if ($arg !~ /^0x1f(09|41)\s*0x([0-9a-f]{2})([0-9a-f]{2})$/i); + @stop = (0x1f, hex($1), hex($2), hex($3)); + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } else { + die "$infile:$.: unknown keyword \`$key\'\n"; + } + } + # End of parsing each line in `.APP'. + + # + # Close the `.APP' file. + # + close(SUBBOOK_APP); + warn "$infile: debug: closed\n" if ($debug); + + # + # Check for `character-code' definition. + # + die "$infile: missing \`character-code\'\n" + if ($code_def == 0 && ($narrow_def != 0 || $wide_def != 0)); + + # + # Check for the range of alternation. + # + if (0 < $narrow_def) { + die "$infile: missing \`range-start\' in the narrow block\n" + if ($narrow_start_def == 0); + die "$infile: missing \`range-end\' in the narrow block\n" + if ($narrow_end_def == 0); + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + $narrow_len = (($narrow_end >> 8) - ($narrow_start >> 8)) * 0x5e + + (($narrow_end & 0xff) - ($narrow_start & 0xff)) + 1; + } else { + $narrow_len = (($narrow_end >> 8) - ($narrow_start >> 8)) * 0xfe + + (($narrow_end & 0xff) - ($narrow_start & 0xff)) + 1; + } + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + while (my ($key, $arg) = each(%narrow_alt)) { + warn "$infile:$narrow_lineno{$key}: out of range\n" + if ($key < $narrow_start || $narrow_end < $key + || ($key & 0xff) < 0x21 || 0x7e < ($key & 0xff)); + } + } else { + while (my ($key, $arg) = each(%narrow_alt)) { + warn "$infile:$narrow_lineno{$key}: out of range\n" + if ($key < $narrow_start || $narrow_end < $key + || ($key & 0xff) < 0x01 || 0xfe < ($key & 0xff)); + } + } + } + + if (0 < $wide_def) { + die "$infile: missing \`range-start\' in the wide block\n" + if ($wide_start_def == 0); + die "$infile: missing \`range-end\' in the wide block\n" + if ($wide_end_def == 0); + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + $wide_len = (($wide_end >> 8) - ($wide_start >> 8)) * 0x5e + + (($wide_end & 0xff) - ($wide_start & 0xff)) + 1; + } else { + $wide_len = (($wide_end >> 8) - ($wide_start >> 8)) * 0xfe + + (($wide_end & 0xff) - ($wide_start & 0xff)) + 1; + } + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + while (my ($key, $arg) = each(%wide_alt)) { + warn "$infile:$wide_lineno{$key}: out of range\n" + if ($key < $wide_start || $wide_end < $key + || ($key & 0xff) < 0x21 || 0x7f < ($key & 0xff)); + } + } else { + while (my ($key, $arg) = each(%wide_alt)) { + warn "$infile:$wide_lineno{$key}: out of range\n" + if ($key < $wide_start || $wide_end < $key + || ($key & 0xff) < 0x01 || 0xfe < ($key & 0xff)); + } + } + } + + next if ($check_only); + + # + # Create a subdirectory for the subbook, if missing. + # + my $outsubdir = dirname($outfile); + if (mkinstalldirs($outsubdir, $dirmode)) { + warn "$outdir: debug: directory cleated\n" if ($debug); + } else { + die "$outdir: cannot create the directory, $!\n"; + } + + # + # Open the file `APPENDIX (or FUROKU)' to read. + # + if (!open(APPENDIX, "> $outfile")) { + die "$outfile: cannot open the file, $!\n"; + } + warn "$outfile: debug: opened\n" if ($debug); + + # + # Fill the index page with zero. + # + seek(APPENDIX, 0, 0); + print APPENDIX "\0" x $size_page; + + # + # Output alternation text for narrow font characters. + # + my $narrow_page = 0; + if (0 < $narrow_def) { + $narrow_page = int(1 + tell(APPENDIX) / $size_page); + + # + # Output alternation text. + # + my $i = $narrow_start; + while ($i <= $narrow_end) { + if (defined($narrow_alt{$i})) { + print APPENDIX $narrow_alt{$i}, "\0", + "\0" x ($maxlen_alt - length($narrow_alt{$i})); + } else { + print APPENDIX "\0" x 32; + } + printf STDERR "$outfile: debug: wrote 0x%04x\n", $i + if ($debug); + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + $i += (($i & 0xff) < 0x7e) ? 1 : 0xa3; + } else { + $i += (($i & 0xff) < 0xfe) ? 1 : 3; + } + } + my $pad = $size_page - tell(APPENDIX) % $size_page; + print APPENDIX "\0" x $pad if ($pad != 0); + } + + # + # Output alternation text for wide font characters. + # + my $wide_page = 0; + if (0 < $wide_def) { + $wide_page = 1 + int(tell(APPENDIX) / $size_page); + + # + # Output alternation text. + # + my $i = $wide_start; + while ($i <= $wide_end) { + if (defined($wide_alt{$i})) { + print APPENDIX $wide_alt{$i}, "\0", + "\0" x ($maxlen_alt - length($wide_alt{$i})); + } else { + print APPENDIX "\0" x 32; + } + printf STDERR "$outfile: debug: wrote 0x%04x\n", $i + if ($debug); + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + $i += (($i & 0xff) < 0x7e) ? 1 : 0xa3; + } else { + $i += (($i & 0xff) < 0xfe) ? 1 : 3; + } + } + my $pad = $size_page - tell(APPENDIX) % $size_page; + print APPENDIX "\0" x $pad if ($pad != 0); + } + + # + # Output a stop-code. + # + my $stop_page = 1 + int(tell(APPENDIX) / $size_page); + if (0 < $stop_def) { + print APPENDIX "\0\1", pack("C4", @stop); + warn "$outfile: debug: wrote stop-code\n" if ($debug); + } + my $pad = $size_page - tell(APPENDIX) % $size_page; + print APPENDIX "\0" x $pad if ($pad != 0); + + # + # Output an index page. + # + my %character_code_table = ( + 'ISO8859-1' => "\0\001", + 'JISX0208' => "\0\002", + 'UTF-8' => "\0\004", + ); + seek(APPENDIX, 0, 0); + print APPENDIX "\0\3", $character_code_table{$code}, "\0" x 12; + + if (0 < $narrow_def) { + print APPENDIX pack("N", $narrow_page), "\0" x 6, + pack("n n", $narrow_start, $narrow_len), "\0\0"; + } else { + print APPENDIX "\0" x 16; + } + + if (0 < $wide_def) { + print APPENDIX pack("N", $wide_page), "\0" x 6, + pack("n n", $wide_start, $wide_len), "\0\0"; + } else { + print APPENDIX "\0" x 16; + } + + if (0 < $stop_def) { + print APPENDIX pack("N", $stop_page), "\0" x 12; + } else { + print APPENDIX "\0" x 16; + } + + close(APPENDIX); + warn "$outfile: debug: closed\n" if ($debug); +} + +exit; + +# +# Find file $target under $dir. +# +sub find_file { + my ($dir, $target, $mode) = @_; + my $result = $dir; + my @target_entries = split(/\/+/, $target); + + for (my $i = 0; $i < @target_entries; $i++) { + my $found; + my $normalized_target_entry = lc($target_entries[$i]); + $normalized_target_entry =~ s/;\d$//; + $normalized_target_entry =~ s/\.$//; + + if (opendir(DIR, $result)) { + while (my $entry = readdir(DIR)) { + if ($i < @target_entries - 1) { + next if (! -d "$result/$entry"); + } else { + next if (! -f "$result/$entry"); + } + my $normalized_entry = lc($entry); + $normalized_entry =~ s/;\d$//; + $normalized_entry =~ s/\.$//; + if ($normalized_target_entry eq $normalized_entry) { + $found = $entry; + last; + } + } + closedir(DIR); + } + + if (defined($found)) { + $result = $result . '/' . $found; + } elsif ($mode eq 'undef') { + return undef; + } else { + $result = $result . '/' . $target_entries[$i]; + } + } + + return $result; +} + +sub dirname { + my ($dir) = @_; + my $result; + + if ($dir !~ /\//) { + $result = '.'; + } else { + $result = $dir; + $result =~ s/\/+[^\/]+$//; + } + + return $result; +} + +sub mkinstalldirs { + my ($dir, $mode) = @_; + my $path = ''; + + foreach my $d (split(/\/+/, $dir)) { + if ($path eq '') { + $path = ($dir =~ /^\//) ? '/' : $d; + } else { + $path = "$path/$d"; + } + next if (-d $path); + return 0 if (!mkdir($path, $mode)); + } + + return 1; +} + +# +# Convert a string to EUC JP. +# +sub convert_to_euc { + my ($s) = @_; + while ($s =~ /\033(\([BJ]|\$[\@B])/) { + $s =~ s/\033\$[\@B]([^\033]*)/&convert_to_euc_tr($1)/eg; + $s =~ s/\033\([BJ]([^\033]*)/$1/eg; + } + return $s; +} + +sub convert_to_euc_tr { + my ($s) = @_; + $s =~ tr/\041-\176/\241-\376/; + return $s; +} + +# Local Variables: +# mode: perl +# End: diff --git a/lib/ebu/ebappendix/ebuappendix b/lib/ebu/ebappendix/ebuappendix new file mode 100644 index 0000000..e99b50f --- /dev/null +++ b/lib/ebu/ebappendix/ebuappendix @@ -0,0 +1,1119 @@ +#! /usr/bin/perl + +# -*- Perl -*- +# Copyright (c) 1997-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +# +# This program is a Perl package running on Perl 4.036 or later. +# The package provides routines to process command line options like +# as GNU getopt_long(). +# +# Version: +# 2.0 +# +# Interface: +# +# &getopt_initialize(LIST) +# Set a list of command line options and initialize internal data +# for &getopt_long. +# You must call the routine before calling &getopt_long. +# Format of each element in the LIST is: +# +# `CANONICAL-OPTION-NAME [ALIAS-OPTION-NAME...] ARGUMENT-FLAG' +# +# CANONICAL-OPTION-NAME, ALIAS-OPTION-NAME and ARGUMENT-FLAG fields +# are separated by spaces or tabs. +# +# CANONICAL-OPTION-NAME and ALIAS-OPTION-NAME must be either a single +# character option including preceding `-' (e.g. `-v'), or a long +# name option including preceding `--' (e.g. `--version'). Whether +# CANONICAL-OPTION-NAME is single character option or long name +# option is not significant. +# +# ARGUMENT-FLAG must be `no-argument', `required-argument' or +# `optional-argument'. If it is set to `required-argument', the +# option always takes an argument. If set to `optional-argument', +# an argument to the option is optional. +# +# You can put a special element `+' or `-' at the first element in +# LIST. See `Details about Option Processing:' for details. +# If succeeded to initialize, 1 is returned. Otherwise 0 is +# returned. +# +# &getopt_long +# Get a option name, and if exists, its argument of the leftmost +# option in @ARGV. +# +# An option name and its argument are returned as a list with two +# elements; the first element is CANONICAL-OPTION-NAME of the option, +# and second is its argument. +# Upon return, the option and its argument are removed from @ARGV. +# When you have already got all options in @ARGV, an empty list is +# returned. In this case, only non-option elements are left in +# @ARGV. +# +# When an error occurs, an error message is output to standard +# error, and the option name in a returned list is set to `?'. +# +# Example: +# +# &getopt_intialize('--help -h no-argument', '--version -v no-argument') +# || die; +# +# while (($name, $arg) = &getopt_long) { +# die "For help, type \`$0 --help\'\n" if ($name eq '?'); +# $opts{$name} = $arg; +# } +# +# Details about Option Processing: +# +# * There are three processing modes: +# 1. PERMUTE +# It permutes the contents of ARGV as it scans, so that all the +# non-option ARGV-elements are at the end. This mode is default. +# 2. REQUIRE_ORDER +# It stops option processing when the first non-option is seen. +# This mode is chosen if the environment variable POSIXLY_CORRECT +# is defined, or the first element in the option list is `+'. +# 3. RETURN_IN_ORDER +# It describes each non-option ARGV-element as if it were the +# argument of an option with an empty name. +# This mode is chosen if the first element in the option list is +# `-'. +# +# * An argument starting with `-' and not exactly `-', is a single +# character option. +# If the option takes an argument, it must be specified at just +# behind the option name (e.g. `-f/tmp/file'), or at the next +# ARGV-element of the option name (e.g. `-f /tmp/file'). +# If the option doesn't have an argument, other single character +# options can be followed within an ARGV-element. For example, +# `-l -g -d' is identical to `-lgd'. +# +# * An argument starting with `--' and not exactly `--', is a long +# name option. +# If the option has an argument, it can be specified at behind the +# option name preceded by `=' (e.g. `--option=argument'), or at the +# next ARGV-element of the option name (e.g. `--option argument'). +# Long name options can be abbreviated as long as the abbreviation +# is unique. +# +# * The special argument `--' forces an end of option processing. +# + +{ + package getopt_long; + + $initflag = 0; + $REQUIRE_ORDER = 0; + $PERMUTE = 1; + $RETURN_IN_ORDER = 2; +} + + +# +# Initialize the internal data. +# +sub getopt_initialize { + local(@fields); + local($name, $flag, $canon); + local($_); + + # + # Determine odering. + # + if ($_[$[] eq '+') { + $getopt_long'ordering = $getopt_long'REQUIRE_ORDER; + shift(@_); + } elsif ($_[$[] eq '-') { + $getopt_long'ordering = $getopt_long'RETURN_IN_ORDER; + shift(@_); + } elsif (defined($ENV{'POSIXLY_CORRECT'})) { + $getopt_long'ordering = $getopt_long'REQUIRE_ORDER; + } else { + $getopt_long'ordering = $getopt_long'PERMUTE; + } + + # + # Parse an option list. + # + %getopt_long'optnames = (); + %getopt_long'argflags = (); + + foreach (@_) { + @fields = split(/[ \t]+/, $_); + if (@fields < 2) { + warn "$0: (getopt_initialize) too few fields \`$arg\'\n"; + return 0; + } + $flag = pop(@fields); + if ($flag ne 'no-argument' && $flag ne 'required-argument' + && $flag ne 'optional-argument') { + warn "$0: (getopt_initialize) invalid argument flag \`$flag\'\n"; + return 0; + } + + $canon = ''; + foreach $name (@fields) { + if ($name !~ /^-([^-]|-.+)$/) { + warn "$0: (getopt_initialize) invalid option name \`$name\'\n"; + return 0; + } elsif (defined($getopt_long'optnames{$name})) { + warn "$0: (getopt_initialize) redefined option \`$name\'\n"; + return 0; + } + $canon = $name if ($canon eq ''); + $getopt_long'optnames{$name} = $canon; + $getopt_long'argflags{$name} = $flag; + } + } + + $getopt_long'endflag = 0; + $getopt_long'shortrest = ''; + @getopt_long'nonopts = (); + + $getopt_long'initflag = 1; +} + + +# +# When it comes to the end of options, restore PERMUTEd non-option +# arguments to @ARGV. +# +sub getopt_end { + $getopt_long'endflag = 1; + unshift(@ARGV, @getopt_long'nonopts); +} + + +# +# Scan elements of @ARGV for getting an option. +# +sub getopt_long { + local($name, $arg) = ('', 1); + local($patt, $key, $ambig, $ch); + local($_); + + &getopt_initialize(@_) if (!$getopt_long'initflag); + return () if ($getopt_long'endflag); + + # + # Take the next argument from @ARGV. + # + if ($getopt_long'shortrest ne '') { + $_ = '-'.$getopt_long'shortrest; + } elsif (@ARGV == 0) { + &getopt_end; + return (); + } elsif ($getopt_long'ordering == $getopt_long'REQUIRE_ORDER) { + $_ = shift(@ARGV); + if (!/^-./) { + push(@getopt_long'nonopts, $_); + &getopt_end; + return (); + } + } elsif ($getopt_long'ordering == $getopt_long'PERMUTE) { + for (;;) { + if (@ARGV == 0) { + &getopt_end; + return (); + } + $_ = shift(@ARGV); + last if (/^-./); + push(@getopt_long'nonopts, $_); + } + } else { # RETURN_IN_ORDER + $_ = shift(@ARGV); + } + + # + # Check for the special option `--'. + # + if ($_ eq '--' && $getopt_long'shortrest eq '') { + # + # `--' indicates the end of the option list. + # + &getopt_end; + return (); + } + + # + # Check for long and short options. + # + if (/^(--[^=]+)/ && $getopt_long'shortrest eq '') { + # + # Long style option, which start with `--'. + # Abbreviations for option names are allowed as long as + # they are unique. + # + $patt = $1; + if (defined($getopt_long'optnames{$patt})) { + $name = $patt; + } else { + $ambig = 0; + foreach $key (keys(%getopt_long'optnames)) { + if (index($key, $patt) == 0) { + if ($name eq '') { + $name = $key; + } else { + $ambig = 1; + } + } + } + if ($ambig) { + warn "$0: option \`$_\' is ambiguous\n"; + return ('?', ''); + } + if ($name eq '') { + warn "$0: unrecognized option \`$_\'\n"; + return ('?', ''); + } + } + + if ($getopt_long'argflags{$name} eq 'required-argument') { + if (/=(.*)$/) { + $arg = $1; + } elsif (0 < @ARGV) { + $arg = shift(@ARGV); + } else { + warn "$0: option \`$_\' requires an argument\n"; + return ('?', ''); + } + } elsif ($getopt_long'argflags{$name} eq 'optional-argument') { + if (/=(.*)$/) { + $arg = $1; + } elsif (0 < @ARGV && $ARGV[$[] !~ /^-./) { + $arg = shift(@ARGV); + } else { + $arg = ''; + } + } elsif (/=(.*)$/) { + warn "$0: option \`$name\' doesn't allow an argument\n"; + return ('?', ''); + } + } elsif (/^(-(.))(.*)/) { + # + # Short style option, which start with `-' (not `--'). + # + ($name, $ch, $getopt_long'shortrest) = ($1, $2, $3); + + if (defined($getopt_long'optnames{$name})) { + if ($getopt_long'argflags{$name} eq 'required-argument') { + if ($getopt_long'shortrest ne '') { + $arg = $getopt_long'shortrest; + $getopt_long'shortrest = ''; + } elsif (0 < @ARGV) { + $arg = shift(@ARGV); + } else { + # 1003.2 specifies the format of this message. + warn "$0: option requires an argument -- $ch\n"; + return ('?', ''); + } + } elsif ($getopt_long'argflags{$name} eq 'optional-argument') { + if ($getopt_long'shortrest ne '') { + $arg = $getopt_long'shortrest; + $getopt_long'shortrest = ''; + } elsif (0 < @ARGV && $ARGV[$[] !~ /^-./) { + $arg = shift(@ARGV); + } else { + $arg = ''; + } + } + } elsif (defined($ENV{'POSIXLY_CORRECT'})) { + # 1003.2 specifies the format of this message. + warn "$0: illegal option -- $ch\n"; + return ('?', ''); + } else { + warn "$0: invalid option -- $ch\n"; + return ('?', ''); + } + } else { + # + # Only RETURN_IN_ORDER falled into here. + # + $arg = $_; + } + + return ($getopt_long'optnames{$name}, $arg); +} + +1; +# +# Copyright (c) 1997-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +require 5.005; +use File::Basename; + +# Program name, program version and mailing address. +my $progname='ebappendix'; +my $version = '4.5-20200413'; +my $mailing_address = 'kzhr@d1.dion.ne.jp'; + +# Help message. +my $help = "Usage: $progname [option...] [input-directory] +Options: + -b BOOK-TYPE --book-type BOOK-TYPE + make an appendix as BOOK-TYPE; eb or epwing + (default: depend on \`catalog(s).app\') + -d --debug --verbose debug mode + -h --help output this help, then exit + -n --no-catalog don't output a catalog file + -o DIRECTORY --output-directory DIRECTORY + output files to DIRECTORY + (default: .) + -t --test only check for input files + -v --version output version number, then exit + +Argument: + input-directory input files at this directory + (default: .) + +Report bugs to $mailing_address. +"; + +# `try ...' message. +my $tryhelp = "try \`$0 --help\' for more information\n"; + +# Disc type: `eb' or `epwing'. +my $disc = ''; + +# Read files on the directory. +my $indir = '.'; + +# Create files under the directory. +my $outdir = '.'; + +# The maximum number of subbooks in a book. +my $max_subbooks = 50; + +# Subbook list. +my @subbooks = (); + +# The maximum length of an alternation text for a character. +my $maxlen_alt = 31; + +# The maximum length of a subbook name. +my $maxlen_subname = 8; + +# Page size. +my $size_page = 2048; + +# File mode for mkdir. +my $dirmode = umask ^ 0777; + +# Test mode flag. +my $check_only = 0; + +# Debug mode flag. +my $debug = 0; + +# No-catalog mode. +my $no_catalog = 0; + +# Show help then exit. +my $help_only = 0; + +# Show version then exit. +my $version_only = 0; + +# Command line options. +@long_options = ('-b --book-type required-argument', + '-d --debug --verbose no-argument', + '-h --help no-argument', + '-n --no-catalog no-argument', + '-o --output-directory required-argument', + '-t --test no-argument', + '-v --version no-argument'); + +# +# Parse command line options. +# +&getopt_initialize(@long_options); +while (($optname, $optarg) = &getopt_long) { + if ($optname eq '-b') { + if ($optarg !~ /^(eb|epwing)$/i) { + warn "$0: unknown book type \`$optarg\'\n"; + die $tryhelp; + } + $disc = lc($optarg); + } elsif ($optname eq '-d') { + $debug = 1; + } elsif ($optname eq '-h') { + print $help; + exit(0); + } elsif ($optname eq '-n') { + $no_catalog = 1; + } elsif ($optname eq '-o') { + $outdir = $optarg; + } elsif ($optname eq '-v') { + print "$progname (EB Library) version $version\n"; + print $copyright; + exit(0); + } elsif ($optname eq '-t') { + $check_only = 1; + } else { + die $tryhelp; + } +} + +$indir = shift if (0 < @ARGV); +if (@ARGV != 0) { + warn "$0: too many arguments\n"; + die $tryhelp; +} + +# +# Remove a slash (`/') in the tail of the directory names. +# +$indir =~ s/\/$//; +$outdir =~ s/\/$//; + +# +# Compose filenames. +# +my $infile = find_file($indir, 'catalog.app', 'undef'); +if (!defined($infile)) { + $infile = find_file($indir, 'catalogs.app', 'undef'); +} +if (!defined($infile)) { + die "catalog(s).app: no such file\n"; +} + +if ($disc ne 'eb' && $disc ne 'epwing') { + if (basename($infile) =~ /^catalog\.app/i) { + $disc = 'eb'; + } else { + $disc = 'epwing'; + } +} + +my $outfile; +if ($disc eq 'eb') { + $outfile = find_file($outdir, 'catalog', 'default'); +} else { + $outfile = find_file($outdir, 'catalogs', 'default'); +} + +# +# Open the `CATALOG(S).APP' file to read. +# +if (!open(CATALOG_APP, $infile)) { + die "$infile: cannot open the file, $!\n"; +} + +# +# Read a subbook list from `CATALOG(S).APP'. +# +while () { + s/^\s+//; + s/\s+$//; + next if (/^$/ || /^\#/); + push(@subbooks, lc($_)); +} + +# +# Checks for subbook names. +# +die "$infile: no subbooks described\n" if (@subbooks == 0); +die "$infile: too many subbooks\n" if ($max_subbooks < @subbooks); +foreach my $sub (@subbooks) { + die "$infile: invalid subbook name \`$sub\'\n" + if ($sub !~ /\w{1,$maxlen_subname}/); +} + +# +# Close the file `CATALOG(S).APP'. +# +close(CATALOG_APP); + +# +# Create the `CATALOG(S)' file. +# +if (!$check_only && !$no_catalog) { + # + # Open the `CATALOG(S)' file to write. + # + if (!open(CATALOG, "> $outfile")) { + die "$outfile: cannot open the file, $!\n"; + } + + # + # Write the number of subbooks in the book. + # + print CATALOG "\0", pack('C', scalar(@subbooks)), "\0" x 14; + + # + # Write subbook names. + # + for (my $i = 0; $i < @subbooks; $i++) { + if ($disc eq 'eb') { + print CATALOG pack('C', $i + 1), "\0"; + print CATALOG "\0" x 30; + print CATALOG uc($subbooks[$i]); + print CATALOG "\0" x ($maxlen_subname - length($subbooks[$i])); + } else { + print CATALOG pack('C', $i + 1), "\0"; + print CATALOG "\0" x 80; + print CATALOG uc($subbooks[$i]); + print CATALOG "\0" x ($maxlen_subname - length($subbooks[$i])); + print CATALOG "\0" x 74; + } + } + + # + # Close the `CATALOG(S)' file. + # + close(CATALOG); +} + +# +# Create `APPENDIX (or FUROKU)' files. +# +foreach my $sub (@subbooks) { + # + # Compose filenames. + # + $infile = find_file($indir, "$sub.app"); + die "$sub.app: no such file\n" if (!defined($infile)); + + if ($disc eq 'eb') { + $outfile = find_file($outdir, "$sub/appendix", 'default'); + } else { + $outfile = find_file($outdir, "$sub/data/furoku", 'default'); + } + $outfile =~ s|//+|/|g; + + # + # Open the `.APP' file to read. + # + if (!open(SUBBOOK_APP, $infile)) { + warn "$infile: cannot open the file, $!\n"; + next; + } + warn "$infile: debug: opened\n" if ($debug); + + my $narrow_def = 0; + my $narrow_start = 0; + my $narrow_start_def = 0; + my $narrow_end = 0; + my $narrow_end_def = 0; + my $narrow_len = 0; + my %narrow_alt = (); + my %narrow_lineno = (); + + my $wide_def = 0; + my $wide_start = 0; + my $wide_start_def = 0; + my $wide_end = 0; + my $wide_end_def = 0; + my $wide_len = 0; + my %wide_alt = (); + my %wide_lineno = (); + + my @stop = (); + my $stop_def = 0; + my $code = 'JISX0208'; + my $code_def = 0; + my $block = ''; + + my $start = \$narrow_start; + my $start_def = \$narrow_start_def; + my $end = \$narrow_end; + my $end_def = \$narrow_end_def; + my $alt = \%narrow_alt; + my $lineno = \%narrow_lineno; + + # + # Parse each line in `.APP'. + # + while () { + s/^\s+//; + s/\s+$//; + next if (/^$/ || /^\#/); + + my ($key, $arg) = split(/[ \t]+/, $_, 2); + + if ($key eq 'begin') { + # + # `begin ...' + # + die "$infile:$.: unexpected \`$key\'\n" if ($block ne ''); + die "$infile:$.: missing argument to \`$key\'\n" if ($arg eq ''); + + if ($arg eq 'narrow') { + # + # `begin narrow' + # + die "$infile:$.: block \`$arg\' is redefined\n" + if (0 < $narrow_def++); + + $block = $arg; + $start = \$narrow_start; + $start_def = \$narrow_start_def; + $end = \$narrow_end; + $end_def = \$narrow_end_def; + $alt = \%narrow_alt; + $lineno = \%narrow_lineno; + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } elsif ($arg eq 'wide') { + # + # `begin wide' + # + die "$infile:$.: block \`$arg\' is redefined\n" + if (0 < $wide_def++); + + $block = $arg; + $start = \$wide_start; + $start_def = \$wide_start_def; + $end = \$wide_end; + $end_def = \$wide_end_def; + $alt = \%wide_alt; + $lineno = \%wide_lineno; + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } else { + die "$infile:$.: invalid argument \`$arg\'\n"; + } + + } elsif ($key eq 'end') { + # + # `end' + # + die "$infile:$.: unexpected \`$key\'\n" if ($block eq ''); + die "$infile:$.: not allowed argument to \`$key\'\n" + if ($arg ne ''); + + $block = ''; + warn "$infile:$.: debug: $key\n" if ($debug); + + } elsif ($key eq 'range-start') { + # + # `range-start' + # + die "$infile:$.: unexpected \`$key\'\n" + if ($block ne 'narrow' && $block ne 'wide'); + die "$infile:$.: incorrect hexadecimal number.\n" + if ($arg !~ /^0[xX]([0-9a-fA-F]{4})$/); + die "$infile:$.: \`$key\' is redefined\n" if (0 < $$start_def++); + + $$start = hex($1); + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } elsif ($key eq 'range-end') { + # + # `range-end' + # + die "$infile:$.: unexpected \`$key\'\n" + if ($block ne 'narrow' && $block ne 'wide'); + die "$infile:$.: incorrect hexadecimal number.\n" + if ($arg !~ /^0[xX]([0-9a-fA-F]{4})$/); + die "$infile:$.: \`$key\' is redefined\n" if (0 < $$end_def++); + + $$end = hex($1); + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } elsif ($key =~ /^0[xX]/) { + # + # `0x' + # + die "$infile:$.: unexpected \`$key\'\n" + if ($block ne 'narrow' && $block ne 'wide'); + die "$infile:$.: incorrect hexadecimal number.\n" + if ($key !~ /^0[xX]([0-9a-fA-F]{4})$/); + + my $ch = hex($1); + $arg = &convert_to_euc($arg); + my $len = length($arg); + + die "$infile:$.: alternation string too long\n" + if ($maxlen_alt < $len); + die "$infile:$.: character \`$key\' redefined\n" + if (defined($alt->{$ch})); + + $alt->{$ch} = $arg; + $lineno->{$ch} = $.; + warn "$infile:$.: debug: $key\n" if ($debug); + + } elsif ($key eq 'character-code') { + # + # `character-code' + # + die "$infile:$.: unexpected \`$key\'\n" if ($block ne ''); + die "$infile:$.: \`$key\' redefined\n" if (0 < $code_def++); + die "$infile:$.: invalid character code \`$arg\'\n" + if ($arg !~ /^(JISX0208|ISO8859-1|UTF-8)$/i); + $code = uc($arg); + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } elsif ($key eq 'stop-code') { + # + # `stop-code' + # + die "$infile:$.: unexpected \`$key\'\n" if ($block ne ''); + die "$infile:$.: \`$key\' redefined\n" if (0 < $stop_def++); + die "$infile:$.: invalid stop-code \`$arg\'\n" + if ($arg !~ /^0x1f(09|41)\s*0x([0-9a-f]{2})([0-9a-f]{2})$/i); + @stop = (0x1f, hex($1), hex($2), hex($3)); + warn "$infile:$.: debug: $key $arg\n" if ($debug); + + } else { + die "$infile:$.: unknown keyword \`$key\'\n"; + } + } + # End of parsing each line in `.APP'. + + # + # Close the `.APP' file. + # + close(SUBBOOK_APP); + warn "$infile: debug: closed\n" if ($debug); + + # + # Check for `character-code' definition. + # + die "$infile: missing \`character-code\'\n" + if ($code_def == 0 && ($narrow_def != 0 || $wide_def != 0)); + + # + # Check for the range of alternation. + # + if (0 < $narrow_def) { + die "$infile: missing \`range-start\' in the narrow block\n" + if ($narrow_start_def == 0); + die "$infile: missing \`range-end\' in the narrow block\n" + if ($narrow_end_def == 0); + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + $narrow_len = (($narrow_end >> 8) - ($narrow_start >> 8)) * 0x5e + + (($narrow_end & 0xff) - ($narrow_start & 0xff)) + 1; + } else { + $narrow_len = (($narrow_end >> 8) - ($narrow_start >> 8)) * 0xfe + + (($narrow_end & 0xff) - ($narrow_start & 0xff)) + 1; + } + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + while (my ($key, $arg) = each(%narrow_alt)) { + warn "$infile:$narrow_lineno{$key}: out of range\n" + if ($key < $narrow_start || $narrow_end < $key + || ($key & 0xff) < 0x21 || 0x7e < ($key & 0xff)); + } + } else { + while (my ($key, $arg) = each(%narrow_alt)) { + warn "$infile:$narrow_lineno{$key}: out of range\n" + if ($key < $narrow_start || $narrow_end < $key + || ($key & 0xff) < 0x01 || 0xfe < ($key & 0xff)); + } + } + } + + if (0 < $wide_def) { + die "$infile: missing \`range-start\' in the wide block\n" + if ($wide_start_def == 0); + die "$infile: missing \`range-end\' in the wide block\n" + if ($wide_end_def == 0); + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + $wide_len = (($wide_end >> 8) - ($wide_start >> 8)) * 0x5e + + (($wide_end & 0xff) - ($wide_start & 0xff)) + 1; + } else { + $wide_len = (($wide_end >> 8) - ($wide_start >> 8)) * 0xfe + + (($wide_end & 0xff) - ($wide_start & 0xff)) + 1; + } + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + while (my ($key, $arg) = each(%wide_alt)) { + warn "$infile:$wide_lineno{$key}: out of range\n" + if ($key < $wide_start || $wide_end < $key + || ($key & 0xff) < 0x21 || 0x7f < ($key & 0xff)); + } + } else { + while (my ($key, $arg) = each(%wide_alt)) { + warn "$infile:$wide_lineno{$key}: out of range\n" + if ($key < $wide_start || $wide_end < $key + || ($key & 0xff) < 0x01 || 0xfe < ($key & 0xff)); + } + } + } + + next if ($check_only); + + # + # Create a subdirectory for the subbook, if missing. + # + my $outsubdir = dirname($outfile); + if (mkinstalldirs($outsubdir, $dirmode)) { + warn "$outdir: debug: directory cleated\n" if ($debug); + } else { + die "$outdir: cannot create the directory, $!\n"; + } + + # + # Open the file `APPENDIX (or FUROKU)' to read. + # + if (!open(APPENDIX, "> $outfile")) { + die "$outfile: cannot open the file, $!\n"; + } + warn "$outfile: debug: opened\n" if ($debug); + + # + # Fill the index page with zero. + # + seek(APPENDIX, 0, 0); + print APPENDIX "\0" x $size_page; + + # + # Output alternation text for narrow font characters. + # + my $narrow_page = 0; + if (0 < $narrow_def) { + $narrow_page = int(1 + tell(APPENDIX) / $size_page); + + # + # Output alternation text. + # + my $i = $narrow_start; + while ($i <= $narrow_end) { + if (defined($narrow_alt{$i})) { + print APPENDIX $narrow_alt{$i}, "\0", + "\0" x ($maxlen_alt - length($narrow_alt{$i})); + } else { + print APPENDIX "\0" x 32; + } + printf STDERR "$outfile: debug: wrote 0x%04x\n", $i + if ($debug); + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + $i += (($i & 0xff) < 0x7e) ? 1 : 0xa3; + } else { + $i += (($i & 0xff) < 0xfe) ? 1 : 3; + } + } + my $pad = $size_page - tell(APPENDIX) % $size_page; + print APPENDIX "\0" x $pad if ($pad != 0); + } + + # + # Output alternation text for wide font characters. + # + my $wide_page = 0; + if (0 < $wide_def) { + $wide_page = 1 + int(tell(APPENDIX) / $size_page); + + # + # Output alternation text. + # + my $i = $wide_start; + while ($i <= $wide_end) { + if (defined($wide_alt{$i})) { + print APPENDIX $wide_alt{$i}, "\0", + "\0" x ($maxlen_alt - length($wide_alt{$i})); + } else { + print APPENDIX "\0" x 32; + } + printf STDERR "$outfile: debug: wrote 0x%04x\n", $i + if ($debug); + + if ($code eq 'JISX0208' || $code eq 'UTF-8') { + $i += (($i & 0xff) < 0x7e) ? 1 : 0xa3; + } else { + $i += (($i & 0xff) < 0xfe) ? 1 : 3; + } + } + my $pad = $size_page - tell(APPENDIX) % $size_page; + print APPENDIX "\0" x $pad if ($pad != 0); + } + + # + # Output a stop-code. + # + my $stop_page = 1 + int(tell(APPENDIX) / $size_page); + if (0 < $stop_def) { + print APPENDIX "\0\1", pack("C4", @stop); + warn "$outfile: debug: wrote stop-code\n" if ($debug); + } + my $pad = $size_page - tell(APPENDIX) % $size_page; + print APPENDIX "\0" x $pad if ($pad != 0); + + # + # Output an index page. + # + my %character_code_table = ( + 'ISO8859-1' => "\0\001", + 'JISX0208' => "\0\002", + 'UTF-8' => "\0\004", + ); + seek(APPENDIX, 0, 0); + print APPENDIX "\0\3", $character_code_table{$code}, "\0" x 12; + + if (0 < $narrow_def) { + print APPENDIX pack("N", $narrow_page), "\0" x 6, + pack("n n", $narrow_start, $narrow_len), "\0\0"; + } else { + print APPENDIX "\0" x 16; + } + + if (0 < $wide_def) { + print APPENDIX pack("N", $wide_page), "\0" x 6, + pack("n n", $wide_start, $wide_len), "\0\0"; + } else { + print APPENDIX "\0" x 16; + } + + if (0 < $stop_def) { + print APPENDIX pack("N", $stop_page), "\0" x 12; + } else { + print APPENDIX "\0" x 16; + } + + close(APPENDIX); + warn "$outfile: debug: closed\n" if ($debug); +} + +exit; + +# +# Find file $target under $dir. +# +sub find_file { + my ($dir, $target, $mode) = @_; + my $result = $dir; + my @target_entries = split(/\/+/, $target); + + for (my $i = 0; $i < @target_entries; $i++) { + my $found; + my $normalized_target_entry = lc($target_entries[$i]); + $normalized_target_entry =~ s/;\d$//; + $normalized_target_entry =~ s/\.$//; + + if (opendir(DIR, $result)) { + while (my $entry = readdir(DIR)) { + if ($i < @target_entries - 1) { + next if (! -d "$result/$entry"); + } else { + next if (! -f "$result/$entry"); + } + my $normalized_entry = lc($entry); + $normalized_entry =~ s/;\d$//; + $normalized_entry =~ s/\.$//; + if ($normalized_target_entry eq $normalized_entry) { + $found = $entry; + last; + } + } + closedir(DIR); + } + + if (defined($found)) { + $result = $result . '/' . $found; + } elsif ($mode eq 'undef') { + return undef; + } else { + $result = $result . '/' . $target_entries[$i]; + } + } + + return $result; +} + +sub dirname { + my ($dir) = @_; + my $result; + + if ($dir !~ /\//) { + $result = '.'; + } else { + $result = $dir; + $result =~ s/\/+[^\/]+$//; + } + + return $result; +} + +sub mkinstalldirs { + my ($dir, $mode) = @_; + my $path = ''; + + foreach my $d (split(/\/+/, $dir)) { + if ($path eq '') { + $path = ($dir =~ /^\//) ? '/' : $d; + } else { + $path = "$path/$d"; + } + next if (-d $path); + return 0 if (!mkdir($path, $mode)); + } + + return 1; +} + +# +# Convert a string to EUC JP. +# +sub convert_to_euc { + my ($s) = @_; + while ($s =~ /\033(\([BJ]|\$[\@B])/) { + $s =~ s/\033\$[\@B]([^\033]*)/&convert_to_euc_tr($1)/eg; + $s =~ s/\033\([BJ]([^\033]*)/$1/eg; + } + return $s; +} + +sub convert_to_euc_tr { + my ($s) = @_; + $s =~ tr/\041-\176/\241-\376/; + return $s; +} + +# Local Variables: +# mode: perl +# End: diff --git a/lib/ebu/ebfont/.deps/ebfont.Po b/lib/ebu/ebfont/.deps/ebfont.Po new file mode 100644 index 0000000..52b675a --- /dev/null +++ b/lib/ebu/ebfont/.deps/ebfont.Po @@ -0,0 +1,303 @@ +ebfont.o: ebfont.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/libintl.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../libebutils/getopt.h \ + ../libebutils/getumask.h ../libebutils/makedir.h ../libebutils/ebutils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/ebutils.h: diff --git a/lib/ebu/ebfont/.libs/ebufont b/lib/ebu/ebfont/.libs/ebufont new file mode 100644 index 0000000000000000000000000000000000000000..f4c90e2b10704d30b089aa07f78dd84bae8a8a4f GIT binary patch literal 106488 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 +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef ENABLE_NLS +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#endif + +#include "ebu/eb.h" +#include "ebu/error.h" +#include "ebu/font.h" + +#ifdef HAVE_GETOPT_LOG +#include +#else +#include "getopt.h" +#endif +#include "getumask.h" +#include "makedir.h" +#include "ebutils.h" + +#ifndef HAVE_STRCASECMP +int strcasecmp(const char *, const char *); +int strncasecmp(const char *, const char *, size_t); +#endif + +#ifndef O_BINARY +#define O_BINARY 0 +#endif + +/* + * The maximum length of path name. + */ +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else /* not MAXPATHLEN */ +#define PATH_MAX 1024 +#endif /* not MAXPATHLEN */ +#endif /* not PATH_MAX */ + +/* + * Tricks for gettext. + */ +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define _(string) (string) +#define N_(string) (string) +#endif + +/* + * Trick for difference of path notation between UNIX and DOS. + */ +#ifndef DOS_FILE_PATH +#define F_(path1, path2) (path1) +#else +#define F_(path1, path2) (path2) +#endif + +/* + * Command line options. + */ +static const char *short_options = "df:hi:o:S:v"; +static struct option long_options[] = { + {"debug", no_argument, NULL, 'd'}, + {"verbose", no_argument, NULL, 'd'}, + {"font-height", required_argument, NULL, 'f'}, + {"help", no_argument, NULL, 'h'}, + {"image-format", required_argument, NULL, 'i'}, + {"subbook", required_argument, NULL, 'S'}, + {"output-directory", required_argument, NULL, 'o'}, + {"version", no_argument, NULL, 'v'}, + {NULL, 0, NULL, 0} +}; + +/* + * Supported image formats. + */ +typedef int Image_Format_Code; + +typedef struct { + const char *name; + const char *suffix; + EB_Error_Code (*function)(const char *bitmap_data, int width, int height, + char *image_data, size_t *image_size); +} Image_Format; + +static Image_Format image_formats[] = { + {"xbm", "xbm", eb_bitmap_to_xbm}, + {"xpm", "xpm", eb_bitmap_to_xpm}, + {"gif", "gif", eb_bitmap_to_gif}, + {"bmp", "bmp", eb_bitmap_to_bmp}, + {"png", "png", eb_bitmap_to_png}, + {NULL, NULL, NULL} +}; + +#define MAX_IMAGE_FORMATS 5 +#define MAX_LENGTH_IMAGE_NAME 3 +#define MAX_LENGTH_IMAGE_SUFFIX 3 + +/* + * Program name and version. + */ +static const char *program_name = "ebfont"; +static const char *program_version = VERSION; +static const char *invoked_name; + +/* + * Debug flag. + */ +static int debug_flag; + +/* + * List of target subbook names. + */ +char subbook_name_list[EB_MAX_SUBBOOKS][EB_MAX_DIRECTORY_NAME_LENGTH + 1]; +int subbook_name_count = 0; + +/* + * List of target subbook codes. + */ +static EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; +static int subbook_count = 0; + +/* + * List of target font heights. + */ +static EB_Font_Code font_list[EB_MAX_FONTS]; +static int font_count = 0; + +/* + * Target Image formats. + */ +static Image_Format_Code image_list[MAX_IMAGE_FORMATS]; +static int image_count = 0; + +/* + * Defaults and limitations. + */ +#define DEFAULT_FONT_HEIGHT "16" +#define DEFAULT_IMAGE_FORMAT "xbm" +#define DEFAULT_BOOK_DIRECTORY "." +#define DEFAULT_OUTPUT_DIRECTORY "." + +#define MAX_LENGTH_FONT_NAME 2 +#define MAX_LENGTH_STRING 255 + +/* + * Unexported functions. + */ +static int parse_font_argument(const char *argument, EB_Font_Code *font_list, + int *font_count); +static int parse_image_argument(const char *argument, + Image_Format_Code *image_list, int *image_count); +static void output_help(void); +static int make_book_fonts(EB_Book *book, const char *out_path, + EB_Subbook_Code *subbook_list, int subbook_count, EB_Font_Code *font_list, + int font_count, Image_Format_Code *image_list, int image_count); +static int make_subbook_fonts(EB_Book *book, const char *subbook_path, + EB_Font_Code *font_list, int font_count, Image_Format_Code *image_list, + int image_count); +static int make_subbook_size_fonts(EB_Book *book, const char *font_path, + Image_Format_Code *image_list, int image_count); +static int make_subbook_size_image_fonts(EB_Book *book, const char *image_path, + Image_Format_Code image); +static int save_image_file(const char *file_name, const char *image_data, + size_t image_size); + + +int +main(int argc, char *argv[]) +{ + const char *book_path; + char out_path[PATH_MAX + 1]; + EB_Error_Code error_code; + EB_Book book; + int ch; + + invoked_name = argv[0]; + debug_flag = 0; + strcpy(out_path, DEFAULT_OUTPUT_DIRECTORY); + + /* + * Initialize locale data. + */ +#ifdef ENABLE_NLS +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain(TEXT_DOMAIN_NAME, LOCALEDIR); + textdomain(TEXT_DOMAIN_NAME); +#endif + + /* + * Initialize `book'. + */ + error_code = eb_initialize_library(); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + goto die; + } + eb_initialize_book(&book); + + /* + * Parse command line options. + */ + for (;;) { + ch = getopt_long(argc, argv, short_options, long_options, NULL); + if (ch == -1) + break; + switch (ch) { + case 'd': + /* + * Option `-d'. Debug mode. + */ + debug_flag = 1; + break; + + case 'f': + /* + * Option `-f'. Generate fonts with HEIGHT. + */ + if (parse_font_argument(optarg, font_list, &font_count) < 0) { + output_try_help(invoked_name); + goto die; + } + break; + + case 'h': + /* + * Option `-h'. Display help message, then exit. + */ + output_help(); + exit(0); + + case 'i': + /* + * Option `-i'. Generate fonts as FORMAT. + */ + if (parse_image_argument(optarg, image_list, &image_count) < 0) { + output_try_help(invoked_name); + goto die; + } + break; + + case 'o': + /* + * Option `-o'. Output fonts under DIRECTORY. + * The file names of fonts are: + * "//fonts//{narrow,wide}/ + * ." + * + * : is `optarg'. + * : require EB_MAX_DIRECTORY_NAME_LENGTH characters. + * fonts: require 5 characters. + * : require 2 characters ("16", "24", "32", or "48"). + * {narrow,wide}: + * requre 6 characters (= strlen("narrow")). + * : requre 4 characters. ("0000" ... "ffff") + * : requre MAX_LENGTH_IMAGE_SUFFIX characters. + */ + if (PATH_MAX < strlen(optarg)) { + fprintf(stderr, _("%s: too long output directory path\n"), + invoked_name); + goto die; + } + strcpy(out_path, optarg); + canonicalize_path(out_path); + if (PATH_MAX < strlen(out_path) + 1 + EB_MAX_DIRECTORY_NAME_LENGTH + + 1 + 5 + 1 + 2 + 1 + 6 + 1 + 4 + 1 + + MAX_LENGTH_IMAGE_SUFFIX) { + fprintf(stderr, _("%s: too long output directory path\n"), + invoked_name); + goto die; + } + break; + + case 'S': + /* + * Option `-S'. Specify target subbooks. + */ + if (parse_subbook_name_argument(invoked_name, optarg, + subbook_name_list, &subbook_name_count) < 0) { + output_try_help(invoked_name); + goto die; + } + break; + + case 'v': + /* + * Option `-v'. Display version number, then exit. + */ + output_version(program_name, program_version); + exit(0); + + default: + output_try_help(invoked_name); + goto die; + } + } + + /* + * Check the number of rest arguments. + */ + if (1 < argc - optind) { + fprintf(stderr, _("%s: too many arguments\n"), invoked_name); + output_try_help(invoked_name); + goto die; + } + + if (image_count == 0) + parse_image_argument(DEFAULT_IMAGE_FORMAT, image_list, &image_count); + + if (font_count == 0) + parse_font_argument(DEFAULT_FONT_HEIGHT, font_list, &font_count); + + /* + * Set a book path. + */ + if (argc == optind) + book_path = DEFAULT_BOOK_DIRECTORY; + else + book_path = argv[optind]; + + /* + * Bind a book. + */ + error_code = eb_bind(&book, book_path); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + goto die; + } + + /* + * For each targe subbook, convert a subbook-names to a subbook-codes. + * If no subbook is specified by `--subbook'(`-S'), set all subbooks + * as the target. + */ + if (subbook_name_count == 0) { + error_code = eb_subbook_list(&book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + goto die; + } + } else { + int i; + EB_Subbook_Code sub; + + for (i = 0; i < subbook_name_count; i++) { + error_code = find_subbook(&book, subbook_name_list[i], &sub); + if (error_code != EB_SUCCESS) { + fprintf(stderr, _("%s: unknown subbook name `%s'\n"), + invoked_name, subbook_name_list[i]); + } + subbook_list[subbook_count++] = sub; + } + } + + /* + * Make image files for fonts in the book. + */ + if (make_book_fonts(&book, out_path, subbook_list, subbook_count, + font_list, font_count, image_list, image_count) < 0) + goto die; + + /* + * Dispose the book. + */ + eb_finalize_book(&book); + eb_finalize_library(); + + return 0; + + /* + * A critical error occurs... + */ + die: + fflush(stderr); + eb_finalize_book(&book); + eb_finalize_library(); + exit(1); +} + + +/* + * Parse an argument to option `--font-height (-f)' + */ +static int +parse_font_argument(const char *argument, EB_Font_Code *font_list, + int *font_count) +{ + const char *argument_p = argument; + char font_name[MAX_LENGTH_FONT_NAME + 1]; + char *font_name_p; + EB_Font_Code font_code; + int i; + + while (*argument_p != '\0') { + /* + * Take a next element in the argument. + */ + i = 0; + font_name_p = font_name; + while (*argument_p != ',' && *argument_p != '\0' + && i < MAX_LENGTH_FONT_NAME) { + *font_name_p = *argument_p; + i++; + font_name_p++; + argument_p++; + } + *font_name_p = '\0'; + if (*argument_p == ',') + argument_p++; + else if (*argument_p != '\0') { + fprintf(stderr, _("%s: unknown font height `%s...'\n"), + invoked_name, font_name); + goto failed; + } + + /* + * Check for the font name. + */ + if (strcmp(font_name, "16") == 0) + font_code = EB_FONT_16; + else if (strcmp(font_name, "24") == 0) + font_code = EB_FONT_24; + else if (strcmp(font_name, "30") == 0) + font_code = EB_FONT_30; + else if (strcmp(font_name, "48") == 0) + font_code = EB_FONT_48; + else { + fprintf(stderr, _("%s: unknown font height `%s'\n"), + invoked_name, font_name); + fflush(stderr); + goto failed; + } + + /* + * If the font name is not found in `font_list', it is added to + * the list. + */ + for (i = 0; i < *font_count; i++) { + if (*(font_list + i) == font_code) + break; + } + if (*font_count <= i) { + *(font_list + i) = font_code; + (*font_count)++; + } + } + + return 0; + + /* + * An error occurs... + */ + failed: + fflush(stderr); + return -1; +} + + +/* + * Parse an argument to option `--font-image-format (-i)' + */ +static int +parse_image_argument(const char *argument, Image_Format_Code *image_list, + int *image_count) +{ + const char *argument_p = argument; + char image_name[MAX_LENGTH_IMAGE_NAME + 1]; + char *image_name_p; + int image_code; + int i; + + while (*argument_p != '\0') { + /* + * Take a next element in the argument. + */ + i = 0; + image_name_p = image_name; + while (*argument_p != ',' && *argument_p != '\0' + && i < MAX_LENGTH_IMAGE_NAME) { + *image_name_p = *argument_p; + i++; + image_name_p++; + argument_p++; + } + *image_name_p = '\0'; + if (*argument_p == ',') + argument_p++; + else if (*argument_p != '\0') { + fprintf(stderr, _("%s: unknown image format name `%s...'\n"), + invoked_name, image_name); + goto failed; + } + + /* + * Check for the image-format name. + */ + for (i = 0; i < MAX_IMAGE_FORMATS; i++) { + if (strcasecmp((image_formats + i)->name, image_name) == 0) + break; + } + if (MAX_IMAGE_FORMATS <= i) { + fprintf(stderr, _("%s: unknown image format name `%s'\n"), + invoked_name, image_name); + goto failed; + } + image_code = i; + + /* + * If the image-format name is not found in `image_list', it + * is added to the list. + */ + for (i = 0; i < *image_count; i++) { + if (*(image_list + i) == image_code) + break; + } + if (*image_count <= i) { + *(image_list + i) = image_code; + (*image_count)++; + } + } + + return 0; + + /* + * An error occurs... + */ + failed: + fflush(stderr); + return -1; +} + + +/* + * Output help message to standard out, then exit. + */ +static void +output_help(void) +{ + printf(_("Usage: %s [option...] [book-directory]\n"), program_name); + printf(_("Options:\n")); + printf(_(" -d --debug --verbose degug mode\n")); + printf(_(" -f HEIGHT[,HEIGHT...] --font-height HEIGHT[,HEIGHT...]\n")); + printf(_(" generate fonts with HEIGHT; 16, 24, 30 or 48\n")); + printf(_(" (default: %s)\n"), + DEFAULT_FONT_HEIGHT); + printf(_(" -h --help display this help, then exit\n")); + printf(_(" -i FORMAT[,FORMAT...] --image-format FORMAT[,FORMAT...]\n")); + printf(_(" generate fonts as FORMAT;\n")); + printf(_(" xbm, xpm, gif, bmp or png\n")); + printf(_(" (default: %s)\n"), + DEFAULT_IMAGE_FORMAT); + printf(_(" -o DIRECTORY --output-directory DIRECTORY\n")); + printf(_(" output fonts under DIRECTORY\n")); + printf(_(" (default: %s)\n"), + DEFAULT_OUTPUT_DIRECTORY); + printf(_(" -S SUBBOOK[,SUBBOOK...] --subbook SUBBOOK[,SUBBOOK...]\n")); + printf(_(" target subbook\n")); + printf(_(" (default: all subbooks)\n")); + printf(_(" -v --version display version number, then exit\n")); + printf(_("\nArgument:\n")); + printf(_(" book-directory top directory of a CD-ROM book\n")); + printf(_(" (default: %s)\n"), + DEFAULT_BOOK_DIRECTORY); + printf(_("\nReport bugs to %s.\n"), MAILING_ADDRESS); + fflush(stdout); +} + + +/* + * Make font-files in the `book_path'. + */ +static int +make_book_fonts(EB_Book *book, const char *out_path, + EB_Subbook_Code *subbook_list, int subbook_count, EB_Font_Code *font_list, + int font_count, Image_Format_Code *image_list, int image_count) +{ + EB_Error_Code error_code; + char subbook_path[PATH_MAX + 1]; + char subbook_directory[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + int i; + + /* + * If `book_path' represents "/", replace it to an empty string, + * or `file_name' starts with double slashes. + */ + if (strcmp(out_path, "/") == 0) + out_path++; + + for (i = 0; i < subbook_count; i++) { + /* + * Set the current subbook to `subbook_list[i]'. + */ + error_code = eb_set_subbook(book, subbook_list[i]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%d\n", invoked_name, + eb_error_message(error_code), subbook_list[i]); + goto failed; + } + + /* + * Get directory name of the subbook. + */ + error_code = eb_subbook_directory(book, subbook_directory); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%d\n", invoked_name, + eb_error_message(error_code), subbook_list[i]); + goto failed; + } + + /* + * Output debug information. + */ + if (debug_flag) { + fprintf(stderr, "%s: debug: subbook %s\n", invoked_name, + subbook_directory); + } + + /* + * Make a directory for the subbook. + */ + sprintf(subbook_path, F_("%s/%s", "%s\\%s"), + out_path, subbook_directory); + if (make_missing_directory(subbook_path, 0777 ^ get_umask()) < 0) + goto failed; + + /* + * Make fonts in the subbook. + */ + if (make_subbook_fonts(book, subbook_path, font_list, font_count, + image_list, image_count) < 0) + goto failed; + } + + return 0; + + /* + * An error occurs... + */ + failed: + fflush(stderr); + return -1; +} + + +/* + * Make font-files in the current subbook. + */ +static int +make_subbook_fonts(EB_Book *book, const char *subbook_path, + EB_Font_Code *font_list, int font_count, Image_Format_Code *image_list, + int image_count) +{ + EB_Error_Code error_code; + char subbook_directory[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + char font_path[PATH_MAX + 1]; + int font_height; + int i; + + /* + * Get the current subbook name. + */ + error_code = eb_subbook_directory(book, subbook_directory); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + goto failed; + } + + if (debug_flag) { + fprintf(stderr, "%s: debug: subbook %s:\n", invoked_name, + subbook_directory); + } + + for (i = 0; i < font_count; i++) { + /* + * Set the current font to `font_list[i]'. + */ + if (!eb_have_font(book, font_list[i])) + continue; + error_code = eb_set_font(book, font_list[i]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s, font=%d\n", invoked_name, + eb_error_message(error_code), subbook_directory, i); + goto failed; + } + + /* + * Output debug information. + */ + if (debug_flag) { + fprintf(stderr, "%s: debug: font %d\n", invoked_name, + font_list[i]); + } + + /* + * Make a directory for the font. + */ + eb_font_height2(font_list[i], &font_height); + sprintf(font_path, F_("%s/%d", "%s\\%d"), subbook_path, font_height); + if (make_missing_directory(font_path, 0777 ^ get_umask()) < 0) + goto failed; + + /* + * Make font-files with the size. + */ + if (make_subbook_size_fonts(book, font_path, image_list, image_count) + < 0) + goto failed; + } + + return 0; + + /* + * An error occurs... + */ + failed: + fflush(stderr); + return -1; +} + + +/* + * Make font-files of the current font. + */ +static int +make_subbook_size_fonts(EB_Book *book, const char *font_path, + Image_Format_Code *image_list, int image_count) +{ + EB_Error_Code error_code; + char subbook_directory[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + int i; + + /* + * Get the current subbook name. + */ + error_code = eb_subbook_directory(book, subbook_directory); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + goto failed; + } + + for (i = 0; i < image_count; i++) { + /* + * Output debug information. + */ + if (debug_flag) { + fprintf(stderr, "%s: debug: image %s\n", invoked_name, + image_formats[image_list[i]].name); + } + + /* + * Make font-files as the image format. + */ + if (make_subbook_size_image_fonts(book, font_path, image_list[i]) < 0) + goto failed; + } + + return 0; + + /* + * An error occurs... + */ + failed: + fflush(stderr); + return -1; +} + + +/* + * Make font-files of the current font as the image format. + */ +static int +make_subbook_size_image_fonts(EB_Book *book, const char *image_path, + Image_Format_Code image) +{ + EB_Error_Code error_code; + char subbook_directory[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + char type_path[PATH_MAX + 1]; + char file_name[PATH_MAX + 1]; + char bitmap_data[EB_SIZE_WIDE_FONT_48]; + char image_data[EB_SIZE_FONT_IMAGE]; + size_t image_size; + int image_width; + int image_height; + int character_number; + + /* + * Get the current subbook name. + */ + error_code = eb_subbook_directory(book, subbook_directory); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + goto failed; + } + + /* + * Get the current font size. + */ + error_code = eb_font_height(book, &image_height); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s\n", invoked_name, + eb_error_message(error_code), subbook_directory); + goto failed; + } + + /* + * Make the bitmap files of narrow fonts. + */ + if (eb_have_narrow_font(book)) { + /* + * Get narrow font information. + */ + error_code = eb_narrow_font_width(book, &image_width); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s, font=%d, type=narrow\n", + invoked_name, eb_error_message(error_code), subbook_directory, + image_height); + goto failed; + } + error_code = eb_narrow_font_start(book, &character_number); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s, font=%d, type=narrow\n", + invoked_name, eb_error_message(error_code), subbook_directory, + image_height); + goto failed; + } + + /* + * Make a directory for the narrow font. + */ + sprintf(type_path, F_("%s/narrow", "%s\\narrow"), image_path); + if (make_missing_directory(type_path, 0777 ^ get_umask()) < 0) + goto failed; + + while (0 <= character_number) { + /* + * Output debug information. + */ + if (debug_flag) { + fprintf(stderr, "%s: debug: character %04x\n", invoked_name, + character_number); + } + + /* + * Generate a bitmap file for the character `character_number'. + */ + sprintf(file_name, F_("%s/%04x.%s", "%s\\%04x.%s"), + type_path, character_number, image_formats[image].suffix); + error_code = eb_narrow_font_character_bitmap(book, + character_number, bitmap_data); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s, font=%d, type=narrow, \ +character=0x%04x\n", + invoked_name, eb_error_message(error_code), + subbook_directory, image_height, character_number); + goto failed; + } + + error_code = (image_formats[image].function)(bitmap_data, + image_width, image_height, image_data, &image_size); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s, font=%d, type=narrow, \ +character=0x%04x\n", + invoked_name, eb_error_message(error_code), + subbook_directory, image_height, character_number); + goto failed; + } + if (save_image_file(file_name, image_data, image_size) < 0) + goto failed; + + /* + * Toward next charahacter. + */ + eb_forward_narrow_font_character(book, 1, &character_number); + } + } + + /* + * Make the bitmap files of wide fonts. + */ + if (eb_have_wide_font(book)) { + /* + * Get wide font information. + */ + error_code = eb_wide_font_width(book, &image_width); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s, font=%d, type=wide\n", + invoked_name, eb_error_message(error_code), subbook_directory, + image_height); + goto failed; + } + error_code = eb_wide_font_start(book, &character_number); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s, font=%d, type=wide\n", + invoked_name, eb_error_message(error_code), subbook_directory, + image_height); + goto failed; + } + + /* + * Make a directory for the wide font. + */ + sprintf(type_path, F_("%s/wide", "%s\\wide"), image_path); + if (make_missing_directory(type_path, 0777 ^ get_umask()) < 0) + goto failed; + + while (0 <= character_number) { + /* + * Output debug information. + */ + if (debug_flag) { + fprintf(stderr, "%s: debug: character %04x\n", invoked_name, + character_number); + } + + /* + * Generate a bitmap file for the character `character_number'. + */ + sprintf(file_name, F_("%s/%04x.%s", "%s\\%04x.%s"), + type_path, character_number, image_formats[image].suffix); + error_code = eb_wide_font_character_bitmap(book, character_number, + bitmap_data); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s, font=%d, type=wide, \ +character=0x%04x\n", + invoked_name, eb_error_message(error_code), + subbook_directory, image_height, character_number); + goto failed; + } + + error_code = (image_formats[image].function)(bitmap_data, + image_width, image_height, image_data, &image_size); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: subbook=%s, font=%d, type=narrow, \ +character=0x%04x\n", + invoked_name, eb_error_message(error_code), + subbook_directory, image_height, character_number); + goto failed; + } + if (save_image_file(file_name, image_data, image_size) < 0) + goto failed; + + /* + * Toward next charahacter. + */ + eb_forward_wide_font_character(book, 1, &character_number); + } + } + + return 0; + + /* + * An error occurs... + */ + failed: + fflush(stderr); + return -1; +} + + +/* + * Save an image file. + */ +static int +save_image_file(const char *file_name, const char *image_data, + size_t image_size) +{ + int file = -1; + +#ifdef O_CREAT + file = open(file_name, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, + 0666 ^ get_umask()); +#else + file = creat(file_name, 0666 ^ get_umask()); +#endif + + if (file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } + if (write(file, image_data, image_size) != image_size) { + fprintf(stderr, _("%s: failed to write to the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } + if (close(file) < 0) { + fprintf(stderr, _("%s: failed to write to the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + file = -1; + goto failed; + } + + return 0; + + /* + * An error occurs... + */ + failed: + if (0 <= file && close(file) < 0) { + fprintf(stderr, _("%s: failed to close the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + } + + return -1; +} + diff --git a/lib/ebu/ebfont/ebufont b/lib/ebu/ebfont/ebufont new file mode 100644 index 0000000..939ff15 --- /dev/null +++ b/lib/ebu/ebfont/ebufont @@ -0,0 +1,210 @@ +#! /bin/bash + +# ebufont - temporary wrapper script for .libs/ebufont +# Generated by libtool (GNU libtool) 2.4.6 +# +# The ebufont program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.6' + notinst_deplibs=' ../ebu/libebu.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "ebufont:ebufont:$LINENO: libtool wrapper (GNU libtool) 2.4.6" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "ebufont:ebufont:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "ebufont:ebufont:$LINENO: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program='ebufont' + progdir="$thisdir/.libs" + + + if test -f "$progdir/$program"; then + # Add our own library path to LD_LIBRARY_PATH + LD_LIBRARY_PATH="/mnt/d/files/projects/ebclient/lib/ebu/ebu/.libs:$LD_LIBRARY_PATH" + + # Some systems cannot cope with colon-terminated LD_LIBRARY_PATH + # The second colon is a workaround for a bug in BeOS R4 sed + LD_LIBRARY_PATH=`$ECHO "$LD_LIBRARY_PATH" | /usr/bin/sed 's/::*$//'` + + export LD_LIBRARY_PATH + + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/lib/ebu/ebinfo/.deps/ebinfo.Po b/lib/ebu/ebinfo/.deps/ebinfo.Po new file mode 100644 index 0000000..fe9595f --- /dev/null +++ b/lib/ebu/ebinfo/.deps/ebinfo.Po @@ -0,0 +1,245 @@ +ebinfo.o: ebinfo.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h ../ebu/eb.h ../ebu/defs.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h ../ebu/sysdefs.h \ + ../ebu/zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/booklist.h ../libebutils/getopt.h \ + ../libebutils/ebutils.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/libintl.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +../ebu/eb.h: + +../ebu/defs.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/booklist.h: + +../libebutils/getopt.h: + +../libebutils/ebutils.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: diff --git a/lib/ebu/ebinfo/.libs/ebuinfo b/lib/ebu/ebinfo/.libs/ebuinfo new file mode 100644 index 0000000000000000000000000000000000000000..0ae1bcf527351fc976665e0c670894b6b735da05 GIT binary patch literal 101744 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 Sc70^lp(C2I5ULO=TK@-pU)rAl literal 0 HcmV?d00001 diff --git a/lib/ebu/ebinfo/Makefile b/lib/ebu/ebinfo/Makefile new file mode 100644 index 0000000..d4dcd8a --- /dev/null +++ b/lib/ebu/ebinfo/Makefile @@ -0,0 +1,522 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# ebinfo/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +bin_PROGRAMS = ebuinfo$(EXEEXT) +subdir = ebinfo +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_ebuinfo_OBJECTS = ebinfo.$(OBJEXT) +ebuinfo_OBJECTS = $(am_ebuinfo_OBJECTS) +am__DEPENDENCIES_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(ebuinfo_SOURCES) +DIST_SOURCES = $(ebuinfo_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu/ebinfo +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu/ebinfo +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +LIBEB = $(top_builddir)/ebu/libebu.la +LIBEBUTILS = $(top_builddir)/libebutils/libebutils.a +ebuinfo_SOURCES = ebinfo.c +ebuinfo_LDADD = $(LIBEBUTILS) $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) $(ICONVLIBS) +ebuinfo_DEPENDENCIES = $(LIBEBUTILS) $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) \ + $(ICONVDEPS) + +INCLUDES = -I../libebutils -I$(top_srcdir)/libebutils -I$(top_srcdir) \ + $(INTLINCS) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebinfo/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebinfo/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +ebuinfo$(EXEEXT): $(ebuinfo_OBJECTS) $(ebuinfo_DEPENDENCIES) + @rm -f ebuinfo$(EXEEXT) + $(LINK) $(ebuinfo_OBJECTS) $(ebuinfo_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/ebinfo.Po + +.c.o: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebinfo/Makefile.am b/lib/ebu/ebinfo/Makefile.am new file mode 100644 index 0000000..98e0e53 --- /dev/null +++ b/lib/ebu/ebinfo/Makefile.am @@ -0,0 +1,14 @@ +localedir = $(datadir)/locale + +LIBEB = $(top_builddir)/ebu/libebu.la +LIBEBUTILS = $(top_builddir)/libebutils/libebutils.a + +bin_PROGRAMS = ebuinfo + +ebuinfo_SOURCES = ebinfo.c +ebuinfo_LDADD = $(LIBEBUTILS) $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) $(ICONVLIBS) +ebuinfo_DEPENDENCIES = $(LIBEBUTILS) $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) \ + $(ICONVDEPS) + +INCLUDES = -I../libebutils -I$(top_srcdir)/libebutils -I$(top_srcdir) \ + $(INTLINCS) diff --git a/lib/ebu/ebinfo/Makefile.in b/lib/ebu/ebinfo/Makefile.in new file mode 100644 index 0000000..0c042a4 --- /dev/null +++ b/lib/ebu/ebinfo/Makefile.in @@ -0,0 +1,522 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = ebuinfo$(EXEEXT) +subdir = ebinfo +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_ebuinfo_OBJECTS = ebinfo.$(OBJEXT) +ebuinfo_OBJECTS = $(am_ebuinfo_OBJECTS) +am__DEPENDENCIES_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(ebuinfo_SOURCES) +DIST_SOURCES = $(ebuinfo_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +LIBEB = $(top_builddir)/ebu/libebu.la +LIBEBUTILS = $(top_builddir)/libebutils/libebutils.a +ebuinfo_SOURCES = ebinfo.c +ebuinfo_LDADD = $(LIBEBUTILS) $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) $(ICONVLIBS) +ebuinfo_DEPENDENCIES = $(LIBEBUTILS) $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) \ + $(ICONVDEPS) + +INCLUDES = -I../libebutils -I$(top_srcdir)/libebutils -I$(top_srcdir) \ + $(INTLINCS) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebinfo/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebinfo/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +ebuinfo$(EXEEXT): $(ebuinfo_OBJECTS) $(ebuinfo_DEPENDENCIES) + @rm -f ebuinfo$(EXEEXT) + $(LINK) $(ebuinfo_OBJECTS) $(ebuinfo_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebinfo.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebinfo/ebinfo.c b/lib/ebu/ebinfo/ebinfo.c new file mode 100644 index 0000000..c3a92f5 --- /dev/null +++ b/lib/ebu/ebinfo/ebinfo.c @@ -0,0 +1,631 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include + +#include "ebu/eb.h" +#include "ebu/error.h" +#include "ebu/font.h" +#include "ebu/booklist.h" + +#ifdef HAVE_GETOPT_LOG +#include +#else +#include "getopt.h" +#endif +#include "ebutils.h" + +#ifdef ENABLE_NLS +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#endif + +/* + * Tricks for gettext. + */ +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define _(string) (string) +#define N_(string) (string) +#endif + +/* + * Unexported functions. + */ +static void output_error_message(EB_Error_Code error_code); +static EB_Error_Code output_booklist(const char *url); +static EB_Error_Code output_information(const char *book_path, int multi_flag); +static EB_Error_Code output_multi_information(EB_Book *book); +static void output_help(void); + +/* + * Program name and version. + */ +static const char *program_name = "ebinfo"; +static const char *program_version = VERSION; +static const char *invoked_name; + +/* + * Command line options. + */ +static const char *short_options = "hlmv"; +static struct option long_options[] = { + {"help", no_argument, NULL, 'h'}, + {"book-list", no_argument, NULL, 'l'}, + {"multi-search", no_argument, NULL, 'm'}, + {"version", no_argument, NULL, 'v'}, + {NULL, 0, NULL, 0} +}; + +/* + * Default output directory + */ +#define DEFAULT_BOOK_DIRECTORY "." + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + int ch; + char *book_path; + int booklist_flag; + int multi_flag; + + invoked_name = argv[0]; + + /* + * Initialize locale data. + */ +#ifdef ENABLE_NLS +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain(TEXT_DOMAIN_NAME, LOCALEDIR); + textdomain(TEXT_DOMAIN_NAME); +#endif + + /* + * Parse command line options. + */ + multi_flag = 0; + booklist_flag = 0; + + for (;;) { + ch = getopt_long(argc, argv, short_options, long_options, NULL); + if (ch == -1) + break; + switch (ch) { + case 'h': + /* + * Option `-h'. Display help message, then exit. + */ + output_help(); + exit(0); + + case 'l': + /* + * Option `-l'. Display book list on an EBNET server. + */ + booklist_flag = 1; + break; + + case 'm': + /* + * Option `-m'. Also output multi-search information. + */ + multi_flag = 1; + break; + + case 'v': + /* + * Option `-v'. Display version number, then exit. + */ + output_version(program_name, program_version); + exit(0); + + default: + output_try_help(invoked_name); + exit(1); + } + } + + /* + * Check the number of rest arguments. + */ + if (1 < argc - optind) { + fprintf(stderr, _("%s: too many arguments\n"), invoked_name); + output_try_help(invoked_name); + exit(1); + } + + /* + * Output information about the book. + */ + if (argc == optind) + book_path = DEFAULT_BOOK_DIRECTORY; + else + book_path = argv[optind]; + + if (booklist_flag) + error_code = output_booklist(book_path); + else + error_code = output_information(book_path, multi_flag); + if (error_code != EB_SUCCESS) + exit(1); + + return 0; +} + + +/* + * Output an error message to standard error. + */ +static void +output_error_message(EB_Error_Code error_code) +{ + fprintf(stderr, "%s: %s\n", invoked_name, eb_error_message(error_code)); + fflush(stderr); +} + + +/* + * Output a list of books that an EBNET server provides. + */ +static EB_Error_Code +output_booklist(const char *url) +{ + EB_BookList booklist; + EB_Error_Code error_code; + int book_count; + char *name; + char *title; + size_t name_length; + int i; + + error_code = eb_initialize_library(); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return error_code; + } + + eb_initialize_booklist(&booklist); + + error_code = eb_bind_booklist(&booklist, url); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return error_code; + } + + printf("%-20s %s\n", _("Name"), _("Title")); + + error_code = eb_booklist_book_count(&booklist, &book_count); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return error_code; + } + + for (i = 0; i < book_count; i++) { + error_code = eb_booklist_book_name(&booklist, i, &name); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + break; + } + error_code = eb_booklist_book_title(&booklist, i, &title); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + break; + } + + name_length = strlen(name); + + printf("%-20s ", name); + fputs_eucjp_to_locale(title, stdout); + if (4 < name_length && strcmp(name + name_length - 4, ".app") == 0) + fputs(" (appendix)", stdout); + fputc('\n', stdout); + } + + eb_finalize_booklist(&booklist); + eb_finalize_library(); + + return EB_SUCCESS; +} + + +/* + * Output information about the book at `path'. + * If `multi_flag' is enabled, multi-search information are also output. + */ +static EB_Error_Code +output_information(const char *book_path, int multi_flag) +{ + EB_Book book; + EB_Error_Code return_code = EB_SUCCESS; + EB_Error_Code error_code; + EB_Disc_Code disc_code; + EB_Character_Code character_code; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + EB_Font_Code font_list[EB_MAX_FONTS]; + char title[EB_MAX_TITLE_LENGTH + 1]; + char directory[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + int font_height, font_start, font_end; + int subbook_count; + int font_count; + int i, j; + + /* + * Start to use a book. + */ + error_code = eb_initialize_library(); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + goto failed; + } + eb_initialize_book(&book); + error_code = eb_bind(&book, book_path); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + goto failed; + } + + /* + * Output disc type. + */ + error_code = eb_disc_type(&book, &disc_code); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + goto failed; + } + printf(_("disc type: ")); + if (disc_code == EB_DISC_EB) + printf("EB/EBG/EBXA/EBXA-C/S-EBXA\n"); + else + printf("EPWING\n"); + + /* + * Output character code. + */ + error_code = eb_character_code(&book, &character_code); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + goto failed; + } + printf(_("character code: ")); + switch (character_code) { + case EB_CHARCODE_ISO8859_1: + printf("ISO 8859-1\n"); + break; + case EB_CHARCODE_JISX0208: + printf("JIS X 0208\n"); + break; + case EB_CHARCODE_JISX0208_GB2312: + printf("JIS X 0208 + GB 2312\n"); + break; + case EB_CHARCODE_UTF8: + printf("UTF-8\n"); + break; + default: + printf(_("unknown\n")); + break; + } + + /* + * Output the number of subbooks in the book. + */ + error_code = eb_subbook_list(&book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + goto failed; + } + printf(_("the number of subbooks: %d\n\n"), subbook_count); + + /* + * Output information about each subbook. + */ + for (i = 0; i < subbook_count; i++) { + printf(_("subbook %d:\n"), i + 1); + + /* + * Output a title of the subbook. + */ + error_code = eb_subbook_title2(&book, subbook_list[i], title); + if (error_code != EB_SUCCESS) { + return_code = error_code; + continue; + } + fputs(_(" title: "), stdout); + fputs_eucjp_to_locale(title, stdout); + fputc('\n', stdout); + + /* + * Output a directory name of the subbook. + */ + error_code = eb_subbook_directory2(&book, subbook_list[i], directory); + if (error_code != EB_SUCCESS) { + return_code = error_code; + continue; + } + printf(_(" directory: %s\n"), directory); + + /* + * Set the current subbook to `i'. + */ + error_code = eb_set_subbook(&book, subbook_list[i]); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + continue; + } + + /* + * Output supported methods. + */ + printf(_(" search methods: ")); + if (eb_have_word_search(&book)) + fputs(_("word "), stdout); + if (eb_have_endword_search(&book)) + fputs(_("endword "), stdout); + if (eb_have_keyword_search(&book)) + fputs(_("keyword "), stdout); + if (eb_have_cross_search(&book)) + fputs(_("cross "), stdout); + if (eb_have_multi_search(&book)) + fputs(_("multi "), stdout); + if (eb_have_menu(&book)) + fputs(_("menu "), stdout); + if (eb_have_image_menu(&book)) + fputs(_("image-menu "), stdout); + if (eb_have_copyright(&book)) + fputs(_("copyright "), stdout); + if (eb_have_color_chart(&book)) + fputs(_("color-chart "), stdout); + fputc('\n', stdout); + + /* + * Output a font list. + */ + fputs(_(" font sizes: "), stdout); + error_code = eb_font_list(&book, font_list, &font_count); + if (error_code != EB_SUCCESS) { + fputc('\n', stdout); + output_error_message(error_code); + return_code = error_code; + } else { + for (j = 0; j < font_count; j++) { + error_code = eb_font_height2(font_list[j], &font_height); + if (error_code == EB_SUCCESS) + printf("%d ", font_height); + else { + output_error_message(error_code); + return_code = error_code; + } + } + fputc('\n', stdout); + } + + /* + * Output character range of the narrow font. + */ + fputs(_(" narrow font characters: "), stdout); + if (eb_have_narrow_font(&book)) { + do { + error_code = eb_set_font(&book, font_list[0]); + if (error_code != EB_SUCCESS) + break; + error_code = eb_narrow_font_start(&book, &font_start); + if (error_code != EB_SUCCESS) + break; + error_code = eb_narrow_font_end(&book, &font_end); + if (error_code != EB_SUCCESS) + break; + } while (0); + + if (error_code == EB_SUCCESS) + printf("0x%04x -- 0x%04x\n", font_start, font_end); + else { + fputc('\n', stdout); + output_error_message(error_code); + return_code = error_code; + } + } else { + fputc('\n', stdout); + } + + /* + * Output character range of the wide font. + */ + printf(_(" wide font characters: ")); + if (eb_have_wide_font(&book)) { + do { + error_code = eb_set_font(&book, font_list[0]); + if (error_code != EB_SUCCESS) + break; + error_code = eb_wide_font_start(&book, &font_start); + if (error_code != EB_SUCCESS) + break; + error_code = eb_wide_font_end(&book, &font_end); + if (error_code != EB_SUCCESS) + break; + } while (0); + + if (error_code == EB_SUCCESS) + printf("0x%04x -- 0x%04x\n", font_start, font_end); + else { + fputc('\n', stdout); + output_error_message(error_code); + return_code = error_code; + } + } else { + fputc('\n', stdout); + } + + if (multi_flag) { + error_code = output_multi_information(&book); + if (error_code != EB_SUCCESS) + return_code = error_code; + } + fputc('\n', stdout); + } + fflush(stdout); + + /* + * End to use the book. + */ + eb_finalize_book(&book); + eb_finalize_library(); + + return return_code; + + /* + * An error occurs... + */ + failed: + fflush(stdout); + fflush(stderr); + eb_finalize_book(&book); + eb_finalize_library(); + + return return_code; +} + +/* + * Output information about multi searches. + */ +static EB_Error_Code +output_multi_information(EB_Book *book) +{ + EB_Error_Code return_code = EB_SUCCESS; + EB_Error_Code error_code; + EB_Multi_Search_Code multi_list[EB_MAX_MULTI_SEARCHES]; + int multi_count; + int entry_count; + char search_title[EB_MAX_MULTI_TITLE_LENGTH + 1]; + char entry_label[EB_MAX_MULTI_LABEL_LENGTH + 1]; + int i, j; + + /* + * Get a list of mutli search codes. + */ + error_code = eb_multi_search_list(book, multi_list, &multi_count); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + multi_count = 0; + } + + /* + * Output information. + */ + for (i = 0; i < multi_count; i++) { + printf(_(" multi search %d:\n"), i + 1); + error_code = eb_multi_entry_count(book, multi_list[i], &entry_count); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + continue; + } + + error_code = eb_multi_title(book, multi_list[i], search_title); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + continue; + } + fputs(_(" title: "), stdout); + fputs_eucjp_to_locale(search_title, stdout); + fputc('\n', stdout); + + for (j = 0; j < entry_count; j++) { + error_code = eb_multi_entry_label(book, multi_list[i], j, + entry_label); + if (error_code != EB_SUCCESS) { + output_error_message(error_code); + return_code = error_code; + continue; + } + + printf(_(" label %d: "), j + 1); + fputs_eucjp_to_locale(entry_label, stdout); + fputc('\n', stdout); + + fputs(_(" candidates: "), stdout); + if (eb_multi_entry_have_candidates(book, multi_list[i], j)) + fputs(_("exist\n"), stdout); + else + fputs(_("not-exist\n"), stdout); + } + } + + fflush(stdout); + + return return_code; +} + + +/* + * Output help message to stdandard out. + */ +static void +output_help(void) +{ + printf(_("Usage: %s [option...] [book-directory]\n"), + program_name); + printf(_("Options:\n")); + printf(_(" -h --help display this help, then exit\n")); + printf(_(" -l --book-list output a list of books on an EBENT server\n")); + printf(_(" -m --multi-search also output multi-search information\n")); + printf(_(" -v --version display version number, then exit\n")); + printf(_("\nArgument:\n")); + printf(_(" book-directory top directory of a CD-ROM book\n")); + printf(_(" (default: %s)\n"), + DEFAULT_BOOK_DIRECTORY); + printf(_("\nReport bugs to %s.\n"), MAILING_ADDRESS); + fflush(stdout); +} + + diff --git a/lib/ebu/ebinfo/ebuinfo b/lib/ebu/ebinfo/ebuinfo new file mode 100644 index 0000000..1e9db27 --- /dev/null +++ b/lib/ebu/ebinfo/ebuinfo @@ -0,0 +1,210 @@ +#! /bin/bash + +# ebuinfo - temporary wrapper script for .libs/ebuinfo +# Generated by libtool (GNU libtool) 2.4.6 +# +# The ebuinfo program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.6' + notinst_deplibs=' ../ebu/libebu.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "ebuinfo:ebuinfo:$LINENO: libtool wrapper (GNU libtool) 2.4.6" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "ebuinfo:ebuinfo:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "ebuinfo:ebuinfo:$LINENO: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program='ebuinfo' + progdir="$thisdir/.libs" + + + if test -f "$progdir/$program"; then + # Add our own library path to LD_LIBRARY_PATH + LD_LIBRARY_PATH="/mnt/d/files/projects/ebclient/lib/ebu/ebu/.libs:$LD_LIBRARY_PATH" + + # Some systems cannot cope with colon-terminated LD_LIBRARY_PATH + # The second colon is a workaround for a bug in BeOS R4 sed + LD_LIBRARY_PATH=`$ECHO "$LD_LIBRARY_PATH" | /usr/bin/sed 's/::*$//'` + + export LD_LIBRARY_PATH + + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/lib/ebu/ebrefile/.deps/ebrefile.Po b/lib/ebu/ebrefile/.deps/ebrefile.Po new file mode 100644 index 0000000..3c2976d --- /dev/null +++ b/lib/ebu/ebrefile/.deps/ebrefile.Po @@ -0,0 +1,372 @@ +ebrefile.o: ebrefile.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h \ + ../ebu/zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/build-post.h ../ebu/defs.h ../libebutils/ebutils.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/yesno.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/ebutils.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/yesno.h: diff --git a/lib/ebu/ebrefile/.libs/eburefile b/lib/ebu/ebrefile/.libs/eburefile new file mode 100644 index 0000000000000000000000000000000000000000..1ec507f1fc8d70a61f27ea307a5f9939ea97639a GIT binary patch literal 97616 zcmeFad3;nw7C(A#ce>Nv^i2ooPB(jloe(fULP$thG=U^^G(ZqgRFpM9G$fdG5ELPr z#IYwv!EJOz#eE$H#{qE}j4a|VuH!a}3o{*YLELb`yzjT_-ln^U%=>-b=l$_MpT~vj zTj$g{r%s((Z{2$;>q;xiOsc9FmsvSQAyk%;=xX1F*Hbrw~dQnaMeT!ZQzfcNkx}G!_`6_k3N}bQRr|R}J z?uI=nj-f!eXX4$DG+uu3t0;+lb9BDMdx=hO+?fZjnFm6P|DWVnsq?wdl5!I7S4*^F z+>QKZfRA?hKfQEwDre~Vbyp7^dby1|+X=5xHPs9A$Be33Jffz$wsF;nRR#GY^2dy9 zs2e$2q*E{E!RnhbZMK4H=^#!QC+fnj!%VLp^i&+8e(Lpl)vL>`o8KPV@z_tj3JIT2K8+;1% z^dG0Z#of?<)=jxy>IUE1jhs8W!EfzGj=3B9h27Zy{BH1z2y1}pSMvlK5`o-PoGaPt7LgKZ*8~JB;BY#{s^y9jr zKc^e|U^nw=c+a{LK$y7YXD67sFl@wNo|BRW1c zfnLEpQMIs<6GP5eWnTHLsq+?B)mJU8ZU|M?&zd^9rmnVX)`EpKRm!}1OPANx&T9xQ zs1MDXCrOV>Sha9oRegP3{k-K>4GjyHRw+PK*H(wB7t~Z=QZ)}5)-R}EP3)5D+Qs;( zshU^2V7Z`MRJVLZT|?Ep6$?VkqDYYa7i&Y~!i9Bp7tUK;U0<~*R9C-xv=q4N80)-- z#wAOtR}pVe*PvJ|@ruy0`l*m$eEm{z&uB%lR)j$!YrlG3p zLWRUi-HNJOGA|-qzOrOVO=H6{r6E+mXvJ!MctUPN^uLG!*wL%2G%5CQgLl!VCAxv+$OAn7>qQ=q%5YX2=X7$xK#Z64tK7d{0NPG ztL@~xi7dEO#Iw=YjP+Zn57RBmT}UU+U0tnF!_7J@`At!NW1Ve`BiURa;R@>OXaj#p zf4;G;km&~Afc**hcPb@aW&-{*9bc4y|5C@#Pr!ex@p=`C)K#^TC>b|2pXk*TgV&pwNV_TqZ>-swus#NF z%sIs09D`@x#Ewmk-q1|PjTV(>kpSVeh02Jei)?~B2s zqeQQFWAG_atfK6X!MkGckr;ex4E|6IzGn>nNDMx1p4ZzCZO}W0-WG%BbCPkT#^5~$ z5_ew=J}n0CkHLFm@R>1qUkpAw2Hz(JUl4=GY9x9U#o+rzu^3Nc@WvhmlPhEJ17qmt z#NY?T;OEES{W17uG5EnT_!TkulVb3zV(@_&d{YcQJqCYO3_c?Uzdi;(GzNcj3_ddk zzbOVkEC&BT44!LgHt)9W z5~k_On>0;P4tJ$b#?3WIA^kF@9Pa$2tE+3hfVtsvxbyWW%#D`AozF&LZm=Bgd^8Gk zW94w?ol%$@Du+8aL}6~E9PYe43Ul+|aOXu)m>VaDI~PP@ZkQbIoDqe&5q7w;m*NPm>VUBJ9|dq6alMI*d^d^e>cj@4H1+-3Uea_<&VPL073bqFgHF> z{wT~150pO&bE5<0kHXyGK>4FEH#SiID9jBFls^h{BLn4+!rZ_>`J*s5E>Qj`%nb{a zKMHe$5ao};+_*U0sYYRLSRC&B_NY;Qzkol9!rY)h`J*s57E%5v%#8|^KMHe$0_Bgw z+?YW5qcArlQ2r>)jR=%K3UdPj<&VPLctH81FgF}f{wU0i29)1`(VCA|ur-$`qCEp% zetJAyl>ncY0MAZ~=(0RJNa-kJdaB>}!S0lqB(zA*uAPk>t!;L8%=#sqkI0$h~hq5%}457EvqqmtSe|fGPCjAU|U`d z3L0#i_!r*VD*|hR?KcFPKoK!xkZtW){lGJvd?H(sq3F-eM^?I8m-i4%L1xyLSBP8W zbC@HiE7E?9ZkemK6m&UV6>aGQLGmPLAr#Dnf=4VUg^(N!KUWd{G^Zod8=Qh9ho%1+ zMvUzL?HCa#z6H-QiqBZO9q|;e#ZjotXk$FZU*afSq_`xWq74)|G9TzMf)sN=0ejX# zCqrkbvoKE77!r<(7gZETaRw>0c#45>nawA~!C&JF{Tmnz%dJ8>Z2Uqz#rrW7uVN$z z#r^RV+hZs~Qbub$#Z563<6v0GSOf|b`VvTtDfIFf!sRlvags0;Pgnv%w5y|2P$V1T zka&?m<^2LwY0l>r;m(rq{$Tj0!<&QQ7lS{&5p18-6`aU!<@&>ic15XZm%Zf)6{w2v zPm#-!5$}a)nP7zgK!-P%hhHxL>8fS|8hV7n~rE330sC6Gw zD#D-aVA~FcccL~whww-jemZ-gPJ)Xpr-LN?#ju^tU#PBY%WaBM7;&{6z{)DvHfC3_ z{pmmxX89+nTciMNu5B#>)4c!V38jsv5xg7(1Sd6)CwPSpPHW5}*sO!4jROd_=-{lz zl%}Txt$@b4S}sAh!S+Xl;9&Th$f;Nep_@0q&;^Kgdp`IR){-45hTS$eL>JqOVL?<{ zMf*L0GoW)MkL7O9+sp*69wPyXxQz%dA0xdb;%Xwe9*dZOa6OK}3H=kOzokvccvr@c9HMkWF;jE+IBB8=v+CJ>BlCvkh; z6l4orr0@vAmcW(@y@Eg+4DStwcLl>qfyf^v^+2KI$B`a_`i6iXT2_RA7iNo;fd(3f zXK*A8|3qC-=MV{^=J6)#XmhpDa2W6d95Yve5+nF|r9?4xPzy?p(Ou!-j5xz@?H0UKD-C{UUfC|eI3itVB3Vij$%N0+mN+r zsSYrNEq|Y^D8=F3Bz_plqO+i)pG139!rxSce~b)a!J3bxx>}zAt4IL4B>bNe*S1Fj zD?p6M(}9Z+iIj;VmIMkU!=sQ`{Okc+v1{AjoEO41fua&MQW9PqC<%sNDQR0Am;(ch zp+R!# z*9gm%gtHz9wt)u>$nX8ggCGkQ?sB!>PJ63!spTHEIQ&&%O<;`cn*T5(oxbP^et1i! z62bJYtMxGmr_~kAe5?sj&KJ5!9bWzcUH)P{A+rLVZ2|RT52!#BJ`aZ3;n#sC%0x3a zKgSX5$6$DFpt2(TT?IrgJLnCzPxzoB{B^K-ms+9z6qyXcpbZp6olkMNX+w(<1SR1K4|M*Hsj!Vkhows*4hU*1h|Gj0$7a7hZ0l_!ew;)x zyCT~_Q_)s|Ru$ffQFkxU<>7ZRLgsXcF)m^OH;VH$=+FWp|Hhq7EAo%;8400>!P>#d z4wSI-2Xxyddr^ZJghnczLpUmdKw9QkNKDv@I-A+kn+C!Q+Q+bL8) zQ>Xn7UKJ^nvaXP_a^qxG>9P)hrlQRmh>H5Yn3+UH<$)RH8Hg-9b79lc@b{5Vz7skQ z7jj2@00v|5e@05h9MrDMg{aOqVP;u&^xyTUW7+plgG`QALokW7wFDkOLb`HDQ6?%) zn3`I9h*_*85Dd1>3fSb-C=3|3%tw}y9)i8m3)bgR$uX=glhJ++mG1G=gs^2UnSO-o z6=(#0S%1mE8PgN&7Gx>sq1%hmBib_9?owSX{KB|2=PP!z%o5Zh`sGH^`_ON*E5ct@ zfWgMjn<{(m7bS%UE?b<_aj*wQCAE0`tk&N`#l?kt*Bvr++kTSNE$>f7(Cr-PhPrG( z+?X$e?ImA9!EYSiAFyRI6}7LNg63`UWc z4g+HEo&b(=^mXTip!rRTkj_ppg9*(?Os>{vp%L=i2LuzIXM*e$ z69RiJrKc!j5RYtvJ`~gdA;G zcy94|#pf5#+l5L$1+0d(r(rh$E%Uo?ndw9)QVcVr3BbCiN&ELeLS&>xQ95U%FHa5s zggP$`|GNVAwH=&fjC+{DP>?BAJ_!k*0=!@8nYk)*)A72pHvRU4wM0->m8wpJ?1u|sk z93iS^O~5ba&MuThp9I@cCy_g_J`w|&m@0bz}yfV_Bs~cLC!BfmWN+?g5QIE7ks!P`~}VO zD`e1qE%VX3I+ubT+D(fQbq&jmv{z?Qw>Q= zMjDGreSbLTtMc&c=Lf@|2Ae-WR5`1n-I9;>3ZDL-!Nw}~34-A4@+`zB?OJ7t4E;(p@Lm%~z5q~%K?;x>pdW?D1^j5Qxf*)2#Yp4&MU(2_)XVn09pOECPc zoc`PMMp9@;WIB1<^IilbQh=HuQP0MphDp>DF{m_&dN2lMmZ@B@_%-1X5%6zwj`T)6sMamfZs}KA@4bAb&{5Dkn9# zD6{!!j_X=F3%RzLTRL1V_aUt!{L6$aSIe!4M(NvEJkuWZ7d8Ff*EQ)`uC0U3JJqWu z;d$FUAuF`Hr6bf>QTS=&yU&#b#zsf0p(qmScoPfDRq@pD5ftuGd@qYS7Gol6=CCaC zt-wZ>AiiA;)fgTNFo#bNyLhhF&!}?q?qKZn9sULF^*NJ*{6j4rjel(YYHf()lnpcT zLATy+i!r56ZJ%Z@Df}vQaz*%647F3kuL}EP0{H~!wL_Z5V?B8g%N{Jot~B}|9|bDf zE51^uwU4o3I_HkZlui}|hHF;TgD=nutzWIXnhPr1!4Hig`qF-)&<_h*6xx`PpTuXp zvS}-_#18@y3Bfj^#GQ7OJ8~nq;_ACR{G-_N42F-+#O9`rvm2|K748qV&kFR%vw2K) zV*-S!VAh8tTqHG4fx7)mIYVs>e1nwMj$>q&^u^w3y=)Z2Ccr=m^(c8I)8f?2-7gI&3pGj@A9`UpC zZQ-5=UyN*pLG9QGGd27oGAwC#I*Nxy3g0OS?<{sre;xLyShRCm zd(y6{ZMLalOyE5Vk2Jnn+`L;YZ{B4qEj-Y;S(blSarl*kO~>SM{FME-Jp4oPtm5!* zvxDKcXR;TUw0V}mQ2{I2Mf6v|#XgKShlW;)QaJWnCLsZ)#jHHBAEMX~NJeLEJsr3< z&oE#r+Vd{K+qZ+4M*DaBM0+2!ucUvY$?`Gk1F*Zcl`74VlOH(hYIzx8+kh8yDIkL1 z=3lWleLsF5%?nR`y z@GaLhFLPbBXlHrb+&xOu_z{gZ*S5(jdgnTfaI1VATk_5ZZKURauGdV6Yr0Gs;c6{M z3>$vuP?YF2?UibITge_J>?s2dyE;>FJJ?UubJ&vtpmQB~WWDb|4381JgC*fZaZON; zcg++3H5$5yT+I{rG16!ad!9$6qWw~J!U$K(EUf6u+vlkzt{sPh;Q?EbGyyw*f5DRr zt(JpD#gD>tMXnq62GwsOzv=~O`J*7IREwK`Kg-oZf6}I3z1uJ}`DMpMR80`I(ZXy& zDm2b>fPz)pUitRrpB`neXc>Zj#M%zvUc7^kRGojrgBQoiw!FKtA+g=kFBR$y zxP?I2auaUoB8@rdHX&&;ASL-{#hb_gx7Z>h!T{{5wENQcp1BPN(aLpOE zm;sey2%R7-mp`?wDmo1Z@$L!JaG%eh+V-=cgfS%zr3B;Q?gChHuO)&ZnI!QRYW)a< zK+|RFI9Kaih!yYPy0Y^cJXsjyO`CQXI5CFZ!7&||P`!PIin$wBZCYg-7aAP)T!vIJ zP8?v(FM0$0`)#Ft26l2S7m&Z*@)+07Vapg2iVjnRYHOdQvS)-X6M=5abKw`}cePvv zW!eTL5jiU`LE82WY|zlQy@2gp3IaJkw3l@?A5kyHs@v#1_dze@bQsea)WBGaX31_9 zvX+Fixvxm1=w|owaoN^+J8njK*+bs_MD|60=hd(Trm7OuZ?x%`gum^yqT(dJE$`3B z=U8g%kD*gUO%=q})N{Q>P1Qkg33B(Bhu_1h7;C1>z#P-8cYMmangArP&fu~36&-SV zAyF-9(@w&@6g_I1$SsIr_}g9>f4}^gJ?dB+`4UJ`)`wsfG?p*-bEn`?bWPqi@fWxy z$n{GRaxV$zJqv{1TUz)y8Xj;zFr5W3xiDqtwXjN?<&WfR-eqEw?sN(h!cG#;F>DNa z40Ut03`Z!f+n+>9QNSK3pkZSexIfw16*`S|={cx`Hp|OdXlfDB`f@sqk>olUJ#2XvNzeza z@_xh;I?P{C(9RcWfQfe^6%G4+zN`&f&IQC#xgG?v*vk-Ov5!6N{t3f>LwPDd+<6+U1Z8}ki($mzqJ6YBCgHc0&RftQ!k#3E>HHU7MZ`SM z70-GGwooGbkQ26V!h0jnA%<6a#dCMb^-4wiMDtM8@|oq~cZz2pTe-B4_#WS`%&Zu8 zl+R$1JKjg0&mJ|02IYL9%dZF@#wI+T#EZM!AB*RO!hbb>!DpJ7$vNhUj`{6^GQ5lD zI#3cmah!cknmv~hV=Z3vL#jH(rN^&$Vl z#-$DZP#suCI+P19Syo@PIA`Qyu#Bv&8hODAAud!`=U={{cC{a;s0e2yc?juK@=RcQc<{aZa&!PDJ zBbFhIplpBQwYa)rMa_cM{?M}O20tmX5Ur~9^L!h=?!X1!I)6#|8KskFO+VvoN=j7l zSSnc(vxtN18c{T1h6aCQEl#G1=au=zal`|ei>sC_Xsijb+{2`T&}gQA=Ilw6rcXcp z+$=pJYynku(;YWGTE6%!;vgQOQx!txiL;0VM_hU$a7@1iH8lpC)D(KIr1kV#jOR4! z!APuaT)wcXKCUwS{`jhm6M$2F{Lu#EuUq0@;GbMF;*9B21(VR5?T~GnXaD$R6~?ge zI3{V3I67u|Tq=B*19?2FsA@5L5|2(|(-C!>h1!wb02LZf$77KEOX};EAD{TY=*7`Z z%;31P*R(bxE%VQw zRW_mk&29xpxnX{zH3`|1>sG9;uU@(=MEEw4n^^UhQWd&+lJS5u7h{bv=#yhc9(?eUAH=xc`RxBd>OK@x$Q> z*crM9a29r++<(jqhZts{|16 z-b)ES-_^Aba+Q?SvJ~HGt{xZLnv_%fjvJmE7y_)|pNspU7rVLyBayf$H-r!YzJvVw zg;!MKOx9GCm-3a;l+@xBTS*F-R{(qfA@mA90i>|9l+(;q#a~hFeTOWQHm{yXeID3 zqYMWr=zr@uC8bF<9fopH{lAo>tc{Sd0`<#Rh%vHCg6#tb;r74-s7SrvH6o2tC%Ym!{ zVFLIzflr);m{3;mU2Q30oe2F(P*(GF6$%2EP}p*8(2BOk_PQVM<^6!Az0Vdp62#WE z@`#>ZMTE$&oNYkZ<5+${X^*1X;~7@;x$hyzhHnAz>hZ+&|8WZ#=j$2g>9Je!O1yt3 z(NR3dPF_xV!@^cZG#!4RR7UWwUR=hxe)xz)TJX`i zU%zMT_agmXso&@8_Z9lRNx!ex@0;}d7X99#-}mYF{rX+z_J96soO_A((iO{PoO@}U za~Ye)xN**9B7T{UFwVPF69`131I{@2GBJIoPH&ulnZT~BOhj}8vpl?v^D?JQo;=Q< zIeTGaZK%;-I5Kx+_K2M9MgfiR%6FgpG-Gh5ax&Rfi){)V;-z-2T z<>c|kDAc6$kJZP7IAQ>jzG#*~-vLfu2MY$IP(E5Z7O#i`fmi)Rm5Bz3ZvKM2BIVrh6Zb`I>#b#D*vmnWAN}h>zo>{e? zDIiM$gjtg;IKUTtmeI(=G!GWEZRkT$raO_J?Ycg~u02uHw(DiQ3!|Uy21ygf$ZWf* zub|25iTI!T3Enx#-F9=I<&;y0*}-;8KN0^k@tgXJ_@_|Ywt0Yve?pm$^%wCQz+`(? z(tij|ZMz2(pKR+#B~tN&BAkbWBqHo)#NM^%*m$Fx4FBU+h;~l7BpCo`e4j*PMdr8_}=sDl<9eK*!uK-x)_>TDmh1M$^ zhe%c~fRJN56+NxT(~z^uF&f17sl8?ZXmYfo^6b-Ga{yf7=*vu}+uj60v!kA(XShBC zaFyd}3OHMP9%Sns_v6=ouJ>!C-0Vn)-RyJw{0v}|V)*(% zM>r){Q1C^Or$U>>BHHUjBN?!|oU(@@9jQ%BnN)6h$(O|}*i z3b>(7YMyp80Gneo>MM1kYYTu>$1SL@)KgMuV4ou!jHyLh6M+7XEofz_#oE;X{0=X9 zCfjL~fP?N$sii`6rsD|7PSa@gY{&WdO`X$wKS3pz?r zzSOw_nBy2uvhxJ6%z-LVQZMkb1gjK{20MhPD6C28`4noV=OB~oC~(Q5pSw;5N3TE% zd$4OSROvNZRGjN7*rnH48SlaPcoDbfBA(hiU}FPx?18-A87Z=ou140qhYA3dM1dEA zMr4g|(pmt!??@q=Ydmb`-Xvu^p^E#?p3A}Px{@^aNt%hI*(_;NNb^@gW6FU6JkvEA z(sT=|$TKVRCCId&0|Wa#XWIIr3=Vt*r+Cg0)>a%2Bzxxd;sBcDXu}ZWSu9d)jy0h5 zRC~#i>X<`ewF28euT+Ym{5rEIJ4W;v3?;Hl5{EkYrZqLnvC)4pGP@dZakkxxp z{UXJ4mry<1QNcpp?_}dGa6C)k5h1O}F_qFD71Dx^3GRJ4k^hLq5!cjo2UlPD7#|Q%Z1kmKziMHZ-Tj+L`VtNcJr0tS5aTAJ| zwp+%z6_K__#*?5-+Ve8L6gj57Ame|7q_mf0{1A$t_Ogtxhl**h$oOE!UzPD~X#Hug z$#?^LbK2`Nz88w8y&>ZZnD6^p?}5#II`FnMi)u>(v1cPpmS$Il;)>@Vl$#Lu-itW*%Xe}RZVnp?GvC)+Br`3yE6Oqn)7b$o}Sf^7i753{C_Z7WK)KP^kOWzwi= zv_+1=#@3ORuX+89hYMrKf7l1Fz zvkxOv+H@&1+p`vxl2$39F`m(A`DwEyRN!eK-sP!M!zEvo@-}4Un zu9Z-x=UY*(jHW8bAj}n zLtAfFdo34wiaL5s%1rV!Gr#Q;vZYnwPbs85At9%1JI_ccRo2mNSx0V98D+j8OPeWe z_Nug5wqn}H=J;_IUvIcW&}UBCTdIv)MxL$A?p-NT@!U$fk0g}jxtRs}SVA_><1Fj} z2{}E@tc5SsKCLJMCPPX&C?U7!4jT7M3HdzNvNFGtP=C)#Hmt8D~ zOliNXw%b_Rzq0F^OfJ@f;u%N2WRs%}d~-YtSw5#pbj&p#E&|eenq0Rctw}K*VfLS7 zJxG}v*a`w^UXv}z!BSLTKgowNkuv=fN|FsS!z4PK&9j_oC!0h=PW3G0P?Ig8O}^8Z zd!B@{Ro}JHJ8hf;|Vx@M)88JTs~^iJra3I?~fX7W8tQFBaUKKb6{TTb(xEx{uu z-)c7Sb0qki$@c>@ny(we?0btAtdh1)GW*VB%wzQ=Z{JYurI*FG_(3#{r zhs4zqT%6?N$IfXNNbu<--!rV>3nl2b_`YHzs*zxg#rGeA%O$wm;)4sGl2$9h{#M^C z)L>ej1VdJz7)V!0@MWv-Me<%G!9cR_Kg_pYf@_j}HWvS4S-`iFeXE$d#^iYlmGW+~ zFNcyZH)$^cv<>vV!%lF84i5I6Pu@S6Qa)g6z&C^7RT4}M_?}|%+ofb*!1p>Up`&kbyMy<}R@Q$s0U z2~~K$p(Xp99Y<08O5c}+2FtWc)wiEwG9)+)-%0$+EI-RS12^|0$gm^rPLu89XyNZO zxu0d>@Y zklQ@J5h{>Ss^<-Mv2haec?QvFMY8OEPZ=wsRGKN^DXDdy@GWo2O?V9WoFwWh)FA4Zq_GnF+pEx785jPBC61477GxY zoY>c!MT<|B6Z?&3y{U?+{LeCfznseNF!#)YEi>g*evgE*Jw;UfL9>U0c!BRxD!SS1 zWj|T3ijCy7$IRZ*V8nncru`?R)cu-bI-iyKpRDcB+r1c^scHW-+dhky;sbN9t&on{ zfO_vYd)BZn71O26GLrQT2)(-zUvEx}m~9%GlIL$s`qHdj0ZIt{8fHvQJ4v+_Fj1^) z0>&iGrk9qkuWOV(lh_J|s_7IXo+!Cy6HhvL^5GLW*D(T4!J`BhlNuMIoGb;_C8;u|&TcpFMR6~{RI`leW!m(5Xz;m22=Osdr0_&7lEoi0-NL`RDLlOasK&P`VB zA?EAW^G;F*v{{jMecJCp+s#EQK#ptRU}A6A$YD2U8rbpBO}#_M`VFiTim97)?3|0F zgaJ*cdi7qBr`=p>V24q{eWIjxbE+<3(2c3U_BX3kR{a*r`4_|D!1x642Mk8)0KKcd zMhOGV!>HQeX9)~4i#5hzuGLh(?5#tp6;&U*VFW&SoU{!Ls@<$6?%%2#&-UN}=+Bs> zknEri5G1bjv-Q2&*_hnZFVF!VRge+VfjR&~)!Ax}q71qLtyjI%B#ZF{g!=6g;%7?y_!wpRy*DPgNBHSFPqQmwSgR<*y- zkY{rN7$*P@jOsS|Z%iLH?lw zq98kT;BIPwXN~?8z*A_{4pl4_2IsRN&&nq$R_IR2G2{Y9MH`Z3z20OV9!UfDhqQ^? zB>qBo48O1er5gE=)hB~`QQCb+Rr7zsZyps%#(!SiXxSAj|WmQ66kRX7$0ate&Q->WGJE%m+oyC%&;zH@-9$ zhiCl*y+nOb81Gydi@vlYufedOKA6U>vt1B%8^Wk<>~s(J<{)@3%y|~V0AZC!L;;gF z?BB6=z`rngtAEiEhdx?6Kv-w9gE=K_IP}ok0isv`RV>+(Hhg*C+U!Nk6m^S$Z-vMW z2sw+Zs}!|JH9sQjOBubY0N4y@h6}pz_c6=2m_>7ML<+an90<8#0OJrTKv2feBI-~< z4JIR&jKa>^>0JA4ydZ#lzMzM(8wajGjLf?Q0Fl zg@j;K!hA}Ys#cMk4evjrynZ&d8LH(vgZB^M<0eDK zM~S?!nB9CzB{CD2Fx<~kL6sCVQ?An9giny^3GB%j(&RK ze+A!9ut@5CtY7V^$kEoBC89!Aw1gp87Ic;`iV_mlTb)pCWwTL-=i$-AT*-pixB z{Nvr~S*m4+!TTWi?j`S4-SFNWbZI)_!WhEj0kIN`;w84k5N5{_HpLU(7ejb<9O0ID z!slZMuZSZ&6i@hV4B^9Zg#I()O5IzxAI&oDc9Xl~wc z;O^Da6@{Nts)JNhGX+jT()Zv$M1kW0WZ4vDI6{UoYdtIk&QfzAPs|i!sp=b1RgDCgrT#&+eC$W|tfU&OB`-h_1>bPQ5sNmqYgPLL%;hJL z&4bXh5pur(z;{4fn9Gwo^G;cVY#g&hX=WsCfOXL3xN`q4n#DfW;%%z^9bj^c(NsQz zl(#8%41mA%M2kkq9SVTYvp$5}z5qT#WFG+yz)g6zx(cCy(h8>mgVoyRwT0)3*b}I= zWr&SI#-kC&H3C?R$YKIl0C)o74uryM@sqS+(}QcrZA9!K>hwK?aSsCELBLNTjN1m_ zYRusa5ym|WV62!Q6lMI&0P;Q=i&a*ZUMor^7B}i^s_VTWQ1y2t)q!|984d%u5s~W= zGSYR1*QC`f8?F+yGE2?YC7!AiV9$dR-&a#lK1rAO4+wb5kaz%*&nWTCc!}nV71Z)9 zv!fV&e5?~Swlu1v5kpC3Tk2Hpw@`W>$a-MZwIk#X1CWczC;|fj)FHwn&ob8Pl0J~i zn^uap%VB1QS_J(kfq4B0UAD51`a4ZlH2^smBIyRmxQ;^S0eBLT?F425_!N=-2pRY2 z-2XAmbF(y$Wy3z%dR0(QcpK(duqHY=9ToFF00#zH8^Xlv&^8{_W#BI_gGNm=rRDAb zItS?^5ON;{a1kQQ3ETtVVMOjnC?I{|OTZ*;cpXjYUBo(p{|~~r0|0#JgiZv}MU8B1 z(G1Z{#HF5Ow)~rg<|uF*=x;?3qrhH7b|GZ!(seXOfy-nUm8G4bo{GN)yiX@N3{xbb zpd8T!naSo?GLGu0ze__o8`k9p)+$39lp#6&*%2=jnv7+Q*mY7wMU{O8;A9M9{Sd?iSU*zHuT7v)&oWsTQ58;rZ-eGdgi|;H%0lGiNMeg(#Cqx6 z>P%DWn?@mi0oM@(QHUYv{eF%BEX3)Elp|ym>5`7qZ=~MoWx8f*C}#Rp9T);2{{kK0 z3MvhyI=0^N&ywoU@Oc=EtIAS67Hv8sO%C@kh-dr% z8$@qmUL11&iOAao*mSxOIf{_6TIbi>zdq!0(J&*n;h)OAqBqCLT#drrj(o=bhJ*|Z zMne$t?tQ|8s2eFujsTL{uQ}iBAlAk4sb;I9})613o>-0v+-OQd?9#Yy$ zkt%-ia1*vhWm>P{mr>YIAWda(LSdhMlmiQ){CKsexn81c3 zWNg!|7P}ygu6i*=-Mv&poS zqB+&Q3rX)F$bmk1ypau^M;XiY?aW-+8`Nm5r$k_9-Q?OskzDH@g}7f4#9H?xbmGAX z84Gmg=vr4kfgD@wUZfK!$|fqg!<5eI_W+KoGOoHHch|kn!dJQbEkWw5QR6@{NM6p!Dq~Q->jaD}+62NdF3v zgOq-X&Jb6?xY?ccj}c^e%sAEwna9Slj!K!QKKL5#Lrf)G_3GgG(iajqzQjC$aK)Sd zkxs)gi#@;?n-0X_PmA&@`GfT#Xf|Xnmw3wty-i_D;=Z*?`Vie_V$45P2RH)XE$Q`X z6>G@UW(y5HI6HOO3VLV zC!}s?NkVSwq$_&;v7{LTbbuv2mVdk?y`hxpMno@WL%B>fJprkr8TP_Fkctq~Xs?V? z?<4g+s>zLsLr@ojG7mvC+KUjWL&&&IXXvh3Vb1|I|8KNFUJIc7sSp@#9d`58l`@G- zCX_Q@fmB{3y&#_Sh6K{_I_YwdZipon)9DO-y_#=q0+H--NhV$*aq?pa;8IP=H+FJX zgX%+FnArWXo44utD*47n42e{zfmuk-epLp2jdgKNK@vyxc zk)5=Z7%V5i;`(KWY4Kfg6S+7}e*>a}8iE}5EhsRr7%_Nvly20eGMYQHr|Lv_c%`&YdiF;j6}qi~pj8M$x4$FuH-wDx z{}w7YX7ls0?%=fn6PP=)&k!60lPIDV*Y9x)_+&@~IpiPR>&emxk1Z`U) zt&)C@p1c*w`7Ju|EP%Hqtv*7F?M=IRL^O{xj(w_uXDF^n|DiL#0_L9tGxibjniX5l z;_a%E|B_C@FBVcTJh5mwO8S>N`aP=fT@1}=od&{P!=zQnT7C?DmX1CE)&&xcC99Hu zy^d#_Ulk=!e^f_*%baHD0}gp_(|K0{-=^b_0{^Ve%dJrq7z-tFO}ENyNA&5jtF5jxGO@igfXy@v~>N9e7V1zV&u$hTFYXw`5tA^i-U&^{i$!D#Cq z0QuQ^)1!#{;zR^z%Hqk+oNp{0Y4d;Rgs867s9RoxAxysS=Q>k!o-V4exD->5X{pNZ-Ob#^pLBbQK%@aN=@(EU@iJ!CN8%;d=RJ`yM{@B=T5{p5 z(J0p(!KD=c)d|Y+Dl;~7p)V;VVp1kEA1_KL<&Rf|{1Q4cCGC;lYM3oBo1f(-Mtq(z z1lbc{3cd;A=QYLOfyG=cEyaOk((TN$+E3+Sox@CCD3dwePa4eRh5ZUyHbJ^@f+Q_% zg&`SwE>NANtbK-_g=S}IGKd-aRGYN2DbR?)e2%lM2sOdbH#ep1Iw;4`<9+9p*Pz)R zgnmldBxZzQp5vTybq{#tA@oy9PlsL%N$sk$jJ16xYRb~jS;p!-9mccvNu9z<;zxK8 zb2n%i`hS{IHVe5k3P-bQ6JSiPxb%Pp9~5C*1erFTFKL;rR)r8FJ#8G6>Lsbx+m z!!T%=t#lfcVdyyx2`@t=L+>nSStSS?^w7@XrRBKrPvKa=SZY^5^97D<+Z`mSPjbTWkwd~K3!En-bTF^@!5tN>NU}I$f zvejK>XZ1n}5fXiP%b=xjmrZ)z%jT8fF8e<{Wi9cZvh;AZ+}x)IQiO-A<(7UTP7hbh zroN0@ZFk`}`A_)KJyr!mdaPP=Y|kP7;9hShbd< zO@p4&W7S&bW}B2AtJa{jD7MW7T@L#zm3zShb$(ZA6OnShddW!_h)|tXj_#>PU}O>-qL6;E^7y z)_IN*0HnvNb-vI|daPO(+OC9v-O^(TzdJwqN1$*yBD)Lzl-Mn^60Ggl0~{a zI%@^sL!tiwWKX(0Iz#=wX9mLM(YexQfw*39d30W)%jd_@&UGo5f=IeNI$L!4Ma((e zgLNcb9-Y?+K)O6SuXnP|NS8GJ4&R7jI9kIro(MY=pXpAsq3<)PXN;8 z(fPK}O?P?JcFCH!2})_ZWt=XL+8!BCLM>{~%Q#&gwHIWZue-IEWSlOK+RHM&9=6n8 zk@3NdzbfN&dDLE$@x3sb_J)kp%~5+l>qZ#5_vygfG`Kl-0CLmeK*Qrm6|jn%{stP{ z90|c+k)CndM_DhEO?bv>@Qgd%3c_=!Fg)Y(kfgZjTBX4=PO!Q8(VB+uTM5}b^o-Ns z8Ar$|v%}Y_gi_t~Uew?j_Zemvx0|2zYw(O?m&o+cn^1#i9M6)`J>#^Gv(7^1y@h9- z2G6(xsOzR@oCeQ0id5Y6jMLy5M<~fn&o~X9afEDcdd6w+j3eZ9H{(}>XB@xLOLZsV zSA%C9A-9{JaT+}12>IOfjMLy5N2tGhC6$I}93j7(o^cvH;|K-Z^o-Ns8AmA7P0u(D zo^gb--1Lmo;2B3K+s&`7HF(Am8snyCoCeQ0E~s?RIBkDc3A9L)o^cvHOxan`E!86W`wlT-OkmZACTosbmxak?E!85Km(wd}aoc2l9&6FuU<1~22jYSR1 z>Vsz-`4l%j<21j7lHBaI8a(5Qp{LDF&o~X9ajcY7H$CGtc*YUhgJ&FVon-dXGfsnN9KpF}?}Kb<@Qfq)ceD3( z62mi&pfkx!&o~X9aRe79dFdIa!84BF(@EZEU}z1VaRl8KFFoTlc*YT|v3Thjr@=Fh z;BJdp5oz#@BiP^SrDvQ5&p3i1tCyZ}8a(3&zHIfn(zN{2@#xXTB;H77r2G2Nl ze8V$N`!s7ZDkn{P#%b`3%Y$~ZIl?op$^u$9Ck_psahy499(u-U@QkCFR5v~2GomQPJ?G0 zp&~au<1~22T?8#k-1Lmo;2FoXpqrj?8a(3&Rk-OHr@=F>5j2%vdd6w+u3%cF>ZNC# z2G2NxhG(4iSynN0>@7UwGxWZ#u4(l=^3ZNGmbg< z-Smvp;2B3V1-$f()8H8=Ak`}-DtN|`G+^?IGQl&BV5Z4S&o~X9aRjqWUNI8FGmc=k z$xF{T4W4lX$Dr3!GCbo57MQ&BjMLy5M{t74JA`c&o^b?=OkR4%Y4D8WkvfKFoOU2< zKZ>0uJ>xWZ#@z~$(hBg5>j_fDO{W75o^b;JVJ4yq@QfP<$mXWYy9UoV*;HQyPJ?IM z2(bCw^o-Ns8CM0!?{<+7o^kiUCYf$Jxohx@Bb4ptYdZ~|aU8@8y!4FI;2Fn$vR?Iq z8*{SR`w&Pm;Lixb|FBb2zRsRdLgCO@reawX@M_3LqTUSVpm! z=FlqEt8iSq3pC#uaEgRE8;Nwds4<;0kbwOd#!(*50Ro1L8q+!a2pBGEoYFbq2pBGE zT%>S_5wIBxP9m&AYpacOi;%!JA}HXZMu|LyN5EZ5AC`%&tuI&Q@@E845JD=em{v9R zuO|(rBw*RB`|$}_%~aL(+%3X2RNfSIV*ukqf7T+B`_NAR%EC7k2m|PUrw*6KI~f@b zLl}6ME?|HU&;DXheGoS1ZKF`bmy;eBC)h36wd3`Hydj@TjHCUNVG~ezsokv-*L05Pf%EgaAS+BXyFVx>kt516rU>Po0WX)C!HH@rTCc%Z7R)%n~+bK-thRyjQP{uI9HJRqC1YAKJznN8cImpuvI85BN zq}z4MHsD?Wya!?EuQcACp5)cC5k<(Pf1&zZ)O?h6G&KE%^Ac!>YLYD z2jN2|KAvYi2%)FwHKQ64G;ndL-&tQ^2G4xP)TpOY=8bVOJL6?;)Cnmw@URZ(?Taf+tBoyb zm#X{5N`(%}8(P$NX=oL~!SmAoYyq#LwEQEF8N$8u(tP6lxfp5?hVfK=^)gZC zD*)FZ41W{GeoGf?I)rtiy3TT8Z`kj1Bs>I)2M`8+t5a-%n&?)nX4uDftSsj5)Y+(d z+-9N9Db!#w84(B-m)d06VPxDG0&;@wjc z!a(nFMZO#_(jZDQB2kgonid-($3Wa@iX47ik^hVrX%Lx=NL1u?md6c|3n6YkMNT}f z$oJz#8bnD(Br5VxCWl8a_6Y#gUDn=q9XrnInNNe1LB^h$VJB$xj$Y@ zgDA;}L`B|j+G2?O65_s~$d$(xnV_XXWHKUAkq=qSX!@d+_RYge1z{jP1$o6cq66_- z8boFzf&oNa>Q+m+AuB$%sUyJ#IN*NZSZWf2OpD6Q!++N*nc*p2qP+8OaTCc$XSG+>`Z8 z)r}mKe2;H?nCkwcEGhh|AtD+th}(e3;TtK$ zk3eZ9n`=E&wU}(poV;@Q9>-MeXX^#WRQY3&N9ti*x z3!u{e4zjjP62Kh0504g>5}cXD?-+QHr=`q&CV*vj9^`2W3awYz50R`~03rK!DtcNE z&iJeBJjl~BwHJm;rOD2R1Isj5Ie;tdJjl~B-8L5l&2}E-X_?`w0dSR_2YFh~)-D3s zdi(wOwVdm{7%4Z~d61`NZXZ4*Y_jtpPs@2iod@hZ$kTGZo!={OvGX8L%RI+T0JhtC zkf&w7(5=Hhm7*8gu7ZHwN)iw9v?llAvc$my5iKXD^jL^Wv)WDvfz`$YC##ZrX_F8k zb~1n-_lRgcqddsdYP$?kL3=YIg0{Dk!UH>#!zuRwWfhg}Vl;&-?c_fSbP5mbOm35L zz6!DRb+RQmc}D0*2&qak&pNf*HUOK<6Gg>wrzt$J)7GyqNm6)5qXjtM94||dAB9zt6MYerX3MJz>SYoDFse#STLp*Ri>q_8Kd-4zu z`{^PDhj@$kr||@#Vk~U;8_owg0hero`JbD6T#C)cy*w96_5^01-s+?x)N}s<7S7K(rwE{HPl`C3~-A36`j$!>yc%sTRR|rbPN^ z)dN7hM&!Lj;xq@g>qDnt$%)Vh&p*pl(Ym!FG!O*u64EVG9W2;|K%9lp_c<8kn^S=i z*CynyZc?p0!LZ+FNSa)XZ- z!h@-G9IP)CS0U%9A-xd5ScLxhIzyavp?JLXfiJ^`ypE!Tb0Bko*hxTHO}2^3zq{0z$vpaA#@`mf2Pn%o#8k_*FumG`n+y6Z1+*Bb$2YWOEap(^l>Rj&nQ;3??!yx0PMmC2&t%`&kC z$cn!~r=f_xFn@xG*)i>Vv`7|@_5-gg5|V}JO35ZfOQFfSh1on-%T&FI1ml{>K(}r+ z=6>^k=RQVHrkuYTa+LntbhE^_zIf4454(xtm($cq!#SvJ72~-|dj!Prz171(E+9tj zt;0EJ2gG2#bt1>=^tu`hkB{5X9hKhGC}6u7gfsX$Ro$&BLz9SHuNv#bZ6M^OZoCN< zoLMYVdxqCsR4Arlc? zFz`?jH9i&BhvEYI3@%R}DkuUf;{H9A?|<$+|6A2n)rx-K`+i^lX8N9c>fCeBJ@=e* zm#VJYRz$X5>TcTvs8OK9y1dMGqZe62;3B`W&+GF^i*t!Bae1zZ#{5N2HSnf@FWdseBSsPDoL=EzvJ0>&D%S_80 zHl?Y-pK`#I^)shs8fT(SEuKH+q=u6lPHb3-s{DCgL&K?{K-1=Xf(fPqgYtSIk5&ps zF6ECm6!lFRe@a7xWs(7Y;^YX=6HvGztOT9fgsV$uV-B9ltZWkcDF=hkLeNb;CQ|UU z*+SHKFd8~d@qq|w@zcRFAIjZ?DqU8pY<5DSkW?~5g)%&ZqD6~1#7t8p08=e8tExzV zxtzAc6oKu|$Q(Y~HsOH4sA6uk0r0$NHjABs1EYx3W((?|HfYb*Da=}pu&sergjR&# z%#cR(eh9MCSiO2^l*6>l^a;ym-MW0Xw0T~XO?KwTmZQTDyM9N;o0eIO%ku%kBm_MC zO~7Vn-MAbQ9Wl|>hHz^725o<3Lq=F0)c}KgRhy$Ye0D2zxu7j`+HBg9G^0w4HWkCz zn2ND5stLs{(so7Z7DE_qtDO6>C3zhH|x@E$}^G=VeuC?J9(|OCITEqMw6?rhFR5-V0IV@=GaJZKy^=vMx9&EO>s+x3ggpi$_LUo5hWu2*;>sy z=4@55LaenaS}5m3$yp3>9x@sc4s)zwF$q7OAGJv3ba;v%A5n#a2uG$k_ABWo4N*@% zD&onnaun*0>g@}xGqqLATBYHIwn;ZHpDix7sG3rOtaY))(FP&7h>IN^I)xox@bpB8 z!cURHj9kYp&EpU_Yxqw%nsQ*p_*tj6W5QfGz&ii2j+1w03p(khdbL4QOssTb$Ol6# zN7YFjRVQ;)of7R1J9iXt$yI(2Fgs#5)o6yt6I&N-MG z&P-(*HTYQ)Xr-;QaWP(C4$Z-aevQo-cwOk9ORL7n8}S$CM#A}^1Q$$>ZG4C4I97+) zu+E_sx(TB#M^&RR45%urX6NhZi7bXy9hyz~Dm5JuH9b`c9+Rn7{41l1SE8e$)hW(- ziW?QpkZe?Fs^+{xMq<&c%DT|?q@%Kqu}BPhakZsOdzMt8&~^W(b}!Qz+)3rQ#o672 zXv3|^=Hs$fsk1&>K(#WF<{8@%!2;D!O^V?dIv`rZtAO)y}wOT-li1&eVZ2cc6BA0oVZZ= z{~bKPz9h$Uw;{IBGnV@+q%#auUr|y>DdJwS6%7r=__@& z;Vr6y?d}^|LbzA~1ReBr4OaRUJ3810B2skYtardzTo^Hk9vSVb6yykLAnGs?aggB; zB!*9@p->tb=?A;2VwJvuQhB)4Ws8>kdIyXBwuD?M2r*ceD@Hho>;wW&oCA;JqYGU) zirex;(+32^wGhG+)<9ut2I0#V+BDkN-@O0}Z()xsmJ#3yMki1sU@!rIZ21#)2AKh#z1SLsSp0V>wsvIHnOG-B~ykn!rX z{4Jw@eGZQ-1wpPi$mFI44d({=o*zibHO3!4^)EsreF#%^|}0bFv$RK4<`GE zyckSFrZNANkbT2j1p@zVV^0N>bN*4g@(U%qZXa?tqrTsIsHoYL4%&iAl{z27j&ILT zhX9lOA7wg$$mIMxw=acQ!NgpqQO>Ne@yy29DSS8|0F_xC+UAe z`gbMhpNi1mLHegie|v)d=?MM1NdGkH-2FHVKOdog2kDB9TFC+ACC;cy}&s_=nUq|TQM*3fq{)Pnoi=dzE|F7-){Q62THfO5M3 z$;?x>%RgUTWj5!33RMPvYsNo&w|HPB$gdL1uis_-us-)MrtUAey7%q2uJLauR}T-& z?+xm`Y+Ys*zOql@%a^Y@`3l50zn|NYyDq3xA@eJRdBZ+&&#!w34gQD6cH}O}H|J;M zX9@DNUZ?+=v3#fa<6?w>7Kt(V%#_MHMYu`1^MgiIJSl%jF!i;D-HzPO*FnsQ{{Cxs ziFE$G*&Vs@T)r)LiIM*CYpJ>XDl7f{+04`C(l^|t9s5n$oc};J^YgkogpK1^%IG`q zp99u7==?>gbJG3*0SpjA4bG1TG}8*&)YKeI%LLgkn@~DGSCU+iTa|ltFg1shq=G5_ zbJs|?nCjo`cWQpA=68YeL%?PH?_DF6&j=r+1nT`13WQ;GF-NAirzJKE(EGGe*rn z6vl?*BVs?WyL-TLA)1nfbp%Lr7;#|na%svg8+7ozAN(8gDw((FaS^!-70e=vQisr066 zMP<|dU*Hv$w$>Z3K4J9=>ye7=mjGr0{Wyi4EacEMOokKLhW@|3Rw`R&F`%*16s*d1xu!CTsl!4*28 zW?06tCU{DJULn>R1h4{3j}Y{i1`RoX7#Qi6X5&}ic#TnO7zvD^FopM{0+@HspWcb? zS{mecBkNDyg}4j{ycF}PtCt4#&q^u-$s3KIh(b`62^l7Q*6$wODKgy(#ZUEro)HD@ z5w14_VaTM!^%`UEmn%1nWiCO7&&j_i1<%?Y%+6VLeBTbNv;BKGuzuH#a%Lh2^7o3x zeKObCBOdsk>~7P>-?EKjj1oK07ycX2zMRUM%WV;*2KD=ax+Q1)=&yD#m;>Gz3=s1$ z_rt`={{n_NTz-e&8E1KeviuEMzS+i7?UEnWWn}hf^<;$@*J$^nIv9mrB{?ZLI{XC9 z3jAZ882-Mo&N!dF%I7~EpL-L0#3=&*bBLSS01MB%vE=nV_|-qZi}F9cN8%RTx+xOf z{;07*Vz)f7EmCvK1KT0G-|}!f8nS_6cPc<;_a~q`-JbyDHWzT&Y!x`1 zY%%~DZcHFky)j|84)|cU|AJ??4$g(EO$%mV@_SJ*s3(^-)K1mBur=QMpB>P<)lz6FNf zWZbQ{>JqG9rsRHu*rd6BN!4`}J>0Uy2`Dy}lI0PZ87#9Ver=&GgJW*0%Ph)7YFZw@ zdYUcu8MEmj;eb^=>}7Ctf)VdQcTtyDk9zjPN8E*dRu!05m=Yh3U-%jZ0i)iPqQptN zQI8D3*&}71(;SE@^7AlgLN7Zo5cmzd>_Cgr`gKA66imeO&1RC@_-HU`WzcXAV#q1j z-@!`{%z(U9mUWm=oQu$PsTme!7Mzg@j4wA=+EIF?psE9()d6s^Ig9MXE|M^+<~_TuiTXymM5nxyDiDkOKM z%735fJUk%Kncv%kQvSA{-~iJ`?T2Gv2@nd5&&5h8H#L}kXpmVSOg{}6D~mAAVEKv@ z9+67*_XRVMW=?6v+b!@DOx%(3y#@b&#%Z@1n~2a=@mF`E5tb1vBiqj}I~KbwUl&?a zA}fNq-3vyPwQ-eCrTI6SB@wnc;Je#0LBsXvZHck|)=X=VKQpNFd)ly;n9~Nl>^Kx* z4$aNjSHWe$SyV{@gzqK7?&4@*~_^FZzuve^aH1neSVmrBHYlQBp^VEH6l*pqt1eD@fs8#f0t?hFoC0L-4C&dkSA z9gj0TU=}-1R^kzeQ`n7#pc}Lu1Y^aJmuOK!WZyYnw({MZCdmd`w*x zVA>y4f`fJjlY4@LmIjk|1+RJ?uKSHrsZjdOvf7g3HyW`a7$#bQkC6npJi@i8SCr#p zry_^ln)(yZ1^gX05{zY0n!~z9RB$lh$)^MduQcBm0e3NettNeYpzzocO!zwbr`QSI z&+ZH+EPtvEB*Ru0(iaz4a0kGMa;so z78Nz1ITDl(*%wTKif=?4KPjAhbZZery|CBc1i5bq6EVH^KQFU)|5Mo)ZP@*+o4cEF z24VUO2!>!F_a3&Ird4&hr@>GS=n2Eytb==DtagU; zHM?@1Axpzn+muJ$kZG2#kP&M{C@3Q}ONvHJg7z~0gM#C%$N?261!~l95pE# zF?X*tZy&g0_5(x4{vWFFziDf{c8-fJfQf$@f|`u!IXIHI zLNh#cawiI21u-S8-yCXWH>i3M*R2uVb*-6Cw)j89Qr0MBk5kC*PTjzK8XB35xmx}x zu*%OfchV3!;ST==5v7KPl4Nb1tKWed#$62`wPxDlKgx;SN2;w9Y`&H;lcJpek?oib ziuXW;SPiIBuyt6a6j|Q;xzFS>eoJSz0h5R)<>sP!kK+H}Epy%%mm9S9PO6y|L}mg6 zF%fWghA{_7+!@vz$RM-hIG?>0X9{#8HDfWf@Z~KS*P1%bM5$aVj&yCt{pG<*X)A8@ z7YetTi(hDYL2nigMr8B?}I9U17?cKiXgEE37qjdsh@I#Vd+~MQ>oJTb7Jc zr4%Vt0QC&ud*y`?u)EZ?rQ+euK*OVz!j{rV8TEKql(tOo)+=EzQOL&*1}bN-IdK!^enWVB0~Xv-KbhC+Fa@%_O2S~ ztCZ02;gO-PQn@Tzk%cerBaIv@Kp&8Q5f>9F$ULm*9ZBuPiT+47#)e7j$zH*nP>Kf`tfv(Na zf+tDepa^z)f2A}sXjD=-qu8~%L?sLtN6Mu_d34jJp`j}ZB3q$2(mOg(8kFLr;55`f zIxuLK|AV-vk0uObZ=uoy-d8{$BVA~E7haf9D0G*$K$}i1h+`~`HKAY;olsR(*U%{H zDQ%L6DIhf-o+yhF`UVT=zGDASuaOA6OM_ebM$nx_F-&xj`R*DTfcT|C@5s>TFl=f| zU#ZaDH&W`V48c5%p4I3peU<(a>K6rX?W>4K6^sj_DwuJxA4b?M)f!f)tunIBy9Cx` zY;1F}EJ}eGJ(0FU>K=3nzQEdb>OgViiqZ(W5s#?g(H7X2B^c`IDVL0`RW}XlS}vM5 z6^U+4KMWLy3zg!g{*qT2DGqxEwBipJy9@oL!Cq*Rrc&%5-dx-S<^{T-?S}R1&N`v6 zPPn)(fP2a24k$%|R}T%AOe@ug#rxnXP$HBswmyniL6(P$T_w*n5)~GD`is4;Rd5t} z#--HVD)#0TdPYhmgp&e&WdtVS$t84KX{0bXI-h?jORFLB^)Su7yCGMi4Ua)XG&50KYUHHAZF( z68$KKGz2%0yzNTsYsNVxsECZt@w$qGLxX*&O(K_JA&L`UN4@r$AF)_@awaTf8fW|* z*AV_B<_#Chuz#r7JSRl;2s4CXD5Wx@;S1e>h&M8H6>R`wsu9qg;Ho3yv$A7ny%hqO zeh`PW?rp4cTfwxAeu#0vnrzua%5T8A0ySont z39~Z(E5*POtxCi+D#_ZAG1c-C;bSUQvlIU^qlVG3>0v90uv{k%HLhse0;LxRdrKx7 z8YSrH=@mu?M=?4qL1#*+FTfaz#@l7cLhvY<(L@9;pbg-B4yu&^&@F-5G*tS<4#}oM z=>=~y^gU1k#k<;dIiX=*UiK zRK9rDG*BX0#E5LT79%o&bZh8*7>#;*Fw4NxYBJ1I6?LJ0LAjQ!LH31L54=l3q}X8 zf(b1!QMHVVMga?8{uMKHEI=cr`Ml88Uo3CtWmqOIboE5?VIVGJoQDd`B*U~B8SP^Y zv0eR$GalmPm7}G>u5H#sj9sHrGYC2x7#SKeqbX-y^kOPk?AI7Fde=@s&_5Dcy)8q1 zUGPdMt~@kYME~K1MiI@sG06^EP<;0ybTN`+;cYTEP;1keBMxkgA9|{cikA|T0J$A*i|FeHf?*7&V+O8nSnWmdI``eZy5ueGyJF*=={*vO)- z)FIb~N|}q4Hf=3-6?%((m-pFGs;Px`e{R#L;y2p z8hsi!G(90bshvWT!lZ-Y7<3ZeqVZe@4Fo*=MV#D??krfT!C3nHVI`+40qsuTw!V1Ms;_TE8b;~%5 z7=R#UrdQ=k33F-@8Qv`(C}Ggdqq=q0pvr|uCwUzeE~#QcRJp|Hg^SR+jN3NSIFp)4P;z*;ykSXtP;P>j925N3BdB61lIgm?A# zL5=cAxI7(>e><9MYzcisJViYM609_fzqOTZm;y5%pW&vX24g1lW{zy5OO+pS5eean z+xm^4_x5ia-dxssnQBuaglz>QmFU&Zf~5=X8c{mYMyL211&d0V`4nWn4SSIyrn96( zxgW9IMgbFptHY>F)ZIRR>o1if`Bpp{hofeEv3fVKJM(ugHs9o<28CNu`C$GB; zK}}>Z_GxU*nnqRdfYBf-+3`XKcjRON5{^ZoLS%kxR!~u`sbjx7(S=>jw2h*KyQE&IqfGpbW%2hhb zj5}-1*sIILN&zc**{2yX@j@neZh9uOGbn&MHA?`l=nKP~_FHp(ncfDk;}0>ysxZ+l zqaySB3^6q)11^}=ptEv>b$G*YRbQJ>hh2k+q>g?G`WGEjmT8waI3$(`?e=zIT*TVm zz*{^_p1KgafsjkG`Wz`$(TO4H_qaizp<>DZg zb)e=2Sccg%=@&xmKR^_@Ea3$K7m%q{_69JSL&d}WvQQo<0`HZt!m1r?2W4lZIIyX& z*Xy$7)IelE!EqEnmxwHqT5~d&Wr%PHyITQCB0Gm3e^SwYJaz){$$0AtRuom|;f<5y z_VUa9=Fcq-nQu#gEy2$^R0lzxv1Myw?kz{MYzM)I6lDpSTlq>yNRa2XSwiN%)aD2Y zHZ8FzOUT?sip_W(1V33t$lS!E9Y=!G6=gXx$8)K`k>DA}MXR=O;yWulw6#Cf^CYL# zbp)y0jJK8`H7la68)t5>)AL$_)T||BuJtG@2sjd?W-TFeR4xb!QnQwjIVu-~1gTj| z$Q+dmLW0z+C1j4u1tG!t@?tl9EFp8}Di(wUeY}=2BxLRY#e$GvwCC2PdInFZ>vR3m zP6=C_$+X+*(!P19-M@w9*2rbDHc{GDF@gClDvD5q7+C*vhbX1tTs zKQC~8nnHwEZ|LRanyT+Hd!Z|RsjaK}`yRdgK1bG0@PiJuy1Io?B!eMw8!#X9X^KN|Pz1ulj{baFaYO%?oNobSfkYG9J@K9OHVec`PAIB7n<#1AQ z}}2g0q71yz%<4RUEwfs&ubLt?-*_=`` z%MO491lbo#8Se~5r}YL}#@_goda6=0OIJm8iLSAoQPn~0k_)s;z)faP%&u`gwVq%^ z|3XRqN3<&F6s-z6MXQ3QRwIfLbc$jGouU{)Q!&(lHYK423COXPOrtiFAp`!rCyc-h z0v1clS`xZ6XlYzyRoE2w2W?z8mTz1&7E8_0nk+W10gH_*z+&U=N3hY>Zg!o!_T>;2 zl0<^JO1az+awB-NL#-ny=ab6^vh7NaB-S*^aZG8^k$XNfHqId8Lx(d82^5w92wi70t}`MYqy7E7qIjy z8k?o1kv;lPPYL24W%(u>XE5eHD|nnNysRKw!f{(d&_6Pav&|8A!|1~tHKAOo3J%bU zW;WuS;K3aAro>bnM`$z~#LUr4|C#YR(iPyC;@QBacs8&pT>)&UYYRc+oInCW#YapC z@gzl^HKP|b@qar`rN}L)n88Hkeq$&%I~=_NEc=^XXt9(#qHoZq=o{D+eFK}KZ(#p1 zxwGC?9<@!W1s9iDaB+zR7nfIXacKn?msN1d&pkSe{*Go~#B z>C3h()yeHTi;XMPV&f{cSkAs83m?eD1rG;LOG`~Loj`y}b52Rs6{4zR=31wxc7k$1 zn|w0f27(dQJ(#LGV5z$4I?Xjb#7v7Kp-+N`In;&}eS#tN8F46JQ}hXJiavpj8!0pg ztZiNF+i6SiT-sf%t38x^|9iJ@&|E|rz|z?wb_8rni-2W|xRkPdnY+}jwKk?S62(&* z3GBCYwftjEGv3Bn+iW(p3%$HZ`tT{3l-quhIUHXqYVas}p#@To4-4;a$LE5qJZOM$s%^2~Fy}8tNQU^hrHLNOb z(?C(n9d19NgJ6$CZ6qkC`^iV7CHy`|)8=roEhF>0bRVCfwDZRzwc0y_Bhen+0ZYBsOmBz z2fdSHoG9(@Qz4?fF)hNKroPUwU*}CcJ)7W%7Y@hh(uVbn*Q-?9HO+d<61>EaNjIc) znCm`y|MqcaSv=!inrs=%hD3?of{eFIZT$n9X1xj9d(rMStg5taV_hv^oW+IMiB#)ESnnaj{cYv3aNK&ufM0TFpaT_R2#_37dQz zHpwg*qrvj< zxH?jH9O6V^_S&SWCz*i`Gt#(l$X9JwG3L&5Gn#gSiydn1848~3Q0)ZkT{w2Pn}^)= zW-X_6Uk_271aan!xlDZ8oU-%cWk=NXm|}h!ZyeqitO8PC1WzxY=%FN?hP%JdFm)&N zcAfQbm6;-%aIRCb1~*A+CpguiR>x%s%Y{UVTU1i$Lgmrnc(oI}#Gz8yvs_4&%KqCr z1b#0Z3JLzqp;FkhTu78)k6}u!Xj^DaaXlo7YI#DESz zPL3dzPr8jI>C&eKl!Dx9SfZ_p2DVrGQzFp&u(hq(kA~e$@S$o-%O?6wmL!BycO}C{ zCTn+JUQl+C{c2EiUm0)NHXqA_`^rOlZ^2@@H0H+oKUN<`lz3%8#cKj8UQNnSl*3Oy zt3UD9nRW3wYTTSa8zhD3);l)_$;_}K5e5iy#~rf(3d^7e6ovhhY6>WVFF8~@!3p|! zRmzM4O_J$|OiJD7Z#IgJt7;VQK^Y`7cZH22$nHi=WTV*EK(SHpb1mo~c%MVH6J&c) zkRUC@h~b)(3Q(d4Lm>%%+MzZ+uHX+Gs-0liKO5PUOU~LvkuziVu2OdL7f0aRx)DwvN`A9(LkX>28SgoRk~Qpw?<6PM6|uS&x0e zj!2K3NxGC(M;cLLg6(C`*6v}NqA@%IqC_;$R3aQZr({2KUEWUcIfqIa09h_1TAyab zOVq7Tbne|w@DztiVb5|QQ40IBG%|DBGOdZ&x_G^kF$EdHJM6X1S0kA+_iINI3-R2$1@)b}L1yFsCWq znVLd{1kZ7(6k%8{BuWuR>TQ%)6ybBQrg(mc;BgMMmf-P4Bu?^O7sjzNLoCluv- zW0`Sg9(G9Vcd^Ymr`keF?cOq-61+iE^d7;Z9J?ED8+&^Hv5 zir1u+-IXY7+UVP6ZBI1Z3IDj$#ae>jQIzkM$Htjis7q!Hu4@#$Cq#Wf!TGAjwAHI9 z#%&G1TkH6ktG+<++YYswAcgR~D?^E14CyG*dM8nV;FS)wT8^=n&yPctMZ~`?0IW|&%pAJz^C`f6gWL!|mPglCxu4p^K zS2$Ekuw}WBC=qNk9_9J6<5WnK0cXaVPlN0Jc7jtKDn$mC3yBgkSjIZqcwJgMJeT0G zL#-xwvRX#1fG;J;@p4yu9YM0mcxwnoIVOJ;kbzmRQ$Dw9D&0kxrL*4RL>Go7uhfzl zU1zBpQm9FFT}b`8TGYNrDoO(0U#&%5=aK5(koOa{sIwlaJ{3}buNHNkN2c7F8 zR6hx+pRCQBRKE|Y{|0YT)vJ|2Cr{Vnjdhn&HEEjjUVLP&))P w`nADZiUeNs6OF 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 literal 0 HcmV?d00001 diff --git a/lib/ebu/ebrefile/Makefile b/lib/ebu/ebrefile/Makefile new file mode 100644 index 0000000..10b3247 --- /dev/null +++ b/lib/ebu/ebrefile/Makefile @@ -0,0 +1,522 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# ebrefile/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +bin_PROGRAMS = eburefile$(EXEEXT) +subdir = ebrefile +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_eburefile_OBJECTS = ebrefile.$(OBJEXT) +eburefile_OBJECTS = $(am_eburefile_OBJECTS) +am__DEPENDENCIES_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(eburefile_SOURCES) +DIST_SOURCES = $(eburefile_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu/ebrefile +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu/ebrefile +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +LIBEB = $(top_builddir)/ebu/libebu.la +LIBEBUTILS = $(top_builddir)/libebutils/libebutils.a +eburefile_SOURCES = ebrefile.c +eburefile_LDADD = $(LIBEBUTILS) $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) $(ICONVLIBS) +eburefile_DEPENDENCIES = $(LIBEBUTILS) $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) \ + $(ICONVDEPS) + +INCLUDES = -I../libebutils -I$(top_srcdir)/libebutils -I$(top_srcdir) \ + -I../ebu -I$(top_srcdir)/ebu $(INTLINCS) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebrefile/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebrefile/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +eburefile$(EXEEXT): $(eburefile_OBJECTS) $(eburefile_DEPENDENCIES) + @rm -f eburefile$(EXEEXT) + $(LINK) $(eburefile_OBJECTS) $(eburefile_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/ebrefile.Po + +.c.o: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebrefile/Makefile.am b/lib/ebu/ebrefile/Makefile.am new file mode 100644 index 0000000..77983f8 --- /dev/null +++ b/lib/ebu/ebrefile/Makefile.am @@ -0,0 +1,14 @@ +localedir = $(datadir)/locale + +LIBEB = $(top_builddir)/ebu/libebu.la +LIBEBUTILS = $(top_builddir)/libebutils/libebutils.a + +bin_PROGRAMS = eburefile + +eburefile_SOURCES = ebrefile.c +eburefile_LDADD = $(LIBEBUTILS) $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) $(ICONVLIBS) +eburefile_DEPENDENCIES = $(LIBEBUTILS) $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) \ + $(ICONVDEPS) + +INCLUDES = -I../libebutils -I$(top_srcdir)/libebutils -I$(top_srcdir) \ + -I../ebu -I$(top_srcdir)/ebu $(INTLINCS) diff --git a/lib/ebu/ebrefile/Makefile.in b/lib/ebu/ebrefile/Makefile.in new file mode 100644 index 0000000..aa1f47b --- /dev/null +++ b/lib/ebu/ebrefile/Makefile.in @@ -0,0 +1,522 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = eburefile$(EXEEXT) +subdir = ebrefile +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_eburefile_OBJECTS = ebrefile.$(OBJEXT) +eburefile_OBJECTS = $(am_eburefile_OBJECTS) +am__DEPENDENCIES_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(eburefile_SOURCES) +DIST_SOURCES = $(eburefile_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +LIBEB = $(top_builddir)/ebu/libebu.la +LIBEBUTILS = $(top_builddir)/libebutils/libebutils.a +eburefile_SOURCES = ebrefile.c +eburefile_LDADD = $(LIBEBUTILS) $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) $(ICONVLIBS) +eburefile_DEPENDENCIES = $(LIBEBUTILS) $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) \ + $(ICONVDEPS) + +INCLUDES = -I../libebutils -I$(top_srcdir)/libebutils -I$(top_srcdir) \ + -I../ebu -I$(top_srcdir)/ebu $(INTLINCS) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebrefile/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebrefile/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +eburefile$(EXEEXT): $(eburefile_OBJECTS) $(eburefile_DEPENDENCIES) + @rm -f eburefile$(EXEEXT) + $(LINK) $(eburefile_OBJECTS) $(eburefile_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebrefile.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebrefile/ebrefile.c b/lib/ebu/ebrefile/ebrefile.c new file mode 100644 index 0000000..717cd61 --- /dev/null +++ b/lib/ebu/ebrefile/ebrefile.c @@ -0,0 +1,814 @@ +/* -*- C -*- + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef ENABLE_NLS +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#endif + +#ifndef HAVE_STRCASECMP +int strcasecmp(const char *, const char *); +int strncasecmp(const char *, const char *, size_t); +#endif + +#ifndef O_BINARY +#define O_BINARY 0 +#endif + +/* + * stat macros. + */ +#ifndef S_ISREG +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif +#ifndef S_ISDIR +#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif + +/* + * The maximum length of path name. + */ +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else /* not MAXPATHLEN */ +#define PATH_MAX 1024 +#endif /* not MAXPATHLEN */ +#endif /* not PATH_MAX */ + +/* + * rename() on Windows complains if the new file already exists. + * We fake rename() here for Windows. + */ +#ifdef WIN32 +#include +#define rename(old, new) \ + (MoveFileEx((old), (new), MOVEFILE_REPLACE_EXISTING) ? 0 : -1) +#endif + +#include "ebu/eb.h" +#include "ebu/error.h" +#include "ebu/build-post.h" + +#include "ebutils.h" + +#ifdef HAVE_GETOPT_LOG +#include +#else +#include "getopt.h" +#endif +#include "getumask.h" +#include "makedir.h" +#include "samefile.h" +#include "yesno.h" + +/* + * Tricks for gettext. + */ +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define _(string) (string) +#define N_(string) (string) +#endif + +#define DEFAULT_BOOK_DIRECTORY "." +#define DEFAULT_OUTPUT_DIRECTORY "." + +/* + * Unexported functions. + */ +static void output_help(void); +static int refile_book(const char *out_path, const char *in_path, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count); +static int refile_catalog(const char *out_catalog_name, + const char *in_catalog_name, EB_Disc_Code disc_code, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count); +static int copy_file(const char *out_file_name, const char *in_file_name); +static void trap(int signal_number); +static int find_subbook_name(char + subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count, const char *pattern); + +/* + * Command line options. + */ +static const char *short_options = "ho:S:v"; +static struct option long_options[] = { + {"help", no_argument, NULL, 'h'}, + {"output-directory", required_argument, NULL, 'o'}, + {"subbook", required_argument, NULL, 'S'}, + {"version", no_argument, NULL, 'v'}, + {NULL, 0, NULL, 0} +}; + +/* + * Program name and version. + */ +const char *program_name = "ebrefile"; +const char *program_version = VERSION; +const char *invoked_name; + +/* + * File names to be deleted when signal is received. + */ +static const char *trap_file_name = NULL; +static int trap_file = -1; + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + char out_path[PATH_MAX + 1]; + char book_path[PATH_MAX + 1]; + char subbook_name_list[EB_MAX_SUBBOOKS][EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + int subbook_name_count = 0; + int ch; + + invoked_name = argv[0]; + strcpy(out_path, DEFAULT_OUTPUT_DIRECTORY); + + /* + * Initialize locale data. + */ +#ifdef ENABLE_NLS +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain(TEXT_DOMAIN_NAME, LOCALEDIR); + textdomain(TEXT_DOMAIN_NAME); +#endif + + /* + * Initialize `book'. + */ + error_code = eb_initialize_library(); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + goto die; + } + + /* + * Parse command line options. + */ + for (;;) { + ch = getopt_long(argc, argv, short_options, long_options, NULL); + if (ch == -1) + break; + switch (ch) { + case 'h': + /* + * Option `-h'. Display help message, then exit. + */ + output_help(); + exit(0); + + case 'o': + /* + * Option `-o'. Output files under DIRECOTRY. + * The length of the file name + * "/catalogs.bak;1" + * must not exceed PATH_MAX. + */ + if (PATH_MAX < strlen(optarg)) { + fprintf(stderr, _("%s: too long output directory path\n"), + invoked_name); + exit(1); + } + strcpy(out_path, optarg); + canonicalize_path(out_path); + if (PATH_MAX + < strlen(out_path) + (1 + EB_MAX_DIRECTORY_NAME_LENGTH + 6)) { + fprintf(stderr, _("%s: too long output directory path\n"), + invoked_name); + goto die; + } + break; + + case 'S': + /* + * Option `-S'. Specify target subbooks. + */ + if (parse_subbook_name_argument(invoked_name, optarg, + subbook_name_list, &subbook_name_count) < 0) + exit(1); + break; + + case 'v': + /* + * Option `-v'. Display version number, then exit. + */ + output_version(program_name, program_version); + exit(0); + + default: + output_try_help(invoked_name); + goto die; + } + } + + /* + * Check the number of rest arguments. + */ + if (1 < argc - optind) { + fprintf(stderr, _("%s: too many arguments\n"), invoked_name); + output_try_help(invoked_name); + goto die; + } + + /* + * Set a book path. + */ + if (argc == optind) + strcpy(book_path, DEFAULT_BOOK_DIRECTORY); + else + strcpy(book_path, argv[optind]); + + if (is_ebnet_url(book_path)) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(EB_ERR_EBNET_UNSUPPORTED)); + goto die; + } + canonicalize_path(book_path); + + if (PATH_MAX + < strlen(book_path) + (1 + EB_MAX_DIRECTORY_NAME_LENGTH + 6)) { + fprintf(stderr, _("%s: too long book directory path\n"), + invoked_name); + goto die; + } + + /* + * Set signals. + */ +#ifdef SIGHUP + signal(SIGHUP, trap); +#endif + signal(SIGINT, trap); +#ifdef SIGQUIT + signal(SIGQUIT, trap); +#endif +#ifdef SIGTERM + signal(SIGTERM, trap); +#endif + + /* + * Refile a catalog. + */ + if (refile_book(out_path, book_path, subbook_name_list, + subbook_name_count) < 0) + goto die; + + eb_finalize_library(); + + return 0; + + /* + * A critical error occurs... + */ + die: + eb_finalize_library(); + exit(1); +} + + +/* + * Output help message to stdandard out. + */ +static void +output_help(void) +{ + printf(_("Usage: %s [option...] [book-directory]\n"), program_name); + printf(_("Options:\n")); + printf(_(" -h --help display this help, then exit\n")); + printf(_(" -o DIRECTORY --output-directory DIRECTORY\n")); + printf(_(" ouput files under DIRECTORY\n")); + printf(_(" (default: %s)\n"), + DEFAULT_OUTPUT_DIRECTORY); + printf(_(" -S SUBBOOK[,SUBBOOK...] --subbook SUBBOOK[,SUBBOOK...]\n")); + printf(_(" target subbook\n")); + printf(_(" (default: all subbooks)\n")); + printf(_(" -v --version display version number, then exit\n")); + printf(_("\nArgument:\n")); + printf(_(" book-directory top directory of a CD-ROM book\n")); + printf(_(" (default: %s)\n"), + DEFAULT_BOOK_DIRECTORY); + + printf(_("\nReport bugs to %s.\n"), MAILING_ADDRESS); + fflush(stdout); +} + + +/* + * Read a catalog file in `in_path' and create refiled catalog file + * in `out_path'. + */ +static int +refile_book(const char *out_path, const char *in_path, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count) +{ + char in_file_name[PATH_MAX + 1]; + char out_file_name[PATH_MAX + 1]; + char tmp_file_name[PATH_MAX + 1]; + char old_file_name[PATH_MAX + 1]; + char in_base_name[EB_MAX_FILE_NAME_LENGTH + 1]; + EB_Disc_Code disc_code; + struct stat out_status; + struct stat old_status; + + /* + * Find a catalog file. + */ + if (eb_find_file_name(in_path, "catalog", in_base_name) + == EB_SUCCESS) { + disc_code = EB_DISC_EB; + } else if (eb_find_file_name(in_path, "catalogs", in_base_name) + == EB_SUCCESS) { + disc_code = EB_DISC_EPWING; + } else { + fprintf(stderr, _("%s: no catalog file: %s\n"), invoked_name, in_path); + return -1; + } + + /* + * Set file names. + */ + eb_compose_path_name(in_path, in_base_name, in_file_name); + eb_compose_path_name(out_path, in_base_name, out_file_name); + + strcpy(old_file_name, out_file_name); + eb_fix_path_name_suffix(old_file_name, ".old"); + strcpy(tmp_file_name, out_file_name); + eb_fix_path_name_suffix(tmp_file_name, ".tmp"); + + /* + * Copy the original catalog file. + */ + if (stat(old_file_name, &old_status) < 0 + && errno == ENOENT + && stat(out_file_name, &out_status) == 0 + && S_ISREG(out_status.st_mode)) { + trap_file_name = old_file_name; + if (copy_file(old_file_name, out_file_name) < 0) + return -1; + trap_file_name = NULL; + } + + /* + * Refile the catalog file. + */ + trap_file_name = tmp_file_name; + if (refile_catalog(tmp_file_name, in_file_name, disc_code, + subbook_name_list, subbook_name_count) < 0) { + unlink(tmp_file_name); + rename(old_file_name, out_file_name); + return -1; + } + if (rename(tmp_file_name, out_file_name) < 0) { + fprintf(stderr, _("%s: failed to move the file, %s: %s -> %s\n"), + invoked_name, strerror(errno), tmp_file_name, out_file_name); + unlink(tmp_file_name); + return -1; + } + + trap_file_name = NULL; + + return 0; +} + + +/* + * Read a catalog file `in_catalog_name' and create refiled catalog file + * as `out_catalog_name'. + */ +static int +refile_catalog(const char *out_catalog_name, const char *in_catalog_name, + EB_Disc_Code disc_code, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count) +{ + char buffer[EB_SIZE_PAGE]; + char directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + int in_subbook_count; + int in_file = -1; + int out_file = -1; + int subbbook_map_table[EB_MAX_SUBBOOKS]; + off_t out_file_offset; + size_t catalog_size; + int i, j; + + for (i = 0; i < EB_MAX_SUBBOOKS; i++) + subbbook_map_table[i] = EB_SUBBOOK_INVALID; + + if (disc_code == EB_DISC_EB) + catalog_size = EB_SIZE_EB_CATALOG; + else + catalog_size = EB_SIZE_EPWING_CATALOG; + + /* + * Open input file. + */ + in_file = open(in_catalog_name, O_RDONLY | O_BINARY); + if (in_file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), in_catalog_name); + goto failed; + } + + /* + * Open output file. + */ +#ifdef O_CREAT + out_file = open(out_catalog_name, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, + 0666 ^ get_umask()); +#else + out_file = creat(out_catalog_name, 0666 ^ get_umask()); +#endif + trap_file = out_file; + if (out_file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), out_catalog_name); + goto failed; + } + + /* + * Copy header. + */ + if (read(in_file, buffer, 16) != 16) { + fprintf(stderr, _("%s: failed to read the file, %s: %s\n"), + invoked_name, strerror(errno), in_catalog_name); + goto failed; + } + in_subbook_count = eb_uint2(buffer); + + if (write(out_file, buffer, 16) != 16) { + fprintf(stderr, _("%s: failed to write the file, %s: %s\n"), + invoked_name, strerror(errno), out_catalog_name); + goto failed; + } + out_file_offset = 16; + + /* + * Copy basic information of subbooks. + */ + for (i = 0; i < in_subbook_count; i++) { + /* + * Read subbook entry. + */ + if (read(in_file, buffer, catalog_size) != catalog_size) { + fprintf(stderr, _("%s: failed to read the file, %s: %s\n"), + invoked_name, strerror(errno), in_catalog_name); + goto failed; + } + + /* + * Check whether `subbook_name_list' has a directory name of + * this subbook. If not, we ignore this subbook. + */ + if (disc_code == EB_DISC_EB) { + strncpy(directory_name, buffer + 2 + EB_MAX_EB_TITLE_LENGTH, + EB_MAX_DIRECTORY_NAME_LENGTH); + } else { + strncpy(directory_name, buffer + 2 + EB_MAX_EPWING_TITLE_LENGTH, + EB_MAX_DIRECTORY_NAME_LENGTH); + } + directory_name[EB_MAX_DIRECTORY_NAME_LENGTH] = '\0'; + + if (subbook_name_count == 0) + subbbook_map_table[i] = i; + else { + int subbook_index; + + subbook_index = find_subbook_name(subbook_name_list, + subbook_name_count, directory_name); + if (subbook_index < 0) + continue; + subbbook_map_table[i] = subbook_index; + } + + /* + * Write the subbook entry. + */ + if (write(out_file, buffer, catalog_size) != catalog_size) { + fprintf(stderr, _("%s: failed to write the file, %s: %s\n"), + invoked_name, strerror(errno), out_catalog_name); + goto failed; + } + + out_file_offset += catalog_size; + } + + /* + * Copy extended information of subbooks. + */ + if (disc_code == EB_DISC_EPWING) { + for (i = 0; i < in_subbook_count; i++) { + if (read(in_file, buffer, catalog_size) != catalog_size) { + fprintf(stderr, _("%s: failed to read the file, %s: %s\n"), + invoked_name, strerror(errno), in_catalog_name); + goto failed; + } + if (subbbook_map_table[i] == EB_SUBBOOK_INVALID) + continue; + if (write(out_file, buffer, catalog_size) != catalog_size) { + fprintf(stderr, _("%s: failed to write the file, %s: %s\n"), + invoked_name, strerror(errno), out_catalog_name); + goto failed; + } + + out_file_offset += catalog_size; + } + } + + /* + * Check whether all subbooks in `subbook_name_list' are found. + */ + for (i = 0; i < subbook_name_count; i++) { + for (j = 0; j < in_subbook_count; j++) { + if (subbbook_map_table[j] == i) + break; + } + if (in_subbook_count <= j) { + fprintf(stderr, _("%s: warning: no such subbook: %s\n"), + invoked_name, subbook_name_list[i]); + } + } + + /* + * Copy rest of the catalog file. + */ + for (;;) { + ssize_t read_length; + + read_length = read(in_file, buffer, EB_SIZE_PAGE); + if (read_length == 0) { + break; + } else if (read_length < 0) { + fprintf(stderr, _("%s: failed to read the file, %s: %s\n"), + invoked_name, strerror(errno), in_catalog_name); + goto failed; + } + if (write(out_file, buffer, read_length) != read_length) { + fprintf(stderr, _("%s: failed to write the file, %s: %s\n"), + invoked_name, strerror(errno), out_catalog_name); + goto failed; + } + out_file_offset += read_length; + } + + /* + * Fill the current page with 0. + */ + if (0 < out_file_offset % EB_SIZE_PAGE) { + size_t pad_length; + + pad_length = EB_SIZE_PAGE - (out_file_offset % EB_SIZE_PAGE); + memset(buffer, 0, EB_SIZE_PAGE); + if (write(out_file, buffer, pad_length) != pad_length) { + fprintf(stderr, _("%s: failed to write the file, %s: %s\n"), + invoked_name, strerror(errno), out_catalog_name); + goto failed; + } + } + + /* + * Fix the number of subbook. + */ + if (subbook_name_count == 0) { + buffer[0] = (in_subbook_count >> 8) & 0xff; + buffer[1] = in_subbook_count & 0xff; + } else { + buffer[0] = (subbook_name_count >> 8) & 0xff; + buffer[1] = subbook_name_count & 0xff; + } + if (lseek(out_file, 0, SEEK_SET) < 0) { + fprintf(stderr, _("%s: failed to seek the file, %s: %s\n"), + invoked_name, strerror(errno), out_catalog_name); + goto failed; + } + if (write(out_file, buffer, 2) != 2) { + fprintf(stderr, _("%s: failed to write the file, %s: %s\n"), + invoked_name, strerror(errno), out_catalog_name); + goto failed; + } + + /* + * Close files. + */ + close(in_file); + close(out_file); + trap_file = -1; + + return 0; + + /* + * An error occurs... + */ + failed: + if (0 <= in_file) + close(in_file); + if (0 <= out_file) + close(out_file); + return -1; +} + + +/* + * Copy a file from `in_file_name' to `out_file_name'. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +static int +copy_file(const char *out_file_name, const char *in_file_name) +{ + unsigned char buffer[EB_SIZE_PAGE]; + size_t copied_length; + struct stat in_status; + int in_file = -1, out_file = -1; + ssize_t read_result; + struct utimbuf utim; + + /* + * Check for the input file. + */ + if (stat(in_file_name, &in_status) != 0 || !S_ISREG(in_status.st_mode)) { + fprintf(stderr, _("%s: no such file: %s\n"), invoked_name, + in_file_name); + goto failed; + } + + /* + * Open files. + */ + in_file = open(in_file_name, O_RDONLY | O_BINARY); + if (in_file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), in_file_name); + goto failed; + } + +#ifdef O_CREAT + out_file = open(out_file_name, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, + 0666 ^ get_umask()); +#else + out_file = creat(out_file_name, 0666 ^ get_umask()); +#endif + trap_file = out_file; + if (out_file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + + /* + * Read data from the input file, compress the data, and then + * write them to the output file. + */ + copied_length = 0; + for (;;) { + /* + * Read data from `in_file', and write them to `out_file'. + */ + read_result = read(in_file, buffer, EB_SIZE_PAGE); + if (read_result == 0) { + break; + } else if (read_result < 0) { + fprintf(stderr, _("%s: failed to read from the file, %s: %s\n"), + invoked_name, strerror(errno), in_file_name); + goto failed; + } + + /* + * Write decoded data to `out_file'. + */ + if (write(out_file, buffer, read_result) != read_result) { + fprintf(stderr, _("%s: failed to write to the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + copied_length += read_result; + } + + /* + * Close files. + */ + close(in_file); + close(out_file); + trap_file = -1; + + /* + * Set owner, group, permission, atime and mtime of `out_file'. + * We ignore return values of `chown', `chmod' and `utime'. + */ + utim.actime = in_status.st_atime; + utim.modtime = in_status.st_mtime; + utime(out_file_name, &utim); + + return 0; + + /* + * An error occurs... + */ + failed: + if (0 <= in_file) + close(in_file); + if (0 <= out_file) + close(out_file); + + return -1; +} + + +/* + * Signal handler. + */ +static void +trap(int signal_number) +{ + if (0 <= trap_file) + close(trap_file); + if (trap_file_name != NULL) + unlink(trap_file_name); + + exit(1); +} + + +/* + * Search `subbook_name_list[]' for `pattern'. + * `subbook_name_count' is length of `subbook_name_list[]'. + * + * If found, the function returns index of the element. Otherwise it + * returns -1. + */ +static int +find_subbook_name(char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count, const char *pattern) +{ + char canonicalized_pattern[EB_MAX_FILE_NAME_LENGTH + 1]; + char *space; + int i; + + strcpy(canonicalized_pattern, pattern); + space = strchr(canonicalized_pattern, ' '); + if (space != NULL) + *space = '\0'; + + for (i = 0; i < subbook_name_count; i++) { + if (strcasecmp(subbook_name_list[i], canonicalized_pattern) == 0) + return i; + } + + return -1; +} diff --git a/lib/ebu/ebrefile/eburefile b/lib/ebu/ebrefile/eburefile new file mode 100644 index 0000000..91c94b6 --- /dev/null +++ b/lib/ebu/ebrefile/eburefile @@ -0,0 +1,210 @@ +#! /bin/bash + +# eburefile - temporary wrapper script for .libs/eburefile +# Generated by libtool (GNU libtool) 2.4.6 +# +# The eburefile program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.6' + notinst_deplibs=' ../ebu/libebu.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "eburefile:eburefile:$LINENO: libtool wrapper (GNU libtool) 2.4.6" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "eburefile:eburefile:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "eburefile:eburefile:$LINENO: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program='eburefile' + progdir="$thisdir/.libs" + + + if test -f "$progdir/$program"; then + # Add our own library path to LD_LIBRARY_PATH + LD_LIBRARY_PATH="/mnt/d/files/projects/ebclient/lib/ebu/ebu/.libs:$LD_LIBRARY_PATH" + + # Some systems cannot cope with colon-terminated LD_LIBRARY_PATH + # The second colon is a workaround for a bug in BeOS R4 sed + LD_LIBRARY_PATH=`$ECHO "$LD_LIBRARY_PATH" | /usr/bin/sed 's/::*$//'` + + export LD_LIBRARY_PATH + + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/lib/ebu/ebstopcode/.deps/ebstopcode.Po b/lib/ebu/ebstopcode/.deps/ebstopcode.Po new file mode 100644 index 0000000..b7da2fb --- /dev/null +++ b/lib/ebu/ebstopcode/.deps/ebstopcode.Po @@ -0,0 +1,235 @@ +ebstopcode.o: ebstopcode.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/libintl.h ../ebu/eb.h ../ebu/defs.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h ../ebu/sysdefs.h \ + ../ebu/zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/text.h ../ebu/appendix.h ../libebutils/getopt.h \ + ../libebutils/ebutils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/libintl.h: + +../ebu/eb.h: + +../ebu/defs.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/text.h: + +../ebu/appendix.h: + +../libebutils/getopt.h: + +../libebutils/ebutils.h: diff --git a/lib/ebu/ebstopcode/.libs/ebustopcode b/lib/ebu/ebstopcode/.libs/ebustopcode new file mode 100644 index 0000000000000000000000000000000000000000..f7acd3729063aae6b56f936b5cf9e679c7ebac65 GIT binary patch literal 97736 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 literal 0 HcmV?d00001 diff --git a/lib/ebu/ebstopcode/Makefile b/lib/ebu/ebstopcode/Makefile new file mode 100644 index 0000000..2f204d8 --- /dev/null +++ b/lib/ebu/ebstopcode/Makefile @@ -0,0 +1,522 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# ebstopcode/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +bin_PROGRAMS = ebustopcode$(EXEEXT) +subdir = ebstopcode +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_ebustopcode_OBJECTS = ebstopcode.$(OBJEXT) +ebustopcode_OBJECTS = $(am_ebustopcode_OBJECTS) +am__DEPENDENCIES_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(ebustopcode_SOURCES) +DIST_SOURCES = $(ebustopcode_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu/ebstopcode +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu/ebstopcode +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +LIBEB = $(top_builddir)/ebu/libebu.la +LIBEBUTILS = $(top_builddir)/libebutils/libebutils.a +ebustopcode_SOURCES = ebstopcode.c +ebustopcode_LDADD = $(LIBEBUTILS) $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) $(ICONVLIBS) +ebustopcode_DEPENDENCIES = $(LIBEBUTILS) $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) \ + $(ICONVDEPS) + +INCLUDES = -I../libebutils -I$(top_srcdir)/libebutils -I$(top_srcdir) \ + $(INTLINCS) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebstopcode/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebstopcode/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +ebustopcode$(EXEEXT): $(ebustopcode_OBJECTS) $(ebustopcode_DEPENDENCIES) + @rm -f ebustopcode$(EXEEXT) + $(LINK) $(ebustopcode_OBJECTS) $(ebustopcode_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/ebstopcode.Po + +.c.o: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebstopcode/Makefile.am b/lib/ebu/ebstopcode/Makefile.am new file mode 100644 index 0000000..ba189ed --- /dev/null +++ b/lib/ebu/ebstopcode/Makefile.am @@ -0,0 +1,14 @@ +localedir = $(datadir)/locale + +LIBEB = $(top_builddir)/ebu/libebu.la +LIBEBUTILS = $(top_builddir)/libebutils/libebutils.a + +bin_PROGRAMS = ebustopcode + +ebustopcode_SOURCES = ebstopcode.c +ebustopcode_LDADD = $(LIBEBUTILS) $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) $(ICONVLIBS) +ebustopcode_DEPENDENCIES = $(LIBEBUTILS) $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) \ + $(ICONVDEPS) + +INCLUDES = -I../libebutils -I$(top_srcdir)/libebutils -I$(top_srcdir) \ + $(INTLINCS) diff --git a/lib/ebu/ebstopcode/Makefile.in b/lib/ebu/ebstopcode/Makefile.in new file mode 100644 index 0000000..3d0aabc --- /dev/null +++ b/lib/ebu/ebstopcode/Makefile.in @@ -0,0 +1,522 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = ebustopcode$(EXEEXT) +subdir = ebstopcode +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_ebustopcode_OBJECTS = ebstopcode.$(OBJEXT) +ebustopcode_OBJECTS = $(am_ebustopcode_OBJECTS) +am__DEPENDENCIES_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(ebustopcode_SOURCES) +DIST_SOURCES = $(ebustopcode_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +LIBEB = $(top_builddir)/ebu/libebu.la +LIBEBUTILS = $(top_builddir)/libebutils/libebutils.a +ebustopcode_SOURCES = ebstopcode.c +ebustopcode_LDADD = $(LIBEBUTILS) $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) $(ICONVLIBS) +ebustopcode_DEPENDENCIES = $(LIBEBUTILS) $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) \ + $(ICONVDEPS) + +INCLUDES = -I../libebutils -I$(top_srcdir)/libebutils -I$(top_srcdir) \ + $(INTLINCS) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebstopcode/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebstopcode/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +ebustopcode$(EXEEXT): $(ebustopcode_OBJECTS) $(ebustopcode_DEPENDENCIES) + @rm -f ebustopcode$(EXEEXT) + $(LINK) $(ebustopcode_OBJECTS) $(ebustopcode_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebstopcode.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-binPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebstopcode/ebstopcode.c b/lib/ebu/ebstopcode/ebstopcode.c new file mode 100644 index 0000000..53da642 --- /dev/null +++ b/lib/ebu/ebstopcode/ebstopcode.c @@ -0,0 +1,634 @@ +/* -*- C -*- + * Copyright (c) 2003-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#ifdef ENABLE_NLS +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#endif + +/* + * The maximum length of path name. + */ +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else /* not MAXPATHLEN */ +#define PATH_MAX 1024 +#endif /* not MAXPATHLEN */ +#endif /* not PATH_MAX */ + +#include "ebu/eb.h" +#include "ebu/error.h" +#include "ebu/text.h" +#include "ebu/appendix.h" + +#ifdef HAVE_GETOPT_LOG +#include +#else +#include "getopt.h" +#endif +#include "ebutils.h" + +/* + * Tricks for gettext. + */ +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define _(string) (string) +#define N_(string) (string) +#endif + +/* + * Character type tests and conversions. + */ +#define ASCII_ISDIGIT(c) ('0' <= (c) && (c) <= '9') +#define ASCII_ISUPPER(c) ('A' <= (c) && (c) <= 'Z') +#define ASCII_ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define ASCII_ISALPHA(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c)) +#define ASCII_ISALNUM(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c) || ASCII_ISDIGIT(c)) +#define ASCII_ISXDIGIT(c) \ + (ASCII_ISDIGIT(c) || ('A' <= (c) && (c) <= 'F') || ('a' <= (c) && (c) <= 'f')) +#define ASCII_TOUPPER(c) (('a' <= (c) && (c) <= 'z') ? (c) - 0x20 : (c)) +#define ASCII_TOLOWER(c) (('A' <= (c) && (c) <= 'Z') ? (c) + 0x20 : (c)) + +/* + * Default maximum length of text. + */ +#define DEFAULT_MAX_TEXT_LENGTH EB_SIZE_PAGE + +/* + * Default book directory. + */ +#define DEFAULT_BOOK_DIRECTORY "." + +/* + * Dummy stop code. + * + * Application cannot order EB Library not to use stop code. + * EB Library guesses stop code automatically when appendix is not + * given by application. + * + * Instead, we use dummy stop code. The code is never used in text + * of CD-ROM book. + */ +#define DUMMY_STOP_CODE0 0x1f00 +#define DUMMY_STOP_CODE1 0x0000 + +/* + * Command line options. + */ +static const char *short_options = "c:hl:np:v"; +static struct option long_options[] = { + {"code", required_argument, NULL, 'c'}, + {"help", no_argument, NULL, 'h'}, + {"text-length", required_argument, NULL, 'l'}, + {"no-candidates", no_argument, NULL, 'n'}, + {"text-position", required_argument, NULL, 'p'}, + {"version", no_argument, NULL, 'v'}, + {NULL, 0, NULL, 0} +}; + +/* + * Program name and version. + */ +static const char *program_name = "ebstopcode"; +static const char *program_version = VERSION; +static const char *invoked_name; + +/* + * Unexported functions. + */ +static int parse_stop_code_argument(const char *argument, + unsigned int *stop_code0, unsigned int *stop_code1); +static int parse_text_length_argument(const char *argument, + ssize_t *text_length); +static int parse_text_position_argument(const char *argument, + EB_Position *text_position); +static void output_help(void); +static int scan_subbook_text(const char *book_directory, + const char *subbook_name, EB_Position *text_position, + ssize_t max_text_length, int show_stop_code_flag, unsigned int stop_code0, + unsigned int stop_code1); +static EB_Error_Code hook_stop_code(EB_Book *book, EB_Appendix *appendix, + void *container, EB_Hook_Code code, int argc, const unsigned int *argv); + + +int +main(int argc, char *argv[]) +{ + const char *book_directory; + ssize_t max_text_length; + const char *subbook_name; + int show_stop_code_flag; + EB_Position text_position; + unsigned int stop_code0, stop_code1; + int ch; + + invoked_name = argv[0]; + max_text_length = DEFAULT_MAX_TEXT_LENGTH; + show_stop_code_flag = 1; + stop_code0 = DUMMY_STOP_CODE0; + stop_code1 = DUMMY_STOP_CODE1; + text_position.page = 0; + text_position.offset = 0; + + /* + * Initialize locale data. + */ +#ifdef ENABLE_NLS +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain(TEXT_DOMAIN_NAME, LOCALEDIR); + textdomain(TEXT_DOMAIN_NAME); +#endif + + /* + * Parse command line options. + */ + for (;;) { + ch = getopt_long(argc, argv, short_options, long_options, NULL); + if (ch == -1) + break; + + switch (ch) { + case 'c': + /* + * Option `-c'. Specify stop code manually. + */ + if (parse_stop_code_argument(optarg, &stop_code0, &stop_code1) < 0) + goto die; + max_text_length = 0; + break; + + case 'h': + /* + * Option `-h'. Display help message, then exit. + */ + output_help(); + exit(0); + + case 'l': + /* + * Option `-l'. Specify maximum length of text. + */ + if (parse_text_length_argument(optarg, &max_text_length) < 0) + goto die; + stop_code0 = DUMMY_STOP_CODE0; + stop_code1 = DUMMY_STOP_CODE1; + break; + + case 'n': + /* + * Option `-n'. Do not output stop code candidates. + */ + show_stop_code_flag = 0; + break; + + case 'p': + /* + * Option `-p'. Specify text position. + */ + if (parse_text_position_argument(optarg, &text_position) < 0) + goto die; + break; + + case 'v': + /* + * Option `-v'. Display version number, then exit. + */ + output_version(program_name, program_version); + exit(0); + + default: + output_try_help(invoked_name); + goto die; + } + } + + /* + * Check the number of rest arguments. + */ + if (argc - optind < 2) { + fprintf(stderr, _("%s: too few argument\n"), invoked_name); + output_try_help(invoked_name); + goto die; + } + if (2 < argc - optind) { + fprintf(stderr, _("%s: too many arguments\n"), invoked_name); + output_try_help(invoked_name); + goto die; + } + if (argc - optind == 2) { + book_directory = argv[optind]; + subbook_name = argv[optind + 1]; + } else { + book_directory = DEFAULT_BOOK_DIRECTORY; + subbook_name = argv[optind]; + } + + /* + * Scan stop code in text. + */ + if (scan_subbook_text(book_directory, subbook_name, &text_position, + max_text_length, show_stop_code_flag, stop_code0, stop_code1) < 0) + goto die; + + return 0; + + die: + fflush(stdout); + exit(1); +} + + +/* + * Parse stop code given as argument of the `-c' option. + */ +static int +parse_stop_code_argument(const char *argument, unsigned int *stop_code0, + unsigned int *stop_code1) +{ + const char *p = argument; + const char *foundp; + + /* + * Parse stop_code0. + */ + while (*p == ' ' || *p == '\t') + p++; + if (*p == '0' && (*(p + 1) == 'x' || *(p + 1) == 'X')) + p += 2; + + foundp = p; + while (ASCII_ISXDIGIT(*p)) + p++; + + if (p == foundp || (*p != ' ' && *p != '\t')) + goto failed; + *stop_code0 = strtol(foundp, NULL, 16); + if (*stop_code0 != 0x1f09 && *stop_code0 != 0x1f41) + goto failed; + + /* + * Parse stop_code1. + */ + while (*p == ' ' || *p == '\t') + p++; + if (*p == '0' && (*(p + 1) == 'x' || *(p + 1) == 'X')) + p += 2; + + foundp = p; + while (ASCII_ISXDIGIT(*p)) + p++; + + if (p == foundp || (*p != ' ' && *p != '\t' && *p != '\0')) + goto failed; + *stop_code1 = strtol(foundp, NULL, 16); + if (0xffff < *stop_code1) + goto failed; + + while (*p == ' ' || *p == '\t') + p++; + if (*p != '\0') + goto failed; + + return 0; + + /* + * An error occurs... + */ + failed: + fprintf(stderr, _("%s: invalid stop code `%s'\n"), invoked_name, + argument); + return -1; +} + + +/* + * Parse stop code given as argument of the `-t' option. + */ +static int +parse_text_length_argument(const char *argument, ssize_t *text_length) +{ + const char *p = argument; + const char *foundp; + + while (*p == ' ' || *p == '\t') + p++; + + foundp = p; + while (ASCII_ISDIGIT(*p)) + p++; + if (p == foundp) + goto failed; + while (*p == ' ' || *p == '\t') + p++; + if (*p != '\0') + goto failed; + + *text_length = strtol(foundp, NULL, 10); + return 0; + + /* + * An error occurs... + */ + failed: + fprintf(stderr, _("%s: invalid text length `%s'\n"), invoked_name, + argument); + return -1; +} + + +/* + * Parse text position given as argument of the `-p' option. + */ +static int +parse_text_position_argument(const char *argument, EB_Position *text_position) +{ + const char *p = argument; + const char *end_p; + int page; + int offset; + + /* + * Parse page. + */ + while (*p == ' ' || *p == '\t') + p++; + + if (*p == '0' && (*(p + 1) == 'x' || *(p + 1) == 'X')) + p += 2; + page = strtol(p, (char **)&end_p, 16); + if (end_p == p || *end_p != ':') + goto failed; + if (page <= 0) + goto failed; + + /* + * Parse offset. + */ + p = end_p + 1; + + if (*p == '0' && (*(p + 1) == 'x' || *(p + 1) == 'X')) + p += 2; + offset = strtol(p, (char **)&end_p, 16); + if (end_p == p) + goto failed; + while (*end_p == ' ' || *end_p == '\t') + end_p++; + if (*end_p != '\0') + goto failed; + if (offset < 0 || EB_SIZE_PAGE <= offset) + goto failed; + + text_position->page = page; + text_position->offset = offset; + + return 0; + + /* + * An error occurs... + */ + failed: + fprintf(stderr, _("%s: invalid text position `%s'\n"), invoked_name, + argument); + return -1; +} + + +/* + * Output help message to standard out, then exit. + */ +static void +output_help(void) +{ + printf(_("Usage: %s [option...] [book-directory] subbook\n"), + program_name); + printf(_("Options:\n")); + printf(_(" -c CODE, --code CODE\n")); + printf(_(" set stop code manually\n")); + printf(_(" -h --help display this help, then exit\n")); + printf(_(" -l LENGTH, --text-length LENGTH\n")); + printf(_(" maximum length of output text\n")); + printf(_(" (default: %d)\n"), + DEFAULT_MAX_TEXT_LENGTH); + printf(_(" -n --no-candidates suppress stop code candidates\n")); + printf(_(" -p PAGE:OFFSET, --text-position PAGE:OFFSET\n")); + printf(_(" start position of text\n")); + printf(_(" -v --version display version number, then exit\n")); + printf(_("\nArgument:\n")); + printf(_(" book-directory top directory of a CD-ROM book\n")); + printf(_(" (default: %s)\n"), + DEFAULT_BOOK_DIRECTORY); + printf(_("\nReport bugs to %s.\n"), MAILING_ADDRESS); + fflush(stdout); +} + + +/* + * Scan stop code in text. + */ +static int +scan_subbook_text(const char *book_directory, const char *subbook_name, + EB_Position *text_position, ssize_t max_text_length, + int show_stop_code_flag, unsigned int stop_code0, unsigned int stop_code1) +{ + EB_Error_Code error_code; + EB_Book book; + EB_Hookset hookset; + EB_Hook hook; + EB_Appendix appendix; + EB_Appendix_Subbook appendix_subbook; + EB_Subbook_Code subbook_code; + char text[EB_SIZE_PAGE]; + ssize_t text_length; + + /* + * Initialize EB Library, `book', `appendix' and `hookset'. + */ + eb_initialize_library(); + eb_initialize_book(&book); + eb_initialize_appendix(&appendix); + eb_initialize_hookset(&hookset); + + /* + * Bind `book'. + */ + error_code = eb_bind(&book, book_directory); + if (error_code != EB_SUCCESS) { + fprintf(stderr, _("%s: failed to bind the book, %s: %s\n"), + program_name, eb_error_message(error_code), book_directory); + goto die; + } + + /* + * Get a subbook code from the subbook name. + */ + error_code = find_subbook(&book, subbook_name, &subbook_code); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s: %s\n", + program_name, eb_error_message(error_code), subbook_name); + goto die; + } + + /* + * Set current subbook. + */ + if (eb_set_subbook(&book, subbook_code) < 0) { + fprintf(stderr, _("%s: failed to set the current subbook, %s\n"), + program_name, eb_error_message(error_code)); + goto die; + } + + /* + * Set stop-code manually. + * (we hack `appendix' directly.) + */ + appendix.code = subbook_code; + appendix.subbook_current = &appendix_subbook; + appendix_subbook.code = subbook_code; + appendix_subbook.stop_code0 = stop_code0; + appendix_subbook.stop_code1 = stop_code1; + + /* + * Set text hooks (for 0x1f41 and 0x1f09). + */ + if (show_stop_code_flag) { + hook.code = EB_HOOK_BEGIN_KEYWORD; + hook.function = hook_stop_code; + eb_set_hook(&hookset, &hook); + + hook.code = EB_HOOK_SET_INDENT; + hook.function = hook_stop_code; + eb_set_hook(&hookset, &hook); + } + + /* + * Get a position where the text data starts, if text_position + * is {page=0, offset=0}. + */ + if (text_position->page == 0 && text_position->offset == 0) { + error_code = eb_text(&book, text_position); + if (error_code != EB_SUCCESS) { + fprintf(stderr, _("%s: failed to get text information, %s\n"), + program_name, eb_error_message(error_code)); + goto die; + } + } + + /* + * Read text. + */ + error_code = eb_seek_text(&book, text_position); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", + program_name, eb_error_message(error_code)); + goto die; + } + + text_length = 0; + while (max_text_length == 0 || text_length < max_text_length) { + ssize_t result_length; + size_t read_length; + + if (max_text_length == 0 + || sizeof(text) - 1 <= max_text_length - text_length) { + read_length = sizeof(text) - 1; + } else { + read_length = max_text_length - text_length; + } + error_code = eb_read_text(&book, &appendix, &hookset, NULL, + read_length, text, &result_length); + if (error_code != EB_SUCCESS) { + fprintf(stderr, _("%s: failed to read text, %s\n"), + program_name, eb_error_message(error_code)); + goto die; + } + if (result_length <= 0) + break; + fputs_eucjp_to_locale(text, stdout); + text_length += result_length; + } + + /* + * Finalize `hookset', `appendix', `book' and EB Library. + */ + eb_finalize_hookset(&hookset); + eb_finalize_appendix(&appendix); + eb_finalize_book(&book); + eb_finalize_library(); + return 0; + + /* + * An error occurs... + */ + die: + eb_finalize_hookset(&hookset); + eb_finalize_appendix(&appendix); + eb_finalize_book(&book); + eb_finalize_library(); + return -1; +} + + +/* + * Hook function for EB_HOOK_BEGIN_KEYWORD and EB_HOK_SET_INDENT. + */ +static EB_Error_Code +hook_stop_code(EB_Book *book, EB_Appendix *appendix, void *container, + EB_Hook_Code code, int argc, const unsigned int *argv) +{ + char string[EB_SIZE_PAGE]; + + if (0 < book->text_context.printable_count) { + sprintf(string, "\n=== stop-code?: 0x%04x 0x%04x ===\n", + argv[0], argv[1]); + eb_write_text_string(book, string); + } + + return EB_SUCCESS; +} diff --git a/lib/ebu/ebstopcode/ebustopcode b/lib/ebu/ebstopcode/ebustopcode new file mode 100644 index 0000000..cab87d2 --- /dev/null +++ b/lib/ebu/ebstopcode/ebustopcode @@ -0,0 +1,210 @@ +#! /bin/bash + +# ebustopcode - temporary wrapper script for .libs/ebustopcode +# Generated by libtool (GNU libtool) 2.4.6 +# +# The ebustopcode program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.6' + notinst_deplibs=' ../ebu/libebu.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "ebustopcode:ebustopcode:$LINENO: libtool wrapper (GNU libtool) 2.4.6" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "ebustopcode:ebustopcode:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "ebustopcode:ebustopcode:$LINENO: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program='ebustopcode' + progdir="$thisdir/.libs" + + + if test -f "$progdir/$program"; then + # Add our own library path to LD_LIBRARY_PATH + LD_LIBRARY_PATH="/mnt/d/files/projects/ebclient/lib/ebu/ebu/.libs:$LD_LIBRARY_PATH" + + # Some systems cannot cope with colon-terminated LD_LIBRARY_PATH + # The second colon is a workaround for a bug in BeOS R4 sed + LD_LIBRARY_PATH=`$ECHO "$LD_LIBRARY_PATH" | /usr/bin/sed 's/::*$//'` + + export LD_LIBRARY_PATH + + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/lib/ebu/ebu.conf b/lib/ebu/ebu.conf new file mode 100644 index 0000000..641c90b --- /dev/null +++ b/lib/ebu/ebu.conf @@ -0,0 +1,53 @@ +# +# Installation status of EB Library. +# + +# Version. +EBCONF_VERSION="4.5-20200413" + +# EB Libarry include files are in DIR. +# (--with-eb-includes) +EBCONF_EBINCS="-I/usr/local/include" + +# EB Libarry files are in DIR. +# (--with-eb-libraries) +EBCONF_EBLIBS="-L/usr/local/lib -lebu" + +# zlib include files are in DIR. +# (--with-zlib-includes) +EBCONF_ZLIBINCS="" + +# zlib libarry files are in DIR. +# (--with-zlib-libraries) +EBCONF_ZLIBLIBS="-lz" + +# pthread is supported or not. +# (--enable-pthread) +EBCONF_ENABLE_PTHREAD="no" + +# additional CPPFLAGS for pthread support +# (--with-pthread-cppflags) +EBCONF_PTHREAD_CPPFLAGS="" + +# additional CFLAGS for pthread support +# (--with-pthread-cflags) +EBCONF_PTHREAD_CFLAGS="" + +# additional LDFLAGS for pthread support +# (--with-pthread-ldflags) +EBCONF_PTHREAD_LDFLAGS="" + +# native language is supported or not. +# (--enable-nls) +EBCONF_ENABLE_NLS="yes" + +# gettext include files are in DIR. +# (--with-gettext-includes) +EBCONF_INTLINCS="" + +# gettext library files are in DIR. +# (--with-gettext-libraries) +EBCONF_INTLLIBS="" + +# remote access is supported or not. +EBCONF_ENABLE_EBNET="yes" diff --git a/lib/ebu/ebu.conf.in b/lib/ebu/ebu.conf.in new file mode 100644 index 0000000..e968677 --- /dev/null +++ b/lib/ebu/ebu.conf.in @@ -0,0 +1,53 @@ +# +# Installation status of EB Library. +# + +# Version. +EBCONF_VERSION="@VERSION@" + +# EB Libarry include files are in DIR. +# (--with-eb-includes) +EBCONF_EBINCS="@EBCONF_EBINCS@" + +# EB Libarry files are in DIR. +# (--with-eb-libraries) +EBCONF_EBLIBS="@EBCONF_EBLIBS@" + +# zlib include files are in DIR. +# (--with-zlib-includes) +EBCONF_ZLIBINCS="@EBCONF_ZLIBINCS@" + +# zlib libarry files are in DIR. +# (--with-zlib-libraries) +EBCONF_ZLIBLIBS="@EBCONF_ZLIBLIBS@" + +# pthread is supported or not. +# (--enable-pthread) +EBCONF_ENABLE_PTHREAD="@ENABLE_PTHREAD@" + +# additional CPPFLAGS for pthread support +# (--with-pthread-cppflags) +EBCONF_PTHREAD_CPPFLAGS="@PTHREAD_CPPFLAGS@" + +# additional CFLAGS for pthread support +# (--with-pthread-cflags) +EBCONF_PTHREAD_CFLAGS="@PTHREAD_CFLAGS@" + +# additional LDFLAGS for pthread support +# (--with-pthread-ldflags) +EBCONF_PTHREAD_LDFLAGS="@PTHREAD_LDFLAGS@" + +# native language is supported or not. +# (--enable-nls) +EBCONF_ENABLE_NLS="@ENABLE_NLS@" + +# gettext include files are in DIR. +# (--with-gettext-includes) +EBCONF_INTLINCS="@EBCONF_INTLINCS@" + +# gettext library files are in DIR. +# (--with-gettext-libraries) +EBCONF_INTLLIBS="@EBCONF_INTLLIBS@" + +# remote access is supported or not. +EBCONF_ENABLE_EBNET="@ENABLE_EBNET@" diff --git a/lib/ebu/ebu/.deps/appendix.Plo b/lib/ebu/ebu/.deps/appendix.Plo new file mode 100644 index 0000000..876cec4 --- /dev/null +++ b/lib/ebu/ebu/.deps/appendix.Plo @@ -0,0 +1,310 @@ +appendix.lo: appendix.c /usr/include/stdc-predef.h build-pre.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + appendix.h ebnet.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +appendix.h: + +ebnet.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/appsub.Plo b/lib/ebu/ebu/.deps/appsub.Plo new file mode 100644 index 0000000..aa9a88c --- /dev/null +++ b/lib/ebu/ebu/.deps/appsub.Plo @@ -0,0 +1,308 @@ +appsub.lo: appsub.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + appendix.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +appendix.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/bcd.Plo b/lib/ebu/ebu/.deps/bcd.Plo new file mode 100644 index 0000000..0f2ab7b --- /dev/null +++ b/lib/ebu/ebu/.deps/bcd.Plo @@ -0,0 +1,306 @@ +bcd.lo: bcd.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/binary.Plo b/lib/ebu/ebu/.deps/binary.Plo new file mode 100644 index 0000000..efa1f54 --- /dev/null +++ b/lib/ebu/ebu/.deps/binary.Plo @@ -0,0 +1,308 @@ +binary.lo: binary.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + binary.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +binary.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/bitmap.Plo b/lib/ebu/ebu/.deps/bitmap.Plo new file mode 100644 index 0000000..e0f1ec2 --- /dev/null +++ b/lib/ebu/ebu/.deps/bitmap.Plo @@ -0,0 +1,312 @@ +bitmap.lo: bitmap.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + font.h build-post.h /usr/include/zlib.h /usr/include/zconf.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +font.h: + +build-post.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: diff --git a/lib/ebu/ebu/.deps/book.Plo b/lib/ebu/ebu/.deps/book.Plo new file mode 100644 index 0000000..3fc78fe --- /dev/null +++ b/lib/ebu/ebu/.deps/book.Plo @@ -0,0 +1,310 @@ +book.lo: book.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + font.h ebnet.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +font.h: + +ebnet.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/booklist.Plo b/lib/ebu/ebu/.deps/booklist.Plo new file mode 100644 index 0000000..21b5519 --- /dev/null +++ b/lib/ebu/ebu/.deps/booklist.Plo @@ -0,0 +1,308 @@ +booklist.lo: booklist.c /usr/include/stdc-predef.h build-pre.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + ebnet.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +ebnet.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/color.Plo b/lib/ebu/ebu/.deps/color.Plo new file mode 100644 index 0000000..3862cae --- /dev/null +++ b/lib/ebu/ebu/.deps/color.Plo @@ -0,0 +1,306 @@ +color.lo: color.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/copyright.Plo b/lib/ebu/ebu/.deps/copyright.Plo new file mode 100644 index 0000000..4c7a36b --- /dev/null +++ b/lib/ebu/ebu/.deps/copyright.Plo @@ -0,0 +1,306 @@ +copyright.lo: copyright.c /usr/include/stdc-predef.h build-pre.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/cross.Plo b/lib/ebu/ebu/.deps/cross.Plo new file mode 100644 index 0000000..12bf951 --- /dev/null +++ b/lib/ebu/ebu/.deps/cross.Plo @@ -0,0 +1,306 @@ +cross.lo: cross.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/dummyin6.Plo b/lib/ebu/ebu/.deps/dummyin6.Plo new file mode 100644 index 0000000..81d531d --- /dev/null +++ b/lib/ebu/ebu/.deps/dummyin6.Plo @@ -0,0 +1,175 @@ +dummyin6.lo: dummyin6.c /usr/include/stdc-predef.h dummyin6.h ../config.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/socket.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h \ + /usr/include/x86_64-linux-gnu/bits/socket.h \ + /usr/include/x86_64-linux-gnu/bits/socket_type.h \ + /usr/include/x86_64-linux-gnu/bits/sockaddr.h \ + /usr/include/x86_64-linux-gnu/asm/socket.h \ + /usr/include/asm-generic/socket.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types_64.h \ + /usr/include/asm-generic/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h \ + /usr/include/x86_64-linux-gnu/asm/sockios.h \ + /usr/include/asm-generic/sockios.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h \ + /usr/include/x86_64-linux-gnu/bits/socket2.h /usr/include/netinet/in.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/in.h /usr/include/netdb.h \ + /usr/include/rpc/netdb.h /usr/include/x86_64-linux-gnu/bits/netdb.h + +/usr/include/stdc-predef.h: + +dummyin6.h: + +../config.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/socket.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h: + +/usr/include/x86_64-linux-gnu/bits/socket.h: + +/usr/include/x86_64-linux-gnu/bits/socket_type.h: + +/usr/include/x86_64-linux-gnu/bits/sockaddr.h: + +/usr/include/x86_64-linux-gnu/asm/socket.h: + +/usr/include/asm-generic/socket.h: + +/usr/include/linux/posix_types.h: + +/usr/include/linux/stddef.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types_64.h: + +/usr/include/asm-generic/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/bitsperlong.h: + +/usr/include/asm-generic/bitsperlong.h: + +/usr/include/x86_64-linux-gnu/asm/sockios.h: + +/usr/include/asm-generic/sockios.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h: + +/usr/include/x86_64-linux-gnu/bits/socket2.h: + +/usr/include/netinet/in.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h: + +/usr/include/x86_64-linux-gnu/bits/in.h: + +/usr/include/netdb.h: + +/usr/include/rpc/netdb.h: + +/usr/include/x86_64-linux-gnu/bits/netdb.h: diff --git a/lib/ebu/ebu/.deps/eb.Plo b/lib/ebu/ebu/.deps/eb.Plo new file mode 100644 index 0000000..cbce709 --- /dev/null +++ b/lib/ebu/ebu/.deps/eb.Plo @@ -0,0 +1,308 @@ +eb.lo: eb.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + ebnet.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +ebnet.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/ebnet.Plo b/lib/ebu/ebu/.deps/ebnet.Plo new file mode 100644 index 0000000..2d6a610 --- /dev/null +++ b/lib/ebu/ebu/.deps/ebnet.Plo @@ -0,0 +1,382 @@ +ebnet.lo: ebnet.c /usr/include/stdc-predef.h ../config.h build-pre.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/x86_64-linux-gnu/sys/socket.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h \ + /usr/include/x86_64-linux-gnu/bits/socket.h \ + /usr/include/x86_64-linux-gnu/bits/socket_type.h \ + /usr/include/x86_64-linux-gnu/bits/sockaddr.h \ + /usr/include/x86_64-linux-gnu/asm/socket.h \ + /usr/include/asm-generic/socket.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types_64.h \ + /usr/include/asm-generic/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h \ + /usr/include/x86_64-linux-gnu/asm/sockios.h \ + /usr/include/asm-generic/sockios.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h \ + /usr/include/x86_64-linux-gnu/bits/socket2.h eb.h defs.h sysdefs.h zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h dummyin6.h /usr/include/netinet/in.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/in.h /usr/include/netdb.h \ + /usr/include/rpc/netdb.h /usr/include/x86_64-linux-gnu/bits/netdb.h \ + ebnet.h linebuf.h urlparts.h + +/usr/include/stdc-predef.h: + +../config.h: + +build-pre.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/x86_64-linux-gnu/sys/socket.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h: + +/usr/include/x86_64-linux-gnu/bits/socket.h: + +/usr/include/x86_64-linux-gnu/bits/socket_type.h: + +/usr/include/x86_64-linux-gnu/bits/sockaddr.h: + +/usr/include/x86_64-linux-gnu/asm/socket.h: + +/usr/include/asm-generic/socket.h: + +/usr/include/linux/posix_types.h: + +/usr/include/linux/stddef.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types_64.h: + +/usr/include/asm-generic/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/bitsperlong.h: + +/usr/include/asm-generic/bitsperlong.h: + +/usr/include/x86_64-linux-gnu/asm/sockios.h: + +/usr/include/asm-generic/sockios.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h: + +/usr/include/x86_64-linux-gnu/bits/socket2.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: + +dummyin6.h: + +/usr/include/netinet/in.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h: + +/usr/include/x86_64-linux-gnu/bits/in.h: + +/usr/include/netdb.h: + +/usr/include/rpc/netdb.h: + +/usr/include/x86_64-linux-gnu/bits/netdb.h: + +ebnet.h: + +linebuf.h: + +urlparts.h: diff --git a/lib/ebu/ebu/.deps/endword.Plo b/lib/ebu/ebu/.deps/endword.Plo new file mode 100644 index 0000000..7719e62 --- /dev/null +++ b/lib/ebu/ebu/.deps/endword.Plo @@ -0,0 +1,306 @@ +endword.lo: endword.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/error.Plo b/lib/ebu/ebu/.deps/error.Plo new file mode 100644 index 0000000..1f1e4a1 --- /dev/null +++ b/lib/ebu/ebu/.deps/error.Plo @@ -0,0 +1,306 @@ +error.lo: error.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/exactword.Plo b/lib/ebu/ebu/.deps/exactword.Plo new file mode 100644 index 0000000..2ddfa7c --- /dev/null +++ b/lib/ebu/ebu/.deps/exactword.Plo @@ -0,0 +1,306 @@ +exactword.lo: exactword.c /usr/include/stdc-predef.h build-pre.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/filename.Plo b/lib/ebu/ebu/.deps/filename.Plo new file mode 100644 index 0000000..b25113d --- /dev/null +++ b/lib/ebu/ebu/.deps/filename.Plo @@ -0,0 +1,308 @@ +filename.lo: filename.c /usr/include/stdc-predef.h build-pre.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + ebnet.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +ebnet.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/font.Plo b/lib/ebu/ebu/.deps/font.Plo new file mode 100644 index 0000000..44de987 --- /dev/null +++ b/lib/ebu/ebu/.deps/font.Plo @@ -0,0 +1,308 @@ +font.lo: font.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + font.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +font.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/getaddrinfo.Plo b/lib/ebu/ebu/.deps/getaddrinfo.Plo new file mode 100644 index 0000000..e45c5d6 --- /dev/null +++ b/lib/ebu/ebu/.deps/getaddrinfo.Plo @@ -0,0 +1,354 @@ +getaddrinfo.lo: getaddrinfo.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/socket.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h \ + /usr/include/x86_64-linux-gnu/bits/socket.h \ + /usr/include/x86_64-linux-gnu/bits/socket_type.h \ + /usr/include/x86_64-linux-gnu/bits/sockaddr.h \ + /usr/include/x86_64-linux-gnu/asm/socket.h \ + /usr/include/asm-generic/socket.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types_64.h \ + /usr/include/asm-generic/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h \ + /usr/include/x86_64-linux-gnu/asm/sockios.h \ + /usr/include/asm-generic/sockios.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h \ + /usr/include/x86_64-linux-gnu/bits/socket2.h /usr/include/netinet/in.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/bits/in.h /usr/include/arpa/inet.h \ + /usr/include/netdb.h /usr/include/rpc/netdb.h \ + /usr/include/x86_64-linux-gnu/bits/netdb.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + getaddrinfo.h build-pre.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/socket.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h: + +/usr/include/x86_64-linux-gnu/bits/socket.h: + +/usr/include/x86_64-linux-gnu/bits/socket_type.h: + +/usr/include/x86_64-linux-gnu/bits/sockaddr.h: + +/usr/include/x86_64-linux-gnu/asm/socket.h: + +/usr/include/asm-generic/socket.h: + +/usr/include/linux/posix_types.h: + +/usr/include/linux/stddef.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types_64.h: + +/usr/include/asm-generic/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/bitsperlong.h: + +/usr/include/asm-generic/bitsperlong.h: + +/usr/include/x86_64-linux-gnu/asm/sockios.h: + +/usr/include/asm-generic/sockios.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h: + +/usr/include/x86_64-linux-gnu/bits/socket2.h: + +/usr/include/netinet/in.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h: + +/usr/include/x86_64-linux-gnu/bits/in.h: + +/usr/include/arpa/inet.h: + +/usr/include/netdb.h: + +/usr/include/rpc/netdb.h: + +/usr/include/x86_64-linux-gnu/bits/netdb.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +getaddrinfo.h: + +build-pre.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: diff --git a/lib/ebu/ebu/.deps/hook.Plo b/lib/ebu/ebu/.deps/hook.Plo new file mode 100644 index 0000000..c4cd2fa --- /dev/null +++ b/lib/ebu/ebu/.deps/hook.Plo @@ -0,0 +1,310 @@ +hook.lo: hook.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + appendix.h text.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +appendix.h: + +text.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/jacode.Plo b/lib/ebu/ebu/.deps/jacode.Plo new file mode 100644 index 0000000..b3fd817 --- /dev/null +++ b/lib/ebu/ebu/.deps/jacode.Plo @@ -0,0 +1,281 @@ +jacode.lo: jacode.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: diff --git a/lib/ebu/ebu/.deps/keyword.Plo b/lib/ebu/ebu/.deps/keyword.Plo new file mode 100644 index 0000000..2f0ae98 --- /dev/null +++ b/lib/ebu/ebu/.deps/keyword.Plo @@ -0,0 +1,306 @@ +keyword.lo: keyword.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/linebuf.Plo b/lib/ebu/ebu/.deps/linebuf.Plo new file mode 100644 index 0000000..f53608f --- /dev/null +++ b/lib/ebu/ebu/.deps/linebuf.Plo @@ -0,0 +1,282 @@ +linebuf.lo: linebuf.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/socket.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h \ + /usr/include/x86_64-linux-gnu/bits/socket.h \ + /usr/include/x86_64-linux-gnu/bits/socket_type.h \ + /usr/include/x86_64-linux-gnu/bits/sockaddr.h \ + /usr/include/x86_64-linux-gnu/asm/socket.h \ + /usr/include/asm-generic/socket.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types_64.h \ + /usr/include/asm-generic/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h \ + /usr/include/x86_64-linux-gnu/asm/sockios.h \ + /usr/include/asm-generic/sockios.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h \ + /usr/include/x86_64-linux-gnu/bits/socket2.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/x86_64-linux-gnu/sys/time.h linebuf.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/socket.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h: + +/usr/include/x86_64-linux-gnu/bits/socket.h: + +/usr/include/x86_64-linux-gnu/bits/socket_type.h: + +/usr/include/x86_64-linux-gnu/bits/sockaddr.h: + +/usr/include/x86_64-linux-gnu/asm/socket.h: + +/usr/include/asm-generic/socket.h: + +/usr/include/linux/posix_types.h: + +/usr/include/linux/stddef.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types_64.h: + +/usr/include/asm-generic/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/bitsperlong.h: + +/usr/include/asm-generic/bitsperlong.h: + +/usr/include/x86_64-linux-gnu/asm/sockios.h: + +/usr/include/asm-generic/sockios.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h: + +/usr/include/x86_64-linux-gnu/bits/socket2.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +linebuf.h: diff --git a/lib/ebu/ebu/.deps/lock.Plo b/lib/ebu/ebu/.deps/lock.Plo new file mode 100644 index 0000000..7c0cd8d --- /dev/null +++ b/lib/ebu/ebu/.deps/lock.Plo @@ -0,0 +1,302 @@ +lock.lo: lock.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h defs.h \ + sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/log.Plo b/lib/ebu/ebu/.deps/log.Plo new file mode 100644 index 0000000..3f067d5 --- /dev/null +++ b/lib/ebu/ebu/.deps/log.Plo @@ -0,0 +1,304 @@ +log.lo: log.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/match.Plo b/lib/ebu/ebu/.deps/match.Plo new file mode 100644 index 0000000..eb9547c --- /dev/null +++ b/lib/ebu/ebu/.deps/match.Plo @@ -0,0 +1,304 @@ +match.lo: match.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/menu.Plo b/lib/ebu/ebu/.deps/menu.Plo new file mode 100644 index 0000000..b19059f --- /dev/null +++ b/lib/ebu/ebu/.deps/menu.Plo @@ -0,0 +1,306 @@ +menu.lo: menu.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/multi.Plo b/lib/ebu/ebu/.deps/multi.Plo new file mode 100644 index 0000000..5be0d95 --- /dev/null +++ b/lib/ebu/ebu/.deps/multi.Plo @@ -0,0 +1,306 @@ +multi.lo: multi.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/multiplex.Plo b/lib/ebu/ebu/.deps/multiplex.Plo new file mode 100644 index 0000000..43d76f5 --- /dev/null +++ b/lib/ebu/ebu/.deps/multiplex.Plo @@ -0,0 +1,379 @@ +multiplex.lo: multiplex.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/netdb.h \ + /usr/include/netinet/in.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/x86_64-linux-gnu/sys/socket.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h \ + /usr/include/x86_64-linux-gnu/bits/socket.h \ + /usr/include/x86_64-linux-gnu/bits/socket_type.h \ + /usr/include/x86_64-linux-gnu/bits/sockaddr.h \ + /usr/include/x86_64-linux-gnu/asm/socket.h \ + /usr/include/asm-generic/socket.h /usr/include/linux/posix_types.h \ + /usr/include/linux/stddef.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/posix_types_64.h \ + /usr/include/asm-generic/posix_types.h \ + /usr/include/x86_64-linux-gnu/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h \ + /usr/include/x86_64-linux-gnu/asm/sockios.h \ + /usr/include/asm-generic/sockios.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h \ + /usr/include/x86_64-linux-gnu/bits/socket2.h \ + /usr/include/x86_64-linux-gnu/bits/in.h /usr/include/rpc/netdb.h \ + /usr/include/x86_64-linux-gnu/bits/netdb.h /usr/include/arpa/inet.h \ + build-pre.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + build-post.h dummyin6.h ebnet.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/netdb.h: + +/usr/include/netinet/in.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h: + +/usr/include/x86_64-linux-gnu/sys/socket.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h: + +/usr/include/x86_64-linux-gnu/bits/socket.h: + +/usr/include/x86_64-linux-gnu/bits/socket_type.h: + +/usr/include/x86_64-linux-gnu/bits/sockaddr.h: + +/usr/include/x86_64-linux-gnu/asm/socket.h: + +/usr/include/asm-generic/socket.h: + +/usr/include/linux/posix_types.h: + +/usr/include/linux/stddef.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/posix_types_64.h: + +/usr/include/asm-generic/posix_types.h: + +/usr/include/x86_64-linux-gnu/asm/bitsperlong.h: + +/usr/include/asm-generic/bitsperlong.h: + +/usr/include/x86_64-linux-gnu/asm/sockios.h: + +/usr/include/asm-generic/sockios.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h: + +/usr/include/x86_64-linux-gnu/bits/socket2.h: + +/usr/include/x86_64-linux-gnu/bits/in.h: + +/usr/include/rpc/netdb.h: + +/usr/include/x86_64-linux-gnu/bits/netdb.h: + +/usr/include/arpa/inet.h: + +build-pre.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +build-post.h: + +dummyin6.h: + +ebnet.h: diff --git a/lib/ebu/ebu/.deps/narwalt.Plo b/lib/ebu/ebu/.deps/narwalt.Plo new file mode 100644 index 0000000..64d24de --- /dev/null +++ b/lib/ebu/ebu/.deps/narwalt.Plo @@ -0,0 +1,308 @@ +narwalt.lo: narwalt.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + appendix.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +appendix.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/narwfont.Plo b/lib/ebu/ebu/.deps/narwfont.Plo new file mode 100644 index 0000000..026051a --- /dev/null +++ b/lib/ebu/ebu/.deps/narwfont.Plo @@ -0,0 +1,308 @@ +narwfont.lo: narwfont.c /usr/include/stdc-predef.h build-pre.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + font.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +font.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/readtext.Plo b/lib/ebu/ebu/.deps/readtext.Plo new file mode 100644 index 0000000..de24c31 --- /dev/null +++ b/lib/ebu/ebu/.deps/readtext.Plo @@ -0,0 +1,308 @@ +readtext.lo: readtext.c /usr/include/stdc-predef.h build-pre.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + text.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +text.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/search.Plo b/lib/ebu/ebu/.deps/search.Plo new file mode 100644 index 0000000..1c08567 --- /dev/null +++ b/lib/ebu/ebu/.deps/search.Plo @@ -0,0 +1,308 @@ +search.lo: search.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + text.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +text.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/setword.Plo b/lib/ebu/ebu/.deps/setword.Plo new file mode 100644 index 0000000..deab71b --- /dev/null +++ b/lib/ebu/ebu/.deps/setword.Plo @@ -0,0 +1,306 @@ +setword.lo: setword.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/stopcode.Plo b/lib/ebu/ebu/.deps/stopcode.Plo new file mode 100644 index 0000000..8b1d1d0 --- /dev/null +++ b/lib/ebu/ebu/.deps/stopcode.Plo @@ -0,0 +1,310 @@ +stopcode.lo: stopcode.c /usr/include/stdc-predef.h build-pre.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + appendix.h text.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +appendix.h: + +text.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/strcasecmp.Plo b/lib/ebu/ebu/.deps/strcasecmp.Plo new file mode 100644 index 0000000..d9e87ca --- /dev/null +++ b/lib/ebu/ebu/.deps/strcasecmp.Plo @@ -0,0 +1,105 @@ +strcasecmp.lo: strcasecmp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: diff --git a/lib/ebu/ebu/.deps/subbook.Plo b/lib/ebu/ebu/.deps/subbook.Plo new file mode 100644 index 0000000..9927db4 --- /dev/null +++ b/lib/ebu/ebu/.deps/subbook.Plo @@ -0,0 +1,310 @@ +subbook.lo: subbook.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + binary.h font.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +binary.h: + +font.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/text.Plo b/lib/ebu/ebu/.deps/text.Plo new file mode 100644 index 0000000..73c7697 --- /dev/null +++ b/lib/ebu/ebu/.deps/text.Plo @@ -0,0 +1,306 @@ +text.lo: text.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/urlparts.Plo b/lib/ebu/ebu/.deps/urlparts.Plo new file mode 100644 index 0000000..786b3c0 --- /dev/null +++ b/lib/ebu/ebu/.deps/urlparts.Plo @@ -0,0 +1,187 @@ +urlparts.lo: urlparts.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h urlparts.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +urlparts.h: diff --git a/lib/ebu/ebu/.deps/utf8.Plo b/lib/ebu/ebu/.deps/utf8.Plo new file mode 100644 index 0000000..f2cc6a5 --- /dev/null +++ b/lib/ebu/ebu/.deps/utf8.Plo @@ -0,0 +1,310 @@ +utf8.lo: utf8.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + binary.h font.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +binary.h: + +font.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/widealt.Plo b/lib/ebu/ebu/.deps/widealt.Plo new file mode 100644 index 0000000..19084a9 --- /dev/null +++ b/lib/ebu/ebu/.deps/widealt.Plo @@ -0,0 +1,308 @@ +widealt.lo: widealt.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + appendix.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +appendix.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/widefont.Plo b/lib/ebu/ebu/.deps/widefont.Plo new file mode 100644 index 0000000..1db2a32 --- /dev/null +++ b/lib/ebu/ebu/.deps/widefont.Plo @@ -0,0 +1,308 @@ +widefont.lo: widefont.c /usr/include/stdc-predef.h build-pre.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + font.h build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +font.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/word.Plo b/lib/ebu/ebu/.deps/word.Plo new file mode 100644 index 0000000..6c5c62b --- /dev/null +++ b/lib/ebu/ebu/.deps/word.Plo @@ -0,0 +1,306 @@ +word.lo: word.c /usr/include/stdc-predef.h build-pre.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h eb.h \ + defs.h sysdefs.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h error.h \ + build-post.h + +/usr/include/stdc-predef.h: + +build-pre.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +eb.h: + +defs.h: + +sysdefs.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +error.h: + +build-post.h: diff --git a/lib/ebu/ebu/.deps/zio.Plo b/lib/ebu/ebu/.deps/zio.Plo new file mode 100644 index 0000000..cdf307a --- /dev/null +++ b/lib/ebu/ebu/.deps/zio.Plo @@ -0,0 +1,285 @@ +zio.lo: zio.c /usr/include/stdc-predef.h ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/zlib.h \ + /usr/include/zconf.h zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h ebnet.h \ + eb.h defs.h sysdefs.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +ebnet.h: + +eb.h: + +defs.h: + +sysdefs.h: diff --git a/lib/ebu/ebu/.libs/libebu.a b/lib/ebu/ebu/.libs/libebu.a new file mode 100644 index 0000000000000000000000000000000000000000..c3fc8dd3b1df27d97e19522b543096a58bb27d5a GIT binary patch literal 2073984 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

    (}5j@0wVyr(>>pn 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�tNX8T(AaHO`@0!T0ES-H-DGJ` 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 z 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 I|AqPgFSK6PrvLx| literal 0 HcmV?d00001 diff --git a/lib/ebu/ebu/.libs/libebu.so.17 b/lib/ebu/ebu/.libs/libebu.so.17 new file mode 100644 index 0000000000000000000000000000000000000000..43e976001f4ab7b7c8901e091f478ca278aa7a4c GIT binary patch literal 1085280 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

    (}5j@0wVyr(>>pn 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�tNX8T(AaHO`@0!T0ES-H-DGJ` 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 z z@2z;%ZaJ7$BQ)HWZPCc9#sqKuAHHbHyjQ?P7VW~lT0Sk>KZZrSKQ7wWM_9D%6!_d< z){D=*{gun-ns?m_xyXg|9m_h_t?ydhvASJ8#S9zg;^4Uq%b0pD+wFt*T;{a{^IVP( z{x+V=1*btKfT$hX8qPy-%!!d1K8D>zS@qPdC%6X^y5QdgLx3+@*n6gMNFAa)Im2X6 zwbw3!sldE?3N6T)%wpcFdbQPL2@V;>Ac6|O*5RdF1gLY)DlS~&DQ+*)Rb424g920a za0u8=uh<)3H3=3|Y6*qN-J6oZ$9saDnFI;Wv`36u^h_hS&sGc1DO?9vLs;S_xJ+uZctVdRj2goHm@E#MKjD>eiBU)g7X|*alm-)Ry8!)g_94 z{u*6jl;NE$iQcqK_$a7}EGzHo+YAgNDpR_5iO)ivywW<&D^sdcWr|y9QsHW!xz77b zedcVsn;+8O2uWNcsb8|m595&w6HQQ}ZLDgu6}sgXKuf~7a3=G>cpDMks@5ZFo7Bp8 zeQM>aFm@o1lvfnV0m0Hp1m+cKgBQr|K~asssLI3$Sy0Z8r7G#=l!RB$greCC_Ty<)*ux z96~%(J$BUj#42I7(;$8U7;Ryyn0ejdkjPHjSS``gjg1VH5(Sp>_BcjH);^^QBxBqH{8tbF3jxiNP!o|P>rWemSZS&Eo_)7r8F{N-xPH4*97_+ zH#I*7e@8+)8qaAXc$GW%*^1-&Z*xs~F1v8c3F5PFFJ|QO?r_pLED&HdCpSF;Ma4N> zJDa>i`A#PHLQl*!25z_9(h7jI`3C~h=C?<6-V#3|(iR!+LON{- zC0H9<+#InsNG`@}FD}N~Lf2p|SQM~!*Np*dagb%ntyE>C^N8KKsUwp4W5GFB-JIK( zXXYR4G2KVWAtv}A5TVzD!XVCp3VFFG>p~8>4Ol*ibPGEtoIM}>j- zIcyJwXBo}LJ%&mA-4Kz9nvKJY!1HK9D~YzeS3u^xyKiRm0^;( zJInxzzfU-sg+hb+R|x2g=p>9RTG+5@rRJIhwwju&RMXYkkgB?tl3GHLuh=KLsYOT+ zhMOAw$s|Xg)#9ft^ph6*lP~r&=lhcv*yYjw=-K|XdA_OHPddgoQ5~VpH{IorI1@*3 zu`{Pf!oh|xhm||!xuB9#M-Uhh-81gq(i|g?N$7&+gVp^&sz>1@1O+qh7kMSv@Ds@9 zmdeKWtCu(UjsqLKGE}95|7`RG`0VC%@Sjf@d<#hvlv3o$kyTsYQyR-4EiAFUdy)3; z{0{7@OuO(4O2u?zy*@iTYy>+di;kLr0AkSN{;DyZqMS{J=oHB~OE&AzmMM?(FrAZ; zBiGA$J?IwyCe9(I_laHdlZF9pa@jv7<2WtEP(#`l>wf4)uZ!cuEH9O-t^ zCa`!qjVH%pCsBlis&S{!lkAIxt~`b6j4t1gEqdf0FSjB15ql(aS#jI4QD3dGG4%PdtDeK_(8d+GGhf2yTIFknd!Nb^QkO&yR)P*T;pi7oz6cO4;B(sspm4n*0tpWft? zJsk36^94yNKmzo387@ri^&rJhYh1$s>=6)KFtYCJGb8H0(#12z(YOZ6KfmbWN&TfQ zAobU4cWLEJ5{OF6{Z_72(-^kqfiE4%d2m`rsR{~O#)DYDA)3>;euS|Nvwoza2V;a9 zwf0%8fgN`JqT(yRY{VeBhFvB!kFaW{{M!3Uc7Z6)xcf)!0&(qik5oKDkv}51Je5 zsz^pCVtI@Jj}M%)ZPAaDeYze8g^Hd2RU4GXT+-D;QSJ)?o2bi@79B5ND(f{$yIO^p z!=T?CBLIy&1_3rCod|uH8VqHwe0m<}F(Uh1Sx4~dftb5pJ;;8h34=8vIjeF(&1PH_ zxsZyh*L*0lqjaY0ZZy!^sD-Hl_z@U%s|o$w2rk z)o&MTzJue(XD^Jz;wM^3Q^Xp(tphrQUz?&PHL*9@IU#9Qj>P23kf`W3hpSfw`+Fb} z4ne@|gfy#X5VR|lrdA=s6$z=HNid@F+{%pF1oZaE{)K(MZ`Z$H%|@b(X-+-48&9$h;s^a zqcX0p-Rl9Jz62D~gxrE0+K*~xp6TqJstj`<>FJe;#C^GpBuh+IkxaY;eGFQR7gE~) zfu2C{1F!AAOO>Da2oa^U{A>;<54}$vSF`k>3coBckz%QdxiE>_;7NJ}Bc6bf+tTH4 zCmmC;;dGkR`wdl#Z=9&7lmdX`;RBSP4|sl=EgR)m>{w8yJH44B+`L)E-yLaKC3mTI z73Lth7idBtN~XKNmnC#d$+l-hb(7-RYD~YoEcmZlKwBov*3AyyfcrSzsb0d%qnmk^ z`QEy95bKsK9=Ur<_kA}e1|V7wfU;xxCJb`b{pP4#>*PCeE{@cP6Gh-I?wC7&?tIH$ zXkq1)FiufyoDy^eYK4fKu>a?d^av{d@(5$N&kcgummNXJx zH^w(D_ES#rO^f`LbNuL4++R#+QLUeSzNdObITo)u%8*OZ;s#H&kV`rsR`sq$83^60 zI@r@hb?x}Vdmow(7q;W&1Co%b^9ex^pj)o>8UiRZfQne@I1ok)^O)LLF z8X~bYF^2)l6EVTEDU-+adR&kA^*u;SA|8Y$hy7m<#!xMzY>)N`28?z?9CL#}$zm7o zU2z{2DHhznl%?KhJHvLdd>&HVR$wN2#|`MHgZIzO+&nuTO4HY*bY2`!RHkc!&4X~YV z+d$cbq?0936oqZQTvsv2@ri%NSHpFdAGFF|7N9#=XWYCN`x$T0|N4`C-6h<{EH;Bj zr1cQ@l!g#gunV<4NdV9RwcAHIAoQ~htd9j`<@zl@2P<%Yb!MBbR@Go` zkJzbq2nT}(&t^|CYMVVRg;i-4rAedm+#F1PVbiDN>#eMP?tEjxSqniUpK1bP1?%=% zm4K(~b2P}YhBexL5GNrNtXe`0gC_{6xwYoa!f@?JJMr_Q&kKg!)PW z>z44c>&&u6wmnXRi zoolBe)fydt()?Joz8`Iv`-QR{DdzgjD)5{n?F{ycdDgfRmN&482~>8;9iiwTOV?eCLo1JV`?Wy+$b@n*7ne*x^!0z*owbT zD~=&gx|?VCaAdms;D+8@$DZ6^TL;vhN1v^hFp+UH+wAAxtZ$pg54`Zs8uVc-JK=z` zqIQeh&o3nhkI-V5{x#~KAS-Zvavwy_0YcwK%<{>tT5rV7 zcAr_SyNFoFV%m90Tw&5etD;>KR^0u%jKoUr-92dGY{#QH{6A&8(g>Q=B$<*q;lL&A zm&+}v2eS?mlg?58zQ+-vyC|PUypAZ?KhIp|; zFJ4tZQC_r@N_(NRExr?*2}f9!J4;warRUI~Al0Hf&26Foc+_bqvF9pxI-R;%deeP!7TN>&3Bl@IW1&)_3i-O6IHfXe-gHQW~Q2N4t!DYl8 ze}i8lS%kC|^ss$)$9*!+kJt4#;_X|~?Gtv64xHcv0{>@P$99qvVv2O{Cd zy;eTRy$5r$@EiXdJ0_MiAbgBJiI$-2d>yykzKZZ-T^3}wLCXZH?^f=!s4w^aF3Mo) zEPS6mI)Sg#INvU|D@BA&xxT|sIK>~bz)w5cA99MH(C4R7gkqsT1R*Hbpi(Y@xtf;S z>Boi3Y1Sbn!L4dxNNuJ#s}OO815t;iPC0DA9|h~&?vEl#17D!Y@~FJsmfb2(-e(3v zd|8jV#81pE)JOGp|Ekc-9F`iBfchHn#{=4I@)j%XDk0?rUAOo-cAJyWJ~Mun=4?mt|KyYt} z?{w?IhWMWCnN!09AeVl6OK1bM)76{fTb5e7=qNIo&8etuiI@)+sc8e}#<7MKAHZT@ zD!QHHxS_;$6*s8<&0z!~`cQ%0ul5s9R=trK$|VOcGf~xgR;%Zryob-W3!SEQ0D%ko zSlgC6!92yl3@#f&GHOF{g7AxpL_AY#G7jCwLkmHBTX5sf7@Vg`F?%7C9?G-Ael*@6E%XvC}CHKGyYFuoX#fbRT1=H3L( zuByrxKKGv7OJyP{IN8p1@an{#-rrxr5LXsu*mhKx^1spG;loM)NxA3H1*>Y$=vprISZA;-9QF zWQ(yYs0}!BUGzWf0WrS8e|NzzU8MTB$JEDM(;q8Kmm;rYcE2`3)LL_A3Si5s}llIl+^wN#)Dx>Y!|qjZMoN4#2mhIQ?s zbk}Bl+|}0aT+h|jk5}8njDD0@(dVuo#gmn`*PoMqd^qUGzp0}iUpk3?lr206b)6;& ziK@Z(pz15hhi{YsIK4dhFp1bJjKSDDH)TQL>RhP=Y}HK#HjVOOzy(-aX8i`BeR^Ju z9NB*3qjHRjdI3toZWF&KV!NQ-*Qd4n4Rxt^i@ZVIan=X5^RO~V0I(iji2e0d1Waa? z>wCuV;5+2b#+Rw9M8l_3uYQ-`p;gm~`0r9TKK~+K)majh2lop= zanfS17o2$48bOEyR=Q3=L(@TJ4Jmly7lO3tF)>$@ z+$~D(@4e^y46TgB_Zl7F{uNxYf4 zLAoY(Nf+$oTeLwzj05c5#M;)O)L&Df>9m+F(_u$M}0vo z8c!l`QxxROQm}F#mrtMR2C`J{w{4AT+griqxv#*$-(1+!unTIjT+p{hI_=d{9N!|| z>>DHlaJ)_U`>zr!r=K~4b4cpd%3j6&5)SiSWvo@-=K}ckx>dU7LeNgUskF3Ons*Wq zaHfF(_(f$Nh?1XOg!f~?HKp0O4EB}4n&W*Ab{(^2GsuYR;)(F6n?d}9D~otKZeSBe zHpnXeNU4Y$Qt%c6zV|JGC?%*oaYClo318))8pAF?V$|l8jSsRnZ}LXudmp<~3j;1k zkTZxYZF~M-vOIuySD*wU0Bm`Xs^HRFg)zxha zk&+VFh~bTRY>!ds5%{fS(4gA!#v)#J{gy|$iL8jz26z0)HV-d7;#vcw=dP8_NxTo= z8jEi&Jr0bkqyG@`xXfhbg^8%BQypJn5)8Z}`arc{WBEIOfxnji{T7zd)uz5&>B>g3psz;ivDBJI6--pJv|)v*%W?fe ziuNSFT-OVGEuuUwI1r(aTp0>6w5$nw?&eZg{gzlnXil$vioXwQ zM?OzTo?y1jz$pUQaRiQL${#G9gNE^v)U*pq=e)aAIv=RZ$L~GE@%UZtFI-rjQl;MgvB5j=e(@mw$@h;e%sf)!FdGR*{-0HGZOW_?e|c z)`JjSQjKT$YP=i-%17PIriB94L~pxqPn<%df_LSYC)rqw(dw*(>xM;NQmYX?SQC#s;+R0~-AU2;~Zi)0cqo znzlPr8|H!r%%xe&RGhIJjF;h9Xc~-bjeC;MR81>iSXz2~so|p1Qt46|*G0-MDPASs z_Gt)Xka>K2>3ra(tt_37-6Xb3a2M*%UJgCthW}Fg<_NqsIOiJl6Nj+KybwN`7;*=7 zP|%PJ(FVf(7_wS^myHkzmLWo>KVZP8#kcH$nkdJ=FM#ZMg?kV~jK!tl)gp$6+A(ga zqkJ3mo4yeEJ9Jc(Cf*Z-#u3KjBZf#HftMq$5pO4=6^_8&fMdUOUw3_@E0ez zhvFEf)XO`tju=PiAQNwHnes;}@ZAKwk<_EJ^)R$19(S=# zm*Uh6R852U5?)fXZ6u*RnmSsA@|iC8ovocj?W7o9$z`G_`5dq z``vHC_q(YMR-rdGztZaIepOF!U#^r}x6c4A)7FXbiKJC^`@IyE4~X!|#NLKZA#$!A&bg}5L~6UJmazESWs*~~0xc!6A-P{yGxZiC-eczo9~cqz`s zx52QDjJGcn(`4GkCd=2V6dv-h9k6V4c8Uz*GByb-*Dc=bFdpik#^Lq+J@{;=#=4gw zq4Ki9{`e_8p8-?dzK!`lj3Fxcb`hoqs_57+L-k`IRUBa%K^(E=O3eqTP| z<9%oG9;N^LqioX=bG`D;IR4pd@fLoEsJr1&Lr104aBlVFEB)LGgDi4o7i!qM5Atcy zLrc?d1=<$864a_F7g?A^Az-eGF)1jVtrYQMnmWMnjeC6N6=oS+>;CN{oEyU^z$CkT z8IDWhpW$Pb+M1l>3czax?^h|6>&(S5QK;e*0XH+}N$|AKT%wu9Du5vX_rhBD2Rxvv zfjDu=l(5=aC5`wVY%DE*WoZc>jpZ^( zFz&o7Q1+Fj6OiGfb+aum$N#xQLZEDD#B2i!rx>LM2@Q$;zZIv@?thxG}EH}2mN zQxm6NW2K{^ka098%ERADmp2aY6mH;_OTA#=ZKXx1;z&Kd;{|b#soji|HY`E5jq{pc zFPc~OM5{^&E0S?2LEJ!pvHbpww|cE!Gc7*b6Xkh~I}fG_(5xRODdPTcEhe`LI0aD@<`)cG&Oj41vv^<*Z{exOT z`a=BG#baO&qwrF@e@~HDHsG_Xz@5?Ig^Pz`(LZ#)Xu>{B$v-&`*+Z4>Ud6wN=B)E+ zuKee~@QJ_Ls~i#1+mHX{t9%mOd*BN?EKnHThW_dw&IT~!C5%Zg?wArjIS5EgL%T^u zHJ=>x`#AKIgPKq8{*b8T&0Pbg8OM4Ddb=eG8H-T}v_?g>pCt5(tc`>CB%x3=G=98*HrF2dbrzeE6) zU1;yMs`K=H^;hZ2AR1g8EV|p)?U(wa@x^7#L^uNF-ddX|_UeF~NkL7_Sz9_94kXz- z->h+|U&0wIv>Oa%SkR&=fXQ1yJ&@8|0%kPS=f>WnFx8c5yWy`RJ#8=rj zu^!)gAHIsSvO$blkos|aSxbWMp0ew(p(bRbdszJb66~Whk>hIb31XeVE$4#7{K?h; z_BI?l0Lr+FLSiK3dZ}2nt?cFAsto$=7BQzK`#t`xkJrG!ItH1KTU|P)9r-rNM=@|F zFMF$dwahyMQyco0?P`#S7p!le0b3bKXp3^ZaHRx@NV_q-0k&V$SRwv71T9{?2Q@$MC#AwmWZ&3u3QqWe zK-i>g#P!4S<%V-R&MOy}A-V!j;KzbF{B*e>A;t^Je_fjYo>KAEr3HGm+A;*?l<}56 zz7cf}DA=psK#9~5_DzLhBHbwBvO=#(*}=pn+f`nxQBOBZRGUt$hQ~1`kkvoHW*5UoT}ik3EdHI= za~2ve={qxWNS&3m|1 z+$^7KkeITq4UcQlkAn(S^yR2eW~`hU~esRe!bQq>djB7}i6mg{#?T;|2q4txV6 zat!Ja_YG~yC%o_bAhB~xxJK`Yb4y3bts3eqkYhju;ou28BI0Qd;M;U^yayW^n^267 z{b$}_ci#?dd%&!vF;FPGR|~v56cGJ%MEngrJN6YS`|sJY#}&cT1-MA@=7^AwJ00Y> zO{UY_-MdPS*r_kYr@bYOx0{ZDe+RjAV|bZG!xrJ$11g@mt2~Y?jKD(~kNADOZCgEE z`Ue}xPe&^!>~e1LA4|qEKJ^SEbEKMV6-v&HIn^!dH4KfGB&srs>2>3Ky7B+ErAd53wBjY z#Ru-!X`>aHn2)D2zHArv|L@S1bec_|SQAHo8R|M(iVF|m z-C}+Om^VNkdPaHTFrRhY^Ts#k&X9#sf-YoL&|Wmi|LdaaHIMLX(Ji% z3*|fyt6LcFV>sTHeN3`H`*=6Vh8IhcutB3Gbl%FTF6NpXE65g6w}uE#y-GZ|JJ%}b z3-|hAG}bFQrad%$0Gg{wUcL@B;mk;DddXTnk}u$sGQP`%m(6Rk)$U|2b>eAHw9Z&Z z&^jNxQ3XGS*EG>OPsJH2)Tq9?%OH+`MfE)6c4=4!Z>he$s$%%M8>x1n6in~@CU!X# z!}qE>awzioHedH-^@yL3Xznf} zNK>+CyA#2mA(0Tpcfov{D~e`KRZ7F4lKX(-UR*1C1XO@V=#Ob*JXLF0ElE973*zZt zfYF81j=i-=d<4H*QgaliJDFwWHPony>4poUmf3miVeyCYnU6SrCqAkvG9ABf`z{FC zVexw!cB$k%d1GPjZEAbYo+us0BW(D+v8%8YPQN6lU2P*wmxGp4`SyENeE*m2BV;>t ztdHSdY$a4K z2q6wvYlZMXYJ`v*D%d2q-vr%Socl1uA44j;7<&y2A@4}bJ2m!uGCr3%hf@RBt>}1I zIEro`!DU5>3Ak6E;%lRd`5nmq*Jy==tDMK(Z$ z$wnVez}s-QneKX~mT&Rh&lcUWz0uYy?AXLSnHB#8tChGtr30r+lQ=7pAFC?Ma((|V6_dt#? z7UlTorNZ2~yJ7XC`3C5S`fBb~rsVz`?m?UA#S>ggcB7n@6(vV0NiViJB{v@il_FN3@iM;o*i;CrL&HuTOUnO22 z>)FuX%@&X7rSMSwxgODj@L6s>>x{}7r=JAZ+{D(CHV#dkyrF-5Ebab$uKrXyK~J6- z8$Fqx*=TTLV7z~1pm!_1qG_M!Xq{^vQr=I3U`YBZV)z;Dl4JLR*7_WSdl3FdfxCKo z5OmpeRR=^|dnW5ML@TUnM6b1q@4 z=8Q7$WRgatf@Bfr&3fF`iHjbPwTSn7rq7hOjMPgi`?XbS3(N0xykAwGiQ6?VL_WD- zMi#(T*dXD368m;-5#FwuPi&d>jjUR@~V}{r)y|5)l??XUQA)bu`==dwx zF34HD?RxIliv{I4#$F)1Ur+etOz8w|WV7!I?$;2b!u{nNrL3$~*sQ(~kZcL}?k-LL zNa=+rfTUcQc@%uWN8X@)l6woKdg-)?gnV5V?_LzDb}JA@RnCD56SAfwBVw2=37;W= zqvH3%xh_`z*I<@8#dfTYPo9iIQ=vsK;j({#n~Y|obK z8&L5URty1{(QzAZki;O!6{ynW1Nu?o#c-$DG2&uzKtN=$9*G0~f5N_R7bG5?cqKm3 zEf4f7*t#j|cu0Jtc(ltO{dXv1k1$W(S}4fvrSg)neC<{w1mgWbMFh9uZcAYuzfW#{ z08`J@DSWQxRj;1VW4REe;6W54!k973uUQB|9=4STL#gdBN2G3l)qy6 z$|OQ4EWFA1a!ct5@J`~WAg6fgG0l!+_Lk;LG|9L=a$Z#RZ1}fR~53njqA&*NNU3h6J+wFa)7=Ynb*kFue*JVOxQkeTAo`YTSkeE`n#r zp{=Ro5=|L@Es{>hI8)Zm&0Z))(Fb@35`k&}5X7ha-(ACh1aIVB^=Kbt5SN=Gt0;&&Kok7LyA26TzGJUM@`z~J*#D>e zV&^P3+}2k0G&ZnLBi~e9<&DUp_-Vvy=sVOBM)dU>(qEG$eScljzZgBFJ^gs_0fxEu zD8Bb1)9{h}qsNN)T%~ZZQ>F5MqW!WrM8F=-DNJs*VTxfs%GH=3F5aiSS%n~1J#twb zzY_0P6yiVbz}0I1JA$PSuZqac^RZrw3k9#oBgHwKmjqwTB~Z+U0U?vx1gb3H{xyaB zWf8!p@CACAQsK?A*IQA#3_mzyJX?NDGz;Y~Vy=EILZmL5hSLL-%>f9Sbo}roC6UhS zO2^swoGEucr>2U^w+x(2Cn^ic8u#E_K}>Zy)R4kEP^DKgN1{>w0Z*)$h}4-vQhBr_ zFUJ;N@97v8@z&{Bi!#n_w(T>!mHFg)c!~`@H>;qLen<1tfa@z1ptzlLKXU#;R2* zN4;WQg0m|c(AdV`wz0upNr~uy84%E0+$QVcUx0^DiYN; z_03SAu&8{ROQ&A@muvB-(xL=v;H|l-FCCYbrn`wEE&Y$IMSmIg;qGnR^rs_spuYX; zFW2H<7i#*3bFxBVH+GzH^dPpGf3mCMx%wBL)nP%OL)rmR-w_f5k`5H9rTgz}c$T;# zu)~%;H~M}M?gQ~rWZef|ED6biUx1ZK0162@5-HcIgE;*m`AY(K$Hh!qEtB99Kaz%d~KA`A$#DE)sW}NQ|s3wHh?~ zS_v4pR0j-zsVh9Mp~~;_q^#%=pEc>HtFVXK1%IaO8ydo4!$LJ;umL&jqSA{H(TRug zX1LK{>!Gl`A|Z>;;p<9Ao{7}kH8{3hHotKU>lQ7kU*HEjBrxH{@!e{fU#X6PXT+LQ zMTkdp;FGEeWrb_cdhPe5%AE5O?=@9$@lJ^#Z!bn+^?OcWhR=H%lW6_`-5phUk)I}wfQDhBp)tV075Ido;wTyrKi&Jd_Uu zBAdO{B^n0%yyLW35>zy(W(p30bp_RM5W7hcuW+d8`lNIpWv7-qbv-HKVj-CFQfb_; zA7vA0J2n#X?)u{IBc<2z;a3BhI{Ne#Fnq`rJBdAd2S4&ZgU>fwyjDDW7eZx~xV4HB zOA<>clsn$Cnk}we6C*o-bzcJ9UGnM7hLiBJ1-?UHD&OUfFoZwhdNc%~x#J!^3xQWT zuGo2ZiYvEz7i+olfZF#*f**M8<8d|mr^O$+NrZ4V(ksC_P5bWr^EhoWj@{wa4XAHT z_Mx(g0*N@JFU2R>#a#v2{Ke}bJjTJ#B59twBoypAtx&#M1}4T=>fY?p2rg^conZra z^?rC2E>v;)`b{gvF9zh_gHjPkd2hz1#tI>Mdi)-JFfD%iCcd5m46Z$wx>ji=-@Hj= za#8$F>^4L;q?&IeyBwbxU-cjexx)^F2~)3v_iki8M(gsXJ-C1wzH6aOaWSlm<$u?X z6e=>0aJ;#`u@N3Wc%e>iY}93_GDDW3%l@xihLS+n1FbTt7~qo+v;# z}Bb zP*?=gw?1wT`Bmx>7}-^i7sd>Hv=uYvpI@%m4A{4lM3*F&fe1^)L;9!v-fX+L-B`@U zsVfa2e4(*4|AIfGQWA5UDmM*ngJV;ad#Sv|aB?01oTz}p&5gmstmbuMgJ^OUw@qez z|9_Z_=fYwE&0;#KBL*(q21HS)2E@+uRqm>=t?_K}Ly8&YFMRA%9jWd}wL<)pJK~NM z=ipokbQ5=EP4+hiL&1-Ce*p`{7HwQYD_$D9T#I;{&scg<>iG(ggoqO4d;Sxp;@vW@ zRJL%DnT4v$bkG2HF~s7T=6nS7?FjeCYi}oO=Hh30ev!L3-asWdf!;!xtsKQDFPl64yFzO41;PkbVrr>LUhd0xRybz2ApQVwz zCT|4a2rI;RiP8gcaj2q-uH$i3yicc08ShOURmM31Zi<_Z$R+*wl8nw8Yg^uozD-L( zaW2`VW#){Rj#ABWHENDeH-#ylE*nQ>JUpD&YKTmHC$_H7#)BDGl^V`ck&xYJ#~$^F z$%)K8I^4zb-5Mq*@}M`Yqe%!r5q!2cj|#A`p`7LcA(Dc-8lbM_7*CvaCESc65+_%4 z736(5xu_cN`p<<6SKnn)PcG!QEE&o_)=*p7O)S>*N&2=DE*dJmNYaQNRJ1h>!?b+6 z3yMXdOxsc_U51vg!Xeb*+VLVJ-c-N58!NG2b_JpQil}07fN~byibO-)z6&Pvi)_rr z2$D6#9Mg6fCHGeA3*{2WxJnhegz5;3Q4`*nlD3jUxSLx23&rvmQ&fnqH@THp&aD}} ztHu}zvQ%W{o)M`SW50F3x_1Fh>~~*h{HmS%)%OPE_wccCl`X`TgEe>=0zvXv6-0jG z>ANi3Zp65-OLCv<^m9woUI9v00TjDfR+edqlq;YA5SDEi)<>u@j@ujL;1Lllqk9mD zJr6G#V-IBpq7;yhlf?*jpHar$RUqjK{TjA*RPtcC8c@n&#P=w#g_E*6;~vT9T_KCH zAaIBMeE{Nr!mN__rsoJtXT%c{PAm@pso;hUmCStW%^Ot%V9sE4QB?L-GM1r!yhe%o zuLy`bO^FIY1>$~&xJqdpIrKlI&Pbd(AA$}_C#FCviYy$rQG9_5?(I7=Hfk6(usS-EgeLM7FhP;yDU22Grzy-0`|B5z`<%?HxvRk?WU6fJ9 ztbDrg5CEup-A;W$Ppe^c;mP}_6dHA-@a31U7#9N?HGB|1$)wjJPb3H260MI+AI@j` zTrSf`@|ix9%OvqJndUx~%k;5)rbly`KAz9?iCm^n<}*E#%k)@2)5Ez;pU!9cXfD%d zr0RsFyGnqs~9o0GdnN4nIB zBw;Z9Lw){rm02 z0AeVOc+6^iVNyjZ%q11B<87uwdw|i`2~z<)s4qm~0IqeFAwLkI+jYOV;%+gNmDe}H z0C+Xwmc$E;@}i`WtJE>5234B-tm!iXLM}c6XMxUN)gSJPSb-(FSbmFW4O{?))#Dz^ zqnoHgx$TE|dVv)X^@1}xk1Yu))4r<^o*{2Pql&2=9eD5KiD*BT5IHw**p1aT`FFTl z5D3Yfe|AYOfrDGl&g`z&UpeZX3EhNvY%W+cuPl|?KpI}H0CAE*FGGS&qpO0R?tIMF zPFeeI0iD)QSUa+8;0_aP1&h#pbFs$bQWJRzUbalYf(`IG`~d0>9tgE_mq1s}6MJ6o z#lZoxx)?CeaN+zT?jZTpO)GcV1O&#Zici>s`Vpq{>VCBKb!}NJ4YY%$Xd!~nZK;s` zgMrWc#lj_D)+FAAgbs0cHVitH-zB0mtRnX@PS2m#*aRutoFu z_zgR82l7gFoxBoDk2G|s9Jf!6H;65NzK|&2jEVQ)u-YxkBM<~6d%@xgyagWrS~(Ek zz7zKt0eQhW@_yyn;L{NW&s92QW$By_te<7QQW-83iO1RpvR1;I8E?baYJ}@p#L~F&3xZKyFmEMD{$v#VbN76;KgUen}<{lWBvvEDUtkA2S&G?YCxNT53Uh6{DVzeKI z+Lg_(N0jjKdVqbne1AluDUOY=Ll}kj0O_h4I1IurmfxsC3wMz$k+2ijloq_Hv=CQ2 zmsi8>Dm|5RMHy>}uaLW4aI?020zyo&V)@Rw2&RnV*WV-|U&Z*B5Sn?Q2XEElQV{sg zpq8L!~3cLAVw} zhU@O|Jrj@m^q^@>RTtZzg94ejQ{x}*kdG(CpNhs+xMEnpW^3*h3u1+sM2PG$L5r7_ z4n>&y%=iLm4d4&MWp$V*@DNVN2o>W0j5<2x&h-mEZz_l9tm1)(9=KVQz~Q1I#^HO> zPblLamQ|&>-FSK)IE?p6&x5tmucBWnf5JN_!Fgf;J)k6)%Rdq+kn8NOQtsfE2f5%D zZUgvf^p%zP2Z%od3n3tHjqg+5K9j@@X%sW=s0VY6d0*FRka?#0eCIbTXN_ycLONFm zU*FUHrdIZ`P+5b=={Mk3?PE$HYHE6A1h(;{~SKFindv9z~$aFeYX0X{fE+}1yI zhDGT{mtIt9>FpZr-Xze4BO|>-J^fn+ZW44~?_AiJ_6v;qKnCvEH6&P|nY^vMr7am^HKh|x}#wIpw7#_YJeViB?k1E}py84Ht z^$Q2adq;<~BbAH0x;OQb^h)={C~^->3=XLkG=u{>?fqzPR}U^SsPqqkvt0xI+j}cr zDURDXpwXf6-mQTV6)u#h~a=fvi4o0e?_Z>ymLD>>9nkcQnFq zbqx$}M2+K{>>;v;L`6ncBtVB>Sj8Iq$3h1y8^Av8J-e(GMB`l>0;xVeT>~SVx;EgF zjgtq5#!v1!Sx6c?8RGCVbam|H-VNOY{heY8U6yQJ-4Kh)(8S;dFivl_sC0J?4G;Bq+la$kFOq1Zqs@1V z@F?#%but35VWJ-sZ>UnK4E7Fok8FbsUN3#xuH%HE5Xl%GlM(0mm_X|ckkOF_gLDg9 zWWrR&BW+)&h?5G7xF?KRG*TJUQIirPyp@sh(deaDwKZOR>Y0r%S$5j8QyNbi9G@8K zJ$GX-q`bcyNzo57Z-w`*+MQ1>Rt^zg*k zNfSd`(CA4j2xE8%a=NcS3Bx_El6?{ccX$XD`Gf9(uCYyg3?+gG-F>OFE0zA92zqFA zc#APwIWy2Zv=N#n2%yerjFKwL^oB(Sqs68@#tQQUQx=*k^7$}^2_f?x7oGHlLB{OK zOlh6P$$U~)%3Lw7V@RTb-oEjyLKql_yrA|mdC=FtH9N&2Og;UOSjeGH@Zk}NMvqXO zQ%K~137CrX*mBj6I+!XQWCoT4RM9Gm$7Zi~8yxH!+Soe?CPbBqp$TZ?<*LdO6&48< z6|ft{FURB`!^G_o%&6U)HLJh3H8Mpq_gdgdpy6Hk@wuCe|xAwd^DtsDvGmn$jgoEs*3 zhq|`~wv7%CtI*^HPG&l>QtgGlxKNha9c3zJGshles(x4cA=I|OZXWLM?(M-a4vh^D zbt(5ox_Vxml~=am%OvN9kEqWI zB=R;&jeITGpY8~jk6^=8#<1E)9L#=ML`)f(Ch-L3GX6^mZCHRzdcjmE?XkhGfq}~A z;Vr!bQP;${SXIL#Hr>J!g;9)9l~^7k{hr&_K~&+xqKllF2Rd6rMW;X~dYz}rfW!CG z1>>)>$tSo7`Ua@!i4l{P%Gjpi(Q#>1WUzYxixG5Wvg-9zMBZyTZf2$QWw;wGMc>Xi z9i*AQB||30vG9z+WHfG>wcvVJSifmB8b+S6@!k=klhR-5O4O**3ZWJmgfNfm3fCFI>r!^#1a8JMo@S&MrynlYxJm? z#-azJjiX&7oBF$TJ;=xzCqQMhb=RlT*!8GOhpB?`fCXX`Bq6q@|G8<2MlKHKiRzjW zIK`|5Gi__6lO{Ua>e@EYzi|`V8y^)u=u*f5k%?kN*(A)^qr!V#Yk~r(ozG%cQH64OsN=H;PQetSPv{}&AV$@itbU{VCY(?3G z1xK}to2ojis_A-<)t;Wp1iP2G6UtJWjdC(+l zt7Vul1#^)7*9vIo*V=B#smiNGHEuA;^A^Q&>x8TaP%B|g2>Kjd%p%PKuJ<5}zt);7 z7apsg7#QpAy*^5eW@D6zacU=`RbghQP^Ssauo&``^=^P)7YakwLA@M_W;6Q<73Iul zZ83*EO)N*S1*Vb@QpK5MGoTJXgiMHK9YUkAiSF*+-X4fV;8My!5V1{-C;;sQeoy!G8PH(ZJGdr=W)l&F!iCs~R&qSVZd+x;;7A2abJrlI44)5n zZDk&jeqCbGP|&zujc8aHk*PJ(_AFivs6)L26>L}3yTA^4=|OA>us>DR7^!m5c>?W` zl)!}FoGG>iJ_bRVS*!g40q|)6C(QTSwQsB)k8EV@A*?twUDNT}!r0Jb7tPYTU?eov zwp~$rBzzYlhK-l4UC5JI%_NEJ0+T>!rVrBEw$LQXQzXseO!SO4pXw-U1wMrx9O>OC z-0$J~PTTh_OC89!W{(k@8H392Um_HaVAK(cUgb7KBlnr{N;Y&c^;eGpnp}QTJYZ zMVGZ`Vl_-3YYFv7lHc3WagMrr2C#j*2&ZCw(U9zXq>4-<(i4-x+Qx-w;_*KHVAn_m zmKfTX3K9g`G;_|@pKR?yht?v5J8jwr*vBw3#-gsxST>X{p?(CjNSeYda{gp1l)`zk z(2TMs%xTF6LkKGpcE4%|^wrXhZU??s#`NT{vb}e7SWMX7O5em#x08k;MTd1AQd=Ml ziW7JRd|j24Hh|u-_SA_{Q#7zzMg-Pt7dAe%l?SHlXt^}0rcVe6EcHPc0jtb_tgS0> zN*OEiCCYBQ^v^VpoPI_VS72qvNc4_whNcz@M_?c5dJr3JH|utL zm~j|yil7ON4wjRu((jK^ReE8>-WeEO6S!HUC86dd9_prBiAEx&Y1}91I>Frv?yE>I z@~I-aRZA(6pyX>Fi2V)0LTgIG06YZ~;tNRhQb5(LY+`~8_Kyuf6JdWTzE#u#Cw6Kr z5nSSQRUb>`W&LAYPg#D-Su)RhCv=s=v2Uf;KC+6SwsiY#zq&M5HusK>iO;#VW!DrL zj+yI6S!HWPYWWSk$nrH*EF1~BynE>ZQIsxjdcd9?SXi3@MFs{02ff$UdnT0$xb)X1 z3@ldjwz{>rS`4B~)!z%!gel5(bz=$w+*X?@;kdL{i`E?uwB#1^|6;!AzAe>)4VW6z z3Tl;fu}MMM*t>im$%C5g@C;frNzKxoB$abqh**dc>lq%DW1NH+Ffp}T{+k+C$B?gDWL&%n znm=KZRA#=EL9E<*;FLOe0ShH1^(xl$j72@&&|+#b_rjMoE|ps2G9*Tl4{vy0Ly8P` zB|M5?9b<{=Gq-(kcZ#2CgnlYG&@tHJMi(nW{W>y&Dl4+7#U@Sqf)hPIR>+#0!T*|4 z^<%w*{W1fFQpRMW^~Kd}ibE+&mz&tIT-T3qu2kDZPt_cc>9u~$%? zL-VJiSrKYU2nix<=!zcFXjy4O9;7Ogq%FZLrJ9Zjts=4gSb^F}33}tewvkP$!?b2D z9hqEmhG3S4K1dUmRFHd=DdnU~O=Fma>KqdlDZSzWk)Q)L@+8G5I#_`fknBlJLDLkl zxb-Al?J)`KQ!lMBS4v5pspqLxLaJ20WGa+WrgikGdQXG1kWI3BrQN9O-6A%tC>`wR zhE#=|N(ubXO+2a5 zdLoZc%RVN<;iVmy#j7$VGsjI$aWRYCpDegy9GF?))xWGu+6E7iYs7uh5_G6l*|Nz6 z*nf@RD$YE{@}(QCkBn~;1%_ot4zzJni1S($5Irti6{$6`0R#arq(0{X*XAyB(m}rs zp~Fnlab;#&g?MyA4$oM)Po+nqDiM1ieqXeJURB_3la|%vi7lYUaP*Dv^bSvqT*<(E ziEQ^o8$;G%SmS*IIGmN`3NZ~`QB7~gpuMq=6{|`g_Q4S8W|m}wBm!AO3;NTS+Fg2` zN;7sx8XAxy4K8A=#Zh11zyy{;mSlI6W^{4I(eF4GT3L`Qa7>u(kitn&3DyohY7$1s zS}s1cy5({;Le_*~bxX-JtOK&=#29FkCOX;HEiNQflYN{eF8kbyYX@ypS3^8W5HgdJ zl2QroAC#RR&WR@kRhuGKGipNqcpo&R$V~iTf4ag{U286M&7dr@v~3+!k<)}pXAFBq zKbQ%7jC5%wCzvv()I{Pek59$AwcGgX6oSeVYOM?o!O?k3r*LB~J!#Qb!q z*>Sb2hj3e(RfZ;|1SMyLTe>i15_DpXNQS=Q(E~oO-=GZuo^63v2e8gaa8B~_U>~n2>x!Dkj87O_0rqF5g zda7v>Tz=^`vxBA-(l=O>5$6CF)iEeRTnS;eNaRN;(^s=E=+{bRXH-U*WT`y5x~cg> zcbd7TLzI%Pwsxu;^2*}M!(U8Q4NjnS5=2cAcC3yaYdAUvU0nPEJrYbJ2i+rBVMBSW z6yse(hy_Cle{OrDWPQ{?EbNM~=|?1%kSC4Gn1~lS@uAE4mKhxb!#GZNDbVhaH=)_k zaWrfDajlGAI8Kz1O`oO?Wl~LJnLs7uy*SPjtenJK$dEnI_D8$6=(C{-NNK7N?Dw&7on8jMOLrkpB*prFZ4Q-0Q2>w!?2#Iy7TpogBL}Qw) zR`%IrBUlF-*#u{@`jx0#gMArvny^H&nc~}sh7l?S*M1UVgoiB_e2}U!0*_2NCkOSR znlT1eqTgb=Kn}Y{H7d%RQGYaDM}bJw(n)>nm#(xDGG$9hPcN*!D3l5sTPPxS3=99( zieUWl4HGy|F8kRldf7kDiu9!@JX++~bQ4IgdlAMM&GmY3^y;yrLN3FdQG}q#NvM1hGeSM?WEN{N6+7c*KFIRAG+s0`z=nfqNQBmkeTy#4;ucWJ zRckTuV-x`*qi~R@?Ukz`74GBBX=onA$BD&OM~MY(H8p9|io`}j6EIDr4Typ@We1b6 zQaAS_60_2MYLvjbePb^e?49Ma?7&{8+J-r^QDb=yA#Q0jF`-!wzcrCLRt|hZWLJGg z`H=f?NMxavkL6abS1@ z^qZc3c5Ub%=*OO1wu5kaGaBE+WYB0(9jOWuDifER5Xj=Hu#5wVah2&nP^#=mnz^h< zcP7hi@vNz-CPTXE;59UxOIfUZQR|B|V7Vl*SbeP17-T#quT_|ssN>Y3Fls)!b)*8W z)Wp?V0NGeeI(C+5E9vp_DBT?0I+5*N@bn5BR%V5{_cnil)LK%Mzw~pq7gH`76 z*Z|^vJLDoyc$TTq#K)TL&Yy+Q*Kptr433837v34zsO z=Sw+3J81E%fdJK7O4_MsIB^JSu@{<@c0Y^_1!~etL+B=a=l$t;8;+JyWlu??+u~AI zJ5_ZE8QbL0=vZpN%i?Ilt>N_9VoB$cq>I} z$u(;bXgYzT!!3BPYkYKkcwiv1jf}0x5+^(>KEA2mG0Hf>eS+tkS7x9n)`Y{4YJ}_6qxuP@d;ln-LmsSM4R(UUZ?`Aea6VsK$7gLMKCr( zFBk=wHxeVQ-z9dIVO-#)!oE=6t}z2I#6jwzIo^{}E=pZ|T~5h@`*H002(i@guYxp4 z_xR=t-b|6jQMd~vY-xSXO4AY-Q_GeN({4=TV zl3`tij4R*IsK|u`XC-vvdCw{G=TsRCNQ$tySHjfcLP%3CeAGRzdi7Ea#>pl|7H>|W z=$LePcnD*Z9s(y=U%)0UKorR$R+&2rvdSwfeJ z-!|+r#gDN`*kldpBxL}r>iu;6eX^*Ir<#$H(P|O$i|oxV45@MERH%x;8y#}vsE9!# z_aXaf%Tw7o%S22?N}=9WctuQv^AoUa@v_ojKU^za{W=hkK>=my9E)16zIat-&4t$p zM*Ix$4PS+3TXc$BSP%Uf_T+M5z!kUwq~?=6MzBQ5_*EAsUZ@oAAqqDsXj7hl}u^jvbK=T>&heIuwx-ec7Fi_y{1%`hh{bIYa8O&4Cg>eAMze`K>U zRAL)_;i?gH>y)CrKFGQuRf8)TEv;)Vz3@tz1$Y8pVGiVZq6`dNm7E?MCjukmCi4?y zs2iL@vzCbX zb@l45J#|1}7Szo99=xYZH4OE!Su0T^hUb%rmKN`;u}?$Yy z!prU+nH-b}q(+@wLce%MRDG%bOsYj3EM{PmhH~o~9K-8n@F!u#(iZ~pRCJ!ihb0+> z2uzdIk!b1}-a}4Oeek2Tc^!d~Xf6^LJ_@Ztwjd`meUQDf(q<$qB>w|O@FSlFE=m-LxYRy=@11pl|5{X$Y z^FrpRoL!4%+OSO(o1k^tiurmTaR;;LD$`xMGmR|JQR5Txfi3tQ8(-J!rDJy)^ zvRWA`(#U8mbl7>}jdz)vVvU0XLWY!ZGRC?DhxW!04deuX;{*MJxYhsxBb&6a>Zw#; zFr=Xxm5k6gZAvQgGM%*q;@zM^k1sWlo6R4bc=GTaYU!E$G$ zn5yd^A4W8RISY9pDiNo0>gU>2ifiSV9;RBM-m(7>VuS(GZy66^on{$Aovvz-16|Ob z2{tGqbNKj}Yb`ZIVv!xjyY{dnTp!Bt7(t<{G7MS>CaEB0*->A8mxOZ)saS#K0Vdz@ zh-}8w_hZ!N=o;E4H$m0>`wgxPlYa}Q+HWChBY12;wGcePQB$Jd722vytxhr$TvL;g zsU1m1g16OVWa|DTqmgx>zwE+cp-?Nq;{vLkAc>YPw1zHRon$0PqAep+*M^L(1aA(g zc7p7Om1QdFReQESg)jim54E*Up6RHNDOXcew99v*=oLP+@AO{`Ey2GJs1}0vJIaQZ zsh=hp3I4JsW0pp_m(BjME&i6H8>5Cl9$Eb-FaNav63_GxLX)iof0D_{G)XB$O>DK^ z?*&fNoBS7yAh-;-!O6cu)K2hBM;RlS+Jx)YJR`v^0o6uuN1#1FE>^zI-#mG(B=4y} zaVNpA1ymcs-vv}BL6U6($kZjFw`~N+0;-eXKjGRs`DbOB>JGi_BuGYBMy6gKGPV+Y zWk7WjB&V#bHTZ0QfA9UAo~QZc0o6osE^hOae}$-%;PV2iDcc8#5J~$=LhXr%SRHNt zi@LfU>`zdib?_Sj)pUvrLc9MKqf@Gchk}rFTJ71tzwmx?Fs1ON-a!tM;9lf}lJmvr z)M~aad;lf7(#viNOzJ$ti{id6{fCa_OA7CzP`b@am!iG*eqv{p$)wWttn@su)N?YK zw6(roTY~$sw-JYdTK_JuEE$#c`B7P)=k26zSljuQn%L3@0#BLs3 zfy$B?Mc;AuBsAni2WyY(kT?5p9StqAW&e)#OwImVj5aqCeuLxU=%%ezCRl46jc=_o z@ea>9CA#U(9o73iMdoRFHppKifrPAgp&RkvIBGbq$^`3~67Bu&{X4TvH|##=```O7 zDtJdV%X!P1Wxipv{5LGALHEJkP5At;-x5Upbs^?pZuy#B_2v6=@kEQIX^2Wbt-I@4BV zYHrBbM)2f-YA1NQqpWN_T8MknfuH*?Xd?LHKxR9^GaP00GWF7sv5jCQpxO!c)RblW z2l{-SEZDRi@sMWF&Z3O-82P60pK%Pb5DDqxuDoIp2RFN(3(p zsAhsB0=aJSr>_sWat2=!ixvBKjAxTYGTVUQ{Bh0Cy`K7%|6&LUKJKW=<=`WKPGK(_ z?DeW^VNgKu(ST|p_$fyjQA|CZWF+|Qnv6{SA<4-0>-}=FeIQ6;8^QK4Vb&46u4ck8 zMKcETnqbM-d32HByns5W*-t78Q7gfZ2O3)l{xG0g36cciTWgi6S)uh7f+WZ?)?>~h z?=JO4F*>ixPT%Cu1eY!AL`7e6fb|rj78biDFt>%EU#f~bH*f5#GC}&|Xy?{C?fl4F z_?iEfqy23cX30Ui5M^@~qMQL$r<|fL@dp@8f`1!Oodln8l*uboOPny+p9EJs$}%!_ zUC7u*us5JO3BIhRthac;A5siCB6wXOzJ=iSfNCX3!c07vA|V(`f@zvsb7LeG@AlgF z_^-&!#~dc34kSmo2;6hO-+$3O!GCm=8bC~ZG$42Mg{IhtIbB3BEeXMR3zJs~x!r-ry(`2Bvn0jBNzp7EtX3?+d6lg1Lf@;SXrjX3lK=~ z!K5rfa>~kP7;+FvcJxD`?@a{%5Kx`5H%tZ;qf4sn`Kmlo9}TD`f{z7MC&7OXs3w97 zryI!_CxZMHdtkLc?ntuzm4n0nTZ~p#3Ga3s?E4d{Ow10V)w#^UzfDjC?{XB1HddK< zYm)E14wC(o?8`X-cRDM{N6Z{@f&BxD-D97CBGse|C{pvTKuvp|nmYSI((=0uEi#tb zmW7Lv*H4Bi7jJbW>8arlDN-bxtM~iv3<6Z=IcQJ<=a@nfkQ>ErSBK>3GF6~V2JniuW8Z|5Ba_*Tz4dhh)P zEw1kIr~CYu6*B$9P+=3nvz+Am6;i6N3i8oRkfT?>AldeTP_T(0#k_t&>+xiNM|_w4 zcK?O>LGaT7)lTpWjsq=yr+)nV)8grScwve%n-~pW^Bsx!ID~bGMAhLxZTQjB0 z)XLCyE5W4g1Fp+#{WYPfW`c=tsFNU>BCR)9nYtjf-bs*zSw^N3n(Fw2j34iJIzAET zSx-mEC83%11X(d=(6~QM+Q?a_g@_dY+H0Q^jX}#E-OzYU!*`F`+*n?`q#PI1YcT{k*UEXBMF`S zmtA-&(A!GzmjTsIkVFe*tyQLGg$CORl4#4w)R7@$E5SEzoHpxhELrq4e zZcZ{1{F|DLOx>Sk%o3bW=ey9#E*ul;X(vdcZAh3}9x}EPtOQg$LH5JSGId*$ks$kF z8JS9Yl^Yfr_ba>})~iNDwyYxaJgCL|W{Rbs?}LlUOt2}SS_rl~$_ACGy-7xbZ>-74 z)Tfe+1fQtM$kdOMjJ4#}OXa)J$}Z5i3j2;Ai8g*SwIMXvN^oC5wG(7NtSnQXPBIc? zKP)3tNw0E)n(Y_+G$+*EOt2-OItj8D(p+4M%mV}7-yS}qme?cy&2JnwRgvqC53t|riqwkiPQWSQ;^{80aYP*hofX< z+Nw8bp&4;P!)pL1yoy_q*}PuYu^-FY1-`I_5?+6S3q@=ybmO(FF5#( zfNH93%u=iUaZ|{)zR^it=D%??^^ZB$iX0ZAeCZbUfmFh$ldZ5A?QG1_Qd=J@5z!!= zRM?)cu)edMjWoIP9rj-g6~XreR42jrI?6_#sfRB zq%feXoRVt-MJ)tJ95p2xdvIr!sb2-`1h7o~I$+11ys7#kr|0xQS8i|OPHok7a1VI# zwf-yYCfx5htXl+0OB{`Ta3>QaC5|ROxRVLe6-S$QR+;#HQe$I=QfWA_hkzehF&Pz} za*)5+i4%OHoX+SkwrODr7^l49A9x~O{i5GY_TGbFrf)D$nNhDC1%Ktql ze_rYUe-9s{mT4(Y#(F7&-FWJuGDjV474XyhV8-fXNM;C3wA+=mBQx{j6VYXNI!eo)FI}D2#SDEz%USw%fWFkt~ zC~)8*iZS~Oz1WfUi;Y0`tITuEb8CXxPw-;LMiUTGCF1O(4n&*h4?jhO$J)Oa`!7Z* zJgoyXe$|i{`Y*B*yegpD3100eTSu9?E@W&YcvC>N6Wmo(whk#Zs8c+4rQLr)7r~DP zR13jJ9c6Se^|d4;!SB~(Wa{~T@Ql3&!DAg|H8OQ&lCg%`Od?NwD~Z1)(9}+lR7g{; zRi=IwGPV+oLhJ1WNsyJzkdaH0u2rG#W`Z9NsC5L%Myb2G%GAFm83~eP%gEHxf!cKh z$wte_6#MWj0e03Kc7gna@k#JwfwE45Bw89=6T0wBl93>Zwv0^uKOy59f{R11Itj8L zR+g!xS9N_dU-GKiR57}=nk_20>=?QU?CAAg3+Dm0M|h}gdnq#!~t2(kwzK}=B)k&z%fV;PyEAR;3{ zQf(QTVjt?rWHJIIofBC$Y=qwzM5mopek(zd9&%Vp=9_NM@=DTg^jeYzn%KaTp#j?V z^(p|a>GSqrm;XY!5_~YADg-|sP;CT{`GQqYh$;k+b(HY2t;*D#unttBw^*6!{)@7P znDj5hVm(8i>ef8f?WFocf$CO*{~l271WBh*-5RL=Q0QJe!QZ61*IH$2_(`J;{s4lX zag^1_)QMjS83{H!$}%$bxg;aOKh|VqD&cH$$A+@q=5Pa8iQb(g4Sxj z_wCu?*G& z;m%H2FeH$oH6;=(+hL`K%??H>wVrS|ZVtq*CrH64M>`OyvAD`KhfD08W_dtF(&6=a zmafmzCR!!)&kv1*jNIr%$-E()G}4l7M6$7!e+is!$uxo)$GX_lI^nZPrrm)v-0z19 zMW$F+lC6zkQhlzcltxxX-A`qXNqqG`*~2&cFHrMb?W_o^ZD-MS1Jw_5ebiC^lBkU- z&J9Wpa#3(z6ByM=shJjRm7My_(j7&loQo5Nl^{D~Dk0k+!)Ci=*le#1oA22Ae8<*j zJ7#6GeKRcC&);nK*g5tD$|~Cppt5}cD%$~|^3=EIsc+9xkAhj!fg-*9eRjGldAcik zx+{6QD|xyrdAcikx+{6Q>)5&LUHlR;T*prFx3+V$-5%nQn2O8x&al}I8kT*e`Y>#^ zPlnBQ%dpv=8J6_&w-nZPVkl03NNl>2+j8sfI+*!^y0ZNN ziX`)ws#((P2Islx-K)GGt^SLh6v2*wY9^TUc3qZesVqAdf+HdPg?}`A1gMYd5%)Id zH-F1m&u)koRhj;%KR?m%bC$e<{|Yvy>mcSiwSY?NJWmXz#msW;vzEEUy$vZc+9XNj^}MD3YAulBUQkMW$e$ zn*^^-MmS#`t4cEE=99GfSH7}u3M>2?g4-Q63B4@IZ1pBcA=J-YP*Wd?a}x=#E4$Dw z@!z_Q=CjpnG@q-EF7fSG;2WiY0s!lTMh}M{C>lN7hXKXy7drsdo4gNHD?t5=qbRLF zQATJj0!0Z)ZzltV24v}uB2vx`H#$p@oiRfr+aJSbyJXmGuMC^-*!q0O)@M6rWwU)V zY^Ha~%`pCeonud6cVxQ(RJIR5Wjg>=p8EDY_3c^eQ7}t7P|uz2N}ldYp6*JX?n<8S zN}ldYp6*JX?mEWL8{GIw#4x9)RW}8}d(5>Chr|qzZ0`)4?Vw?^eKc&gPlnBQ%dpv= z88$m8<(%<*?+wl6?sI|5X;7eM7l>R{#v3TFEQRJJobixoV(!FjG) z(6x0rDDpOf(*mlQVA9)lS)!$~>{!%Ovv}R2j`35Ev{q*^e`)$KeZ4<_Zl(`Qy*!L% z8^NCh)VlmwuFDVHLGysp$Vme`heJ2}+3Xz7o5+cSp>oJsv~!5$h|@?e`NJerZt6&z z4|=wbgu2!c{Jf(kp_e6@t=?QHg!-8a8mW$*Q;5jUAGrHul18)H>NlFrRYz^4`2V=U zEBzO{BZ41&!X9B^Blwu3WSMTOGWAr**hcW;;5N@KimA2@%u&!v3ibw~Itj8(p`bNT z@cBSNE5V-yR42hDPL!2p>byW|CqYtg8FK^!ajVzMKH#ZO)nK#b5h3rTUl;h5bIw~KHnSsSY$Esy zM?DX|Aai+~y6Bvv!Q>_Iau{N9m6_PkQ8EgATql2))I#)SZ{~;oTZ~T6?ZNZ8ur^(C z5ZN%-KAqpv7oy`lRD8Mr)^9YM3)jzle|NSANayQAyLFb>;*>#ekH7WW&F4b9zo^%4 zJ}27!WWK)%$@hNT;P3b^vLXmzj@WTm;1pZe*H4{7{ zaHf;sQb(DJxWH4FB^g&a_#X+1;G$H2o2yJU2F5fI915sTf@3vhnc9(LB)GdKV>IbM z^6Tj!Ico_1IB;SenR9$-XdS_m0;-8%GITlPS?D0sKNIQ?Y$YS>D9>W_mQP6ODB|GR zf@`?sZ>d~9P#62fy4Wuz*go$K=>2kBWs1MR{!?A-lXbCACD_5F-mk<} zrud6`zgZXit-9E6*Tp`QU{mAzoqEcy$;W?>{~}T_%Kf8|>~PZS+;dXULd-Su@l_?F?$5X zPVo1RGR4l+yhoU^jo>|DwjV&TM^V1@R<`~~AgG1yyg0Pe(&XR`p`8|jn;nHqMBlx$ z%G8^Zj7jI84a$?(O!Dpu%;|i@!OtcrQrr+IZYFqqKy?yizf9M&YwbzK>m2-Ag8HU| z<A9D`EN@}ORXb20j%6V8#tB!P{bZ8xa*S+i!(KJ2hLbLP&ag6A(3 zeZSMgU(^Lf&lG=wg`#JQzraG#GsRzEq3D_7FR)PbOz{_3D0-&&3oH~pQ~U)Mik>O{ z0t-dY)GNI=z(Ub8#b02d=$Ya#uu$|&@fTPqdZu2L)C)z=6n~Kyik>O{0t-dY6n}w* zqGyV~z(Ub8l^WN&ihhre|5HJL>nM5($-W?PO<4&sMbC`adPY^?Ol%0Hn+dYQx{AKs zz@gwT6n*|G&3ra+;DCxgibh=3@AY4(dV==^R6D_{qfFH^_1=)Njo_C8s-56hYRYE0 zCg}@2M|UXPMsU-C3x^oHCVx@l!{LRAHi8caR13jJ9A({M>XguY3&ArE+`M80Qy7;y#6C^`= z-&$qrtAVH%f+Wf^)+NW0d8(R8)ls3|3PCn0^)?3rz7#Sx6Z~#KRS2eOYR+kC(nxx4 z4j;vbhG_4dJIW20FA6lVwK{R5*{0avLexQ!^@<()X z1`?j-Rmg2aH${t9EXq+87cTNV9Q9&!_Ce%A7nkO;Sr=L1WnMA6$n-kLW3SnhX}iw$ zQ|iptC|zW2*LW2o(&%Et(tIDM;PWYO^=y?*Mcya3RNaZn5`)!i>n4o6C|aUv4%(_>h)FEZq~@+ip-W4!sY+RoLjTQ zTGLLDbfWyLcCb>?hRrp>R6DPlR2ORd1+MEq^Hw1R1j!wk1m`;~7YCY}h8!GCPND_Rm+NA83VQS?7f66p}hBRn4J3kC-}Ur&jNTC8}xZ}nd+F;j9HP?6et z>JJo>Qp6gDyap%*f~*vuPWf~cYCSzHT+IZzU|7afBMO!rk!^|7n9bc3C}_Ib!Ph6K ztXgO3Y-@)oBHNbmkL_&nN;$zV$*+9%*jlkE2fd00d6Ujx~l1WA;TxF&FzE!A=3r@6$Y z$QBsj1pg(B=9Y*s+k!|vxRVL8pcrk52$Kh>k02?MY<2#nqRQ^{ezViC$qDu*{U^9D zpjrstA5cvMza3C5q?>~R77-+klLlkF*sGy@K*vB>n28__O%bW9%>&S2AK# zXYf(gY-7(_Aj>UVMg&W8uJ*RoVZy|^(B)==q*e1VLBe17EQBvPFGu=86v+}V>2LV} zvt=ytS*8G0uVfTa+58~%ZaqN`>|*K2l0)UsA^HcLKgC|1IL${S*ONLyRK{kuM=fy( zw8I@!PF++b;(LLR+%&JVRVYBtDW>;&Nm*(L|9!xnnp;?kVZ1N(Ty;HP`D}HRKq2Dr zzc$dnKFjfXnJNd9sU@2!Nq={i!E2q;5DIaD?!pUsVp0Dd4ifr(5z5tCqa^6D-u(r0wYb3 zRA5CSm=M&N=SwXy)52J+A$V9IW*tE`Z)*=zNi&n2RMa-b&SI?~I5#x4o**liraI~j z#QJ={JM#U`i8x5X5k>x=O@8^C{U83L)LQi$7iTgFYZbwcz`}I|Db`pvZuO^c2)V8$ z_@01jBKVJv((N4+pGlC#DidE#ka3lX?JE~JX z(dfVE%Q+6NO7az|OkABHi`5QKbSKC{m5J*ei5kZp+?meD#BE8wJr3TL&d0>tlYH-W z@WbhROnf}a_n3oUO6OzZpObvQad1Wu)D{XTe|4ysIKlG)S*$W~Rw&#=kV0IDt|hoG z7lsax?W{8K>m(mLLK5m&NcN&;R@7y2quBp2)Yr=T z*vmRwB%6X^YRbxqf7y8>^)K>zDU#Eo?a|Al#f`WRu6mk3yC}4MEy0$6T1#*^pspqO z>VR5H@Ld6QEx|;F+6YoyiqV-tUvZoZ(OQD!K)nrTF``C1In2w3W9k?N*=+SJkBIE2 z@YV~FE97!bi{iifu{q6i4Tr&rX3sGABLBs*PH(uND^E}}2}*A6t`H;%wyZNn zD&VRkNGhJ)5vQBVyXlfln zR&L8WQ|v6nm>@fg>IfzTO=f4L7HV=re+8fY-!jPIX()A^bBnCP;!g0Ez{pO5mj*d+ zC%84Bnh5T6lr9fUyd}v;@E_9onD|tJELNHLdV-9rO#C82PN_2S#{^lbGBNj1>p2K2 zSD9FvAP=cBvCffLp9u~m`3hAg#*=&mcc=3)@%khm!FQzdG4Y`!AHh$j^D*(YBp<;a zrt>keKgkzBmrNa%f+vm+;@U*;f`DqFtZoRXCW8DJ0BXCj%EV1cK7#z!R+)I6=L51> zW#aCnFhQzFnEV7k6mr$K3n@ZU6gExITc3+YT8IM zKkR^#HQK}yL2E#N=r^W0xycZzy~&wV2~27wI2=&d5!@3{tppzosOtzm8BnbRe-%*8 z1gCj_#2O*T$zGw1F!@}FuFH0^7*SHLbjiWV)*n8Y&4zS7XI&QrHRl_=I+z;&`$v4BeD1nc{@SbhV^ZaDlUJF|UAM|5KD|!&Uv&H>lUJF| zUAIcgYhxJadM|rqb727If2hs?7NTrUDE(|cm>}L51q#(2Rlm9@j{z$skgZfRn1wdV7b<#=>R7Z&hrlk-mf8eN9cSf zL2_H@SyN?-y|1GQ(qoYCdI!7yT5n2D5D2q&J&|C743Uh4$phGr1WC~(ClaK}R?8y( z)ncMIPR^BSVU#)v_65{Bf^Q9|3c+^ltN0Xx4s!VVk&?-U7AS8kyhXe%Y!;PK& zzR*^k`;?B9KDa3`v4!A=9o2w~mUcvo@#QIEmO8a^KLMUpneK9YQX(r}$&-AK4xnE? z=7jT;%~0nAIivMRXtEQG9r)%6GqT}EQ7MxZfL1svs0DHwtr8^DpS==JfaKRVQV9YO zc}@Ywlq0kG4Pvo42=iA0iq4d8*7j3bBUe|q5N zS>nPVng^}f^UYIGsNjpyX*uUzA`l}Tx6>3lLqD@!5NOSj7(jcWF&Z1O-80} zN-|~%&ZqNTXk{0^9JkVFe*tyQL`h6dXSl4#4w)SQs9mEfv?YA48kSXri$UgZw$ zWlw&V*Td{MwLYb~&XFvu$UF~fG51<%SM;d=Vo(V_6HqM#zvn0$E2b6%*0m5^R5SWa z@pIl7eS+(2GBWj=q{dou>!tEtXk{0^6S~k&kVG55nK~jg*iMi{TSlf9hm5TR{||d_ z9xg{!?fqAu41_t%$QTAuK`>zqGF(8ofFgFEu5J#b&k2HxNYF5Ygai-;!2u8jL@h3O z0R<%D00?Ll6hu)_5EPL(A_^Ks1x4XqyZ8F6T~&McIl1@e?|I%o-aHS~cdcG~t?ycU zs9n`vb>^6=3nUNU7Aa(v?9>C)59a;;J64snU9L`z|KfCqzc~GjzWh_V0Qe_W`A$XJ z%1YM;zPi%;NN){>z;{**kv&;>%;*Bj|o7O)G1v^PZB-VAf# zF{bJQ$-}or3RxvPbwvGO-tWINR7ueMCrrTWkHC^HrKFH^M*Rywtz(#}@8HgNZf zA<{{~5V){nh!p;I^f>!-x;9QBCxsU+g|5L;z`P)ZU5!~62x;FjNc)&!4m{mdT_Ab* zwn!nXWT(De{b1hjzYnUCw#(J25A=VEo@Ia1qjV~8RjWuFxQ416*-nAevV5b6G4=tz$LFHRvRg-y&)7YJ$J1xWm9U%4d# zgtRwAI>J2Wz$;AE1(Jtvixjd-bZVBJr+zT+_uq}Gr0s;Ax>Ub{+JugkcSR`N)KqQY z7OL_ciqr~*z(XpANDl|Y3Hm5vmBVU=`RD@S;me1V2SXq{ydlyNW|#v5(M0JR*_zq{ zPW>vMt;#Rxal+EO5-ig?tf2|Zd;)H3sy1+zs(ks8-WCjj^D2f&{~Zj0pQ{)mJsu3l z@27MMIVo&se!4(N`z}B_Iv4^W?G2HRH^Urwy{WoD^6+huLRN`R&9ckX59a;;yHl04 zU9L{0W}7LHP6h5^sy1+MRryXuIyo2u7gP+9xcea&9Kf$u43VA*9u+Oe0p9XsH{hP; zrwfF%uQ$?Z!4L>(Z-{iZ8RkHJiG$ps>;lQdw?ztBB|G&xb&Ywy|L#{MZI`Q4XX;}} zxgMocfk&FE4LnL!zEhDd4TiugD~3pS1Vi9ADuzhE4u+c4IEOfeoD|+-e!4(N`+6fC zZ-zPWlcwqd$-}or`dTmql7}}$3RxvP^<4FXU+KTii+bC>a-3rHKbpUmx41-)(y73! zP1Ocot192ANRI?V;L?gA(m#VCa7Z)p9+7ymM5gpa3CJ5j)GNGYrUE~00lPp*`+6hY zY=$|o^q>onJbYWEm#l3UNFLr0DP)!G)O*wqe*67bZ@XNbx>$dH{3H7ratHXNsoKEb ztIBr)(khl!8@Q&bydlz_!4SBA#SrP(U^sE7lEQ<=HwXUKR9zsXeZ7%Zw}4$Bq`e{1 z24$^mbXi6$j#IM*nfvzd!`l91dPI+WwS~-q*Vastp_2IVO2kVPo2XJ2 zE}(m!-~E$s!hoOj8u>Hd?!E@n^{SP&z;BwW2mD^8tqOMVr6KfdRWDzo9R8%g5-HGq zLO+x5{Me^_JE#;@4~=70K2wkKKBUE`7f9!r_C(Ply;rqUvXh^`c~RmkB>7yvkAI7r z5yE}l31+t<>n{+m@&=wo1;Pi^$GGeCnGJ7M=uxT-e2oq)X%C#GD&JE`W5E#kmWrVg z`8OWstN(i}bO-o~Z~+T^tExP0B)&M1O&suAyY1Tne%@4F;Ez=0-66fnzGmzKpH!8+ z7w~}_7a{%Gv~IW~?WI446E?tws`7D=-WLpkcT^0K&RNwLTs#6lt13?jX)FD4qmP4h ztNrA$3%t_|T|P+PF|Er7>4nf7xVk=a;iDt%uUerAd{4y?>9$}9oTbl=c#lY@*wZ9k z;3E}7q^E-+a7A7Cd@YdHH?2z?X=Bs6#F2JTt>m-(13n(lIpg^y8{$2nzG_L<&<>DW zKeDU>8RssQyg-^~)1w3AK995oPAU!Yyg<6b=0Xq1%<(~xt~bLR$mEeAKq}?iE?=>j z(z{w3#`$VfHG#Y7%|i(ae4VM9^&I4+2DKskQm@AZ-Pq<`@9zrv0js#rbhtBn+=6|L z>X<&_pQnx(>8@q+-^(-^I?Cb_p%tmecTyKxXGL7x zNx}U`>oc_V6nW9y*A^9s!RZ)IPgbXDi5Oyy)zj7!kli}p#yV<@B{uZRSllaPacu|2 z@Ugky93nM|^h>Kr6BvSz5d5FEzD@SaReSz-okX!YFh_{nR7l^A;WKoK{5jl)C(bQRyA8ODPMk8=I4LC1e$K zx)6%Q>Y6Njy(Yb$eP1^QWF?XXfAQRcVsB+ra|}o#-tfn2z{HhZ9_J}?@rIm~Hn%<- zyIkQ-LB)xNq?L`P`${_jOfddJrlci(Lrx?hs+fJZ&R(oy>fM-nw@%$fjCdzcT=mMz zIEYz9D@c~{Z7E;5CN3TNQ(sPV)3n2P(c@5d@+-l2t8Q|(P`1-Z-&gIFY@ypu|5(Mp zR*dT-OjnxzWm_C_WD;9QFsGZ!z0n${~`KxY9U(dv? zJN4GdUs}dVRW&Tg&)K}-8=BxbD`vgR;=ydi5W+gPtfVkaxjfh@${kmZlo&RDY%TXFbZg@#)2j3d9#xEk1!$^>@dz=m0rR$`+hjAZ%cEy_YMT zX{x!v*`~^Y9OV&-QwxM$Y-=}{@wARzPv<}$i|jW==ma|;QQQHPx^Q{Vx3#tit>sd8r#j?Df zWi$rdN>%Pu56-oZ+)4e;MFrygpkDIVg~j_+yu^C63H+FZ(p zQ?mK*k^KX`&X3IH+ztGxmA(sPArmXc2&Gr*h^#cS6xEj(QL&2fo*PjC+0;$W76@zl zi8F;5*4GOSTwgQ9vc6!5iba4|0*NZseNOkJ_7hV}at5Al9WY86!k`=lQVMA}D2CU6 zQBUW0*lE29+*kWRmgL{wxQJkQ_S$+uyq0zG7q$ay0&RWlJFTyPzWI2Jch{-Kizj40 z0Uy(k#L2xkE~59CT3$;}-4`Yru(aSy^LqdJ=5=QMS?JeWd1^X6C;zCGWxl!VGBA@& zyvz9jDRglY$h>lm!Aoo;w17;oNtry+j=+-{@?;Q@Y3AI4!~C*sSgEgt9#WWIWAXGF zV|p={5*x76R*U}d1wf)J#IW8EqGBGgqY_oUUxLg`;*{qy25)Qy9A$R#z>}O28SqRg zQ30t$;>n#X>*?G*+Sc0Cl||i33a~VFWl^_Fp8mg~p?;)C`DV14ytKgZTWTn0c_3}a zxwME|cj~R>qU_#%5}_Hh_iM@JQJr`FI`onuH-)g}tRYhzNOL)X+_2kTqDva?`%NY|Z)7NcW^oh@Wh}$FEx6H5i`YoM+Iwh9 zVid8KA3xYxBdZ&UvtP!}hB6i#UNV>J2Y(HQ<+n7fRQJ2m4~U#VWHJHqsg`kBaEW0$ zBdDJeP2xSqJga8NJt`L!BDQhIoBFJbld2~)!Ii`A46 zZw)B{@i{OhTw*w=m-zgV|RS!rH`?g3s zTFyNn74n8iZw!V&>gElRC|P35CE^e~MV+_fhvy8C>Ye!u!^`--sx zjmTcke+L*R22L!{}JeFwOisg`5@#EIr4I@36` zfu!aV%`MR*%rFODWU4k0#=b2Qq-Fj9*D?NWASwB_%hQ40hU_*lIxXM6U?8zbmqLpexc9-o?xmr@Dx=!?wtbZ_FxFSyJCp+t6&KHUBz&sp%Syr z-=YpqG~Zny{2bfd*q&{MIq>VI>H?wc+af&~41whY;`esR_mbM=D|(c>2d_))qI~9y z^=ql0=~2$*z>nLHUE07;tIGEV(k{kvg07E)Yh-^?W@{Lo zE`ce_P~wjPxwISFBs6W_qAHroysj5WEkylA4gE@0xm$4HJyj8G_qM5>OU-GbidMV$1$T0rILh} zQLe6KPaQM9WMBY~(~tZJs%Icexqe-)5bExB(Qx2!2&2JY73+FdCPG^{54!p)xU0|70ypY0cb8WbbIcRnj z@;hy*`+HP%omusOgh@;)7vmAF{V(+Bh9>w~>zC**8}zd5OodnKQ92Pg#oD)lE33+P z1QJhh%CFUdvnz(`yK?x9N;m7#F$aH5b*V4K_|>gB+s2GLz?r6M1GiU|XO47CFa#b~ zF;ro|;c#7CF0kdN16f~5+ z)_j#Z+0~p)FtQ%dmH7od%E$s|B$Q?-E*^8*Iy=3oefm^VZUoW>nlaC*i{*8*N-p~ir)@B;?vj$jCcg*QYBoCb`n zh3e^j=5drDUkNH8ZU>Akzxu4C?bf&UP2jes%7MG9O8y>eqd<6_D%}fEPslcxzb*H3 z)o{^~VqlMPmRG?GRd`g7GE#v*H&qw-8&$a~b_%2y%&-G&S?_g$T~+zENZc2fxWMZ| zTi}hAwn%rIVF$?QNo{J9`Da;Nft(5~wZz&$a&}qBpC?s=rZH&)NzfZ29TNR{< znn2Q?nw>Or>K13NjtsG6bRF=J$aYX90|~f`soKEZROJUD(z(G9ctOQb1v^L%{rGx5 zu;6ZgO>~YtjZCn2suyPqevj%>clwgUcCj{i-WqlcT7kR#K5D9}eAY-CnqdccoT<9N zlPhhJE-}Ln@Lp4Of%jM1BK^t?JHTb8iqBWc{Ie{sKu!hvk90|4+=IdDn4JCeL7H!2 z+dvZZhDa9#Lm+9(JOkbntbpX~-61^|41rWa+yO&T+S<#N!>82AedeqOBu;YT;N(dK zR85R`QCBS4qM`yHvM5a;Y5QsW{3^&0OGPJm<;aDiOkLp4Y9L(*;csL*RQ= z^kIpfFfqSZw6$evNa;^G!#aPZj1<7} zGpv4X;907YR~j^m+f{fX*rga!r+vqX9g%Sgrq%zgGwcCny_)6U0kWz{{{k;nD?h`K zt`2R1U8_?x5XxnWqvu55+nn}*#Pf3uiG7-^-@pe#TOfpd+cJj~CgOqSs0n3fBYj{Xt??cTv{WP_U3+IXy7BfIv(A zd2K4!s%{?@WxN89HB}o}y^Dx+Z!iRYUsZmAz)`e9$`k|B_h(q2-$;S@!RoCui&YD8fA9?hErp<_WjI z_y$Q-hies2wQBaxP{^x7|5sCo#{bt&oh;i+f8}?W9%b?Xk1TN&;~-z6`^HR z?+J!L$azDghk_vxs@^cgagH`R#u_()=bLK462PN(A2P!x@C&BulGVLIl_KJFO?_j* zre@j!Zlx+eK#+C`hQQq`hN(zI;gL=`I|Iv&lV2_NA1``ZX}(}@U}ym+X>@t=XF-85 z%~-a8Yna_h(-Yrl+n<%qVD?3el>={8mD~kfR3JPS?0`>{?GVU8l8=iSovWryo3`@G ztF5-i8f&k;-g+Bs(2(=G{`You&e83e!5rP|S->2Jvh5SP9TK`76S|!ex}8mTmU41` zq!LUW-A|&y)XZ@P-)U`U6<})S?7&Zz>{5fQuUpxF@&-N15(xaTsoKEHRpm!G(!m(GEOZZoD$Eg`Ryuksg(SVgLtOl^-g zH%;IPrs@&w8>VUk!yoDD0e=>(fFv*HtUWY;Iz&_@J_h&Fr>~CGql{GGKUL*Q-AU$0 zV;+)}B?VY+9IvNS<%X%-QH^MbV?%Tx4+2igPFhePJQ3`8eC)ZPvZM^a<^?l~7C5ub zE>NR8&A18tx~hh<<1+AfgKi;Y{u-JB;pdvx|4A9#Vrpfe@@~0-`dt=gW&sYNXBC7F zaZ*2&k~h=p6NfkGQ92sPO9}>eblf;kHI6&lWgItdr5dMxHs=e5gX@g?Fp!5P<#qt@ zF|~5p3>Qe`nEEEjM@jG;f#;(Zxd+6t3p0`klbmf=>Z8a%)uVI*aC(V$dbY)l^Hk$> zC%7DO@Tf&^0jFAmUEsd|fMSJN60$Zh{A6?Jm{>e1af@HZOwB|XXj2d-sh zi7rR|zAd!=y|$L8`7c;hAn_NaWGfBimv^!_0SP0c_R)oPibEM6Z=r1DwaTka^S5-O zgktLfPI30e!6^=9u~BqIFqGk;8|bYym|opFagou;=vulp@h+3tND^HZRj*;Mdt(SC zeeq5>j0X66hYq<@^tk+H&nK8MI~dSOW_6=vNIz!gN4NPp+_Vc{5_N%`Jp5UyKI$fx ziMG)0Gv+{ksVLJO_>fxpa|+VRHswZvJl7z9rWiQgrj|Q#A@SgY1Oe`5?nZ#SSK1;S zWrm}`c@;yX(}N*!k*RXvnU%IkSD4`_urO5)EO*1;QzPB+ek~)ND0gy!{O(fD_>}i) z>l*u;V;dTSF2#65P?7d=K}9x~1{IJLWCsJk@s2kro5jYe34G90J-ELRR6xdq#A6V= z!dUf4=a8TR9%HHw8J=dU9+2J?_auFJuo^Ej|JiNIm>+>k-vCKUTm$)AY+^++J6W_Q za5qzR$nW5wBALLv3G?%V6)<#H^yPLV`;C%^i=1Po4O+zeCr!1dZ)A4_EOk@8XpM}Y z9FxsNaj>T#QZ8VrHgTN&G=EAYaaI~HAM6=2k`J&ndg^ifcQeE|-D*Ax3_UYou}FEu z9|Kdk0E541%J~fmoqa{%0u24XoQse1h`&qCUl$nsMO<7~Gxb{UD7)tC06(Ux!Ka?M zah_^Cc)`TMkrurL{E(@-z>7+RS_Kj`$GPI4Im#o=5_Cb|S^WEk;0X`;tdM#<}~85(;(^x10~eX93p__vo+#1>gCXz=Q+0sr z8S&_v$r=EF;A7pGJ)jr;kJ}B94sepK@gu;=r8T}&AZ->5ftyzh zL%0}0;9o`{2NJcB9SS6*Uu2OsGy*vgBGMLE<}`TSbqwM3ym4v)AtG}h2n)xlWkp%n zIJJNfk+#4xr$M*Sf2S;Z8PsCmjG{zBscBc|SX$f!_6 z8S?87nx}sGAQ(0H|56U`k=XQ;cm&c<|HCem#}V~j`DS*{yaPPQR3pG#RsLLo^tNDF zFB~#q{?klzAiiY=0CDVR4^jv-@ar|g>}_FMKzt8nr(|F}`x${0;*9g_8zSv$k%obI zm%aev+65Xekd6#(fgyHspS_*7Ae7u!1isdsC0f!h7$s7RjS_W^jYjBWjzd}9NG8k1 z<4qRq$z}P{awn7jeJLGVzOGx_zEJG|!;8;HfSaq8AN)u=hqe@;ek9BqW|{->ErTD3 zV?X$jLYPFS_<)32#lp0J_;!OIjAuXikwTor2q`B49kDn>=*&UqLCd2gn}b9QXswB2#o*&5Cf8PuB z{AcJdS$4Nyv~+-TP1OUQs46!WIt9|gU^UvGtJ3#zL97H$<6uBEz|3QA&}g>AyUJB0@VhRh&Mzchs3u)BtY@!S@0%h zzTQ+lpfSjr6!a;xiY_Z%j9fpSV`iNnDa3^fCDy^5~^j)e=T0*zKQuutYh{3_R?#Z6YN^11H8#pJ>bo%^0h*`D;NTQXsQlyO=H>vuA?gN z4rz~I2&D28^--KnPBv#7qc#w-zK4)jxA1LXIefZ1LRq13gvDzCZ!}dGNC_QNT_)KHo1X4u#`z6o6u6SGx zeiICV&#G!DTQC#99EbY9u5%LIbgnsQ13#!LdGc;@fp9~xqiS@ZERxhGY}%tQHn}#b-`Z?f16mn$C+At>30C7FGPTu{feLsoUAH8w2@{7L*PCYLn>H49-)C7 z*0{To!d-)^+#-#eYJ7q<>HuGFw@Z4!H>t`efHW@{0*|X0B7HL$0`IFBB0X+~cKd2i z8wA`YO()dX##!ZLb%43<0?ET=l^00w2!=rN@P02&t6LP_W2z?bWkz%qxUs34U4?Ho)#&94?+Gd($qR{8 zMo!1CoA$NVZ8{;uXjASF2dgI)hAKu=zZ`R>e&4}s{$vjWJlnnsX#>wwl^^R!Q<-;J z8@P(9ydlzV!LZCB#xbiLR_`%ZT_8OC$U+KliOhj3So|&!YQ8N}AetD0Hz|W38$s(jgyR<%HF;44+-4dVi$IaM9rVzIhFzWtNGeDD5J3gWYB zIVC&eUio8R1l&{usx{&krtVu4mZO|x^kE$TJMt`p(EBXYlh50|K>D<5 zB5T;K%H$3`iV8Zsqd-)XG{DP@PICi=Fdeua?ysH;i_ixCm#U^@C%ExS;OQ16TK=>_ zKOG$N1`*duU_8syIKbaq{B9g*jF=&v?oLW$Z=;h~P^zOK%eGX7bQth8rfLJ9R+aC6 zq$$SG-p|RfnrN+fr8>O8Vs(K}s!C@+;!~zx;A&6o^{h+!D+}VwOx?HEwswFxN9gRV z7VeDmEb5cslsa(2Rn3yX8K9hvD$f%u8CTZA8)Qrsduq)P8r z1v|J!p`L&nTlMf0FADMt8NHru*>!CP$lrsLEkE!?wer1R>J<3V}yj)ej|5d0Q&Qyt? zK*(34z;fgCg+7f5CpU|M<;L-qw+k9K9!@nLPF|14jYm?AN0zhkp{d4)CL25IETaF( z@|1Oe3r*Dpo~0_^2}mCghR$XDk01w`VGiUaOw!Xp-1!k4dkdubgFw<*z;fesXF-N= z@_hoZ+&JA?apRFx<8)`mjSo#V9^6@1YB9d0M=2WcMN@SRRywPp(gxNC$r&gQtEs2& zn#UZ-IYQzBaW}ZL@W;zvq_cqK#_7(YG2x`MfaS*N&Wan4q#CC?D{g#fs`22?%Isg_ ztxvo*%}*pGzB!Zn0*_EH-Vo_j)rz4-Nq|+&ECsA&_LfA<}Wd5Ll*_9tqIl2p9Rz4G0kzZNz9DY|%!55b=gcCkI1dnO1s? zLB}7%FgX-hCUvNhI?Q4n3WSCub!dSE1Nkbw8Y)OHQ%FQPX%dw6K~zA(t&p9TT{3z0 z%M+2JuTTAY6US*02dAHsz*bnn5>8%bbC&G(pgRi4sk|^LsvO7a46b{g-U`Y zdXM1edX&is+*G;AbtrI4Rk3NV zj-=cj)d06ypf-@$-mo6tb@^)Ah)iYoxMNXo-dEOJi_FPNAZ-5`*c#Lja;-GKXsEDW zAo~u5i-HRHK~r@vQFwh&0m(A4rS-2-C{b5>;Z0N>;7-Q82i#dzelQ>%6AXd#Duzg> zm|+KatEqZG9?0=QN>o!&o3C$fa^Uu+Y6Btcdmrh@U|)mCqb$mtY9oqhe^$%0TDr5+(3W zJxT(=Z>!3^kpui-(9H)w9-0E7wnBE?{7WWp(I{S}gm%}XeNd*PxX)~<3V%VFb$~Ca zN?xEV%r-BOCn=9kE9WDz*{qtrFG&^y=swSdqZlDFl?{GxqW*|C1Bm`PoM zuhP%cLonSqPc=@COKFeo+UiSU12@~}D*jrJ;t|N#8ggqL zxSuW+z7R-U_e)#gr|hgaR*hGd;@CN{dH1yJIe|p;0~m>SPs_d@7-ILz(du}r=JNku zL+vXgdx-z{8tN>2uZ|Nx#F0LuS}78c#d-WifiKB-w+Yb!?ro|r@BmYFfCs8-yf8C$ z-|!JV%0vY69k6eX1gqrw;Zlt~<|&VP5qnH6HsPe}PQ85J*stlkBJLwZy2{dN0dG*1 zydSesAh7jyH{Txv2Pu3e&A0T0oBd$Otb}J5df52$V$V0AFGL zMu1zZYIWH#O`Eahv>97XJ8F~pvJ>KiZPZ}hvcaS?pY!U?3qGG2eCr^!Lw~E&e@Pxy z=Al~Ycpz2mpI{Jvtc4IeAhqe+A%x)3CS;1E;X7Wyj_Q!UbvG%%pRi!VK>mp0r0n=b z1;V$39S|O3cZT)eOTmr~fTs&<Vj_Ez1H{Hdtazr*$9x~6qS2guSg zUi$0|zNfyWpuopX)dv1dRV!wbrt9=baSA%VH2s%-3E2T|q_>BqzkvMa+!IE6^(x+< z7y=Jcl{Z9c1w&xBVi?;cQ#Zp!$izUj-F3cM9VOmiq=3EE!@lEP)XB z!?M!rK`7T*W7Ge#wFXja8BRdTK2=r%cltu!UcF57`t3I=>b*h>%0Qy%k?9`^O5$XT zDKe=hhr3G=)^L$?^pQ&R5-WKNM)ZbQg-U_k$`-pD#@)xw-EizKd4cTC<2a;>@`EW? zRYYj7Kv9XtNLTxML{&q*dL$;!<$I)Km3&BIr0!Czs&48MZSSx`^nm!1+4ZP?8cN-J zQdRW73}wbX{V%HhqnR2Fc(JOJs>;n3y?mA)Wtsv%V5%PQXr0u49wD6^&LO}XOw|K^ zx6&5rVKZcJP~|5Q6z3bC9JrOWZUbkP!sG=~2*d4`D2!JSj3UUm2X1Y_xKR zk>wruZfn~DQUS372A0ueD=$utDNhB{Gj2%+f65Bgyk6n+K?TbLjZ$-tLfFcn1m2(@ zIsac#3|%n;!aQ|m(EX1U9O~4yH01tdG<(q8&uI3b`Iex9CgVoyrt!t75vf<$TL6aoC5 zwQT{Zi&y~z%Lz^-Jj+Daxb+*niG^xzqwv(Aia9pnNcTBsTWin2OhzgYlBsh>xsne5 zN(UCBsx-ikGfq7?eKV-;Q}|F&LG$Hdz`=5dpn@es?0-7iN~euw%nIXR%lz~LiBhx<;l*GvvQ)K!mIow@}u!f5a^R^N_$I@-Vh~5}@9*Ery z5!!YhAQ~fG?duW8Jr58Q=W-qxRq`Q;k-EzXt|n-CgO#BN z#FNaed-c;$=-wl$qW5JWGxF*E#Ml;9eGXRTz4SY_Q9a6x1THXD4|u3f0l$(XeS(RR z^?4N>$W1Q zqEDUw&#Df(Vg`iy@|*|wN|~Wn8g)N6nmuUlWHfuw%!3M={~c7YQD!ReQB#cqA5)c|N=Uyk!wztk_3ghx0%74owT#p6%&-N7g`6IM zfzSk}haJ@&g>b7f_!JA({D8uXg9>qbE%Usqg@jx$vkbPV0L1(%Let zfP<6{!?rYnAF!IYAww}!3v<7YU(q%k<)>}H@0+{cYohKNciLzAtLu&J*Vi53YfaS! z-k~Z#?U7yzhQJM!kT*oy%xHEig{lkcZ037?H6L{E~(35;mkVpucBm8%ilN1o(M#*N)xAT~%6XuF#eorK^CqnA08* z=d!Hvk{~K1XUz4rNK{CCZK|q}+_)2Lnchy{%zpFI0bXXRQQ#G-^797i8Z+zw|75CB z;NMI&U_J8F3_|=MNNNszxp`;hAkj0|1M5Pa038$sm>00Z8V;qn)8)H zudbqW7`CMme4&0M%RXc%=D_pnyR{8R=`Y}i&0UX2v|u^GcACd9cz{BZ0sccTF=bQ& z7ib6iX^-?Z)rujIp8$G8B%V+aLpK}-{e#n=j6e>Ah!hD33qPTeAR>l9Sa?IEz-io> zA9HHK=`>4!6bK6!s#PGJZ-y-(EM&L=1EFzd{@q#{ir{7-cqD`&G9_?k-_nnN7|iOS z2hQj0QH{$ODGisC%wLzVA(a9By;R*%N|_8rtT(0n1xs%Dx4 z=bEYu#Ic_SNFmICt|B>nFRFiom_6BAq!g6QxWI&OfapdBc==ljzYflt8;RJtt|CGh)&H; z?q4S(LvxzfCyDzOG4XCp+?&S4ljE9kdYE>B4BcB4;$ealC}r4Ifpi{l2UE3yXQ;~0 zaip&WL*P#5Ka=I&ct`QUUb?0M>lr~K?R)dTiP6lsX0E>x4|PB zl?KQ0#<@)l{3Rw?nJ|y9ZEPN_Z+oWd;q>mHg7-r~MQxS_6%aNPbs;fN4K9FiaOYP2 z6b>?|9#It>L{*P1Dm4m+(qa>oSNeKqzty7@8W2M3% z29lsRL^?ef0!dr8aKKxF6_A|0JEZRfLm-t9cfe4Tc2pEmd`O*q#hmqk#F23rwbZg@ z*&|T_n>K6B|j0~|<^a`D2dgj?&naF?uZe^-AaBEfh zfr#|ZUD2SXqUdPAfO zf+3K!Wu^e{306RI_U@1#3x+@{A?|>oD9MTUDRpw6IqLz5lN$Ou*s|=&Xb3fTQCBT< z*`xv=3MwFJ`-!(~C1i-DqHE0RVf!$MfjgV34dmTHeh?!q42Hn>s>&N8eI^(JZ>$)q zFz|5UYW}19^e9sfxYp|aBROvZcU6@qf%HZ*>;Rux!`cFOU(>66TcitAD?xx4Rt$Zk z@%|sDkdwkP%W5tV(vC)6Anj`@JWZ<;>#e z|Kc3u%vy0~W2wwqmf1d*Sqr$GWi|#R8KHYwGP72Z$n3I3sm#WIN!#<wfNxpjBCDw+Cs+K2FU*9hRiee~BFHv}6c*h4lSM}eE$%o`@dH=1e`NG;|5 zFfb4wHHLuxY0Va6v~oONQ#jp*V;i_gRq{ryMsd3ePXxR1vcJem-2#5gRBd3W(VVzO zt++-lYQ)+l*#rL)DoNQWOe32E3^hug)M+R9)cqrs@FSW2ymjV&Y75GCk1Pwt?j4*H)yDn_&)o z#8hn{x%sw8q$fKPAnAESBr+63;9iz&8%X{dq@Ha}rkgh~wk_a?P1OUEuJhe0kp9aI zTfi4g)dP}+Z;M1Ca?=7x0;!AR8ha;_0evPD1NaeRF$RRQV=-(Q6lORKe92T}KswB~ zMWW9nE|BEp^*2D06DwfIGx?$$2F<^W$S9D|iL*!}+g0ruuxrT!pZ+ZoE6pC-MBeMQ z#iOeii8`uki9SNPu00^!0lv*tUErCf>Hr@wRTucMs$AhZt;}y52n**o zFOZHm!yNb-Q?-F*PUCNU;PiKU8np#{qxtOtVc|HnjMHgm*aF^TsvfY+Dc-U)vU(~0 zhh57n7fpr%Pe#Y_(t>C1C~9;9TOtpmBeJW1K(s`M}cJJc*>vtRRjLep|k}O zUcN;Qu>#szTkc~a=Dttie+N~tucDi@0{^f|v^a7to#(NiD zGWW?GX6ncLn^^~VjH>)VtdjRq+&E7)9yHBqzMI8v0pDS&F0f2z&{)7DETk`i;i1Ad zuCsR=5YOFB|h0=a)FL#hUK$G z{Z{f>q6?D2-8Dfyx}4|hVf(K|s>fS}c>T9rCL&f;JSn!7J>=5?j+m+kyh2reKp|ak zh8^HHOw|KES80nhH9Y?YoTjS5qqdSk7N?Mt!rP2S7kEsGMqVI&EEodG&e6yVq^ry@ z2maYqT_D-{wn!wFx`kLx$#PoLe7AsaHB}o(7A{=Na{6d61d@d}MEX-O1VY&xB83E! z7ee&(U(8<*h=;@klPKUs-SWRjuF!)F60;Gp1c z0@kAo_j=g=PXg-kR>|i3c*`*Xm+5bv*S9AqI>5_J)dd!+a=p?ikghkw4)ABD>H>dV zX^X_%nP5o9G;?U~XQA3ah&h_M(Y(qGbKp-*)doVyx2?^JiU_Aw%}ERRaZ~kxWlk;Q zv@{q3sf-`_NYEO1W%WMw^bzwoc8fxuB$jI$AZ`=W!R5GxwhWJsHE9uuG%M8*p^@#W z?e^1Sb(brzwAo_u^ynNEnsv0gMr+db}uj>F$)vw}ZiwIn-D$f|Hqd%J#L*T8d@`gy?Hp33^ho%|@ zK3{2zG~2Qr1@19Hwo~6Uko3`sydzz64|0upCZcJllJAw2uh1H!*= z7k7@oFY5jr*tW`KM=SdY_nuxL4I9rkuxqLu_~uI6hgJHu84jPR^>QGjvvbI#i-xJwk%SmTG?Wfb`gWK&FxWz{G z1lG12F5-N~VCS?eb#LsP4!_W{o;D-ui=nJ;mN*lpjN-vlXJ9{2k=2pks$8r_a=8wi zrYn+PLXdW|b*c@#wqh7X%l=b8KgpUBHMY(6R~?s~av}oKO5O@S6AUf)jm*3F?E}Q5 zEf9`L=?0^>9-S5;hX=-*+om< zRUo}i8^}5gJknGnz)zT}3FJqMvQ?d5An@x4={oY_Hw+Shioc|l7b_s0FwUzZwpI>J zJ-Q!tPJ3yC0vWDyWe=o$m_mSP=;^iih^O-`sJ!4;g7Q;{%W8ULs^qRLE@`+HXegC@ zGT(m!D{A5Xbc1VAXQQF|zw2P0F}&Tf4Sq@uWz1djuD_`ex}ixts?fKqPd?|cKIr>~ zbymJF8DtD`*BneQ$o{4tI&u5V@qL|=ruxns)q%Cs)wwh>2FYtkJ3BaGm6_dkYA0Xd z0BJfYTQHPpTaPfoPbVG4>3ZYgb#_mp13c4IUEsNu+Z0H52Sea@DuzhBr%TQbz%9eA zC*U@!@@I#79m{e|K8O5~#;Fa2h4Y&iNIx*c9LOuyT=|qsnbV*fgD`{Dw&uA7Jlj+~ zAVqYnS_RU#f*}yX-VliwGRhJLEOSlYa{QQjzt5tK0r4yAANg>U;i%QvG;|sta*U09 zx%s?wjGS@iE!o6yFTG$}U>9y3;9B7>3UC8eITD=$X;BP%udKQ zEs)52a(1FW{h`ZogP#`C?zJRA2a8xyFXd2I<$eiti7;% z!6HPD9=lTy&Tdv`@&~A9U3ea))9Au?lKQE3-D7$u~n$EYt8A*0vu?!p#8Mb zZq);(1^z=-t{*!E(yF%Lb$}gHb%A_U;oBndSEpsC4!qaec7Wej zm2ZnQ#lDbR&IN;H_qWV);2%xZ29ll&np?6hW7h_fi#J3HueY?e534ho%`<7j*N0A*npRo% z4sG?IQR&c_yk)T=vtL^IqQxe-zf@gaZG>hP;BQ-);YI4}Ts^w|HaLVHCN#eikgKl{ zs*WDe3%?<|mCylRV5%`7PcgXO>l8?zG{X*XH(TbCKihFEh`h43&Vf8MAv;kZvHTQ4 z3Sq{XB5|M=fw*@dixd#oet;rfY$RL25Iem{NnwxDRtv24C{Ll3UNJCmm|{Do*p4Z-V~XvVVmqc7jgyHej>QzmVv1ui#j%*;SWIy&rkI>DheX{w zx|()L=*#4fMyUTR^?)Z?lu2!W8z3zpZ>Ms%2Epgs06pn&O0cdCkrv7QL{+XS!8wL% z*XfA$Z1@n+>A`@~$wY=EmJTH+DET z?&i7XR6%3X_mmq)`NOsGeeBpQvB0N{qS-k#8KNAM0aIp+;vcxgX5%gh%XB!h`iU_E znYkpY4`>flWKppw!C6#v97PsYR9sWUf!lH5b{x1J2X4oK$5~(Ez+-XXu{iKp9C$1a zoLDvX)Z)$4W8&7HRYkxH+9TW8_c$%!cBUEz9-}HZ%fZJ5-QlDL30ZC+&ATMWTOc5V zYqu1DOJUw#5990-ags~Hp-LBjvJ}uXjHCfe!I-uU!*_1nO><*+iCO<8b;U6`2^*96 zm}7F*^C8E?Oce}UR>JCTkG zhQMQ0BoW<5C)0sv$&p%RrOOn%1{Bm zXsR}FvJNOe0+0@|Vb%tYRt%BO3WmUQD~3p44u-%xDu!_)u_jI}C$*O>wJwlkd@mxc zWJGe{h^e|j^7Czx&JKn^^7DpBd_yL48(7YE@KD)aBlIlNC=e1d2u{*Z-xsWaFj%gk z;%fF9D_jS-gQ@HlEW4=64-=%*gCX$jiXqZxf+6t6ilGYQ9u8m2fBaEB%D@KRZK_e= zA64ZUBQ@6cKBO&hhN(t@PpHbbMf$TDc7V@T43S-f0dl(mWyWjNCY?xLEcgKk4TipmC;f<}g`o7JV<$kS(t>b6ckO39v}M|YnE ze2FE}x=G7&&*JGUm>E~wH0dBFb&sY|1 z;MS`0ZIQkf41o`rssntm(iUms^(=@76a7Cf%y8%Cyz* zyXpl!S1kxGs{o$KP*lIv_%9fbPTf(E_gAB~9^EPcKFu5qU#hSunSn#-VM0G0T82=| zkIvMmmcL_9FL!_+wTJAxz{RR^J=iIb-Z9 zz`ab>1$0`IICB4ukDZQwgq<=G%z9SnirtQaCa5DbBH^aSBOE`Pr`%eZfH z`eqO7n>LW%aFKHBo7Ju4Z6Lkj4Uy;&*AfLRc+o@~Na?*H(zDiM zZ6KxhhDcOjLIcb79ejaMu6tb77FE5H7?3)8 zL!>pW1}$J$hmN!bma|R&`iM+FtPCOI7908%CXH>IqC%-Vn%qTii{s1jQl{0 zNwp!x$dtA~c>1%3=K13AnVj)A@CP&9f$u9NYlZp-TdC<8W3%&3CdTb}sNBRSjjYOC->& zCm<2(?1!=gi+cUt{iMI@u-#hu%Fl-7b$jO>0K;!8Q}lHoWx4K4_C>fQclnv^b&K## z_F_lwB-*#5tLT@$vYuF9S!Us|8(DQWL)pSrh)h;amug$q?W~nyI&CTsT+H4|(zs;u z?5#GMHnvG0%8!~il6PWVGI{d?!-KWq#?oLMbIfuzUti4UXDP>69HN#Ry3^q7t1NUfU4JxOW z*c`L1)SOdGY>CCI)v|PIiH$L$?)61HZc#7x#4YMQF>#Cf(&Xf}rgO9&Wp+Si>G&s# z`V5sxTc;$ddQ7=F6h%y)C@`C==A0;y1L4Gpg2pUWiFLV7EX$huqOJ?=1z#QDwWewV zZ&a0En2>%H41qtb7$R+Bw_4i39Zl5%9%HID@HkcZxN#P-CeAA-FWv$u9R(y4e|kXT zstw$`GLqsfVojV^PF|-Pi!P8% ze2*es8w`PD;ti2*Hp3kFxT(58@{_Iy?ry1ef#p=wUB8+(+S3~MfHYo?uD?=$SjsCj zhh3yUFKJ}WIcnr`Id6Sbxd(UHe5_2lz)*^?;L=hVL|_)l@490e7z$B85L<+yU|w znzRLew9>XtxGKl=bLeNrstts&qn{T@vx6ZJ!rl<+qF@Ltb4^cR&zA!J(`wqJRQw=a zDgY#)3HN;};s}_j(+X%g^!uEz=*(ZEinZ?f|zkRU5dqs{BYm z;xF#XR0DpbVu*BG@CdxKVmKbx>H4(B5#dP?;QLkOX(9d24BNop>H|^U5a}QGm{c3c z%P+m*U|KP$98%|5_%R^NoY%ZSy2K1~AmQcxN9ow}l=6I|-ut$~`-5t-o}q9zl+8-q z1$6fT-=rKM?|xExmFjNO<4|_OOfb)34OqH(farae+UVyL!ezj&m7ZGLvamjRDX7v# z*;EZa91L$&NLR}ctrsP6f^cuxAq6TTFME-{QC2HSUzsK&Uv9a=%D6swuoxA@N=zHch2ja(%IHZ3DL*R<~qh+~X1`^x14dFnIY%68gG?t@3 zQ}|0g%B_a@Wd=jpPkJ1lh_y9N4 z`))ESfZM3b4jPH!+mBnM9V}!Q2yJhObYL(94x1_mE;LmaNOImCQb;v%w<$J?rgLyd*@{DBve5hDZ+wk3gPM_Pvh8qx0jQ3rQtTAt!|~3)lrh z+SeZG@?Z#rv^PY$$_#VhW2Wi?$-}or3Ry+n;^z9j>Id`w`Scl8(l&XLZDe(`MB!3K z5f7{BYdo5-M;R8t|J>exB&S{An^fgH5ovTsGsNx0#~B*%XbYSJKdKu9S>S*}8d&b$ zFP?|6ni1>)Pc0G53#6@gfM5^Euig6&5spzi--O7wsu<<4{^4>OO^!nW_n-2J$V^{>lzw1NQ!&!)e+tbcz@Q z=@O~YW%KYqrseD_6V<$IUZO~s%^R;A<t|Sn8Tvt!o(ZlH{%PPEm&E>QNd48SZ_%I;p<0Muf+YOX`EQ0~jllvK3z{5dI#j zy(F60eM`zrnfgkEQXWg@F~oil#@&*6R2B05<_Pa^W5CawY7|I` z#1{n$E8BqEE-v>+qHLSwMG`U^K0U9VMqf!HjI_S89=@-vmsy_3&|1ErNB3vN7i1en zJz44^tuwr20{{U=ji@NwRaT=mHM%RP>Lin!iMy5Bk3zR+(-H*hcIn?%)~)3Ao{QfV zdCRiPbs@b)k22UsQUknhmq;OYmbg#V$ezOVV?dUcds zxviI%=utLkz|MC5BiWzuec#KV}ncwvBmg z-mCDDpaMQ>Dz2@o6+n8m2RrLg3ITk%)us#FT2;OfNW;Mpcu2(%>55=T_~cQ!Y;2rz z;H%8TC=eEY*N4;%hCo<&L!`hd`CZVbmBS6jrAf=TT8L(p1#eo_4-VhPgNyViRR(_4 zRBhm8s+ycFcz$7lbh&Bgix%l;p*is9X6TwD{lc`aIntj(^C$;ZG*|Fop&o@h@IF(u zfe)$5j}Roj=S;36A#fZjC)9%$Y7B^T-=9ch_J!gY@JLhTz(8o6^Oq+UlWIZgP9xO= zLc@`26-e6}gB}oa-Vo^>X4nGqwW#bLfw1>&L;Vc76Wh?ol-*)u*#zEZs_u0faj`{i z0>5sm=t8%V@i#9%Z?2+sCS??r+fl{W4eHCiF!_X~+0@MoG!U1;XGxa8bY;4pF>V1j zGu7Nu1BJ8;Mp35n=HAG8G~eC5PJF!50=9s!GF4Qgbjv($85OSFa!U>1ZqP518}!Jy zNtCUTou`d19n3Ce6cGtVeAO;5CBHW=c1_dV+AB`bqi_V?V5%H@!{DnAgB_E_2bkdXsC*i;?hsHqamjCT-| z$sxmE1eB8~knnyeAcZh(Ixu}C7;hhyuQY*YTjo9BW2MYn1ybonnm{VxShWhI5lg-Y zgs3-6b0qplj8Kz2?+7X&tP&%m;$CkH?_l?yJHWF{)dilTD&OTu_XI;A_pfCH0oO5( z1G`*_sXKVccZBK3g(U80m1Nbr#Cfe%^R9QbQf^?puD}VrrM7oE@U9kSz+x(I<8(eq*?{iTUF~U!7y>WS_RT7 zn!d9H!_`}s$$=qxmysL>(pYXO{dOVt=_6jgYF zZt0zhv*#2}ez~b0R=7-$Ly5n0;(vwlp!PmXifqtl7YKCvRO$527PGC}>AJqL51ROY z=^kq0)Bj&opVLY9YnyDXJ683P9@eAmWPr@LA-M(2RJ+IqPm85zW19^v3UW}~WYO@SR#<-o6-s>MwBS5N_8uP;UsX2(YFNNMr9lrQQ>jv4rYpj-H` z;wOSG1OGng7V=h?f2`~KS~37mU*D@-h=UX#S<>CC_|B5G@7G#hhmvk+hHtZ-9$l?YR{W8YF5Ar8&C#Q?yGrpUoBPk4ZdmdB zlI}dk8|&KFZ>#tQJxZ6eaNZYGES$eAwFLjcbSEu5NSDy29$f_RoS<6(K0oNPk1M`X zkHTbYU3L$#<#$2WQ~Y#E_k!Zgwk!*LB})HKe_dEI_&35wYs;sUp}|91ES8d9eaUlX zEO3j%YSv(d7R5vx!?1B6>% z=DSwxfUHR3jRmQxi;!3WS);^?CF=LV3b>W7RAL2OLl-6S1!V2&GebBl*a2D3#2avF zumZB$i4}|8)w;k*OdxAsKPCc;o!9|c^ZIrO`|83bc0ks_z8wM!o7e$a-}-h48_lp@ z0J6UI?GRY(#2=6~uWyII0w{Js*1^6V!cOrj#)>6P+5WL`^_wEFI!Tp3ql?lX_1L## zqsTJVS0b<`Nn;>8c8ObGZ2TV2{eNiEr2dCqQ@8t{$>-@hbcG&Q$|f!OyLVr(#e2%O zcs<}BRVBa5U05JAbl*2smh>~^2KdSAGdDt^tjiaoZ9vut13 z1OA7qh|d=Cv%wU|x+?q^6$m`3EVoP8SF%eK6_E9`pE^6nus!Tup^NM8x>QP2;QqFH zO4ShZU>;~EH2@xQ>y?zb|Z1==qOV?5D&I$aYHXPA(AMY16p}cM(CblTAui2q>OP{D@dNZnkh z_o3pWs$lowKR8qP=>CGug@j#S2RS>tVTGeXb)v#WLG>|({}oh^C=8pFIY2fma;7Km$JVM72;= z@3$3Z&aJu^Vb38}&#LN0+osG}M=z&l=uxcpRLE7Bs18@vF~RC=g&z#6hZM4Vk%n_; z__@VKMO1%P6?+mWlM(&mQ^kn{Rgtbpx~m>TCl*f z>Cz9T7VGJ*YCApp50*_Tc2Wg9GXKGalM58A#gg<7)%It46cxKQHfqLXQ@vnhvnIA* zRTa1VMCE(3^8ZEyu_6B)=GfOy(VY{!9GR!jFJzx{ye@WqCBlbPxq`Etx<#Wv!O|!< zCV}he64!UIkqRt`Vh3bx?Asx5g=T?JTwp6{pTSUpf)!Of16f@Ao)NgtGtVfVs(VJk z)u4C=ZmWZ^?-^ld8=1qvaLZKK(ihdE>z0N*)!9F_`cBerp?f4Qu+&q_tf$@^dTQCi zi&dZ(S7H+A+$z|m^Do{Xa3|v~aTc!f#5If*2LuHmNM4%k*YcX)CG|QsW zxT5%-zc1EDv?N>_I7eI(eAu@1UAFR+sq|$E8*)*x7Y}>vE_>{-ckX^lHwIxB+hrFU zwo+YBuk?TSLqGXX{_py-(QtB@hR)FIL44|M!vAT5^}qAze~kF=@)$Czdn}cu58dbF zYoF1L-_tI3T?^)FZYbN{uI&D%cJhN@AQyM8DVQPPbS!DS7Rc$q*XWMZh2VOQTmQ}u zyrW&XjRF}`&Wtg|v8>~o&b>nb%vVz`EST}=+A<*dGQsJ7rC%(txs?h4+15IDV2-XS zmpb_D`QX9(u1!Q}>S>eYd>19PeDN)P7f z?7&=XID%k~&JN5Kh_eH8bar4aOPn2;qq75Zt>Wy!9GxAQ3m9hy=IHFeT-7)`Fh^$x z=2FMmfjK%mFc&+n&R~wt4$SqBvjcN`toE?~>vjcODT=O}~;18O+nFW};OGDZ2cBd)mW}1$>OO7&lJH29b zalu?zy5A3gIXXKqccF%|*V-Mapqptru1Z}VV2;iom`hb>2j=MPz+AsNJ1|FQ2j-&I z*?~DaJ1|$e&JKK$Uh+CSFqgk>2?I}^;ddI&4$L*N8$#fBm+ZjVX1=Ygv6~kN9Gycj zm(PwMn4_};b4~5+zz1j$X9vE@bh8UEM`s7->e~$%Fh^$x=F;5Rfx~6`D3GIT3g*(? zQ3m&PkMHcjT+cf@Fh^$x<|5zOfjK%mFjxN04$RTnfw>*v?7%DPeF0|&=Ei`t19Ou= zPQO5I6S$^e?hv@9VD1*UoduX12Cm9rZXQSoAU6Zt=mT?Oz%>QGPwxykDqy~Kc6MOC z>~ZwK++A=p0nD8Sw;F)C<>2hV+{Zs(sPp`jg9raA`2hE)BNU%K&G`UO(*HXC?OS zvuxiUHs7;s^Bp$YvuvXsHqf(dvwW;=mS+`UHpp(r3l5v*5jM+Vb1O}C6Ur{qr2%Hc zIF#*dn@7IKc6MMkk*-6*huMa5Rsm+i=;(o;(3`-{ADE4d^9P=y_g-9bjmg4|czkwHu3#xDZ}bZz#$+XL*bgxz|1Q@66VH$-TIYq0rPj=<>t* za}-_`RP~nbtQ5Cw#w`;aoN757w;W!+m~-QnbL%Z#p8WC*bIFtZ82O^Aw{&^NEt_%6 zWS()$;kaco&$#8>xMh@Qo&D0uUbEU1f0XBLfcKiJ3;da>{tt0)0xm~Y{D1e{+=QF3 zg;j(AApt}d35$XV8UYm-bapRcW`Y8uKNbUFC*%Txz>h5~?n}oN5SNI^B8X8zQ9w{Z zMfOeH#T^CVt<$GIb$a^rOs?<$ecpc_xaV8db*jEq=k)1idU{&Gb@aO(vJV0`Qk8qM zy_F(`-;{3yU)N`dbV~48WV#B7G(p0!iN+BHe3-P2fLF z)d7-~?~C+S%drEj=8Dlwk=nr!INoQ7^sZnCe0QHA((%C%NX0$JVMV6EFX*(9C!K&B znBOjtp?7|3HWBs?hCs^V4UwQ#vcwfR!i&+aBy}LeCA%*0F&m~ja7`oC0Or}(jr|_M z5C~t#zMdil_R*5z*)v1dFpnKV&JQXeZc7e`6l2*o9{o~V*_VNTd8ywdUn>FrT~&^C zD@EFGTQkIMu_es6EKC#ldkfPB;@E|0mV}9p+&&yZZnYpa;2$kW2j_uxbew}d4u5J6 z>%gbYVHb#FKcq+@OmxgGhIz!oj01mXVH!XjyD;M=#VMURWP;yHasUv5awxxk0!ndv zkTN;M7**e=@Uo!#k;2DKwGh7R*(_POtHQlZRdSqrow^7C2aeP1tv%oOX)BW$c>GKJ zCYi**lT_s=G1A#q{OAOVVi4xt7N!YYWMSGs9Q#R(6v7Oc!~{9Yg4BS=SddQaZk5GZ zVh-!TW6fa~h+{vAkpk<1lNjFTT9|R*do4@@h+{vAkwTc#NgRhbfDrVQNqohSN&I&u zH_aGTU#+lVs)f+`SWw-h@HSIb577y8v`w6nNjyI?8aPgVmhr0WtK7+@{FA8+TvI=) zm$N3|x~lS18L1i!fvrA6q(jWG1-#Kz1Lmiv1|F!l2>^VbCus${pXBy7CJ`jxD7u~8|9e0ATXf=pK6zPb;} zQR%}I2ye4}wFUfD-Y)NR7$%536$ZS+cCHTar@6hbnIgeOo@NKujaC!*2~%}|SE$O5 z6cYT!-7v;%+e3j|2m*g(%)3Cix==M^&QV6L?|`uIhDd?az*83Z&{9UZ5Cs0fcr}1| zUUlO|8Rd!**tYW3fgd$h0|;NozMdil_N9kB80T9kSCVny-NwEL%(EXaVc(0{kHh{` z#=ZxHuVX)6!hYbnbUE__VE#j6-UjBGA7IQsW}Mo zeLm*?$+gou3bzU>=utnhg2aB zwClZEiIL>kF#`Y5s?#c|M3zJxr1@+Vq*)SVjW|ejTR#LHR_eLNasfVn6IA37inw61 zMXV&u>w|+o;9;tolAJt|B7_;XAaKtiKko8%C+Qp>iGQ3S*W)6&U8g0i;PQ=L^8?Elu$@PX*EyJ0Pd(S=7_j?tis)Su9ihA#J5E z@MEgV`Z9!!o7iok>&9Gdoja~fc2k|00bix6%-!2nI4;+Ba^pXeusEz|edpUUdUsBj z8(@Q>_Y}2UOJ0sRHhasl*<0_r^?)zcXPd|52HKKoW4q5v(R@a?xT9k$ zMf#d*<(3ri#rnKMaDnDey2ZOddRDcvjsd66^qj>ja1T`luV{XyTfA4Kjr2=?;sSV( zKFJVVpgB~xco+X&HJeoP(^iUwK&s^YHmznPE-%gk{>5t01j0$I{yRc72=V44IlTnt z3Drsnbs@x;DBb59$}JF@)JbSO@9IX(=3Se4mnT*?VoWKy76d}jm9(BB!BI{pfJ_|e z3uJEizDP_DF$9vTHyl>}|7KfUk#Q=r%s%n%0N1wZ)CO*3svhv;rs@Fmr5v|X?rSrw z1EhG8IFRDWc{gyT?Ta1YMy9F)=bEYwyu|jv4zRVZua`sw9&D-(@Ur!=>H)uGst)k` z`ar+z;J}}mstx2_Tykguj_S@X7kI##rs@GVFjWV*jj7te-A&a4?q#YDa6ePEfy}T~ zTxE`E4Vjpd#{Q~WXyvVbPT^OB>Q03Z1l23F(p9T?H6~asPU!3yo6r^Vz6}k<)*;E}MZ&%2?AzT#ZJMd~#wSmu>sslVpcY(|s z0yAH@0h#%dDR6b0r8eU?398u&=LQu!!7f3?gxV*lnDHEIC8AA|QosUunN5=_@Dr*U zOBN@WRmNV}IK5FP&ePh;4g!2mRl%4k^A=kRtH743g7LLF@ONk%wv@2Wb^|?KlPdvt zF1)95ono`N0i2;Kc`M#YDFQ3HyXm52ZZV#X`xUZKixso|r8e6eOl=NrV#PdOU~{E$ zxI(_AcXGaY)U%EY>MnA zC2#7jj?q?14%~PPzeyGiU`JK%w5XLLT^9_2H>hg5{8Cqa+KlSRtQ6HYb8y=QZmX)C zHL8PklaGjWO7H>PU@mSuz->&`0@h8{0iLHS9|7ssUYZD{rwx3; zR1M&TTVd4!e!^63;HOoU3xn!;do-bAa9eyfDhj7*n{$BbRc74*&R3PMh<7&NZ!~+F z%pL|orulOtvUNn2KvDN+*hhp@9_pxK88^-U7; zVA4Cw;s7~aab}l!9P!gL`KT@=)2-AU+~Zmfxbg1OiT9M~*^HIu9HiSa$Mr>cs>zB`Fd-Qx?N#$|8YGX{jn0O5wR$35DlsB@~{kl~8!D zRzl&q+TMm9oc7$%R`ohioDEoVY*61v&RTX%Vs>YI~ zdJ%h@R&TZ0-j%HSPbt5@Ybz??3#tnJ%Lt&`UZaH~_u`87sOW@+>%kxtrAJXtwL0}~ zi0afM@+#Vm{r0)q%9RK3{rY^AEQCN_(&kPES}D?wv%C*61in>O-Vo`MUL zprDsnq^NXK&7W#2Wa}1?U#pHFBguZzqT*KJ{WPt2YAZK6K0Er5hFjgrRxL8jR&ZT@ zUao!d<&LP})6~_}L<3Guc5~KSRpr67b$WOPm-sU;7c^B zd~NQDN_OUzr06KMe1HSVkp4m-O!6L}bD`48Z!2;N@+10%+UK>EJqkF}-o4lW-mWUY zqaZyQ41xddGYsMKXhdy3X5HJs+pPQX%NC?K{d1o-@5sG`^-#H1}dopTKFPwku?0VrBo-+aW=UgV`uX)9v}{IU&W z7x-0G`7uMf$qZY-`%KjZGCO?VJcockr!2;;dk6SMRZUHnto+tQ`aKnY-mea>a>!0F zx@vrwwz8zjFd-eIT6YUd;RpH*k*+ku2Jj1ghLF2G7y|F@Gt809V15Zok~7uzyx<0S zk*Qk1W#)PD6%#2E1Z71A{(r`ma?+N~waN%t(3V-{>#$-&Fa20s84ln>rfLHpR+XPs zNWU|~7I00Q;BDZ#sv0~aPg6gi3I2dr^aai*(2p1CUF?hO1Bn)J5A)gp?rC0+TYgB2 zbW|_|9&3i~e55~QCS{ZUgBtWo3tk0oV-6OrI3-0QqMYrGtHF^LJUU{IB&6~Q4X~=g zeOixTTf4PY{>i8Nzze6LY5+g1DmOs26zP^RGX(ORvf>W-`x$2C!Q}qN1nUqy)d+Tg zP;vz8MsQyv*a04{DsPAceL3L)-e-O5!0FS;qyv17s=Pa-?^((n;O(mNhDf;|7z94j zXNVMv*cn#7xM<@P?Eo9-E|63mr|}etY~_Q0;KNpnE)YV#?=VjJZ85(C;Mel!OfnJM zz{NJsJ>W&AY6J5_e}D}=BP;HJBq)yw0RLc#wSiM?kbA%{+HkgkH=3#kq#`AsYE}{k zobjB*b+{cYrGSd5)dH(k7s!+S5*@hNR9|}e$Mb$ZlkT(8=mL9M`s{igfpHOUz-w)Y+Q2YG zL$248WTBS#P%Cp4c%-Vv{$IkE9g5F?-tpfR0b1?ZOua+_$E`;cs_bTPyu_UY69P5sxI&pQ$?Rr`7Q8xkr}puxRnax?gX=H^=BlH zEoX|6VTo;Ty=%bzO;snx5Xu@;`@mDqY=CE&yAES{Ur-e(yDe0>sb*7>V=5`ayR2_? z2g+}uH-jQ)E5J}a8=v4VS~VmGjTQPuC9Wh#snHT679GXQjM{PLv8RF4b*9efhRy62 z@W*;C;O^y4Alz>!2rb|;U0*W0BAGHdj@cyUCL!js34}vb>GtDhiu8fJDFQUTDbmA6 zx(S>XNH3c}*iV(dH&Qikia^rdbXb;ew#wFkbe4)OpD63=ba9pHREfN#{}nbeWF{YX z0dsN6z8GFiTh42XWR$z8L3=A87uhR-6S^r&3*qHf`wk;_W>5joF;(kag+DM=hkXB| zsw@BkSqOVZ?5#RtB?*a#aCr2uPS>1Cj3Ub;N5DfuV#_8FNKh`-flOFAcO+LPrl^2d zhAfs%AlzWeV&wa$ph_5FVr+n^e6dX#~CD`E>zsnr?dQbr=lbra4LWa52g))3yP;jVD zw1(@6QkGH~Z@v?_p)qQ}`@*1_T<}IbG^O|FljJ&`m_OE5jx@j-8dZk>!xK;myIFK| zpprbLPX1xeN)mvREmsd$;S|7M$t5N$4h*jX~pgUL(^>3v}p9zM*oB9k@uttbyi_vRTvp`#k1UyDn@~Ozu z6ybfrjzHH2m7;tjQTA1t>d90A;#R&pHDWPNHiywvku8$C z3UCWkwSn84ss((xsoKCjP1ORv%T&>N8fp`lrAb-H(#Vf$dMmNC1fCg z@3ErvfJdmxF&R&hD3!PaGMEw+NWH`gNWEN8O`FPy6_Cn^6_AREmE~Ik;u0J{2@bR5 zx&Xq@Sc-YM-dKfLEES4ZPk|E#Up8Y6JhEDmP-S6lq6W z1=_#^Rpkwl4mQIU@N`qPf#;j51^j@i+Q5&Sss;R>sfH}z`4TxCm#G<-sT-H6Nttf4 zGIfFE>#}dANQW7{CXkfnHYt#lWrYGRvyNRLRqzpzD1`I{E)RWyl*#uk)?<(y*QplQ zsT0?!MxB0Tb?N|_K#obxrW5s&Gg%<@k`)O^y~GMgy~GMgWyA_dWyA_dMM}<{^W~rf z=UFCoAUlYxkHCC#bxUp!8;>54BwZEiHd_LxXko~60>h0lk>dc6F_H5UAY&rOZQ$dU zR0EjLVB9jG+TspKwZ$EfYKs++YKs*xBst`?$EC=gMR8^21^(KIcY!?PAyz<&EPGmU z9}+8ejj!0~RDpqFwDwjKD)g*z=rAC(Wky3sbe>)f9ipwA?E z0(Uo62e_B2TmhOX(!OTc1ny_54v;eWzN@ZKY!TP27T2sD*Q`d(uC|)BfsD3eRkN|D zc5+(?NbO|F15!J&0#ZA%0#YTh0#YTh0>0l0)&^c`suqwb=OXH?+tp@Y3%Iwb+Q7G% zss&^`#8+JEpoxoKr|8#PIeWl-IqN0m?8W7*Q_etW=)N7OB?;sXG$!LfrhzP0K&F8# zp1>=uV;7iDVcb$+fW;k<0Ty>a23V|s46s-M*Ra9p0vSy=4aZZYP?2ce%vZr)b}^QP)tr7$EDt?xd8L)Gwj>s$MQ z!rO!DNrk@+s$wlF2`T-~Qi|qynbD-@oqSlQ&m^6xtsG&1A2(GS$a7I*1-va-0e`6~ zHwjuP(smpA{A51`?qaGIux6?@uw$wg@K95=fk&9C1?0A(TN$)~J8J8x6$?ICj?2`H z%hZX>)TB&bvNCmmRKam+rbxS49!(&HkZBL35OOdC9%LOmKx*S7AW zrh_Zfza_3yEv{2Hu2YRV@uQlu@&K7YE{j^pbn3>XtHq`3#-*!KIw~VUfmB8gZ9pm_ zR{cpArML)nioh-+*9O3Rdi9d@dU1Mn(p%lug&q)=u3Gg;jT>}Nu_-zZWT52C9mqh* zaR7L?b!-6hNsU`l41u@CvR zNNII5il%d!(Ik#3d?qbJmgB7IWOb!w)diA=-~Eu@VPv~N^6-X8e-DO0^6-X8q#}C+Fk}@C zXq?r5r-^GYP7OX|HE09L+A$tak$Cz|j>bT;_J&A*wi>j7WbF-+&bEyuJ}fDgnI8R8`;dHg9J@t|KWE{!m;x`iu(cA0 z|Dy?>IxNv+)x`T0_5?=vYmW?Edaa+7T_9n&dG}y z0ynjDkJ=>MRgx#v)l-&2X|9+(Yi4!e^QtNz)NPc{n~YbqaQR~phMa0iPQXj7Z;hAS z-a2gjI5k^r{YrK#H~%m^*bJ+{6IA800-q9e6Y=zA$zo+4IC`H@H=HhtA@JcqWD@Qw z38$C0S-;XuG5fZe)quCCYDC_n9_Mtuo-saVXO7Y6`A(zBpVbkkw~`f*i740R9KTMm z^}Raj82&Kt&cueq;#68<0XNj$O0L&{8>>oo#HA@hpjn6Jgwd>*(BxS0ayw>3)t7UV z1Rk3ikJ@euL&)f~#+?w+b6e}#jC)4!i5y87uJC@?(qVHu-iI|qt~X@ZfR9@8)e?vJ z-pTgFXyMTLBxh%C(1t|f%0>na_<#j(0v}eDoHs2^5dz8P5Rxx9l2NtX2odxe3tGEF zVenr%LiAi|J?nALXjbT>#0k#1jFaL6xr~#N0QU49RFQ5+gmnG;Et-w1{fibY(jE>BiWn;NjJcha19Guo2784pt9N- z7_pw~n^`^XSu()$b;fbRQ8Gd<%4l+sI_4r>41r&wq$va&ZG}S+ZRqtporbtXA2R`v|;iSnPnO2fK+B;jEynq*tr( zQ*EWQje_Oc9aXrNsj5_%%1B2l5o#IDkmy`3p%zRF`G^rnwzBg9$yKa?CmQnx@M2Rn zf%llIL4L2aWEv#1B&gzKhJ0xBXC2T{i&6)!VX7){6I0b$6)v^Fbs$xAuP0xW%-Koa zaTWioR4Q?4YSe)dm-z(@gFiMqayaT{YW9C(o$Zyl{N(+)k8 z>$-wHBfzwBzKivCx;S4n%e7v&S>2kzS?hWunKi)a`Vw@%5+l7_wPFZd*=IE3I=Kcu%lfnj+jEloKh!OV;xYrSffsAJI08j6f^Oi4@_}p)>Hi`OXO63rcwf zmkPfNoq^8>yQL{YMeCnMMqo+^Z6K3erW}w_%`#yeKV{=t2VNOMEKL!<9_)Z&5=FDR zZ{^P&3w?DNdM3B5??A>|c2nTjY(QJUyG_*q{>D@-AR{QgfDDz~Vh1u*Vg>xMjYSK{ zn1~gSN{cTb6&9#6Dk}{_m>o5$b%7;Z15&Kf6R@m$+%oXR3&#;=T7K58WjqfgZOB!U1A%aJJ;8zJ zf$+T0c9a8)BQMS-Lp?vx!-k-X?{z3 zhsx|up$8fkBzhF95qgvrr8u90^<=VUq^Qi#t&T0=pG?&N?y3*5xf8=yio~;iasT+C!bZ?v)o8kTseTKub z^xNWGo8&rb-Wx!&^H)(w3xgq$RJi3`ALFwN-zYT(PxNsWiSMOsn1Y_zUCm6j@DMD zG4OU(c{(ceH3z9g4>?@~<~x^)Ym-pBu{tE;q?DRI5R?*!F%75*@&6cw6}svO+aVs|y%K~Ojs{Pc+&mZeNU zmgvD_iwAnh*aGvN%f_~7S28?F5*tOs<0#Bg9icGe^`KJJ*X*oP=vkvD2@I{< z^3A-18?}`zfO9wZo8%}4+)7oxph#~GhQMZ@VISi@VcCcmf3K~C2X3#mlj95U<*M@G zk$9`8^ab+huk`H;*C)iWo5aSo3)D=J_B2LK;2TU;0}|W!?TeTRZSBGXjsw39@wC=t zy2WVhuMi(HG`Qgz?$UFP%k@&~o7zrG{&LdIiu)NBElb}~@l);ko8az@a(6|`(z*CA zb+d+Ex(K`T%iR?%OWpM+^g0z~b^v*+qs$KAF?#s(GYjcLo0UVR5#jc?KuzFm?eC`o z(pKiR3EbIKH6XDEO{3Rq7k(^$;515X*<8(z@eMNkcTnxF4sk3K=`>ZHYxG!CNII#= zJF&YO33# z<{(|AF0=)#1^m@)Z!J{-{#jLijv%$?n4t%g`%CD{EOZn2u&LU>$4%7)Cd$SwaSD&s z)=wFvrNIygcW;RFoEbKOTW*nL|0D=-ds8)muQXK~_#;*M2uM!`Lm=hzhCW*OTM00S z4$*2nrLDU!0e(((as&l#Kil_}JH7iVq!6wrcx5o7BJ-55GXs;M1lU_QAEvDYAk+Iz zRR#XVRGr;*&g`YF^Y1x^zm*I=t?BG;HyC* zRTaoD&q?aQF9a*#HKytSDU|zp9p(b3L2_qq+mxL4wf(CKe5A{|?&JZ@xrZIrad*VX6-BTdH!qKr2NWw-d4su&XL>h;*bG zwtycrRq473_n2lAn%5Z31`uL?PerO*s0I*X-ViBpijE=haV?yd8i5+{CR25RuyCPj zR=NeosSAXKH$)1Yx_J(H{22}UH4EN*xw`LIm>v+vvN)WtTSJUq-mk+W^8Z8X_qXQ1 z3!HBLqwAiE^d$HDwCDPAcYSR3mSeNGp0WFun=RR9+MKzcnwqlpLGvG7fK<#CWQLqe zINtu>qFKKEh_*7xf%luL1AIVLZU9;-QpH$xfFr8%hDhs~VGH<5Q+0rQ^z}vR21B?H zZpmtyrO*WOOKGzE1IfdYZCX|@Sl>2~JiH;&3}e;=?q;eskUV@}q>xp#7`b_Mg>v{> z-~#-ysY>S+gScGHMw4S@9wA+BolE8sT?xMGg>n-=65(gsTEJ^{lN?!qH>%1{4WxO- zr~~BPd)^RjihUFg+lSWuZJow}u$e zLg|(}INzuKOO`wN@lm!uXe>&mDX#dnzDX>1ywfVYz^Vm&$X;{R06wNFSHxCol5uK` zDx9IMH$-|xFa*A)&k(5_3B10n6l1Zj>LHi2(5RU1ei zzAw@V!4OCu-ViBd6%C6U_*beQ{AQO4#lD#`u0g+s9|>I3-oMlW&No#9_Sovko?)sskUV@}q-%m9 zkUYF0QphSA)M8%bG-AGMz6N-&?0bzZAn%MBaw>Y0l2~bE4gfx^D*3s9XO6f)y?;&HO!+7M%FuK6)uC$0 zGLPP&uJ{(WoOHyQbcqpYM<-lv(#gMU>g=kO;q@A$$;B(*n<5=-tJ`D!l&%XfztERjg-pKHh#6^wI?1*?$&EEKBfPIzmIEFQkKWWXZW8m zBlBNrF~SyT@f&wx%QH%R#_FC@*uu9Aw~w~$shYP&TY9Ql6m2<8HJ3$OKC7DRqb;|o z=7DI-?^ToNR1Bk2*>ldrT zgZm$fwtQDL&qiBbqDuu!M&RbX_y2vV?z=5pIjTSwlg*QhuX%5_KObXA?se_A|CT#! zQ%N>lFFM#%5|&0>l-*+wJoZ<{$7nk}IW{>inRAL9aZ#PDo7PGeubELf)^A6j>h{&y zevEWR`RU?D>71hcx^CPcS-eK(dG{?fL`ER6^r({DtZUg?x=zXI#dt{xie@E0{}=lj zO-}vz8YRv?tFeAJJZ90XG-i@uc9nWtPflaFc{#G#smYwVzgRnEBMbC~$*K3Oec5Pa z7Z->HkL7JZfr@6OWQ#^ppy$?#3N(@si-of^W^7gxGd7Z#pN(Tyk{9c;%GXazW5#AB zG2MX}Z?n~F>7cNY)qnDXa+TiJ@RogPs+<_?Hi zG%Jl+G?JLVFB{KGH6};%0Wphar7?>}67!BVquP!n#Ns@mG-hm85;HcEm}i!a=Mj3w z!5K(tO!-Zdf>}w-*hpetvs#pACAnLjac(mpX3?xPX3Z z8cEEOH9=lbrZG7mD~%bOmBfsVB}67#0%C3EPz8k4ir0Wphar7?>}a&i0gktH#A*K=3Sdk4fUnw7?kjY>X@ z;53?(<^chVW~Bj(MpD>YRxe3%hMr_|IzAv~(X2FP(MV#JF7QWbOiuI%#4MVX#w;31 z%+dw^CmNGWhygK+W~DKUMiR4RfiIpt9;8o~oNrH=w15wpstbHnRsP--(yY0hs&|2# ztI8W9ZD)op;PIyF0#EAeTO=Ihk1LrK#!cLw$XV>4==&j@wkN7Mg2&x9^!hjnuZ@&=mAM< zs=HS@cOFjfvp7BAgQ`-?VouqeImwDxTdKJmCNRHtA)nC$No-28BxHGsMUQTw=fj@1 zp_e|bt=ts`UZ*21w{d|ttI7{2((Pv00zPW0Ht>&qee)a?XT$j=oq$!py0c$@*Uu#X0~_? zOuE@1BjkQtBuZ3&Ik{iILd9pamEkt1_l0G+vyl*sX{z$Wjl>tqq%V+{Qc7Ro@qK-f zF0&vl;BBUA1MlqXi}ZvUwt!EYs@;(i0?EZ2B0UxiflrvK z34Bsj^3{Z7^Aw4^NO6Kz^Y}bAO-Jpa$H^=yiZ(?LyX4r0}}u z8Zf**xdWsSzAqA^EN2No@{>;lfh6bqB85~3oH?we8Ej^m^bS^dUQhv{G;p{6C^fRa zE&9M+_Hfv(Zqu<L?`z*qZZA>z@u0d%;q5_nzrue7 z)r*xQTuWB#RZ(oj6dN(cMoh60Q*6W(8!^Rbo~(*uFQ(XwDfVKDy_jMzrr3)qmhLfc zkA}CqnGQu5%jl^yriyEKQV)2NMVZvzU=ySUJX=-r7PDQ!7X;lQlwfO{4>gket*Ttt zJOPJ8wTpDbdQbQe(CNUr;71UA{Sax-lIW$UXvb(0_>;?Cx`w&kEb>M^S$l_FYGFLg z3uA{1<6&NiPuj|qAFFp-xs4vb;50Uq_aowiw#+D6rbb2~N?RJR%xoflHZ?XIx*$BQ z(~(tAjG4&nOQQO?jxa?Q6^jy_Ma95TWKmHF+A#6rz>PR?BM#h%12^KpL)Mo#a4!zr ziv#!Kz`Zzd$*S>IE#4AsSMiORXLUrj(-%6(0s(xPsp`O^ROR+^@UcO62&q9ryg`~@ z?i;p1KnB-tDFElf98nD8>`LO4E(HfDUHr*XK-Vyn1}p{d(7s{%E{un1VeGDCufJYh z(U$Inl__kdE#2$cNL#WejEusHwlrXwS?OMn7uu4L?1Z6Rsr%#awUyIO;97b{Dz`>~ z>#NG2b|M`X41q`X86sUA41pi&Ger7cFa+MwXBZL~jN;Uqq_(#CZv#ojpVuO7Y=%wX zyG_*wlArI3bV)D-lAkw3`hGA3=Cdt(dy>z3Z|!)5Ip_i*Ay-~!>DCVhD^PKW~V1T`&aZvmHEDcGiv^bI=7sLMFj+ zy7m3R3J8NqO%+$O9j$OJ;4Y^6zxp~mWns-h>v{MAZDnEuZ!uLD_$O8QiH*d|e5EgN z_WItf9PNR;Ytr{c`imL1fV^+g8zS+NOYsQYOCNsrhL+M$5a-(@-``li4Iml12+b7f zb;h{?e6y;&A=0mcA@J9xY65>_ecfGsB&y+W(jid|9|ws-4EfwY6om?$W9im_zc*C} zNX{-`%_^{;WzhkWvo}OynB{&PkW}Pc3`icnFH*>=6WHg`Pn7PXM%yOan~Y!=2&I8L z@fGR@w=$jS19wqP(Mh+7wxY^&a=4P<>S}c<#TlMobpJPK_z*|k#2Hv46H)5?6=}|Lm0q1V$GnNxF;I^vreUZKu z41qjHASDL=xUVnLruIxjyR5#kE>5;dvfs8G8bH!>gqxP^=0>;yBo}Xp^qpV`yv0;a z;H|3ix9X9|+phvhRI&fQ9@qHK8jn`dQIOxDMh$J6Zie zeOO5f_yK*MUiNGtU!8L!*h-Q9XQq!QhQRApr>6%5NQ+D3LD^jQ?-Ey z_Vq=&I2Z!I*=LB9tZTG^N2$uQLHbNE1m4H)%gocy>r%Xn;>jLlv) zHVq)7;UYC{Y}U4tH-L;sxO8>O79JkQX7Z{kkWfYq`wA3Af@+) zNK{`!1M~GAe1VX!dtB8TRsFP8wF}HwwPsa4%BtE0Qb)(QmLfeF41v_q8zQZ1HK+l3 z4ZfTZ1M}GqdLOgT^&$-n5x3Ydt}u}YqxaOXjG3seR~4fps`uz@XBqy#ZYiRyNZOgK@Ut&s^Qs!er|dZo6a$`7x@dVyzZ!n3Q$`~kwqPqdg+15(UP z=?jFX?+aCCW^R(g-WwJZ@LD6QU{DS$#ko~EpF_*0UMOsv99ZV0FEF1&D~)q#lTJQ| zR$7)rD=p?wlwYR%*M7F2Re|K-CZJAT5|A5*JEhe8<+c_t1inR8BgsA`2~>*-NQ5H$ zk>rgLcXvODUyt8b`A$oYmnQ+2?FYkKl_~mSzInOmOU{dMOYZX0h$|-WP4;3(?j)Mo zF;t98rYt6wDf28Gb~CHUW+Yj<29e3i>B{=%b+6FMusdxo53cRLwWM*`=qK@U7Z$Q|U0o95cSnzmb?PO3EB#@pg5*i8~DLzIC}VMpS;bHy%Qy zI0mckQJiTfjZRe?C-Ph`7=9w%LMM`evDEzA=XGamo z3pUxD!|Z?6e40GYC_mSjA_v0FxI3N0@;7wV=djJuSq>6Fj*M>Et)(3JIO;h=EdzU) zs5r_|4pDLV;m|Cqm~~zQB~HWS_yEjPY8oX@n#2$YOMl3Si8hKvyHH=A2%} z9+)TGGQym0iy<&ixRu6)+Ysh_S^5Ggwqx5$%W_!d5l7eOjkT3s0Z0aNG&Ikd!< zSZuG3bBC7L7$fRlT*TuZ#bU3zM{y)p-6Ovcfg766d$g6k11gUUKTs6+P}ymVlte`w zTDdtCMJzo~V75@rIZz-6!X*a^I;zfky-@U_RCI%lcPqr=zTM2T13VTYzz?X6rfbLE6gD15Yqj19+;c z{1700J{SVO*k_3JY%m0lTGd*>SDC5-e66Y`KlE{4P4YU?ShRs;;ztze@?Z!g6K{xg zwHY>n51OhCBtIE?;GULh8<tNrs(lHf1N@+> z`~VG@y?+(4hg9zM!3@g~G~GoKCMUb*1S6p2W(2F1HXUPJ!V z&2tsFiK#lceT%88!2M0t0lvdj)nbX{7%@eQFw-7MujUB_{7)S?_{d5R55`ASvAgIz zJ-GB}g+9r4hdt5O0{+QV9pI?a@Pmf5md&aTaL+zNB%ZyNbq9D@=nMQnU*96(emSP! zgnnY48$byA9U6%@Zp!=sLf9K3T^u|D^IXe!V9%EVK4&$pQmR*(*A9??vS(A2BZC$2 zBvVC`rjk6Sfqtj$h+KXS|M#>$G&e^dnUz5TZf&Xta9dURnSgYDFa%!OXNYt|Fa&-D%l$Ml}oEjU+pj+y!*^0pF$^ATN)9 z&il0LZqQbKz zgD68Sdwa1cB?pL#+|3~cDl#QGbzVvmlp#~bM7-uSePHh^_TXL%_yb<+omq&G!wtf!D9zf4K5LG59>K~`qq7WRB!1Gt^4{PaOu zYz11yNsxBooz$Zf5!Ah;0Yru+BOoz*`~%Ng?wWbMDuy)Wh?mcI0jW`E^&f zH0kNaC~bB>6KQwViXrgTeTGPjf+6svK0~B01;c*2Wm23%lN2iErwxR(pS4J@3Wh*P zdqbqX&9DhP-c)TMdHB9aA*+%bOY$>3>Id^|Wj$Y&^etU(D@oC;?~4?&iiX843b&~r%(I#B2UXH{!1O4Zl}?Y?DB=;O z$K49ovQ@POncLYNq z`8jU26p0jNN(0Hy8zRlNQK$hMrs@Dgs?m2q{j{$uF@{CXe}VTJ=QiwuyOPQk`AQ0u zu&g~%-Jfn@dO#+GcmPs0xqDC?Tv0Kyq%9qRfpSy<$Lf$B|@0@3h8MW0m{7QELGo*RxsqeD|D%2!9NxxWEnc>?*U1BLqzx zt4XZ0%xxQZp{o3zh6E4UC4o;`-zE@BCD*qyNh^M$9;(--M`}AIIkA!=EV2vN@mH(= zy|op)krd%=7JU2*3a>U**&XI7T4*T?Z|C@t)&2nB>y6V%l@#Hf=J){0@i|qw$1cGk zeiis&=*hbTX4nb$0bzs``2uN~e6iq4(d6U@_#WfBxRN3~W%X-t^YovlsssORU5}}x z|50JKlAV%>5@8R^pib$}G*yFgFeQW?d4{P_cA6_W`uxIZ@Lg-!|A0(}Daq1_6yY&T zrw5}j84d)VXC!+u$zDt{T2dUn;tZT6Gd24WkX^T&k*vM(i6faXXYRT)URZnMXljb} zMBX~-vyKK|6xV5LKeH4U+@~;%>w;p>(S(V*pBk4v4D8mVqBCd5EC~b6jf`R(kuk1V zb!)&Eo2mtTsi|tf?Nzl-a@=VL9hWRkq;lK&pNU};MAr8v$0f%nvw~HTRM{|%$U;$^ z8lo$9RXNq7U1>$H0dXRoD_|y==q3hujMU5Yl8^U;$tfl9qjopA3;dy~+ydN6k^U15 zfz$0H-WG5@Q+0v!`aUc`ss=+K-=Onxk@z(axg!odOF#GZhDaZ?PlL;r-@cl}^=ML$ z)h*37kaYb432DRN^{7B(kt^F6A5Slb!&-fipX?j@#A;n51Ek0@7vy z5Wb{#q8v#PRs`kJ^xG=@EO-RcW*!k951mI+gx`hEz&{4NN{aCBpd3jNXeB-1h^}o} zWCU8V1Jd@{O%I(%QiSz`a!QK80xKTlnH^nlxD!dgX!u!R!=LTSZntLm^Rpg&yp8|G zSG@OB71*8KqowaH&VWoA&(V1)li*6Lru4o^g@^OXU#al-yb^(8k0vvcF&mBl$vUZ zuhGQ9mYjyd&E=WGd1r@x{4k{q2)wd7ZWKM1-bj~3-C-qJt}ef? zZQ)D<_3hE-iaQbchpK4{y-|-UU)k(0td?e{F{o#R&3Y1)Z7z;Q@fH45ohVXYAfB@` z5rmDbYR#<_hId=PJuYPPZngSP=(wKl??-7XF&8Uj07VrsPxyc*1dMJ`aolNNXH3-t!gJV>EJ+~QHbynzb>_1Jqz2As zEkz>IfDbPIrmmj}A%HyYT6*~3O5+EkXt8!PqM>F-Xggi*J+1MA{M$H1b%Jf0U{n84 zxl{V0pONI$qEXHYm$CvzRs$8YxAL0~)7Cx4rSQjF`%QB60N$f2KmCv%H^UZiyKSv6 za7RI5^KZ#~L}_Wz@SsvT|N) zDbiDBSOXG%z=O1o&yO|dUsyS+KnfuH??1H$q&g*;{z95)z9c(nZ6@stbxt2|M7xCe zoz2TG6X!Qp_AXIx(y~iBPbmCPP}S%8Kr6H@NxJ_48S`n!eA@6~>}AgeLa~1u1eWcX zWjkgWEfoDMT~aaA9!%M@Wq|;)XUj4I4D}thW0H^fic8*$lj+6DL}#yhKVRnniQK4D z!A%)(m=+z93$!~7L*UqnId)=>9XOt-)1qvaD!Z)t$xFRNHRTutq?+=?0&s7exC>#( zGACBR@7P>k2@xGM6O#Xn&HH9r>N= z>Lhbn2ZsEsWOkwDUyUh8Yo8yBUu#e!pVYptZoX&kYQP_=YI?GC=Cp}q)}Halh2AYJ zuQKBQuUX=1iMm=Rney~>Kc}Y2YJ05QF7U%1{xZ$z8dw}atxmDz4ggXq(IcJA_??YL*O%etQYBQ}>svUmZxERs_!AeTjA1>~|wtbiep zUd$%ixu*&h`7?b49>qpgLV|0rB%2cLvoz5+w!4v}Z)c0-bm+lrpNtfg%`x%g85 zNX;?HPFr4_%o#gkR`%ie?pvZb+$-jc&E9fs_SSPQzQo(_E|OPV>=pA-xC1->H`F*i zIe1OW9Pek2|IZ`AeNIZ8*_PLTA8(QTYD{@XArAg``2Q&{;_RjIp3c=#7M8g$tSx`# zzj-@kkNmu9>k{SIYqlQSbE`S8*?8c#S%sl5G5kOC{9n(ZQ1N&UJI%Ls-}t`mE-m0M zO;razVyft%Qc2kOYcU$>*-~kg!UYU{UwD*ErllV^%k%LgtWib zMmi)I0wL`Uk**1bKuCK-q;)KX4v?(8;jonaHWK@%B~}Bz&1iIiq~g5SY-~;phCovB zhDaBhVGZ~nQ+0u4=ldd&SjiF8W#SL?)b)7t+5y5rKJC6=w?1rERp7Ix>Hr}i9m~sk znwIWzD`5+GwW%7wuc^vqH|T9>^VQ}s>)rw$W2y#l@gzKY=F2wq?N!>!jtIQRR1M(I zROOi>RW|cJWVZpXrYdiUG$$Aq>*h`qu2%2g4uJ{r*Ptr)EXsP$D#PCbepk==gdmV# zANK^2cG2^vNi6^_FcIWqS>P=etPSL+=H&`32a3IosR43KiL zg59f%N^$`3MvXBgIprV=%x}Dl-9{Q^TWvEt{L-oqTPe>7ae%~;YZcNfi4t-txs&7= zxc}d&-mkPM)qg0QW)*7z=bNg^uf(4dR56#by*T@P_H%`>Qf-@jr7cBW2q? z%Mko_vtI!GuBxUaCr_jZw*@=kBdT&Q8G$4-I_s<3t#O=~x@V}ik}N3p6_s@1#Jm0#76E`G5Y7Q9Dd9Ii>YKO2J%@Pu5rW{UJx&sWl7ax(cu%fJ)KP05k87|d&RjID8lJ*xj_%F)rj_($8IRDq0_+?QfVU@0mn zuCyWP#dWPyV(KdoqkQ-jgo~}Rb&CBPQ!NBiUwQS&L00Ttbp+%D2Y868rY1|4uZ+v0 zYAc9>+)j`rQ>P|Od0KbC0q<`$vR|2@M(!}jB&9NPhz2rp&Wu$5WvSMHq$=M$Jp?@8 zGL4SAZUufuj}5EY(%<0V!%<<#DfRrdd>NK#E5|tCytVx%=?&aNRsI-2Yv@$vjo3TZ=o1#brk(elHYp9tH`^v?dE?KD}% zm+ZV%iu`xg%WO(Sy}L$fYKwWX0{&Q8bUxiXpL_a9%DOF`lFT!3n1-pAIYz0-ZOnxvnRZ>hCzidJVk6v4JI(&(hc%!4)JrH8d3k3jD zLs>~F6HG(}4GJMDAU{|kLkOe{QuKpTgnwA=s$*IUlA4-KEMJ+V#jI3aELUz;Wh*3e ziPo)<;597KdU4*krH|1kJy{`vjJ`7?)w?W(I*{z--IIra*R!Fn7rDEkzD?JbpW7PK zVCiC28L~n;kIQulzR8y27I0!?A5uI3-=`|SN+Mks41qWH86tf@7<$)(|HA7Ui0CTEN})X5K2E$&3j#A@qK8+5tkrR}Bdk@*z3! za_id!20~G7`zsbxszGTBbK3wy!cnTFNbr!k4g8$-tpTq$RRai1@2;O%QF^O(ubZ1H z@Gw*LUOn6Q+gn>%{D5yTRj;S;ou;Y+4>MJ-J}1fky?buyAcGoU6yqJKMKk+rqbF^1RlrTgi_erD*=3TUJjl{o*qthi=|Y_&XwS zx|V1YD^*z`=s2GX@WL~u4+Lu{k1 zxB%{CswQw}Re7&Sdj><`UVVlkTt6Z>?&ZuHh;J9Eo+9C1SOW8r>QR+kyk#16xwf(l z0v}YBi&FMU>PK|@1JiDvFwA{*an{M_Zu+{JE+;6{NqJVFUP5cSB76 z4dR?6@0#K*j?q?*lk00II+wln+;zHMjp6nU@EYc^2jui?c%5mIAbS5pxwp^g&WY5y!5E$KH~;%lZ?D=3ntVzeHhSdCpaY)ZIXkaKc(wMCbzyIXL>5)iVUm#B z0_)d`jl4!5JxcH^$-PN!o7TGu#Ldj)xa62*&fB(+GVd+m z8K&w0m*^xJJUZGZYj!pVP2eG6;Q$_`D(ADAA`xlGZcV8DEKCh}q=i`s#IXxgD+#j@ zcf(rz%P<3Z1FW2l0rR2i7OG}DSQp6dC?CoIL*CtCMA!z4N-_>S+;Z;$^MuBY(6&aX z2i(O}O<*9@BWP$3Q@B)HnXX}D9`Q2uYl0#0DOI^|N$`sIYcz*p-<g_rOh=4RglvxU|To2iE^{zyS0_*z!8hSXd)#l z`OBT&i8LS2VK+wKR^@*?L-T$Aq&{RFV+t~1N|v^fgpI41oI4CI$)35AXmD#BGrBUj zTceO?$0F*o@%Ve@f2R+TLUs9Wi_XYv_1$S zg1ceIlHhLOv1I0KAE2SFteC*>n5qrDRaO4*kMwXbObY)h$r9aozP2-xDNEkzi&3)A z6|GCoA1euQe;Hg}G}vX)y2Pa;y>it3O_HB#D}?~^138mB>G5vvp5@!uZ0cKa2fR{M zZc>9EQk^V>%N8Mgely?K8G?VJI?n}ZT+d9MCHPd;c}t`Va+cs9_gNx6nzID2HQO_q zY$f6wLr6mcjSX7o^EiFlK#iFtVYbj~;w|~>gI9unM97pR47X}rh z^K?-4yWu-iUQ1anwV5ujEX4Le^tmJmh9=e3TKpH zw7W)fSM2i@lc&>xq2caPfT85w@rZ-RRzey0~mQE-#sm&a`AYF1P8(=y|WjYI*Ho(j|n$ z{__qcEGGq}J5LF(6^mf-Lg-u!AIppM6XW~slj9b!t+#}wlpkJ%aE2=VDvC6wOG##m zu%jxyDbj25rU>uvGe!Df-W1`xeWr0jMNOPwvn0V4r3p6Ek_1;QDoe1LmL#}hQCWh` zv?Re5i^>ulw2Xg5KQh17K02@dTjAmDa)yRm<-kyKc11=`SES^0#VXB6 zZYk_0Wmc8s^~&vNZDo}^aPTTuw3eOcidC#~k88=9fms)X7u%lUmadZNcty!{bfzWK z@d}%cjGkZ5iq%@xDpx`{>_6++#Hf|9U9qTy*NR0j_)6$p94_R$H}Gh4ds?#vY}g~0 z4PaMQez`(o`6#*G9UP`fn7`>gTN$U*PD1#%Jtx})5+$?4@1QnLt46%nTc&LwQN{H$ zCnBt7>DPcenW_z>2CgEt6zOo?6*7kiB;ZZUm@iOjJmxIx6L2dlNa^RJhiK1tTXI$4 zHrBIK7SrpF(0V zbyU%l0f-P@X?DHF|EKBc+lqkx&vWge5{!9vfH(#V&C z)QDuH3g<*sn4({O!uUPfDKkbmNtLp6UVTc6bdGA}j1NdCxmi>!cO|)4OK`oma;SOj z;6qK(T5cD`F7MK@cqmNvIK^VON7nb6F#zD2@CIZmKS0y~)R4iL&Nfo6(ySTF=a*&8B##0;CjFPN$W%qKAD3^1e- zCr~4SH=FMU5Xyd`Mmi@L0-@{;kv?RGHQ*0S)d1!bD8Eo&TRZJxovUy;D5ye`9)+{j zCv@8Fq{eQ~2Jd4II{2ir&J27k$;LWCL1HYvzSIAb1bh{b0 zfWI_V8+dHr_R~^h8t@-FLJNzT#SuhLeI z06%=kz?;)WYdIucA6;xD3AE>HbxO_nQ4);*W%U)G2-DSr9Ok~dI7OOeRj&gHRdSdc zN!ZAgDdm%|>wK+eE9?uvuBjTpo~r!5fOKRq1Rm9Ah;&9U%yTH>M`n5rUm2410+{4H z0Q*8!RN9EGNdx%eK0~CPgJF>e@@##kZlOJH*8(PMdn0$bqi}|{zD7v*Xih_}iwNi1 zIAoKMr`wZmJs?3`$YzSPopI{{56*FGrbrdz)&tI0mG_9WzZo`xhnlJfBvs!xpH+-2 z$qky$-P+1;A-^_CVIrADx%ywZKx9FE)4hr z-R3;Typ!Yr<$IY8N0q>TfHOgvzvYYVx>^+;nv})%%)yIo(R%2rHE+77%8v)g z>HwVWju7%sb~50$s`7gy(u-_QZulO<|HdJkg#4(hll+q_1Rz2D{72%au*48}ZjM_s zMVh~cc?6!KD(?~L0yAs^KWC~QkW?qPH}Z>T{EAPuHx^THy9sQs(;Tv$4B;VFx_xI; zr9>{7;kYVECEFV>RVB<_81UV?ZP4C$j1I$>Y&fa}eu;K1IZ5r`8^5d*i`?DJCiVZZ zjOJPDU&!gmoGjhm2qsDAj~u^i`OHhnZC#y|WqXuMtEc?n>Fn^0-?F}yWE-u@e%cP- z8;jOM_r{s-eTnj~rmgIaz}v?BCh5QOy$C;7rPu*qrg>#{zDxPvI98Kb;ip*_0*UA+ zKGK60zX^QYR11MnTJ=tI>@?5y3~jUN{g4V9u0{pqP=)X^Rl4bYxZ>0DhM!kH-!xuT zAX!MMZhLRBNWP5jW4`{6`sVA<+^=nRT95EI8@DQuROG{k3pJ6?T6Xe5?hjNTOCfW| zdq*?_vde;yUigKED)2_)5K8c^|H=EC|ar zZh zU$@FI{P1*k_`ye6-%9d#og3?E!DQK3F!&%|v@X48=BRyFi#<>0w_NeueN2kP?~BP} zQNR!O8HVgUs+dFUO3ty%jG|k5&fnci?zdq^0C6u5*T;_#Cdsd~2WIkujUrVi|545U z5&{52&u+1&J5sf@3>{k+8oJ)U z-eY`Y(y!8A)NZ(u#}I*EHIBV&6ymXD=kf%x{5|4Qdcg@FqeV9S9?5c zJzK?|?zs6y-5h#W;zSvWj#xYy(Q{djeABhE6JwX zZ%cC@898E4=*cJMLToGTv7_}YCH7p@vl{n|VpfuGYQOJkTXvuoVrS}R%!SzZRduiR zEG72wsAo0qSwiec?RT`fkBqXR)XkU+v13$qlJzVl_Lit;HSQV3^s{v(S2H0*Md60p z`t=LxCBZP7@0kLRGt96F#D_l(MhYHF4mSKy?FQy8Iz+hQ-J)syKka>ad|g$w|4CDz zj17|@V;Dt*l9s7FRKid!^DSvZk+wI}O%up)$xUdB2vLT|OmKJ)MNAPv5W#>9#Rt3~ zQ-6qBK@dSDDnn(E_#8kK`K`6r_q)%z`?zt2f z=TZG`K4+%$ewE7El+Kwdb85trHiUXvsPB{t@*1TmNGC`@Cd<6p+X4%5%+6Ms8dd%j zjWR_|QeU#MQWXr_s3zi%Mc>AjPoFBOM+b44;!?uxfbQ`*Gd+4~DrX^`Gp9S&A@97n z2(s;ftUEH*9}9+6wKO$;+6&GnOC9EZrecj5-SIeRY4h4rT|=F>1uj!uoJaM&K4+%$ z_DZ)A2hiuA^bXp|{xlIoI;m8xLa zMB*yFW$)gRH77V!koyrlUm#sSs$IT;4GTg?BbQtn#w9|eqKNFmv@{|9%w@*3p${X6 zPQ0}xndSZ{hFC(Z zF15_(&9N^*;i1T_TT=3Oc#TczLYl%tvNp3(^fvUL=yjz++SD2v!P;dsb5!#^Xo`hW zm69J0Mlq~HRyVELCMA>+Db(B4G6xx^MrX+AWGb%Ge6medf~q3B$kqmm1fPU$wJCF zH@W~+l#sp8Lj|%w1Z3lfsV8GWvaeJLGWB1vVA2NVZB*S2fk(VxGug*Hw1DMOZN^i< zrtxg#VT}@%V@c94spdVbQ}eEbvN&fmbNmy+cx zM8tQS;p&W7iU!5B3{@+<_CkCy=I+Ji@mP%NxAp2%IcuV6kl!6tj$z+eV#hlf3$#!= zJ2=EvIgVf0KEj_GEg*ZGzd^8=?AtiHv|hv1cl`0r}|^pMPyG;RA>GuQ!FX>IbvTL7#4bl_u)LU1OARf6Im9c zHJ;}Sz13USM3(L~L8cz@&Tb-0_nIJ6^stQq zd=d;R`m01m$-m`COo8kyU-#w@R`=!)R`=!)R`=!)R`=B8jf#YocWHWHF8a0$y-XB+ zhcA$gU9gxgU>A2;nRv>(YBAZ@JX9b{_sGo!vOmL+aN3x7)sK?`S-MQJl4WmkS(%{E zM2;-Gi<4s_?mLS^Mj<**~UNz)h&F&+)CeI#aYL~bgWGAZxnTq0SkWExWG_o4& z#MKa#sV(DbkWExW1hcBa7GOacoj{;4r!G2cqGu7@8hizt_Xj%?Lth3v8bfJyiu?%b z=pW`EL%H_g1=DY(^)oCdMHst3|Tx zU1GHt4-2qC#V)=nI&-p~#MryV<77XSA^zS4aMW01GDUr2J6WnW!BDCBnlc}W&G7Xk z#?T^Glie#r{Jjfc$g;*{iu%NAvQ%w?p;GsBdNdt#!I6GWXu29KR~1vDS)+4cCF6VM z(*)Xj)OV)Ww9TYzM%PJS+)s=#Ty!0kmn=yTGEJJVh$K{JfVh!twWY>YLo8)fOn1q0WJ0;y#3BcT#&juyZ6_&`FbMUQrI zuF_X~UCrzcC3KJ6ebox&xy*@9SXWLgs~q zXwIb5l%GS%dFJwA*cSh7z?FlkDBOL5PIEf%6Nz*EtG14n&_A4Wv}_(mO2^D z5=vvWIx6iEJYvdETcy%EX}nbx*Wll&KTq+++*M+)VIsMavx+ha@ek z_c{v=U_Ti{Ecy5t%2r2|+tUh`9a49)GyIC6iR{UM%uuE-iv`L4Ta_SFe~AUjzFj3q ztFma?()qOX=7f^@qf9;EOPf#jQ4bZ#{?J1U$R=${pFgE-OItRNmeFytdL&D)+4h+! zI!*-1(rYHj6l*7fWFPWXm`9fG6)CdGTBW~Ds1YUckpt9I(IZ$DnX$>TDiUzh_7~HZ z7HKKlL3EL2JBTi_YzOI!WFJQr)fe+enPSy40>7&^N^`m@&FQK%vnuz) zB2`8{wkI>T|2d1qXeKtBnewCZ)*ctQ4QYl5#im8;6 z866BrHSKWJ#a^4+fkQKDqF{%XaB6~I@fM6j@da{28WP(gh_d}wI>=uCDtMat*P1+jG z_pG;ZG0jeD%$|Lyk2&OIh%7V9!}nLwi&Y+*f*&&T@v%lfCUQb-4A~|REtn6s$3u(B z(!KH6T!B4^d%=>;Z+2;W{ZA`FXWI|(WM7}i^lO=Uonb-hw?ibFg zoPk6GZ27o1ufR&g7PAK@6{w*#yC4^xAhC$KU-Jr!VdXSp!7kdD5yV8lE91yi8B0D; z8B5Y-q?X?D+zvYc>n3SJ$NDNPVh0$EA+pN>)kbHXGs;Bl5bsWUK_U;?XMG1KkY$@Y zZA`=+U{SgQEMh(5m!cNP(!HWBefXy}UIYt18(Z=OSQ?ozk7`c7xAvkqXWHCU$I)X4 zHYj~64{ozTIWjW3Lw3&Qbk5WirtPDDESKY3h7;MuP^UtUTah9g4~SG?R_m6cBk--` z5}IBH^eU)8>bvA8nX?CC>&hf{woGHp{#pV*Cv$p>OQ#OmjEC7X_UAg|ZjBb?9oMQA z5y2gOGiTJDKP0%9p+jQY&NWs3X_zn;>;>EWL5Q^uv&PCYIhNU-~zY`g1J((R}H5 zAXSGJ6b~MlCp{&i6dzEOb{xxU$7GvsfrPBI$o?zFW_EYMsF7@xldMUN%4056R;M0Y zlt8V5EGkiIz2fqbfKu<6DB2xVp5d$+W#ZcaMUL#PNjWAqMsXrXc5^^Z9}@?~a%8!3 zaB@sE#+j##GI4keo-=wB60u)Wq0tPz0QO$vtFrJVuy4l@!(OazAua~wVx(hrC%*!y z%~$T^a>}}s13lt;m8pqBg&O>*@vq3F82J`oN+B#ID{ivbI`oo#L8UX0y~`hXHIw~M zK-Mdn;;og8iGanBri=5hf?v;X(-xCu0b1PrQKr^k*R;tLN_KA?gPI^ypYVsHi^;C_ zC+(_{skj1*Y3K)_Q*1@Yo&UYwgN6IR{yK*E<3F=}EerdC{d5c+kE#v(Di%Hm_Pa6k z2-ufn=uNP!r>w5{B}9JRQy{W4;RW|INlbjw9{?A~9u7!5(5c}2VllF$Dt0q2KNO3R z<&y$3DUzLtr9y}M5GPOglD`uEe8T&+iEQlZ6Uk2Z{kMr-=am>D`?`k~kv-J=wTUeK zD}9b^?CK`En*I_gx{F;*ps?cBg*&V95^Q#0*xMb*V&8y+9T*oF zbC*Ei+i^>4=ckEp>+;pgJNL|S(?#*OK;p_vO55hAEB8t%EY0uT!upRghZOO z(k3e1$LBAQrAjHMW|Rq18S`Y1i|xtUo3voKoaTp3>M*n>N(-ezN-V?!`i#L_6P=4< z7*8`!Ewh9&ii^Ci5pQ~dY^*-j_oAqXS+CR2eyN38trxl|Unq+1#zh_#XY7V+z0fb- zOOy7BcObCbhbzB$;NX^aWu)go&Is=kI&9g^zQ$9*Dej9nH7sb;xFE8mGPKC<04dqE z){HX2TazM3miIrM924_>5lx)6F7RukCbBnpXwe_Q{?kKEWTznRxB{5iBnGF9G7-D0 ziS8m5gUNm>&RR3dL{kh-8D-+67)-wvLV91)+y5`Vo=0Er=6x+&9wz8u>0M-xP0BIR z?tMLvzP{LdabDW7^U{tzyJnP*-N4uR>?xy6#ExA;FOrINWa&#;r$Zi&!aP}w@8C9Znl9g;R&idI=CQbz?avW)C+JRPy zO)OlFR{4T&odVfwJv5Jl;ujt&JPY=P7)lqY$RxI8{25W17RjFG7Zy!qdjMtc_*nvP zLvHE2*#fdN{q)pC_FzD!lc_duct%_nv(e<#t53tBH0HE@7HtY?TERRj*w5Rzh%BvA zo%2SSVo4cOlNFaP2&jQUcM^kK5>WD?BD zCS9?>yMiT&VA9LR{}Pt{$y=B@-8aD=SaPXvfx;Z*IX2E)fa?}`uV$)a+r1krBfGm- zmOAo}t=|RtPV@OcP4+@S`m14~fr_y?kMS0Mnkr`L->PjgMO9kv$($8%3u_gV7G_uikb2S9cp_8YrHagUcnA6!l|GRLze}?S^fKN|N6Tm`1h*qfBu}q>|)&G1ZwQQbH%GAgG=4%nzV>~pE?Aab#M3z-H zbxg4;QZCtKt+F4Xuxg}hGmo`d2Ms7)i*_IAEovr9`_-a(qfD{*jBcsrrb|7Mr81{H zzH#9>Dx3VEn*sV6D1EI_ll-#~6_?QXD`32ek&nM(vWV>7=nt|!CA-8!i$a%YMQZxZ znV`Fz=!03>^j?-;P(ztwxRGZK z`XE3v1fq8sKrC-;GdV3-{`BNq{#bt835$$%EH>AO&%lT;fr=4i+3vN`Im<_xsP~R3 zl4UD9IVM<>jAtse690ludo(+5RCo%SpZ6uCTyNDs8Ky4tCKveXx(nmHbRnPF%sA=7 zODs&Q`~N`(j)r}X9J*PDC3&{6%8{p+RgOG8q;ljrov0jnRzxa5mQgn=8pO4^1l=?4 z7K`TwZl4mB>(~Sxz9|-S`9$;O_^JSB-|Ib`I_`^0uI64w^6#Kh5wiSoZt0$HoxLto z^sdC@^Uh)7Aed*OO!WbEqD;_y6J?5(aiUCc0uh_YvZj`sDc0NNX5wdXhKVwjm{QJ5 zO(~ne3G8WX9BoSStg;wIHre9jx;Emp(1!P&# z+GyyUQ6^%;Q%`zWvF}yL^}di3)A~~P@qSekwuK8py&^FD{zWa? zV+?Z7fHvTeV&^sK?bLY|&>=qrQrWzrK!*P)!PL3ul}f;4XkhvhFs zxulDcE`fG~_JM}^Uqqz*J?I;te+3QYX*cOJu>U#Gmq6bD4f9`xXVYpouq*3<@+q{{ zNNwwE$Hx1Exi)7;R#D0 z3%UmMUC>b9Qs_Aq^eoWxKtuUS;46P*R|-Edx)OBjHI{A!od&yxK*vERK&Qbj+Px6z zk-+W^=%2u#4{Aq0>{%VyMZe|QMLXz6+7Y%_l-FLX%;3+{{`YC$zaXBii@3D`Xgz39 z{b+CCji5(>F36D|1U?LU5$H9b*Mi;v8kV>3hK76sly7#Nk8~*C3cM4Pzi!iyG-)L# z|4QKe1)N)vejrEwu;3-R3y|&x4ejd#{yEU|LH{jB{yN~dg7WpnkLAe!9QZ4se*k?q zM}DJ?&B7f)cLCiGG_-%=bVHVamO#5eL;20>4A}~FXV85>_X9l?^hnTSKtp{mY--3W zpnm|J1P$e1+su&lHaEHf=ycFcL3aS%1#~9p{-6hf9s)WipvNE`mVfmYhTH~v7bt%v z^g*Pb2Ym_jFQD&$@^@TA{h{8!<>cFGOUp^RJJPd24+IVM9|pWTpnXX5H)1cz$)6{8 z4dkx{y#@3(&^tlD4|>*z%(5pzo3;uqwR92qwV<=MHvACKFc;-+g8Z!ky&dU0LBsq* zwT7GzdLbwu$?C&8@_f)sKu2=cm)yI34C`{Pucu)h{TAX-J;pP~(Wi38%i+*773=2~ ztRu^yTyKu$tS^~w8tkPV55kULf`)ee4fah#9C;RWE#nHxYXHr&YaG|ZdOnHzz5+TO z<9~P1D?z^n`T*$9LAOR+*dBCW(6D`vhTm9!`n?hLn*e2f*TCLM(CM&`aqlZg-vfF8 z>=^*1J$vNXvlaGvyMi`?HiL%t^RDZqxc={;U(1nyzxEvt>dp3j9PP^Xq96F1kD(vJ z_6+^+$p1;Ps9{SZrpo}k}Jp128kh?tSkD)x{(LIp6AC&Pal;`@4 zKLoNX#u6@gnEwUTgLEy@uY&ToDe~rz-7)^lpp9s+w?HGb*KE)-=m;p!zsHeY z13C#>2m22I4ekFi$_eRjSbmU!`a}8x$_vD!Nz|(r`u?Z&2=(8I@f_0C9Opp>`X!`O zbNsU$_4+L6g`n5x)b}ZjlV?FEK{rN!2+WCok9G2mI6oN2{QL~(Ys`;jtlvgJ$3eHp zzWbn@{rA5@FX_cde>vy8Vhs2dD8B{ekLTF2I>(OY9D5c)FKH3!Q$a)jjG|pguS5DK z(C>iW1{&t)mjE`#{xQ5yvjgy*K*RjJpA*Vap6|~5Xiok;vF^APl)tgg`c`(a63+$= z%RgmTLoNZm67e-Kv#i20ot&i$u9)8RQ&%T=>IY3lb}z7#*)U3z>Y72eg*XFpx1-m40;FX-Jqeq z=YYQi`X(sr8OpzfdFLOX?}BbV#U#f9x(ewvprO9mm?sYdZ3bPEGk?}2zBGd_20aZl z)IYP%kfoq~pl5-G@?YKFkh-0Weid{j=yjks1@vyDe}aDh4Cr&9YdId!&%OxCe)=n< z*MipUY2~jAdN62cZwcjI7SR8$-S;5>BcS{5Y$a7dx2FAp0e1s`IH2$6hu0zhHudKC zB`7W`)EGj_mlYL(w}WmMEt)H{d#3i|NcAV3W(P{$13AoCqj8!=h$}&^8EyK0^^RqZMc@@ z2730$(f2I$9D;Si81zvu&yl>|zyU`i-?u=Ak)L|Xu!nvLvPX9yAJ^@?Ur#-uJmtQC z^~@^hr=6iZ?{mEjdHRWdXFE|(nE#K+N4wZg=b*h-VP56AD*fD;5pOW1hY5G0P zKaP5nK8W-qpihAQ8Z?z3^V>M+gP@OqJ^}h`&@lhxj)u&xH#&DGq%lu4f;NNN)%btj z{*e2^I>br-Jj*cBD?!73;RNsqaj+irNYJ=s<9>>G9MTtnhw{`P(m%7@AOrV@{B4K- zX*~k<(W>vd1E3S2FXqIGhF++Z=siuFH2b}$xeFH|3W#E@-3w+9{H!*Kd#HvB<9yovHcKlpmjL`k62m<|kBfpSPMK>B9TmXBG6 z5zuGo*BpIeJ!p4cyN2x+m={f;-lS`heiigB(04$?{0{(l19TYsw$(ZNx6%|7TnV}% z;@`ZS__!K!>jZNAYE)>?TExjo(7%9gzHTUKX}))Z&qp6L&G17(`Rg|ekPfwc1^bn; zVBa!#gHY1a7a@+W1l?>C!)Jkpxqi2)A$6M>y%6+f&`^FyJdZOI^ia?vK|hV>X2x=! zpJBd(ApbPv-pY}u9Lu>9`Bs63_Wk(7hD?ASi8y|GPCWk|*1?-@XZiL4y$El2{ z`9a{ffUW|)CrADv;G_>D{Z5WNpY!ZRd{_>;0yMPeZ2%+aAN;25TExw_K&R)#SH4*G zFy!Yq<@g#|zR8>CbkzTUApbZh-!LB9w;0!3K$n8@y|Pas{S4^Kps#_3`gm@=F6y;W zK&KQ4CM>xH~cOqzaPmj zI`T`7{PJR$e-wV?J7!3EZXL?=-74q9kNjR4U&<27Uk*9G7KN1OFrobWq-&#^h+oo7 ziq^{49Jy4h#%rU=jGND|;qPoko@Z)o%Tq zDStKclKilrTr0TRIUeY_#mT4p+v9>~+5cP){*u$PO>_kM17@)3%^Z0#(%Cb7g9ymy zR8(MF;FI4n{F}i4MQD~ijXAh3g=%Cx4!?wPilwhU(vzj-5Cq zYc}xDJA9jHZcyJVSni*!T!z1|2%c50)=%5<*g(&nIr8`A;JUQS(yvRrEd1#ld?E*5 zD|k(`Wi)|%G_&DW{fe;SD-nN)uOrv9%H1>v-(IHFEcxwn|4(rEHqkhrX@=wUQETc%ft|XgPiHFfd4!7;~Dr7*mH~ES^m*m za#{GpIrvYYe^>*Qd@hH7egnL2ngM+D{7uSZ&pI^S4BA=D&MH@bz99?$a1QVuQqb38kgg^Bq+A3c^-|#yje=6{aW&`+DgNv!>WW$ew{I$Rf zrx?H^;Cq0#EHS)d?umXx{lK}x`z`esO`b2R{x89G98KUm3gUM6`6uKX@E)k0ur-=4 zRO{7ps_FR%>dSFA2|bJtJBYl-nfhS-GH$F5H1J{k zG#q~@XesdVi%otP)OT5q{&OKeaf8W^LH-)S)o;r;FpsgmcL5&`@E=0Y$hS-nx61mf zEUKp-@(ZE=cM_izpBCsjPaYjnJPL4qBWIT1){{7zg>NRf>!1H&_WUc_@gst3Tx#in zBY}TBN6*ntUe+g=zgl2_GxYFfNbFag4wrcZ_BTL&Fh_shdj1@zXS3*zM`0)Q?HUf8S5=th*$09ll94_6h4JL+B5m2HtRy0h}MpIeI=1 z`8wR|Kg+5WeVKX=GyOY3|Bb-ww>DrO$ln7znql}9$UjOwx)G4iH-JAy`EQ$kjSKpD z#o@*$|NjH>^}jUqbzIy`j@UPoxK~CX=lX4T;0?!Gf#;*#IlvodS-HOg-r?|MiN@;@ zzUps$%;X1*M3)0^`MJsc1zB$ZUWf0-=sHqAw-dk1fEflyKLlPs+YI3`(C-}%p#;&d z2B|&6ctPAXxTcRxWc8DSAm2D><>HC(=rG_B^yofWKTCj@mzg~;8XV~(7+UTK`iV4$ z`+Sb_Pg$CN_zLhfhnpVmAN5f+)iZXX;hY~IayXPG$S)v2ag*7<5w87#`1efD)kdO! z0iP09C*tC2H?(Pq+gZKYWGRV^T#niiSbn<4pjRa zt}uV{m~129Ejt+gS2HKt4tOJecyoQ&vya0elpqH}zP`x>zlCYwc;JN{4R3&+PT&*u zR_-RimjhqZSKsQ-Sm zM~0#M=&MgueykM+V&Z(8dPYsY33hHSx4Kk*;4Nqu`t5n*&zOSOq316SM<2!9dx*b<{AYoWw86eb*Fx2712l za3m7sr;u-a)z23|(I z?S(zB17Gts13;p6>(oE#&-MJXA(SOQ7xMK%d^iR8%I}$;r6{VO`nNay z55Ug@K86B+1pF%CjhNT21bz$f0#4%Z1pa-8Bat9aLw+3nne)ZVz+0AE`?9`&r@S64 z%f~H)g|07?W0oJb&B6C}xU5fhH9cjgEs7d}ubE@`x<;Z!IeN;Fufw{I#H+?mf>M1WZoa62vz*pX6`8ls` zCr-=q+f0XV60Nz~`ol`Z&yNF-b};?NqF&88dY0zkXF|_#t?A+Z@e1l+&v33=ZXn)b z_;p62aq7Xk5z~3}n8RUQf;^FfzYaZPc*8H_%#_W|pKHEtO1=PH^}xsQEXGvW^GV?2 zWdkbazUU<2!x#{!Kz;~#Ihbe91zxBz!Br^tD&UilUjuxUco0`_1>T5$$nmn;;mDjI zzl8impyyTKg$>P~V_^T^a`bE@j~KiD{DcYafim_W9_T;V;R!>)&WC*ce&)y*QSJcn zmXi%YSdab{_{50eTS8u6MW*(Q?P9=*&_Cwzbh(c}zW$3=?j7j=&*sR#o`ctHY2`-y zTDdQys7-)R>}U9&fNu|cGQLgxF#~>ph3q}R#}76A5y)e}$Ab3#1@Pe>^XF~Qzt-VMB*;G?zvf{B8!(Qx z{t)`r$I%~<=VQRv9BerKb_nqDm>IYVcAfyd52&{KzV>C+(p zwH*1IAU`(M3T%S>-8u4)Q-3gz|1wAZP0Hihm>sar+)y4V)&4)RyE))^_+fX4r|WxY z4t@&stik;IQDp4{Uf$dkquHYKfUm>>z?UF@HShw~Ax8oKuHg0HljMHLuR%vU9T%Sh zKJk46?#DQt1Ri01cmw3$b$C*<@te!hm`nkw&+ZPFeFUD}<2*YXc%$A3kWV8f_#=Q9 z`mB99UmOp-3_IIUQYY~GMw4IHNOTVHHPfKqNOU>yMm#IXxOX-1mOD&AGxUGQ;YcLN z-IPDvHmuZR3h;A{SF!1KUA0laQ61D-+MP5@qiw*lPOoaAr_CCKTJZ`i~1yoPI+ z6F<>M+IXqDy*oPrs_h~2q`5Exx@0#ErvEF+P_!>Op z_DS^fnr+}u)b~Q@Umtk=hfOiUakM?~=x)P50sS)^p0@LF$WQ1Ebosn4=Qa8{7WnYb zEKUD(0I&O%;UktU8WMa{xi3(+)C`wpy!%`V`Nnh1p63v+z5_fu-W1UO{{TLTj>CTb zQ-?!og1nf6|1$^QY+J<1d1epWw;p&s;^)06<6z*E81I(?p9_2?7T^d&Q8VxneNaI@ zmq5N3co_>8+>VOQp?=(N+8**Fz#DEiJL`-@*8^|S2N>jY9OUl>Uch?bVBl+jPkhAW z(Ose!fj2BN#oI#v+rTHWo?*LhupRt{1qYi0l$X$6tf5FqVEE)i>$yqA^!mIaqRD87`o3h z4o4zEen)wn|J1|&H>n@-ne*L-(x7f$#*K8w;dh^#m!mP@jTHmB>~i!&;1j_( zod90IxhT(h^s7bMPwH?3P@fmn&(wOuCvjhr>zo~dH)1`;xV^8#C1dcJQ;&Z5JG*cV z>}&=;_M{bv={M>IK76O)IQELp0zUC?rr<RF^_jf z_9+0LSY`G+YwDsd;3IfYk?sCD;A?{Y<_Pe*156LkVZH^t@%vUDA+hqH{b!tpGSPhDGs5YD}aw-T;B@$uK}OL zymJ)RZ?^(3;6BmkA^!;Q;VvupG|2xBc=QFsKVc+#)8WXRAe-$1zg=pAS3`bh;1k;# zu+t-qX%J%3S-{5PO~0`cmvXqVf7M;DmkoEM$|KK72`xa}AH z26){%hT~W^dJFg@_JcU4jH2Dl4|N-uJcea79r!rbV+B;P9{8HinSqOd&jLQ#Q*CDx z@D_~UBO%{KJ(#$7ZmF-_bL*3*O_2Uy3A}(CFAq+)>o*F%Gjt}2zJgEnG~#~i0$h9s zc>P0WKim@BwU^!Jr2QL)(3UtHSL-`3hw>=^7Hs1#d=mPhUV zz2%}rY*nB#)MmA=ltc|=i-NZG_n%fQwW&k0FO`>d z_brXu+B+nFTlZjZYgw3b-_m0HKznhpwXLV5c{{t87kj%aJ>t`ncvX}})k%oD;%L|5 zO()GieC~|>4vZA;5yxs7V7>Ly2>kr!d2((=~!L1gIc?kV+&%O!7@l&dO++Ka6-i-Y~e)=GPK zH*2Wqz9D*QYkPl(<}HbPx*mB#5PF)d?5I+4 zR*M8MVW_|)28tj~{V0(X`po2xGwb!~< zLZLFCmln_HUsmctyPwhD-7ak*`6~T=tCyh=Nq5bI8GB2P_q+huK!zPN= z4U`h*S{qdc`^)HG(ihrWE2Z{c9eWtG)=D~N)1%lUHh9G>4HaI{bv79Z%ep&C)(ezF zFF3QiUsTKgVsGndrDDmcD0WFB_qO&GrBjyNMHf8>T9>)RP~Vx|MEX=!^i)cv(?ZY*CKNK;hK zOM|T)9THJHwSSaayNeQKbr4IO>FMqjcMM3d+He2;ecb7iz)^|ZWY*nxfMhBbk38|v z1B^FSP{s%vg$N=Z83 zYA;enGW!hlFEc+TY;sExS5;Y`b(m=~BWn*XN*C7YMlx&jbUPmwIT7k4E^d-GKBKcN zeRZ%?EITbWWZxP41v%p!;_*Hy19MiKM;ly&La$DFQmp2%iu+2tRuAhVzLA+QZgAm3 zk)_?8-sRYMttBM(X}@s&F6|aw;CJ{1FHBNQm2#SNQB0dy z9q8sSYi#MIQa{(|ZvM1oR?-4pK$KetyTn>qw^yWVcDu?^vs;qQ(z0yntSiXnFm$aWaoVl6%v4t#_7YydtM;IDN8kIB zquq@TC*t%mkf^3^*+FrK(k5FNZ7a22=Webn-7-`9P|}N<*XeO#d3jr}jjhi1zQLZ9 z3#(d4bH>f6J;AMSm2rg@i(ML!bHjt#*WTLK-`Cx45ecI`4xw6xZVJWGaasE+stY|U zP!bmAef?o(Bt3kv*f-eUnyN@#<3u!3>7_D7OR#VgiFb|0>WZ6V;x1E>RlOUom~?Da zqgiyTB9TB;Xv#Gd7T_{WbV(nnd!)rvR)rOayPaz4L|BS#_n}m`=x!I%(cdeJvTDVZ zt|5s_%K}ssCMH6T4J{`TW85UA`xjY}w971{IjWUgBg){Yo=L?UvZ<*SjeRFu^rf;X z(~+w_*TLc@QteHyrkLd!Yuw08#y3vr+z3i1>geu3)RECBi;)#&S@LMBwV$T5S+TRV zJJFxrgck1^b+axtPYyLs>TcpH^_B-$$fB$~tGY_MTCGO3o&4;p@y(4^n*pjPE4Swo zKeczIIzp9GoFQ5#osw*|9gJW(^N`h~E+-O`_Dr|n@;%DAHf{m8Cf6z>YPzF=gbTFc zbyXR32L>1nu!_zfc@@yTj^?i#;I5h7JSWbq_MF?5R6~;6&ycc=wiA*h=%!6KU1&)* z)3|+smTEns;+7#!xvsI@)FeH*QW`j;ZG~D=U1aQ{co?W|4v;v=dLPKuSk^n#7PGGB zy6sc4Z>bklshb~VAC#?B&RBFaVUtR106k&~mL}Fpu8p0C-2|Z1W^(Z-wQgS)bl14L z<$ha2yMrT}<=p&M?VhA3*mYRbgs#>~MJGDl2B?d5;hNTy3}-IT_|>qK;zoON>7doM z{i9p>w5=E{%~UKkJ4DXxjPRH^XpM_w8wIE9t_Qk)Umb>?*N5O>{P?j-1Sj4{YZoMYt0NgVnY; z#L2N(qN@x^|91l;Rwj!CSp)~}5EUAoeK~TdC>xsAa+e+Z##51S7P|w;g+FIhmv{tm z*7bWmE5M%7&C|M1uJ)J)$KD`Hs6o1xw}Tyy=%e(USL>@;a7oy~{+>k4*DXohM^7Ir z$oCb7$Ntvae@1s=O(JuRbR7Xp)nQooPVSQIKGIjj;`mgnzbMCF zT8X$#Wc;=bNDBujqq@M_L8KCPzUTsLvADFizfWgAIkR(4N$5+~B+;;vK~Cf2cCCn2 z8a~t@^J8_(=qO2U8)mxs6aj&!jZzaHS-P&~m&>;2_kGIuUDqw*{V@A zV%&hU*dT|xsJ~W3&O?OAiqA#(IW~30x-ggN(k%9dO>Y(Poh_G>>)%aAv>vyiZ{wBBrfwaq%RJD=A}aaT+ZbPOZuvZ#ZO@mN&#Bql;J z98r}8xr2H{R*_Avirk)EFu(9fE@F~`?(|nnO3Zbxqs6TxCr={aCn%fRY)9lRVgK@) zXaFy;h$b;|xz#+nQ7|xYkIF&WhetN_SC_4Bh5}$Ut5Y zQ7i+wCq)nJu##dFMr#faPF#9AcdhSlwcZ44`?$z6=(I#c9q(j0}K?|rHsAElBF z=sSu^ln1-qLdDkIE>^i4B`&OCa!vH1&}Ty(YWmRKhULyF( zQhY^nJs#ev5$S~YIVutm4h>xYrHRSzX$wbpFC+6#h7^!m=el81k;R5Pyr>$NoG`R; zFe>92T|pnkeQYzw%httCV)XbS^oSP06<}+h+pMvfLs93vL_FYGX|m3~XlJG9j#pSd z(Ahq!YW1Viwr-R7H>7hCx*Yc$a=ovAKo*s<821lJ_^_VU=~QK+vC`o$FH^EQ66pMG zFx{ofTA+P-tB(OG5BUhdJ!KqL+>ES7#UaHz3-@63Y8W!n7m|zIMV~*>XLXzy5=FT-Q0i&b4B*OgKW>J$ zcr-)U8B6=Y$kQp&3^zV!Nb_`ybiYintJV*AnGSoPEpj=?Yc4HR6gUH0 zd*y&e%hB=#aZ1}Nl}H}B=ygZ$GdkqChNY6fwNIb#Leecyd8w^U90qcm2K4QuI@^w!4(eEqQ${+Ld z{qdwnse=+9KBh_N6k*;?*w6ROlWwHS;E}iJIqN%{{8lR&;1&C4}gBO49yef*YAy}Pu7(`_ZhCH zf&084AQfF8Ofr8x@{>+(Oi82so+as(L4Lkh-_z>s@`QJ_p05V^`Tl*}*?i~PQnHQ+!S{+%Tmt*=f-`ZZhiKlAhV0Z9Lh z@yBf150amUC6Ua}-w_}k;e*`B#QsAa`u&_u{UnR->LB*m9O5l+~|UhL}qJdE@n6hT-!qAODB4hv(!U{G#Qb`;Y1z)u|}buk9-q z`tRN=bXJrl+2M}(f6Py+U)Lw^g@k$K3CrKk7jEEUC|ke_J3@#<-b?HXOaAb_Um^!vhw%ni^AlCuVp%3 I|AqPgFSK6PrvLx| literal 0 HcmV?d00001 diff --git a/lib/ebu/ebu/.libs/libebu.so.17.0.0 b/lib/ebu/ebu/.libs/libebu.so.17.0.0 new file mode 100644 index 0000000000000000000000000000000000000000..43e976001f4ab7b7c8901e091f478ca278aa7a4c GIT binary patch literal 1085280 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

    (}5j@0wVyr(>>pn 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�tNX8T(AaHO`@0!T0ES-H-DGJ` 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 z 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 I|AqPgFSK6PrvLx| literal 0 HcmV?d00001 diff --git a/lib/ebu/ebu/Makefile b/lib/ebu/ebu/Makefile new file mode 100644 index 0000000..209f79b --- /dev/null +++ b/lib/ebu/ebu/Makefile @@ -0,0 +1,704 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# ebu/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = ebu +DIST_COMMON = $(dist_noinst_HEADERS) $(dist_pkginclude_HEADERS) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" \ + "$(DESTDIR)$(pkgincludedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libebu_la_LIBADD = +am__libebu_la_SOURCES_DIST = appendix.c appsub.c bcd.c binary.c \ + bitmap.c book.c booklist.c color.c copyright.c cross.c eb.c \ + endword.c error.c exactword.c filename.c font.c hook.c \ + jacode.c keyword.c lock.c log.c match.c menu.c multi.c \ + narwalt.c narwfont.c readtext.c search.c setword.c stopcode.c \ + strcasecmp.c subbook.c text.c widealt.c widefont.c word.c \ + zio.c utf8.c ebnet.c multiplex.c linebuf.c urlparts.c \ + getaddrinfo.c dummyin6.c +am__objects_1 = ebnet.lo multiplex.lo linebuf.lo \ + urlparts.lo getaddrinfo.lo dummyin6.lo +am_libebu_la_OBJECTS = appendix.lo appsub.lo bcd.lo binary.lo \ + bitmap.lo book.lo booklist.lo color.lo copyright.lo cross.lo \ + eb.lo endword.lo error.lo exactword.lo filename.lo font.lo \ + hook.lo jacode.lo keyword.lo lock.lo log.lo match.lo menu.lo \ + multi.lo narwalt.lo narwfont.lo readtext.lo search.lo \ + setword.lo stopcode.lo strcasecmp.lo subbook.lo text.lo \ + widealt.lo widefont.lo word.lo zio.lo utf8.lo $(am__objects_1) +libebu_la_OBJECTS = $(am_libebu_la_OBJECTS) +libebu_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libebu_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libebu_la_SOURCES) +DIST_SOURCES = $(am__libebu_la_SOURCES_DIST) +dist_pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) +nodist_pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(dist_noinst_HEADERS) $(dist_pkginclude_HEADERS) \ + $(nodist_noinst_HEADERS) $(nodist_pkginclude_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu/ebu +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu/ebu +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +lib_LTLIBRARIES = libebu.la +#libebu_ebnet_sources = +libebu_ebnet_sources = ebnet.c multiplex.c linebuf.c urlparts.c getaddrinfo.c \ + dummyin6.c + +libebu_la_SOURCES = appendix.c appsub.c bcd.c binary.c bitmap.c \ + book.c booklist.c color.c copyright.c cross.c eb.c endword.c \ + error.c exactword.c filename.c font.c hook.c jacode.c \ + keyword.c lock.c log.c match.c menu.c multi.c narwalt.c \ + narwfont.c readtext.c search.c setword.c stopcode.c \ + strcasecmp.c subbook.c text.c widealt.c widefont.c word.c \ + zio.c utf8.c $(libebu_ebnet_sources) + +libebu_la_LDFLAGS = -no-undefined -version-info 17:0:0 \ + $(ZLIBLIBS) $(INTLLIBS) + +dist_pkginclude_HEADERS = appendix.h binary.h booklist.h defs.h eb.h error.h \ + font.h text.h zio.h + +nodist_pkginclude_HEADERS = sysdefs.h +dist_noinst_HEADERS = build-pre.h dummyin6.h ebnet.h getaddrinfo.h linebuf.h \ + urlparts.h + +nodist_noinst_HEADERS = build-post.h +INCLUDES = -DEB_BUILD_LIBRARY $(INTLINCS) $(ZLIBINCS) +EXTRA_DIST = stamp-widealt-h stamp-widefont-h build-post.h.in +CLEANFILES = stamp-build-post-h stamp-sysdefs-h build-post.h sysdefs.h +MAINTAINERCLEANFILES = stamp-widealt-h stamp-widefont-h widealt.c widefont.c +BUILT_SOURCES = build-post.h sysdefs.h widealt.c widefont.c +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebu/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebu/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libebu.la: $(libebu_la_OBJECTS) $(libebu_la_DEPENDENCIES) + $(libebu_la_LINK) -rpath $(libdir) $(libebu_la_OBJECTS) $(libebu_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/appendix.Plo +include ./$(DEPDIR)/appsub.Plo +include ./$(DEPDIR)/bcd.Plo +include ./$(DEPDIR)/binary.Plo +include ./$(DEPDIR)/bitmap.Plo +include ./$(DEPDIR)/book.Plo +include ./$(DEPDIR)/booklist.Plo +include ./$(DEPDIR)/color.Plo +include ./$(DEPDIR)/copyright.Plo +include ./$(DEPDIR)/cross.Plo +include ./$(DEPDIR)/dummyin6.Plo +include ./$(DEPDIR)/eb.Plo +include ./$(DEPDIR)/ebnet.Plo +include ./$(DEPDIR)/endword.Plo +include ./$(DEPDIR)/error.Plo +include ./$(DEPDIR)/exactword.Plo +include ./$(DEPDIR)/filename.Plo +include ./$(DEPDIR)/font.Plo +include ./$(DEPDIR)/getaddrinfo.Plo +include ./$(DEPDIR)/hook.Plo +include ./$(DEPDIR)/jacode.Plo +include ./$(DEPDIR)/keyword.Plo +include ./$(DEPDIR)/linebuf.Plo +include ./$(DEPDIR)/lock.Plo +include ./$(DEPDIR)/log.Plo +include ./$(DEPDIR)/match.Plo +include ./$(DEPDIR)/menu.Plo +include ./$(DEPDIR)/multi.Plo +include ./$(DEPDIR)/multiplex.Plo +include ./$(DEPDIR)/narwalt.Plo +include ./$(DEPDIR)/narwfont.Plo +include ./$(DEPDIR)/readtext.Plo +include ./$(DEPDIR)/search.Plo +include ./$(DEPDIR)/setword.Plo +include ./$(DEPDIR)/stopcode.Plo +include ./$(DEPDIR)/strcasecmp.Plo +include ./$(DEPDIR)/subbook.Plo +include ./$(DEPDIR)/text.Plo +include ./$(DEPDIR)/urlparts.Plo +include ./$(DEPDIR)/utf8.Plo +include ./$(DEPDIR)/widealt.Plo +include ./$(DEPDIR)/widefont.Plo +include ./$(DEPDIR)/word.Plo +include ./$(DEPDIR)/zio.Plo + +.c.o: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_pkgincludeHEADERS: $(dist_pkginclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" + @list='$(dist_pkginclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(dist_pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + $(dist_pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +uninstall-dist_pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(dist_pkginclude_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done +install-nodist_pkgincludeHEADERS: $(nodist_pkginclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" + @list='$(nodist_pkginclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(nodist_pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + $(nodist_pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +uninstall-nodist_pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_pkginclude_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_pkgincludeHEADERS \ + install-nodist_pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_pkgincludeHEADERS \ + uninstall-libLTLIBRARIES uninstall-nodist_pkgincludeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-dist_pkgincludeHEADERS install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-nodist_pkgincludeHEADERS install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-dist_pkgincludeHEADERS \ + uninstall-libLTLIBRARIES uninstall-nodist_pkgincludeHEADERS + + +sysdefs.h: stamp-sysdefs-h +stamp-sysdefs-h: Makefile + rm -f sysdefs.h.tmp + echo '/* automatically generated by Makefile. */' > sysdefs.h.tmp + echo '#define EB_VERSION_STRING "$(VERSION)"' >> sysdefs.h.tmp + echo '#define EB_VERSION_MAJOR $(EB_VERSION_MAJOR)' >> sysdefs.h.tmp + echo '#define EB_VERSION_MINOR $(EB_VERSION_MINOR)' >> sysdefs.h.tmp + if test X$(ENABLE_EBNET) = Xyes; then \ + echo '#define EB_ENABLE_EBNET 1' >> sysdefs.h.tmp; \ + fi + if test X$(ENABLE_PTHREAD) = Xyes; then \ + echo '#define EB_ENABLE_PTHREAD 1' >> sysdefs.h.tmp; \ + fi + $(top_srcdir)/move-if-change sysdefs.h.tmp sysdefs.h + @echo timestamp > stamp-sysdefs-h + +build-post.h: stamp-build-post-h +stamp-build-post-h: build-post.h.in Makefile + rm -f build-post.h.tmp + echo '/* automatically generated from build-post.h.in. */' \ + > build-post.h + sed -e 's;\@localedir\@;$(localedir);' \ + $(srcdir)/build-post.h.in >> build-post.h.tmp + $(top_srcdir)/move-if-change build-post.h.tmp build-post.h + @echo timestamp > stamp-build-post-h + +widealt.c: stamp-widealt-h +stamp-widealt-h: narwalt.c Makefile + rm -f widealt.c.tmp + echo '/* automatically generated from narwalt.c. */' \ + > widealt.c.tmp + sed -e s/narrow/wide/g -e s/Narrow/Wide/g -e s/NARROW/WIDE/g \ + $(srcdir)/narwalt.c >> widealt.c.tmp + $(top_srcdir)/move-if-change widealt.c.tmp widealt.c + @echo timestamp > stamp-widealt-h + +widefont.c: stamp-widefont-h +stamp-widefont-h: narwfont.c Makefile + rm -f widefont.c.tmp + echo '/* automatically generated from narwfont.c. */' \ + > widefont.c.tmp + sed -e s/narrow/wide/g -e s/Narrow/Wide/g -e s/NARROW/WIDE/g \ + $(srcdir)/narwfont.c >> widefont.c.tmp + $(top_srcdir)/move-if-change widefont.c.tmp widefont.c + @echo timestamp > stamp-widefont-h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebu/Makefile.am b/lib/ebu/ebu/Makefile.am new file mode 100644 index 0000000..f1c3197 --- /dev/null +++ b/lib/ebu/ebu/Makefile.am @@ -0,0 +1,78 @@ +lib_LTLIBRARIES = libebu.la + +if ENABLE_EBNET +libebu_ebnet_sources = ebnet.c multiplex.c linebuf.c urlparts.c getaddrinfo.c \ + dummyin6.c +else +libebu_ebnet_sources = +endif + +libebu_la_SOURCES = appendix.c appsub.c bcd.c binary.c bitmap.c \ + book.c booklist.c color.c copyright.c cross.c eb.c endword.c \ + error.c exactword.c filename.c font.c hook.c jacode.c \ + keyword.c lock.c log.c match.c menu.c multi.c narwalt.c \ + narwfont.c readtext.c search.c setword.c stopcode.c \ + strcasecmp.c subbook.c text.c widealt.c widefont.c word.c \ + zio.c utf8.c $(libebu_ebnet_sources) +libebu_la_LDFLAGS = -no-undefined -version-info @LIBEB_VERSION_INFO@ \ + $(ZLIBLIBS) $(INTLLIBS) + +dist_pkginclude_HEADERS = appendix.h binary.h booklist.h defs.h eb.h error.h \ + font.h text.h zio.h +nodist_pkginclude_HEADERS = sysdefs.h +dist_noinst_HEADERS = build-pre.h dummyin6.h ebnet.h getaddrinfo.h linebuf.h \ + urlparts.h +nodist_noinst_HEADERS = build-post.h + +INCLUDES = -DEB_BUILD_LIBRARY $(INTLINCS) $(ZLIBINCS) + +EXTRA_DIST = stamp-widealt-h stamp-widefont-h build-post.h.in +CLEANFILES = stamp-build-post-h stamp-sysdefs-h build-post.h sysdefs.h +MAINTAINERCLEANFILES = stamp-widealt-h stamp-widefont-h widealt.c widefont.c +BUILT_SOURCES = build-post.h sysdefs.h widealt.c widefont.c + +sysdefs.h: stamp-sysdefs-h +stamp-sysdefs-h: Makefile + rm -f sysdefs.h.tmp + echo '/* automatically generated by Makefile. */' > sysdefs.h.tmp + echo '#define EB_VERSION_STRING "$(VERSION)"' >> sysdefs.h.tmp + echo '#define EB_VERSION_MAJOR $(EB_VERSION_MAJOR)' >> sysdefs.h.tmp + echo '#define EB_VERSION_MINOR $(EB_VERSION_MINOR)' >> sysdefs.h.tmp + if test X$(ENABLE_EBNET) = Xyes; then \ + echo '#define EB_ENABLE_EBNET 1' >> sysdefs.h.tmp; \ + fi + if test X$(ENABLE_PTHREAD) = Xyes; then \ + echo '#define EB_ENABLE_PTHREAD 1' >> sysdefs.h.tmp; \ + fi + $(top_srcdir)/move-if-change sysdefs.h.tmp sysdefs.h + @echo timestamp > stamp-sysdefs-h + +build-post.h: stamp-build-post-h +stamp-build-post-h: build-post.h.in Makefile + rm -f build-post.h.tmp + echo '/* automatically generated from build-post.h.in. */' \ + > build-post.h + sed -e 's;\@localedir\@;$(localedir);' \ + $(srcdir)/build-post.h.in >> build-post.h.tmp + $(top_srcdir)/move-if-change build-post.h.tmp build-post.h + @echo timestamp > stamp-build-post-h + +widealt.c: stamp-widealt-h +stamp-widealt-h: narwalt.c Makefile + rm -f widealt.c.tmp + echo '/* automatically generated from narwalt.c. */' \ + > widealt.c.tmp + sed -e s/narrow/wide/g -e s/Narrow/Wide/g -e s/NARROW/WIDE/g \ + $(srcdir)/narwalt.c >> widealt.c.tmp + $(top_srcdir)/move-if-change widealt.c.tmp widealt.c + @echo timestamp > stamp-widealt-h + +widefont.c: stamp-widefont-h +stamp-widefont-h: narwfont.c Makefile + rm -f widefont.c.tmp + echo '/* automatically generated from narwfont.c. */' \ + > widefont.c.tmp + sed -e s/narrow/wide/g -e s/Narrow/Wide/g -e s/NARROW/WIDE/g \ + $(srcdir)/narwfont.c >> widefont.c.tmp + $(top_srcdir)/move-if-change widefont.c.tmp widefont.c + @echo timestamp > stamp-widefont-h diff --git a/lib/ebu/ebu/Makefile.in b/lib/ebu/ebu/Makefile.in new file mode 100644 index 0000000..fd7e2ca --- /dev/null +++ b/lib/ebu/ebu/Makefile.in @@ -0,0 +1,704 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = ebu +DIST_COMMON = $(dist_noinst_HEADERS) $(dist_pkginclude_HEADERS) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" \ + "$(DESTDIR)$(pkgincludedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libebu_la_LIBADD = +am__libebu_la_SOURCES_DIST = appendix.c appsub.c bcd.c binary.c \ + bitmap.c book.c booklist.c color.c copyright.c cross.c eb.c \ + endword.c error.c exactword.c filename.c font.c hook.c \ + jacode.c keyword.c lock.c log.c match.c menu.c multi.c \ + narwalt.c narwfont.c readtext.c search.c setword.c stopcode.c \ + strcasecmp.c subbook.c text.c widealt.c widefont.c word.c \ + zio.c utf8.c ebnet.c multiplex.c linebuf.c urlparts.c \ + getaddrinfo.c dummyin6.c +@ENABLE_EBNET_TRUE@am__objects_1 = ebnet.lo multiplex.lo linebuf.lo \ +@ENABLE_EBNET_TRUE@ urlparts.lo getaddrinfo.lo dummyin6.lo +am_libebu_la_OBJECTS = appendix.lo appsub.lo bcd.lo binary.lo \ + bitmap.lo book.lo booklist.lo color.lo copyright.lo cross.lo \ + eb.lo endword.lo error.lo exactword.lo filename.lo font.lo \ + hook.lo jacode.lo keyword.lo lock.lo log.lo match.lo menu.lo \ + multi.lo narwalt.lo narwfont.lo readtext.lo search.lo \ + setword.lo stopcode.lo strcasecmp.lo subbook.lo text.lo \ + widealt.lo widefont.lo word.lo zio.lo utf8.lo $(am__objects_1) +libebu_la_OBJECTS = $(am_libebu_la_OBJECTS) +libebu_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libebu_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libebu_la_SOURCES) +DIST_SOURCES = $(am__libebu_la_SOURCES_DIST) +dist_pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) +nodist_pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(dist_noinst_HEADERS) $(dist_pkginclude_HEADERS) \ + $(nodist_noinst_HEADERS) $(nodist_pkginclude_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +lib_LTLIBRARIES = libebu.la +@ENABLE_EBNET_FALSE@libebu_ebnet_sources = +@ENABLE_EBNET_TRUE@libebu_ebnet_sources = ebnet.c multiplex.c linebuf.c urlparts.c getaddrinfo.c \ +@ENABLE_EBNET_TRUE@ dummyin6.c + +libebu_la_SOURCES = appendix.c appsub.c bcd.c binary.c bitmap.c \ + book.c booklist.c color.c copyright.c cross.c eb.c endword.c \ + error.c exactword.c filename.c font.c hook.c jacode.c \ + keyword.c lock.c log.c match.c menu.c multi.c narwalt.c \ + narwfont.c readtext.c search.c setword.c stopcode.c \ + strcasecmp.c subbook.c text.c widealt.c widefont.c word.c \ + zio.c utf8.c $(libebu_ebnet_sources) + +libebu_la_LDFLAGS = -no-undefined -version-info @LIBEB_VERSION_INFO@ \ + $(ZLIBLIBS) $(INTLLIBS) + +dist_pkginclude_HEADERS = appendix.h binary.h booklist.h defs.h eb.h error.h \ + font.h text.h zio.h + +nodist_pkginclude_HEADERS = sysdefs.h +dist_noinst_HEADERS = build-pre.h dummyin6.h ebnet.h getaddrinfo.h linebuf.h \ + urlparts.h + +nodist_noinst_HEADERS = build-post.h +INCLUDES = -DEB_BUILD_LIBRARY $(INTLINCS) $(ZLIBINCS) +EXTRA_DIST = stamp-widealt-h stamp-widefont-h build-post.h.in +CLEANFILES = stamp-build-post-h stamp-sysdefs-h build-post.h sysdefs.h +MAINTAINERCLEANFILES = stamp-widealt-h stamp-widefont-h widealt.c widefont.c +BUILT_SOURCES = build-post.h sysdefs.h widealt.c widefont.c +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ebu/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ebu/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libebu.la: $(libebu_la_OBJECTS) $(libebu_la_DEPENDENCIES) + $(libebu_la_LINK) -rpath $(libdir) $(libebu_la_OBJECTS) $(libebu_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appendix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appsub.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bcd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitmap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/book.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/booklist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copyright.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cross.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummyin6.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eb.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebnet.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/endword.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exactword.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filename.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/font.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getaddrinfo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hook.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jacode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyword.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebuf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lock.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/match.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiplex.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/narwalt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/narwfont.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readtext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setword.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stopcode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcasecmp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subbook.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/urlparts.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/widealt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/widefont.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/word.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zio.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_pkgincludeHEADERS: $(dist_pkginclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" + @list='$(dist_pkginclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(dist_pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + $(dist_pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +uninstall-dist_pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(dist_pkginclude_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done +install-nodist_pkgincludeHEADERS: $(nodist_pkginclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" + @list='$(nodist_pkginclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(nodist_pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + $(nodist_pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +uninstall-nodist_pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_pkginclude_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_pkgincludeHEADERS \ + install-nodist_pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_pkgincludeHEADERS \ + uninstall-libLTLIBRARIES uninstall-nodist_pkgincludeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-dist_pkgincludeHEADERS install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-nodist_pkgincludeHEADERS install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-dist_pkgincludeHEADERS \ + uninstall-libLTLIBRARIES uninstall-nodist_pkgincludeHEADERS + + +sysdefs.h: stamp-sysdefs-h +stamp-sysdefs-h: Makefile + rm -f sysdefs.h.tmp + echo '/* automatically generated by Makefile. */' > sysdefs.h.tmp + echo '#define EB_VERSION_STRING "$(VERSION)"' >> sysdefs.h.tmp + echo '#define EB_VERSION_MAJOR $(EB_VERSION_MAJOR)' >> sysdefs.h.tmp + echo '#define EB_VERSION_MINOR $(EB_VERSION_MINOR)' >> sysdefs.h.tmp + if test X$(ENABLE_EBNET) = Xyes; then \ + echo '#define EB_ENABLE_EBNET 1' >> sysdefs.h.tmp; \ + fi + if test X$(ENABLE_PTHREAD) = Xyes; then \ + echo '#define EB_ENABLE_PTHREAD 1' >> sysdefs.h.tmp; \ + fi + $(top_srcdir)/move-if-change sysdefs.h.tmp sysdefs.h + @echo timestamp > stamp-sysdefs-h + +build-post.h: stamp-build-post-h +stamp-build-post-h: build-post.h.in Makefile + rm -f build-post.h.tmp + echo '/* automatically generated from build-post.h.in. */' \ + > build-post.h + sed -e 's;\@localedir\@;$(localedir);' \ + $(srcdir)/build-post.h.in >> build-post.h.tmp + $(top_srcdir)/move-if-change build-post.h.tmp build-post.h + @echo timestamp > stamp-build-post-h + +widealt.c: stamp-widealt-h +stamp-widealt-h: narwalt.c Makefile + rm -f widealt.c.tmp + echo '/* automatically generated from narwalt.c. */' \ + > widealt.c.tmp + sed -e s/narrow/wide/g -e s/Narrow/Wide/g -e s/NARROW/WIDE/g \ + $(srcdir)/narwalt.c >> widealt.c.tmp + $(top_srcdir)/move-if-change widealt.c.tmp widealt.c + @echo timestamp > stamp-widealt-h + +widefont.c: stamp-widefont-h +stamp-widefont-h: narwfont.c Makefile + rm -f widefont.c.tmp + echo '/* automatically generated from narwfont.c. */' \ + > widefont.c.tmp + sed -e s/narrow/wide/g -e s/Narrow/Wide/g -e s/NARROW/WIDE/g \ + $(srcdir)/narwfont.c >> widefont.c.tmp + $(top_srcdir)/move-if-change widefont.c.tmp widefont.c + @echo timestamp > stamp-widefont-h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/ebu/appendix.c b/lib/ebu/ebu/appendix.c new file mode 100644 index 0000000..edcc8af --- /dev/null +++ b/lib/ebu/ebu/appendix.c @@ -0,0 +1,447 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "appendix.h" +#ifdef ENABLE_EBNET +#include "ebnet.h" +#endif +#include "build-post.h" + +/* + * Appendix ID counter. + */ +static EB_Book_Code appendix_counter = 0; + +/* + * Mutex for `appendix_counter'. + */ +#ifdef ENABLE_PTHREAD +static pthread_mutex_t appendix_counter_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif + +/* + * Unexported functions. + */ +static EB_Error_Code eb_load_appendix_catalog(EB_Appendix *appendix); + + +/* + * Initialize alternation text cache in `appendix'. + */ +void +eb_initialize_alt_caches(EB_Appendix *appendix) +{ + EB_Alternation_Cache *p; + int i; + + LOG(("in: eb_initialize_alt_caches(appendix=%d)", (int)appendix->code)); + + for (i = 0, p = appendix->narrow_cache; + i < EB_MAX_ALTERNATION_CACHE; i++, p++) + p->character_number = -1; + for (i = 0, p = appendix->wide_cache; + i < EB_MAX_ALTERNATION_CACHE; i++, p++) + p->character_number = -1; + + LOG(("out: eb_initialize_alt_caches()")); +} + + +/* + * Finalize alternation text cache in `appendix'. + */ +void +eb_finalize_alt_caches(EB_Appendix *appendix) +{ + LOG(("in+out: eb_finalize_alt_caches(appendix=%d)", (int)appendix->code)); + + /* nothing to be done */ +} + + +/* + * Initialize `appendix'. + */ +void +eb_initialize_appendix(EB_Appendix *appendix) +{ + LOG(("in: eb_initialize_appendix()")); + + appendix->code = EB_BOOK_NONE; + appendix->path = NULL; + appendix->path_length = 0; + appendix->disc_code = EB_DISC_INVALID; + appendix->subbook_count = 0; + appendix->subbooks = NULL; + appendix->subbook_current = NULL; +#ifdef ENABLE_EBNET + appendix->ebnet_file = -1; +#endif + eb_initialize_lock(&appendix->lock); + eb_initialize_alt_caches(appendix); + + LOG(("out: eb_initialize_appendix()")); +} + + +/* + * Finalize `appendix'. + */ +void +eb_finalize_appendix(EB_Appendix *appendix) +{ + LOG(("in: eb_finalize_appendix(appendix=%d)", (int)appendix->code)); + + appendix->code = EB_BOOK_NONE; + + if (appendix->path != NULL) { + free(appendix->path); + appendix->path = NULL; + } + appendix->path_length = 0; + + appendix->disc_code = EB_DISC_INVALID; + + if (appendix->subbooks != NULL) { + eb_finalize_appendix_subbooks(appendix); + free(appendix->subbooks); + appendix->subbooks = NULL; + appendix->subbook_count = 0; + } + appendix->subbook_current = NULL; + eb_finalize_lock(&appendix->lock); + eb_finalize_alt_caches(appendix); + +#ifdef ENABLE_EBNET + ebnet_finalize_appendix(appendix); +#endif + + LOG(("out: eb_finalize_appendix()")); +} + + +/* + * Bind `appendix' to `path'. + */ +EB_Error_Code +eb_bind_appendix(EB_Appendix *appendix, const char *path) +{ + EB_Error_Code error_code; + char temporary_path[EB_MAX_PATH_LENGTH + 1]; + int is_ebnet; + + eb_lock(&appendix->lock); + LOG(("in: eb_bind_appendix(path=%s)", path)); + + /* + * Reset structure members in the appendix. + */ + if (appendix->path != NULL) { + eb_finalize_appendix(appendix); + eb_initialize_appendix(appendix); + } + + /* + * Assign a book code. + */ + pthread_mutex_lock(&appendix_counter_mutex); + appendix->code = appendix_counter++; + pthread_mutex_unlock(&appendix_counter_mutex); + + /* + * Check whether `path' is URL. + */ + is_ebnet = is_ebnet_url(path); +#ifndef ENABLE_EBNET + if (is_ebnet) { + error_code = EB_ERR_EBNET_UNSUPPORTED; + goto failed; + } +#endif + + /* + * Set path of the appendix. + * The length of the file name "path/subdir/subsubdir/file.;1" must + * be EB_MAX_PATH_LENGTH maximum. + */ + if (EB_MAX_PATH_LENGTH < strlen(path)) { + error_code = EB_ERR_TOO_LONG_FILE_NAME; + goto failed; + } + strcpy(temporary_path, path); +#ifdef ENABLE_EBNET + if (is_ebnet) + error_code = ebnet_canonicalize_url(temporary_path); + else + error_code = eb_canonicalize_path_name(temporary_path); +#else + error_code = eb_canonicalize_path_name(temporary_path); +#endif + if (error_code != EB_SUCCESS) + goto failed; + appendix->path_length = strlen(temporary_path); + + if (EB_MAX_PATH_LENGTH + < appendix->path_length + 1 + EB_MAX_RELATIVE_PATH_LENGTH) { + error_code = EB_ERR_TOO_LONG_FILE_NAME; + goto failed; + } + + appendix->path = (char *)malloc(appendix->path_length + 1); + if (appendix->path == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + strcpy(appendix->path, temporary_path); + + /* + * Establish a connection with a ebnet server. + */ +#ifdef ENABLE_EBNET + if (is_ebnet) { + error_code = ebnet_bind_appendix(appendix, appendix->path); + if (error_code != EB_SUCCESS) + goto failed; + } +#endif + + /* + * Read information from the catalog file. + */ + error_code = eb_load_appendix_catalog(appendix); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_bind_appendix(appendix=%d) = %s", (int)appendix->code, + eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_finalize_appendix(appendix); + LOG(("out: eb_bind_appendix() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Read information from the `CATALOG(S)' file in `appendix'. + * Return EB_SUCCESS, if it succeeds, error-code ohtherwise. + */ +static EB_Error_Code +eb_load_appendix_catalog(EB_Appendix *appendix) +{ + EB_Error_Code error_code; + char buffer[EB_SIZE_PAGE]; + char catalog_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + char catalog_path_name[EB_MAX_PATH_LENGTH + 1]; + char *space; + EB_Appendix_Subbook *subbook; + size_t catalog_size; + size_t title_size; + Zio zio; + Zio_Code zio_code; + int i; + + LOG(("in: eb_load_appendix_catalog(appendix=%d)", (int)appendix->code)); + + zio_initialize(&zio); + + /* + * Find a catalog file. + */ + if (eb_find_file_name(appendix->path, "catalog", catalog_file_name) + == EB_SUCCESS) { + appendix->disc_code = EB_DISC_EB; + catalog_size = EB_SIZE_EB_CATALOG; + title_size = EB_MAX_EB_TITLE_LENGTH; + } else if (eb_find_file_name(appendix->path, "catalogs", catalog_file_name) + == EB_SUCCESS) { + appendix->disc_code = EB_DISC_EPWING; + catalog_size = EB_SIZE_EPWING_CATALOG; + title_size = EB_MAX_EPWING_TITLE_LENGTH; + } else { + error_code = EB_ERR_FAIL_OPEN_CATAPP; + goto failed; + } + + eb_compose_path_name(appendix->path, catalog_file_name, catalog_path_name); + eb_path_name_zio_code(catalog_path_name, ZIO_PLAIN, &zio_code); + + /* + * Open the catalog file. + */ + if (zio_open(&zio, catalog_path_name, zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_CATAPP; + goto failed; + } + + /* + * Get the number of subbooks in the appendix. + */ + if (zio_read(&zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_CATAPP; + goto failed; + } + appendix->subbook_count = eb_uint2(buffer); + if (EB_MAX_SUBBOOKS < appendix->subbook_count) + appendix->subbook_count = EB_MAX_SUBBOOKS; + if (appendix->subbook_count == 0) { + error_code = EB_ERR_UNEXP_CATAPP; + goto failed; + } + + /* + * Allocate memories for subbook entries. + */ + appendix->subbooks = (EB_Appendix_Subbook *) + malloc(sizeof(EB_Appendix_Subbook) * appendix->subbook_count); + if (appendix->subbooks == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + eb_initialize_appendix_subbooks(appendix); + + /* + * Read subbook information. + */ + for (i = 0, subbook = appendix->subbooks; i < appendix->subbook_count; + i++, subbook++) { + /* + * Read data from the catalog file. + */ + if (zio_read(&zio, buffer, catalog_size) != catalog_size) { + error_code = EB_ERR_FAIL_READ_CAT; + goto failed; + } + + /* + * Set a directory name of the subbook. + */ + strncpy(subbook->directory_name, buffer + 2 + title_size, + EB_MAX_DIRECTORY_NAME_LENGTH); + subbook->directory_name[EB_MAX_DIRECTORY_NAME_LENGTH] = '\0'; + space = strchr(subbook->directory_name, ' '); + if (space != NULL) + *space = '\0'; + eb_fix_directory_name(appendix->path, subbook->directory_name); + } + + /* + * Close the catalog file. + */ + zio_close(&zio); + zio_finalize(&zio); + LOG(("out: eb_load_appendix_catalog() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + zio_close(&zio); + zio_finalize(&zio); + if (appendix->subbooks != NULL) { + free(appendix->subbooks); + appendix->subbooks = NULL; + } + LOG(("out: eb_load_appendix_catalog() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Examine whether `appendix' is bound or not. + */ +int +eb_is_appendix_bound(EB_Appendix *appendix) +{ + int is_bound; + + eb_lock(&appendix->lock); + LOG(("in: eb_is_appendix_bound(appendix=%d)", (int)appendix->code)); + + is_bound = (appendix->path != NULL); + + LOG(("out: eb_is_appendix_bound() = %d", is_bound)); + eb_unlock(&appendix->lock); + + return is_bound; +} + + +/* + * Get the bound path of `appendix'. + */ +EB_Error_Code +eb_appendix_path(EB_Appendix *appendix, char *path) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_appendix_path(appendix=%d)", (int)appendix->code)); + + /* + * Check for the current status. + */ + if (appendix->path == NULL) { + error_code = EB_ERR_UNBOUND_APP; + goto failed; + } + + /* + * Copy the path to `path'. + */ + strcpy(path, appendix->path); + + LOG(("out: eb_appendix_path(path=%s) = %s", + path, eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *path = '\0'; + LOG(("out: eb_appendix_path() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/appendix.h b/lib/ebu/ebu/appendix.h new file mode 100644 index 0000000..52f7e66 --- /dev/null +++ b/lib/ebu/ebu/appendix.h @@ -0,0 +1,100 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_APPENDIX_H +#define EB_APPENDIX_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef EB_BUILD_LIBRARY +#include "eb.h" +#else +#include +#endif + +/* + * Function declarations. + */ +/* appendix.c */ +void eb_initialize_appendix(EB_Appendix *appendix); +void eb_finalize_appendix(EB_Appendix *appendix); +EB_Error_Code eb_bind_appendix(EB_Appendix *appendix, const char *path); +int eb_is_appendix_bound(EB_Appendix *appendix); +EB_Error_Code eb_appendix_path(EB_Appendix *appendix, char *path); + +/* appsub.c */ +EB_Error_Code eb_load_all_appendix_subbooks(EB_Appendix *appendix); +EB_Error_Code eb_appendix_subbook_list(EB_Appendix *appendix, + EB_Subbook_Code *subbook_list, int *subbook_count); +EB_Error_Code eb_appendix_subbook(EB_Appendix *appendix, + EB_Subbook_Code *subbook_code); +EB_Error_Code eb_appendix_subbook_directory(EB_Appendix *appendix, + char *directory); +EB_Error_Code eb_appendix_subbook_directory2(EB_Appendix *appendix, + EB_Subbook_Code subbook_code, char *directory); +EB_Error_Code eb_set_appendix_subbook(EB_Appendix *appendix, + EB_Subbook_Code subbook_code); +void eb_unset_appendix_subbook(EB_Appendix *appendix); + +/* narwalt.c */ +int eb_have_narrow_alt(EB_Appendix *appendix); +EB_Error_Code eb_narrow_alt_start(EB_Appendix *appendix, int *start); +EB_Error_Code eb_narrow_alt_end(EB_Appendix *appendix, int *end); +EB_Error_Code eb_narrow_alt_character_text(EB_Appendix *appendix, + int character_number, char *text); +EB_Error_Code eb_forward_narrow_alt_character(EB_Appendix *appendix, + int n, int *character_number); +EB_Error_Code eb_backward_narrow_alt_character(EB_Appendix *appendix, + int n, int *character_number); + +/* stopcode.c */ +int eb_have_stop_code(EB_Appendix *appendix); +EB_Error_Code eb_stop_code(EB_Appendix *appendix, int *); + +/* widealt.c */ +int eb_have_wide_alt(EB_Appendix *appendix); +EB_Error_Code eb_wide_alt_start(EB_Appendix *appendix, int *start); +EB_Error_Code eb_wide_alt_end(EB_Appendix *appendix, int *end); +EB_Error_Code eb_wide_alt_character_text(EB_Appendix *appendix, + int character_number, char *text); +EB_Error_Code eb_forward_wide_alt_character(EB_Appendix *appendix, int n, + int *character_number); +EB_Error_Code eb_backward_wide_alt_character(EB_Appendix *appendix, int n, + int *character_number); + +/* for backward compatibility */ +#define eb_suspend_appendix eb_unset_appendix_subbook +#define eb_initialize_all_appendix_subbooks eb_load_all_appendix_subbooks + +#ifdef __cplusplus +} +#endif + +#endif /* not EB_APPENDIX_H */ diff --git a/lib/ebu/ebu/appendix.lo b/lib/ebu/ebu/appendix.lo new file mode 100644 index 0000000..42e5219 --- /dev/null +++ b/lib/ebu/ebu/appendix.lo @@ -0,0 +1,12 @@ +# appendix.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/appendix.o' + +# Name of the non-PIC object +non_pic_object='appendix.o' + diff --git a/lib/ebu/ebu/appsub.c b/lib/ebu/ebu/appsub.c new file mode 100644 index 0000000..769c9eb --- /dev/null +++ b/lib/ebu/ebu/appsub.c @@ -0,0 +1,750 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "appendix.h" +#include "build-post.h" + +/* + * Unexported functions. + */ +static EB_Error_Code eb_load_appendix_subbook(EB_Appendix *appendix); +static EB_Error_Code eb_set_appendix_subbook_eb(EB_Appendix *appendix, + EB_Subbook_Code subbook_code); +static EB_Error_Code eb_set_appendix_subbook_epwing(EB_Appendix *appendix, + EB_Subbook_Code subbook_code); + +/* + * Initialize all subbooks in `appendix'. + */ +void +eb_initialize_appendix_subbooks(EB_Appendix *appendix) +{ + EB_Appendix_Subbook *subbook; + int i; + + LOG(("in: eb_initialize_appendix_subbooks(appendix=%d)", + (int)appendix->code)); + + for (i = 0, subbook = appendix->subbooks; i < appendix->subbook_count; + i++, subbook++) { + subbook->initialized = 0; + subbook->code = i; + subbook->directory_name[0] = '\0'; + subbook->data_directory_name[0] = '\0'; + subbook->file_name[0] = '\0'; + subbook->character_code = EB_CHARCODE_INVALID; + subbook->narrow_start = -1; + subbook->wide_start = -1; + subbook->narrow_end = -1; + subbook->wide_end = -1; + subbook->narrow_page = 0; + subbook->wide_page = 0; + subbook->stop_code0 = 0; + subbook->stop_code1 = 0; + zio_initialize(&subbook->zio); + } + + LOG(("out: eb_initialize_appendix_subbooks()")); +} + + +/* + * Initialize subbooks in `appendix'. + */ +void +eb_finalize_appendix_subbooks(EB_Appendix *appendix) +{ + EB_Appendix_Subbook *subbook; + int i; + + LOG(("in: eb_finalize_appendix_subbooks(appendix=%d)", + (int)appendix->code)); + + for (i = 0, subbook = appendix->subbooks; i < appendix->subbook_count; + i++, subbook++) { + zio_finalize(&appendix->subbooks[i].zio); + } + + LOG(("out: eb_finalize_appendix_subbooks()")); +} + + +/* + * Load all subbooks in `appendix'. + */ +static EB_Error_Code +eb_load_appendix_subbook(EB_Appendix *appendix) +{ + EB_Error_Code error_code; + EB_Appendix_Subbook *subbook; + char buffer[16]; + int stop_code_page; + int character_count; + + LOG(("in: eb_load_appendix_subbook(appendix=%d)", (int)appendix->code)); + + subbook = appendix->subbook_current; + + /* + * Check for the current status. + */ + if (subbook == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + /* + * If the subbook has already initialized, return immediately. + */ + if (subbook->initialized != 0) + goto succeeded; + + /* + * Rewind the APPENDIX file. + */ + if (zio_lseek(&subbook->zio, 0, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_APP; + goto failed; + } + + /* + * Set character code used in the appendix. + */ + if (zio_read(&subbook->zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_APP; + goto failed; + } + subbook->character_code = eb_uint2(buffer + 2); + + /* + * Set information about alternation text of wide font. + */ + if (zio_read(&subbook->zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_APP; + goto failed; + } + character_count = eb_uint2(buffer + 12); + + if (0 < character_count) { + subbook->narrow_page = eb_uint4(buffer); + subbook->narrow_start = eb_uint2(buffer + 10); + + if (subbook->character_code == EB_CHARCODE_ISO8859_1) { + subbook->narrow_end = subbook->narrow_start + + ((character_count / 0xfe) << 8) + (character_count % 0xfe) + - 1; + if (0xfe < (subbook->narrow_end & 0xff)) + subbook->narrow_end += 3; + + if ((subbook->narrow_start & 0xff) < 0x01 + || 0xfe < (subbook->narrow_start & 0xff) + || subbook->narrow_start < 0x0001 + || 0x1efe < subbook->narrow_end) { + error_code = EB_ERR_UNEXP_APP; + goto failed; + } + } else { + subbook->narrow_end = subbook->narrow_start + + ((character_count / 0x5e) << 8) + (character_count % 0x5e) + - 1; + if (0x7e < (subbook->narrow_end & 0xff)) + subbook->narrow_end += 0xa3; + + if ((subbook->narrow_start & 0xff) < 0x21 + || 0x7e < (subbook->narrow_start & 0xff) + || subbook->narrow_start < 0xa121 + || 0xfe7e < subbook->narrow_end) { + error_code = EB_ERR_UNEXP_APP; + goto failed; + } + } + } + + /* + * Set information about alternation text of wide font. + */ + if (zio_read(&subbook->zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_APP; + goto failed; + } + character_count = eb_uint2(buffer + 12); + + if (0 < character_count) { + subbook->wide_page = eb_uint4(buffer); + subbook->wide_start = eb_uint2(buffer + 10); + + if (subbook->character_code == EB_CHARCODE_ISO8859_1) { + subbook->wide_end = subbook->wide_start + + ((character_count / 0xfe) << 8) + (character_count % 0xfe) + - 1; + if (0xfe < (subbook->wide_end & 0xff)) + subbook->wide_end += 3; + + if ((subbook->wide_start & 0xff) < 0x01 + || 0xfe < (subbook->wide_start & 0xff) + || subbook->wide_start < 0x0001 + || 0x1efe < subbook->wide_end) { + error_code = EB_ERR_UNEXP_APP; + goto failed; + } + } else { + subbook->wide_end = subbook->wide_start + + ((character_count / 0x5e) << 8) + (character_count % 0x5e) + - 1; + if (0x7e < (subbook->wide_end & 0xff)) + subbook->wide_end += 0xa3; + + if ((subbook->wide_start & 0xff) < 0x21 + || 0x7e < (subbook->wide_start & 0xff) + || subbook->wide_start < 0xa121 + || 0xfe7e < subbook->wide_end) { + error_code = EB_ERR_UNEXP_APP; + goto failed; + } + } + } + + /* + * Set stop-code. + */ + if (zio_read(&subbook->zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_APP; + goto failed; + } + stop_code_page = eb_uint4(buffer); + if (0 < stop_code_page) { + if (zio_lseek(&subbook->zio, ((off_t) stop_code_page - 1) * EB_SIZE_PAGE, + SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_APP; + goto failed; + } + if (zio_read(&subbook->zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_APP; + goto failed; + } + if (eb_uint2(buffer) != 0) { + subbook->stop_code0 = eb_uint2(buffer + 2); + subbook->stop_code1 = eb_uint2(buffer + 4); + } + } + + /* + * Rewind the file descriptor, again. + */ + if (zio_lseek(&subbook->zio, 0, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_APP; + goto failed; + } + + /* + * Initialize the alternation text cache. + */ + eb_initialize_alt_caches(appendix); + + succeeded: + LOG(("out: eb_load_appendix_subbook() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_load_appendix_subbook() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Load all subbooks in the book. + */ +EB_Error_Code +eb_load_all_appendix_subbooks(EB_Appendix *appendix) +{ + EB_Error_Code error_code; + EB_Subbook_Code current_subbook_code; + EB_Appendix_Subbook *subbook; + int i; + + eb_lock(&appendix->lock); + LOG(("in: eb_load_all_appendix_subbooks(appendix=%d)", + (int)appendix->code)); + + /* + * The appendix must have been bound. + */ + if (appendix->path == NULL) { + error_code = EB_ERR_UNBOUND_APP; + goto failed; + } + + /* + * Get the current subbook. + */ + if (appendix->subbook_current != NULL) + current_subbook_code = appendix->subbook_current->code; + else + current_subbook_code = -1; + + /* + * Initialize each subbook. + */ + for (i = 0, subbook = appendix->subbooks; + i < appendix->subbook_count; i++, subbook++) { + error_code = eb_set_appendix_subbook(appendix, subbook->code); + if (error_code != EB_SUCCESS) + goto failed; + } + + /* + * Restore the current subbook. + */ + if (current_subbook_code < 0) + eb_unset_appendix_subbook(appendix); + else { + error_code = eb_set_appendix_subbook(appendix, current_subbook_code); + if (error_code != EB_SUCCESS) + goto failed; + } + + LOG(("out: eb_load_all_appendix_subbooks() = %s", + eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_load_all_appendix_subbooks() = %s", + eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Get a subbook list in `appendix'. + */ +EB_Error_Code +eb_appendix_subbook_list(EB_Appendix *appendix, EB_Subbook_Code *subbook_list, + int *subbook_count) +{ + EB_Error_Code error_code; + EB_Subbook_Code *list_p; + int i; + + eb_lock(&appendix->lock); + LOG(("in: eb_appendix_subbook_list(appendix=%d)", (int)appendix->code)); + + /* + * Check for the current status. + */ + if (appendix->path == NULL) { + error_code = EB_ERR_UNBOUND_APP; + goto failed; + } + + /* + * Make a subbook list. + */ + for (i = 0, list_p = subbook_list; i < appendix->subbook_count; + i++, list_p++) + *list_p = i; + *subbook_count = appendix->subbook_count; + + LOG(("out: eb_appendix_subbook_list(subbook_count=%d) = %s", + *subbook_count, eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *subbook_count = 0; + LOG(("out: eb_appendix_subbook_list() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Get the subbook-code of the current subbook in `appendix'. + */ +EB_Error_Code +eb_appendix_subbook(EB_Appendix *appendix, EB_Subbook_Code *subbook_code) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_appendix_subbook(appendix=%d)", (int)appendix->code)); + + /* + * Check for the current status. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + /* + * Copy the current subbook code to `subbook_code'. + */ + *subbook_code = appendix->subbook_current->code; + + LOG(("out: eb_appendix_subbook(subbook=%d) = %s", (int)*subbook_code, + eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *subbook_code = EB_SUBBOOK_INVALID; + LOG(("out: eb_appendix_subbook() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Get the directory name of the current subbook in `appendix'. + */ +EB_Error_Code +eb_appendix_subbook_directory(EB_Appendix *appendix, char *directory) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_appendix_subbook_directory(appendix=%d)", + (int)appendix->code)); + + /* + * Check for the current status. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + /* + * Copy the directory name to `directory'. + */ + strcpy(directory, appendix->subbook_current->directory_name); + + LOG(("out: eb_appendix_subbook_directory(directory=%s) = %s", + directory, eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *directory = '\0'; + LOG(("out: eb_appendix_subbook_directory() = %s", + eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Get the directory name of the subbook `subbook_code' in `appendix'. + */ +EB_Error_Code +eb_appendix_subbook_directory2(EB_Appendix *appendix, + EB_Subbook_Code subbook_code, char *directory) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_appendix_subbook_directory2(appendix=%d, subbook=%d)", + (int)appendix->code, (int)subbook_code)); + + /* + * Check for the current status. + */ + if (appendix->path == NULL) { + error_code = EB_ERR_UNBOUND_APP; + goto failed; + } + + /* + * Check for `subbook_code'. + */ + if (subbook_code < 0 || appendix->subbook_count <= subbook_code) { + error_code = EB_ERR_NO_SUCH_APPSUB; + goto failed; + } + + /* + * Copy the directory name to `directory'. + */ + strcpy(directory, (appendix->subbooks + subbook_code)->directory_name); + + LOG(("out: eb_appendix_subbook_directory2(directory=%s) = %s", + directory, eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *directory = '\0'; + LOG(("out: eb_appendix_subbook_directory2() = %s", + eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Set the subbook `subbook_code' as the current subbook. + */ +EB_Error_Code +eb_set_appendix_subbook(EB_Appendix *appendix, EB_Subbook_Code subbook_code) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_set_appendix_subbook(appendix=%d, subbook=%d)", + (int)appendix->code, (int)subbook_code)); + + /* + * Check for the current status. + */ + if (appendix->path == NULL) { + error_code = EB_ERR_UNBOUND_APP; + goto failed; + } + + /* + * Check for `subbook_code'. + */ + if (subbook_code < 0 || appendix->subbook_count <= subbook_code) { + error_code = EB_ERR_NO_SUCH_APPSUB; + goto failed; + } + + /* + * If the current subbook is `subbook_code', return immediately. + * Otherwise close the current subbook and continue. + */ + if (appendix->subbook_current != NULL) { + if (appendix->subbook_current->code == subbook_code) + goto succeeded; + eb_unset_appendix_subbook(appendix); + } + + /* + * Disc type specific section. + */ + if (appendix->disc_code == EB_DISC_EB) + error_code = eb_set_appendix_subbook_eb(appendix, subbook_code); + else + error_code = eb_set_appendix_subbook_epwing(appendix, subbook_code); + + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Load the subbook. + */ + error_code = eb_load_appendix_subbook(appendix); + if (error_code != EB_SUCCESS) + goto failed; + + succeeded: + LOG(("out: eb_set_appendix_subbook() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + if (appendix->subbook_current != NULL) + zio_close(&appendix->subbook_current->zio); + appendix->subbook_current = NULL; + LOG(("out: eb_set_appendix_subbook() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * EB* specific section of eb_set_appendix_subbook(). + */ +static EB_Error_Code +eb_set_appendix_subbook_eb(EB_Appendix *appendix, EB_Subbook_Code subbook_code) +{ + EB_Error_Code error_code; + EB_Appendix_Subbook *subbook; + char appendix_path_name[EB_MAX_PATH_LENGTH + 1]; + Zio_Code zio_code; + + LOG(("in: eb_set_appendix_subbook_eb(appendix=%d, subbook=%d)", + (int)appendix->code, (int)subbook_code)); + + /* + * Set the current subbook. + */ + appendix->subbook_current = appendix->subbooks + subbook_code; + subbook = appendix->subbook_current; + + /* + * Open an appendix file. + */ + if (eb_find_file_name2(appendix->path, subbook->directory_name, + EB_FILE_NAME_APPENDIX, subbook->file_name) != EB_SUCCESS) { + error_code = EB_ERR_FAIL_OPEN_APP; + goto failed; + } + + eb_compose_path_name2(appendix->path, subbook->directory_name, + subbook->file_name, appendix_path_name); + eb_path_name_zio_code(appendix_path_name, ZIO_PLAIN, &zio_code); + + if (zio_open(&subbook->zio, appendix_path_name, zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_APP; + goto failed; + } + + LOG(("out: eb_set_appendix_subbook_eb() = %s", + eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_set_appendix_subbook_eb() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * EPWING specific section of eb_set_appendix_subbook(). + */ +static EB_Error_Code +eb_set_appendix_subbook_epwing(EB_Appendix *appendix, + EB_Subbook_Code subbook_code) +{ + EB_Error_Code error_code; + EB_Appendix_Subbook *subbook; + char appendix_path_name[EB_MAX_PATH_LENGTH + 1]; + Zio_Code zio_code; + + LOG(("in: eb_set_appendix_subbook_epwing(appendix=%d, subbook=%d)", + (int)appendix->code, (int)subbook_code)); + + /* + * Set the current subbook. + */ + appendix->subbook_current = appendix->subbooks + subbook_code; + subbook = appendix->subbook_current; + + zio_initialize(&subbook->zio); + + /* + * Adjust a directory name. + */ + strcpy(subbook->data_directory_name, EB_DIRECTORY_NAME_DATA); + eb_fix_directory_name2(appendix->path, subbook->directory_name, + subbook->data_directory_name); + + /* + * Open an appendix file. + */ + if (eb_find_file_name3(appendix->path, subbook->directory_name, + subbook->data_directory_name, EB_FILE_NAME_FUROKU, subbook->file_name) + != EB_SUCCESS) { + error_code = EB_ERR_FAIL_OPEN_APP; + goto failed; + } + + eb_compose_path_name3(appendix->path, subbook->directory_name, + subbook->data_directory_name, subbook->file_name, + appendix_path_name); + eb_path_name_zio_code(appendix_path_name, ZIO_PLAIN, &zio_code); + + if (zio_open(&subbook->zio, appendix_path_name, zio_code) < 0) { + subbook = NULL; + error_code = EB_ERR_FAIL_OPEN_APP; + goto failed; + } + + LOG(("out: eb_set_appendix_subbook_epwing() = %s", + eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_set_appendix_subbook_epwing() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Unset the current subbook. + */ +void +eb_unset_appendix_subbook(EB_Appendix *appendix) +{ + eb_lock(&appendix->lock); + LOG(("in: eb_unset_appendix_subbook(appendix=%d)", (int)appendix->code)); + + /* + * Close a file for the current subbook. + */ + if (appendix->subbook_current != NULL) { + zio_close(&appendix->subbook_current->zio); + appendix->subbook_current = NULL; + } + + LOG(("out: eb_unset_appendix_subbook()")); + eb_unlock(&appendix->lock); +} + + diff --git a/lib/ebu/ebu/appsub.lo b/lib/ebu/ebu/appsub.lo new file mode 100644 index 0000000..46752aa --- /dev/null +++ b/lib/ebu/ebu/appsub.lo @@ -0,0 +1,12 @@ +# appsub.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/appsub.o' + +# Name of the non-PIC object +non_pic_object='appsub.o' + diff --git a/lib/ebu/ebu/bcd.c b/lib/ebu/ebu/bcd.c new file mode 100644 index 0000000..0eed583 --- /dev/null +++ b/lib/ebu/ebu/bcd.c @@ -0,0 +1,99 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Get a BCD (binary coded decimal) packed integer with 2 bytes + * from an octet stream. + */ +unsigned +eb_bcd2(const char *stream) +{ + unsigned value; + const unsigned char *s = (const unsigned char *)stream; + + value = ((*(s ) >> 4) & 0x0f) * 1000; + value += ((*(s ) ) & 0x0f) * 100; + value += ((*(s + 1) >> 4) & 0x0f) * 10; + value += ((*(s + 1) ) & 0x0f); + + return value; +} + + +/* + * Get a BCD (binary coded decimal) packed integer with 4 bytes + * from an octet stream. + */ +unsigned +eb_bcd4(const char *stream) +{ + unsigned value; + const unsigned char *s = (const unsigned char *)stream; + + value = ((*(s ) >> 4) & 0x0f) * 10000000; + value += ((*(s ) ) & 0x0f) * 1000000; + value += ((*(s + 1) >> 4) & 0x0f) * 100000; + value += ((*(s + 1) ) & 0x0f) * 10000; + value += ((*(s + 2) >> 4) & 0x0f) * 1000; + value += ((*(s + 2) ) & 0x0f) * 100; + value += ((*(s + 3) >> 4) & 0x0f) * 10; + value += ((*(s + 3) ) & 0x0f); + + return value; +} + + +/* + * Get a BCD (binary coded decimal) packed integer with 6 bytes + * from an octet stream. + */ +unsigned +eb_bcd6(const char *stream) +{ + unsigned value; + const unsigned char *s = (const unsigned char *)stream; + + value = ((*(s + 1) ) & 0x0f); + value += ((*(s + 2) >> 4) & 0x0f) * 10; + value += ((*(s + 2) ) & 0x0f) * 100; + value += ((*(s + 3) >> 4) & 0x0f) * 1000; + value += ((*(s + 3) ) & 0x0f) * 10000; + value += ((*(s + 4) >> 4) & 0x0f) * 100000; + value += ((*(s + 4) ) & 0x0f) * 1000000; + value += ((*(s + 5) >> 4) & 0x0f) * 10000000; + value += ((*(s + 5) ) & 0x0f) * 100000000; + + return value; +} + + diff --git a/lib/ebu/ebu/bcd.lo b/lib/ebu/ebu/bcd.lo new file mode 100644 index 0000000..36caac5 --- /dev/null +++ b/lib/ebu/ebu/bcd.lo @@ -0,0 +1,12 @@ +# bcd.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bcd.o' + +# Name of the non-PIC object +non_pic_object='bcd.o' + diff --git a/lib/ebu/ebu/binary.c b/lib/ebu/ebu/binary.c new file mode 100644 index 0000000..a258e1c --- /dev/null +++ b/lib/ebu/ebu/binary.c @@ -0,0 +1,1404 @@ +/* -*- C -*- + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "binary.h" +#include "build-post.h" + +/* + * Unexported function. + */ +static EB_Error_Code eb_read_binary_generic(EB_Book *book, + size_t binary_max_length, char *binary, ssize_t *binary_length); +static EB_Error_Code eb_read_binary_wave(EB_Book *book, + size_t binary_max_length, char *binary, ssize_t *binary_length); +static EB_Error_Code eb_read_binary_mono_graphic(EB_Book *book, + size_t binary_max_length, char *binary, ssize_t *binary_length); +static EB_Error_Code eb_read_binary_gray_graphic(EB_Book *book, + size_t binary_max_length, char *binary, ssize_t *binary_length); + + +/* + * Initialize binary context of `book'. + */ +void +eb_initialize_binary_context(EB_Book *book) +{ + LOG(("in: eb_initialize_binary_context(book=%d)", (int)book->code)); + + book->binary_context.code = EB_BINARY_INVALID; + book->binary_context.zio = NULL; + book->binary_context.location = -1; + book->binary_context.size = 0; + book->binary_context.cache_length = 0; + book->binary_context.cache_offset = 0; + book->binary_context.width = 0; + + LOG(("out: eb_initialize_binary_context()")); +} + + +/* + * Finalize binary context of `book'. + */ +void +eb_finalize_binary_context(EB_Book *book) +{ + LOG(("in+out: eb_finalize_binary_context(book=%d)", (int)book->code)); + + /* nothing to be done */ +} + + +/* + * Reset binary context of `book'. + */ +void +eb_reset_binary_context(EB_Book *book) +{ + LOG(("in: eb_reset_binary_context(book=%d)", (int)book->code)); + + eb_initialize_binary_context(book); + + LOG(("out: eb_reset_binary_context()")); +} + + +/* + * Template of BMP preamble for 2 colors monochrome graphic. + */ +#define MONO_BMP_PREAMBLE_LENGTH 62 + +static const unsigned char mono_bmp_preamble[] = { + /* Type. */ + 'B', 'M', + + /* File size. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* Reserved. */ + 0x00, 0x00, 0x00, 0x00, + + /* Offset of bitmap bits part. */ + 0x3e, 0x00, 0x00, 0x00, + + /* Size of bitmap info part. */ + 0x28, 0x00, 0x00, 0x00, + + /* Width. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* Height. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* Planes. */ + 0x01, 0x00, + + /* Bits per pixels. */ + 0x01, 0x00, + + /* Compression mode. */ + 0x00, 0x00, 0x00, 0x00, + + /* Size of bitmap bits part. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* X Pixels per meter. */ + 0x6d, 0x0b, 0x00, 0x00, + + /* Y Pixels per meter. */ + 0x6d, 0x0b, 0x00, 0x00, + + /* Colors */ + 0x02, 0x00, 0x00, 0x00, + + /* Important colors */ + 0x02, 0x00, 0x00, 0x00, + + /* RGB quad of color 0 RGB quad of color 1 */ + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* + * Set monochrome bitmap picture as the current binary data. + */ +EB_Error_Code +eb_set_binary_mono_graphic(EB_Book *book, const EB_Position *position, + int width, int height) +{ + EB_Error_Code error_code; + EB_Binary_Context *context; + EB_Position real_position; + unsigned char *buffer_p; + size_t line_pad_length; + size_t data_size; + size_t file_size; + + eb_lock(&book->lock); + LOG(("in: eb_set_binary_mono_graphic(book=%d, position={%d,%d}, \ +width=%d, height=%d)", + (int)book->code, position->page, position->offset, width, height)); + + eb_reset_binary_context(book); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Current subbook must have a graphic file. + */ + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_SUCH_BINARY; + goto failed; + } + + /* + * If both width and height are 0, + * we get real width, height and position of the graphic data. + */ + if (position->page <= 0 || position->offset < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + if (width == 0 && height == 0) { + char buffer[22]; + + if (zio_lseek(&book->subbook_current->text_zio, + ((off_t) position->page - 1) * EB_SIZE_PAGE + position->offset, + SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + if (zio_read(&book->subbook_current->text_zio, buffer, 22) != 22) { + error_code = EB_ERR_FAIL_READ_BINARY; + goto failed; + } + if (eb_uint2(buffer) != 0x1f45 || eb_uint2(buffer + 4) != 0x1f31) { + error_code = EB_ERR_UNEXP_BINARY; + goto failed; + } + width = eb_bcd2(buffer + 8); + height = eb_bcd2(buffer + 10); + + if (eb_uint2(buffer + 12) == 0x1f51) { + real_position.page = eb_bcd4(buffer + 14); + real_position.offset = eb_bcd2(buffer + 18); + } else if (eb_uint2(buffer + 14) == 0x1f51) { + real_position.page = eb_bcd4(buffer + 16); + real_position.offset = eb_bcd2(buffer + 20); + } else { + error_code = EB_ERR_UNEXP_BINARY; + goto failed; + } + + position = &real_position; + } + + if (width <= 0 || height <= 0) { + error_code = EB_ERR_NO_SUCH_BINARY; + goto failed; + } + + /* + * BMP requires that the number of bytes in a line must be multiple + * of 4. If not, 0x00 must be padded to end of each line. + * `line_pad_length' (0...3) is the number of bytes to be padded. + * + * In case of EB_BINARY_MONO_GRAPHIC, a pixel is represented with + * a bit. + */ + if (width % 32 == 0) + line_pad_length = 0; + else if (width % 32 <= 8) + line_pad_length = 3; + else if (width % 32 <= 16) + line_pad_length = 2; + else if (width % 32 <= 24) + line_pad_length = 1; + else + line_pad_length = 0; + + data_size = (width / 8 + line_pad_length) * height; + file_size = data_size + MONO_BMP_PREAMBLE_LENGTH; + + /* + * Set binary context. + */ + context = &book->binary_context; + context->code = EB_BINARY_MONO_GRAPHIC; + context->zio = &book->subbook_current->text_zio; + context->location = ((off_t) position->page - 1) * EB_SIZE_PAGE + + position->offset + (width + 7) / 8 * (height - 1); + context->size = (width + 7) / 8 * height; + context->offset = 0; + context->cache_offset = 0; + context->width = width; + + /* + * Set BMP preamble. + */ + context->cache_length = MONO_BMP_PREAMBLE_LENGTH; + memcpy(context->cache_buffer, mono_bmp_preamble, MONO_BMP_PREAMBLE_LENGTH); + + buffer_p = (unsigned char *)context->cache_buffer + 2; + *buffer_p++ = file_size & 0xff; + *buffer_p++ = (file_size >> 8) & 0xff; + *buffer_p++ = (file_size >> 16) & 0xff; + *buffer_p++ = (file_size >> 24) & 0xff; + + buffer_p = (unsigned char *)context->cache_buffer + 18; + *buffer_p++ = width & 0xff; + *buffer_p++ = (width >> 8) & 0xff; + *buffer_p++ = (width >> 16) & 0xff; + *buffer_p++ = (width >> 24) & 0xff; + + *buffer_p++ = height & 0xff; + *buffer_p++ = (height >> 8) & 0xff; + *buffer_p++ = (height >> 16) & 0xff; + *buffer_p++ = (height >> 24) & 0xff; + + buffer_p = (unsigned char *)context->cache_buffer + 34; + *buffer_p++ = data_size & 0xff; + *buffer_p++ = (data_size >> 8) & 0xff; + *buffer_p++ = (data_size >> 16) & 0xff; + *buffer_p++ = (data_size >> 24) & 0xff; + + /* + * Seek graphic file. + */ + if (zio_lseek(context->zio, context->location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + LOG(("out: eb_set_binary_mono_graphic() = %s", + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_binary_context(book); + LOG(("out: eb_set_binary_mono_graphic() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Template of BMP preamble for gray scale graphic. + */ +#define GRAY_BMP_PREAMBLE_LENGTH 118 + +static const unsigned char gray_bmp_preamble[] = { + /* Type. */ + 'B', 'M', + + /* File size. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* Reserved. */ + 0x00, 0x00, 0x00, 0x00, + + /* Offset of bitmap bits part. */ + 0x3e, 0x00, 0x00, 0x00, + + /* Size of bitmap info part. */ + 0x28, 0x00, 0x00, 0x00, + + /* Width. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* Height. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* Planes. */ + 0x01, 0x00, + + /* Bits per pixels. */ + 0x04, 0x00, + + /* Compression mode. */ + 0x00, 0x00, 0x00, 0x00, + + /* Size of bitmap bits part. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* X Pixels per meter. */ + 0x6d, 0x0b, 0x00, 0x00, + + /* Y Pixels per meter. */ + 0x6d, 0x0b, 0x00, 0x00, + + /* Colors */ + 0x10, 0x00, 0x00, 0x00, + + /* Important colors */ + 0x10, 0x00, 0x00, 0x00, + + /* RGB quad of color 0x0 RGB quad of color 0x1 */ + 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x00, + + /* RGB quad of color 0x2 RGB quad of color 0x3 */ + 0x22, 0x22, 0x22, 0x00, 0x33, 0x33, 0x33, 0x00, + + /* RGB quad of color 0x4 RGB quad of color 0x5 */ + 0x44, 0x44, 0x44, 0x00, 0x55, 0x55, 0x55, 0x00, + + /* RGB quad of color 0x6 RGB quad of color 0x7 */ + 0x66, 0x66, 0x66, 0x00, 0x77, 0x77, 0x77, 0x00, + + /* RGB quad of color 0x8 RGB quad of color 0x9 */ + 0x88, 0x88, 0x88, 0x00, 0x99, 0x99, 0x99, 0x00, + + /* RGB quad of color 0xa RGB quad of color 0xb */ + 0xaa, 0xaa, 0xaa, 0x00, 0xbb, 0xbb, 0xbb, 0x00, + + /* RGB quad of color 0xc RGB quad of color 0xd */ + 0xcc, 0xcc, 0xcc, 0x00, 0xdd, 0xdd, 0xdd, 0x00, + + /* RGB quad of color 0xe RGB quad of color 0xf */ + 0xee, 0xee, 0xee, 0x00, 0xff, 0xff, 0xff, 0x00, +}; + +/* + * Set monochrome bitmap picture as the current binary data. + */ +EB_Error_Code +eb_set_binary_gray_graphic(EB_Book *book, const EB_Position *position, + int width, int height) +{ + EB_Error_Code error_code; + EB_Binary_Context *context; + EB_Position real_position; + unsigned char *buffer_p; + size_t line_pad_length; + size_t data_size; + size_t file_size; + + eb_lock(&book->lock); + LOG(("in: eb_set_binary_gray_graphic(book=%d, position={%d,%d}, \ +width=%d, height=%d)", + (int)book->code, position->page, position->offset, width, height)); + + eb_reset_binary_context(book); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Current subbook must have a graphic file. + */ + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_SUCH_BINARY; + goto failed; + } + + /* + * If both width and height are 0, + * we get real width, height and position of the graphic data. + */ + if (position->page <= 0 || position->offset < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + if (width == 0 && height == 0) { + char buffer[22]; + + if (zio_lseek(&book->subbook_current->text_zio, + ((off_t) position->page - 1) * EB_SIZE_PAGE + position->offset, + SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + if (zio_read(&book->subbook_current->text_zio, buffer, 22) != 22) { + error_code = EB_ERR_FAIL_READ_BINARY; + goto failed; + } + if (eb_uint2(buffer) != 0x1f45 + || eb_uint2(buffer + 4) != 0x1f31 + || eb_uint2(buffer + 12) != 0x1f51 + || eb_uint2(buffer + 20) != 0x1f65) { + error_code = EB_ERR_UNEXP_BINARY; + goto failed; + } + + width = eb_bcd2(buffer + 8); + height = eb_bcd2(buffer + 10); + real_position.page = eb_bcd4(buffer + 14); + real_position.offset = eb_bcd2(buffer + 18); + position = &real_position; + } + + if (width <= 0 || height <= 0) { + error_code = EB_ERR_NO_SUCH_BINARY; + goto failed; + } + + /* + * BMP requires that the number of bytes in a line must be multiple + * of 4. If not, 0x00 must be padded to end of each line. + * `line_pad_length' (0...3) is the number of bytes to be padded. + * + * In case of EB_BINARY_GRAY_GRAPHIC, a pixel is represented with + * 4 bits. + */ + if (width % 8 == 0) + line_pad_length = 0; + else if (width % 8 <= 2) + line_pad_length = 3; + else if (width % 8 <= 4) + line_pad_length = 2; + else if (width % 8 <= 6) + line_pad_length = 1; + else + line_pad_length = 0; + + data_size = (width / 2 + line_pad_length) * height; + file_size = data_size + MONO_BMP_PREAMBLE_LENGTH; + + /* + * Set binary context. + */ + context = &book->binary_context; + + context->code = EB_BINARY_GRAY_GRAPHIC; + context->zio = &book->subbook_current->text_zio; + context->location = ((off_t) position->page - 1) * EB_SIZE_PAGE + + position->offset + (width + 1) / 2 * (height - 1); + context->size = (width + 1) / 2 * height; + context->offset = 0; + context->cache_offset = 0; + context->width = width; + + /* + * Set BMP preamble. + */ + context->cache_length = GRAY_BMP_PREAMBLE_LENGTH; + memcpy(context->cache_buffer, gray_bmp_preamble, + GRAY_BMP_PREAMBLE_LENGTH); + + buffer_p = (unsigned char *)context->cache_buffer + 2; + *buffer_p++ = file_size & 0xff; + *buffer_p++ = (file_size >> 8) & 0xff; + *buffer_p++ = (file_size >> 16) & 0xff; + *buffer_p++ = (file_size >> 24) & 0xff; + + buffer_p = (unsigned char *)context->cache_buffer + 18; + *buffer_p++ = width & 0xff; + *buffer_p++ = (width >> 8) & 0xff; + *buffer_p++ = (width >> 16) & 0xff; + *buffer_p++ = (width >> 24) & 0xff; + + *buffer_p++ = height & 0xff; + *buffer_p++ = (height >> 8) & 0xff; + *buffer_p++ = (height >> 16) & 0xff; + *buffer_p++ = (height >> 24) & 0xff; + + buffer_p = (unsigned char *)context->cache_buffer + 34; + *buffer_p++ = data_size & 0xff; + *buffer_p++ = (data_size >> 8) & 0xff; + *buffer_p++ = (data_size >> 16) & 0xff; + *buffer_p++ = (data_size >> 24) & 0xff; + + /* + * Seek graphic file. + */ + if (zio_lseek(context->zio, context->location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + LOG(("out: eb_set_binary_gray_graphic() = %s", + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_binary_context(book); + LOG(("out: eb_set_binary_gray_graphic() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Set WAVE sound as the current binary data. + */ +EB_Error_Code +eb_set_binary_wave(EB_Book *book, const EB_Position *start_position, + const EB_Position *end_position) +{ + EB_Error_Code error_code; + EB_Binary_Context *context; + off_t start_location; + off_t end_location; + char temporary_buffer[4]; + + eb_lock(&book->lock); + LOG(("in: eb_set_binary_wave(book=%d, start_position={%d,%d}, \ +end_position={%d,%d})", + (int)book->code, start_position->page, start_position->offset, + end_position->page, end_position->offset)); + + eb_reset_binary_context(book); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Current subbook must have a sound file. + */ + if (zio_file(&book->subbook_current->sound_zio) < 0) { + error_code = EB_ERR_NO_SUCH_BINARY; + goto failed; + } + + /* + * Set binary context. + */ + if (start_position->page <= 0 || start_position->offset < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + if (end_position->page <= 0 || end_position->offset < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + start_location = ((off_t) start_position->page - 1) * EB_SIZE_PAGE + + start_position->offset; + end_location = ((off_t) end_position->page - 1) * EB_SIZE_PAGE + + end_position->offset; + + context = &book->binary_context; + + context->code = EB_BINARY_WAVE; + context->zio = &book->subbook_current->sound_zio; + context->location = start_location; + if (start_location < end_location) + context->size = end_location - start_location + 1; + else { + error_code = EB_ERR_UNEXP_BINARY; + goto failed; + } + context->offset = 0; + + /* + * Read 4bytes from the sound file to check whether the sound + * data contains a header part or not. + * + * If the read data is "fmt ", the wave data has a header part. + * Otherwise, we must read a header in another location. + * + * The wave data consists of: + * + * "RIFF" wave-size(4bytes) "WAVE" header-fragment(28bytes) + * data-part-size(4bytes) data + * + * wave-size = "WAVE" + header-fragment + data-part-size + data + * = 4 + 28 + 4 + data + * = 36 + data + * data-part-size = length(data) + */ + if (zio_lseek(context->zio, context->location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + if (zio_read(context->zio, temporary_buffer, 4) != 4) { + error_code = EB_ERR_FAIL_READ_BINARY; + goto failed; + } + + if (memcmp(temporary_buffer, "fmt ", 4) == 0) { + memcpy(context->cache_buffer + 12, temporary_buffer, 4); + if (zio_read(context->zio, context->cache_buffer + 16, 28) != 28) { + error_code = EB_ERR_FAIL_READ_BINARY; + goto failed; + } + if (context->size >= 32) + context->size -= 32; + else + context->size = 0; + } else { + if (zio_lseek(context->zio, + ((off_t) book->subbook_current->sound.start_page - 1) + * EB_SIZE_PAGE + 32, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + if (zio_read(context->zio, context->cache_buffer + 12, 28) != 28) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + *(unsigned char *)(context->cache_buffer + 40) + = (context->size) & 0xff; + *(unsigned char *)(context->cache_buffer + 41) + = (context->size >> 8) & 0xff; + *(unsigned char *)(context->cache_buffer + 42) + = (context->size >> 16) & 0xff; + *(unsigned char *)(context->cache_buffer + 43) + = (context->size >> 24) & 0xff; + + + /* + * Seek sound file, again. + */ + if (zio_lseek(context->zio, context->location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + } + context->cache_length = 44; + + /* + * Read and compose a WAVE header. + */ + memcpy(context->cache_buffer, "RIFF", 4); + + *(unsigned char *)(context->cache_buffer + 4) + = (context->size + 36) & 0xff; + *(unsigned char *)(context->cache_buffer + 5) + = ((context->size + 36) >> 8) & 0xff; + *(unsigned char *)(context->cache_buffer + 6) + = ((context->size + 36) >> 16) & 0xff; + *(unsigned char *)(context->cache_buffer + 7) + = ((context->size + 36) >> 24) & 0xff; + + memcpy(context->cache_buffer + 8, "WAVE", 4); + + LOG(("out: eb_set_binary_wave() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_binary_context(book); + LOG(("out: eb_set_binary_wave() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Length of the color graphic header. + */ +#define EB_COLOR_GRAPHIC_HEADER_LENGTH 8 + +/* + * Set color graphic (BMP or JPEG) as the current binary data. + */ +EB_Error_Code +eb_set_binary_color_graphic(EB_Book *book, const EB_Position *position) +{ + EB_Error_Code error_code; + EB_Binary_Context *context; + char buffer[EB_COLOR_GRAPHIC_HEADER_LENGTH]; + + eb_lock(&book->lock); + LOG(("in: eb_set_binary_color_graphic(book=%d, position={%d,%d})", + (int)book->code, position->page, position->offset)); + + eb_reset_binary_context(book); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Current subbook must have a graphic file. + */ + if (zio_file(&book->subbook_current->graphic_zio) < 0) { + error_code = EB_ERR_NO_SUCH_BINARY; + goto failed; + } + + /* + * Set binary context. + */ + if (position->page <= 0 || position->offset < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + context = &book->binary_context; + context->code = EB_BINARY_COLOR_GRAPHIC; + context->zio = &book->subbook_current->graphic_zio; + context->location = ((off_t) position->page - 1) * EB_SIZE_PAGE + + position->offset; + context->offset = 0; + context->cache_length = 0; + context->cache_offset = 0; + + /* + * Seek graphic file. + */ + if (zio_lseek(context->zio, context->location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + + /* + * Read header of the graphic data. + * Note that EB* JPEG file lacks the header. + */ + if (zio_read(context->zio, buffer, EB_COLOR_GRAPHIC_HEADER_LENGTH) + != EB_COLOR_GRAPHIC_HEADER_LENGTH) { + error_code = EB_ERR_FAIL_READ_BINARY; + goto failed; + } + + if (memcmp(buffer, "data", 4) == 0) { + context->size = eb_uint4_le(buffer + 4); + context->location += EB_COLOR_GRAPHIC_HEADER_LENGTH; + } else { + context->size = 0; + if (zio_lseek(context->zio, context->location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + } + + LOG(("out: eb_set_binary_color_graphic() = %s", + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_binary_context(book); + LOG(("out: eb_set_binary_color_graphic() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Set MPEG movie as the current binary data. + */ +EB_Error_Code +eb_set_binary_mpeg(EB_Book *book, const unsigned int *argv) +{ + /* + * `movie_file_name' is base name, and `movie_path_name' is absolute + * path of the movie. + */ + char movie_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + char movie_path_name[EB_MAX_PATH_LENGTH + 1]; + EB_Error_Code error_code; + EB_Subbook *subbook; + Zio_Code zio_code; + + eb_lock(&book->lock); + LOG(("in: eb_set_binary_mpeg(book=%d)", (int)book->code)); + + eb_reset_binary_context(book); + + /* + * Current subbook must have been set. + */ + subbook = book->subbook_current; + if (subbook == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Open the movie file and set binary context. + */ + if (eb_compose_movie_file_name(argv, movie_file_name) != EB_SUCCESS) { + error_code = EB_ERR_NO_SUCH_BINARY; + goto failed; + } + LOG(("aux: eb_set_binary_mpeg(): movie_file_name=%s", movie_file_name)); + + if (eb_find_file_name3(book->path, subbook->directory_name, + subbook->movie_directory_name, movie_file_name, movie_file_name) + != EB_SUCCESS) { + error_code = EB_ERR_NO_SUCH_BINARY; + goto failed; + } + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->movie_directory_name, movie_file_name, movie_path_name); + eb_path_name_zio_code(movie_path_name, ZIO_PLAIN, &zio_code); + + if (zio_open(&subbook->movie_zio, movie_path_name, zio_code) < 0) { + subbook = NULL; + error_code = EB_ERR_FAIL_OPEN_BINARY; + goto failed; + } + + book->binary_context.code = EB_BINARY_MPEG; + book->binary_context.zio = &book->subbook_current->movie_zio; + book->binary_context.location = 0; + book->binary_context.size = 0; + book->binary_context.offset = 0; + book->binary_context.cache_length = 0; + book->binary_context.cache_offset = 0; + + LOG(("out: eb_set_binary_mpeg() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_binary_context(book); + LOG(("out: eb_set_binary_mpeg() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Read binary data. + */ +EB_Error_Code +eb_read_binary(book, binary_max_length, binary, binary_length) + EB_Book *book; + size_t binary_max_length; + char *binary; + ssize_t *binary_length; + +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_read_binary(book=%d, binary_max_length=%ld)", + (int)book->code, (long)binary_max_length)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Return immediately if `binary_max_length' is 0. + */ + *binary_length = 0; + + switch (book->binary_context.code) { + case EB_BINARY_COLOR_GRAPHIC: + case EB_BINARY_MPEG: + error_code = eb_read_binary_generic(book, binary_max_length, binary, + binary_length); + break; + case EB_BINARY_WAVE: + error_code = eb_read_binary_wave(book, binary_max_length, + binary, binary_length); + break; + case EB_BINARY_MONO_GRAPHIC: + error_code = eb_read_binary_mono_graphic(book, binary_max_length, + binary, binary_length); + break; + case EB_BINARY_GRAY_GRAPHIC: + error_code = eb_read_binary_gray_graphic(book, binary_max_length, + binary, binary_length); + break; + default: + error_code = EB_ERR_NO_CUR_BINARY; + goto failed; + } + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_read_binary(binary_length=%ld) = %s", (long)*binary_length, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *binary_length = -1; + eb_reset_binary_context(book); + LOG(("out: eb_read_binary() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Read generic binary data. + * This function is used for reading JPEG or BMP picture, and data part + * of WAVE sound. + */ +static EB_Error_Code +eb_read_binary_generic(EB_Book *book, size_t binary_max_length, + char *binary, ssize_t *binary_length) +{ + EB_Error_Code error_code; + EB_Binary_Context *context; + char *binary_p = binary; + size_t read_length = 0; + ssize_t read_result; + + LOG(("in: eb_read_binary_generic(book=%d, binary_max_length=%ld)", + (int)book->code, (long)binary_max_length)); + + *binary_length = 0; + context = &book->binary_context; + + /* + * Return immediately if `binary_max_length' is 0. + */ + if (binary_max_length == 0) + goto succeeded; + + /* + * Read binary data if it is remained. + * If context->size is 0, the binary data size is unknown. + */ + if (0 < context->size && context->size <= context->offset) + goto succeeded; + + if (context->size == 0) + read_length = binary_max_length - *binary_length; + else if (binary_max_length - *binary_length + < context->size - context->offset) + read_length = binary_max_length - *binary_length; + else + read_length = context->size - context->offset; + + read_result = zio_read(context->zio, binary_p, read_length); + if ((0 < context->size && read_result != read_length) || read_result < 0) { + error_code = EB_ERR_FAIL_READ_BINARY; + goto failed; + } + + *binary_length += read_result; + context->offset += read_result; + + succeeded: + LOG(("out: eb_read_binary_generic(binary_length=%ld) = %s", + (long)*binary_length, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_read_binary_generic() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Read WAVE sound data. + */ +static EB_Error_Code +eb_read_binary_wave(EB_Book *book, size_t binary_max_length, char *binary, + ssize_t *binary_length) +{ + EB_Error_Code error_code; + EB_Binary_Context *context; + char *binary_p = binary; + size_t copy_length = 0; + + LOG(("in: eb_read_binary_wave(book=%d, binary_max_length=%ld)", + (int)book->code, (long)binary_max_length)); + + *binary_length = 0; + context = &book->binary_context; + + /* + * Return immediately if `binary_max_length' is 0. + */ + if (binary_max_length == 0) + goto succeeded; + + /* + * Copy cached data (header part) to `binary' if exists. + */ + if (0 < context->cache_length) { + if (binary_max_length < context->cache_length - context->cache_offset) + copy_length = binary_max_length; + else + copy_length = context->cache_length - context->cache_offset; + + memcpy(binary_p, context->cache_buffer + context->cache_offset, + copy_length); + binary_p += copy_length; + context->cache_offset += copy_length; + + if (context->cache_length <= context->cache_offset) + context->cache_length = 0; + + if (binary_max_length <= *binary_length) + goto succeeded; + } + + error_code = eb_read_binary_generic(book, binary_max_length - copy_length, + binary_p, binary_length); + if (error_code !=EB_SUCCESS) + goto failed; + *binary_length += copy_length; + + succeeded: + LOG(("out: eb_read_binary_wave(binary_length=%ld) = %s", + (long)*binary_length, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_read_binary_wave() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Read monochrome graphic data. + * The function also convert the graphic data to BMP. + */ +static EB_Error_Code +eb_read_binary_mono_graphic(EB_Book *book, size_t binary_max_length, + char *binary, ssize_t *binary_length) +{ + EB_Error_Code error_code; + EB_Binary_Context *context; + unsigned char *binary_p = (unsigned char *)binary; + size_t copy_length = 0; + size_t read_length = 0; + size_t line_length; + size_t line_pad_length; + + LOG(("in: eb_read_binary_mono_graphic(book=%d, binary_max_length=%ld)", + (int)book->code, (long)binary_max_length)); + + *binary_length = 0; + context = &book->binary_context; + + line_length = (context->width + 7) / 8; + + if (context->width % 32 == 0) + line_pad_length = 0; + else if (context->width % 32 <= 8) + line_pad_length = 3; + else if (context->width % 32 <= 16) + line_pad_length = 2; + else if (context->width % 32 <= 24) + line_pad_length = 1; + else + line_pad_length = 0; + + /* + * Return immediately if `binary_max_length' is 0. + */ + if (binary_max_length == 0) + goto succeeded; + + for (;;) { + /* + * Copy cached data to `binary' if exists. + */ + if (0 < context->cache_length) { + if (binary_max_length - *binary_length + < context->cache_length - context->cache_offset) + copy_length = binary_max_length - *binary_length; + else + copy_length = context->cache_length - context->cache_offset; + + memcpy(binary_p, context->cache_buffer + context->cache_offset, + copy_length); + binary_p += copy_length; + *binary_length += copy_length; + context->cache_offset += copy_length; + + if (context->cache_length <= context->cache_offset) + context->cache_length = 0; + + if (binary_max_length <= *binary_length) + goto succeeded; + } + + /* + * Read binary data if it is remained. + * If padding is needed, read each line. + */ + read_length = line_length - context->offset % line_length; + if (context->size - context->offset < read_length) + read_length = context->size - context->offset; + if (binary_max_length - *binary_length < read_length) + read_length = binary_max_length - *binary_length; + if (read_length == 0) + goto succeeded; + + /* + * Read binary data. + */ + if (context->offset != 0 + && context->offset % line_length == 0 + && zio_lseek(context->zio, (off_t) line_length * -2, SEEK_CUR) + < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + if (zio_read(context->zio, (char *)binary_p, read_length) + != read_length) { + error_code = EB_ERR_FAIL_READ_BINARY; + goto failed; + } + + *binary_length += read_length; + context->offset += read_length; + binary_p += read_length; + + /* + * Pad 0x00 to BMP if needed. + */ + if (context->offset % line_length == 0) { + if (0 < line_pad_length) { + if (binary_max_length - *binary_length < line_pad_length) { + memset(context->cache_buffer, 0, line_pad_length); + context->cache_length = line_pad_length; + context->cache_offset = 0; + } else { + memset(binary_p, 0, line_pad_length); + binary_p += line_pad_length; + *binary_length += line_pad_length; + } + } + } + } + + succeeded: + LOG(("out: eb_read_binary_mono_graphic(binary_length=%ld) = %s", + (long)*binary_length, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_read_binary_mono_graphic() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Read gray scale graphic data. + * The function also convert the graphic data to BMP. + */ +static EB_Error_Code +eb_read_binary_gray_graphic(EB_Book *book, size_t binary_max_length, + char *binary, ssize_t *binary_length) +{ + EB_Error_Code error_code; + EB_Binary_Context *context; + unsigned char *binary_p = (unsigned char *)binary; + size_t copy_length = 0; + size_t read_length = 0; + size_t line_length; + size_t line_pad_length; + + LOG(("in: eb_read_binary_gray_graphic(book=%d, binary_max_length=%ld)", + (int)book->code, (long)binary_max_length)); + + *binary_length = 0; + context = &book->binary_context; + + line_length = (context->width + 1) / 2; + + if (context->width % 8 == 0) + line_pad_length = 0; + else if (context->width % 8 <= 2) + line_pad_length = 3; + else if (context->width % 8 <= 4) + line_pad_length = 2; + else if (context->width % 8 <= 6) + line_pad_length = 1; + else + line_pad_length = 0; + + /* + * Return immediately if `binary_max_length' is 0. + */ + if (binary_max_length == 0) + goto succeeded; + + for (;;) { + /* + * Copy cached data to `binary' if exists. + */ + if (0 < context->cache_length) { + if (binary_max_length - *binary_length + < context->cache_length - context->cache_offset) + copy_length = binary_max_length - *binary_length; + else + copy_length = context->cache_length - context->cache_offset; + + memcpy(binary_p, context->cache_buffer + context->cache_offset, + copy_length); + binary_p += copy_length; + *binary_length += copy_length; + context->cache_offset += copy_length; + + if (context->cache_length <= context->cache_offset) + context->cache_length = 0; + + if (binary_max_length <= *binary_length) + goto succeeded; + } + + /* + * Read binary data if it is remained. + * If padding is needed, read each line. + */ + read_length = line_length - context->offset % line_length; + if (context->size - context->offset < read_length) + read_length = context->size - context->offset; + if (binary_max_length - *binary_length < read_length) + read_length = binary_max_length - *binary_length; + if (read_length == 0) + goto succeeded; + + /* + * Read binary data. + */ + if (context->offset != 0 + && context->offset % line_length == 0 + && zio_lseek(context->zio, (off_t) line_length * -2, SEEK_CUR) + < 0) { + error_code = EB_ERR_FAIL_SEEK_BINARY; + goto failed; + } + if (zio_read(context->zio, (char *)binary_p, read_length) + != read_length) { + error_code = EB_ERR_FAIL_READ_BINARY; + goto failed; + } + + *binary_length += read_length; + context->offset += read_length; + binary_p += read_length; + + /* + * Pad 0x00 to BMP if needed. + */ + if (context->offset % line_length == 0) { + if (0 < line_pad_length) { + if (binary_max_length - *binary_length < line_pad_length) { + memset(context->cache_buffer, 0, line_pad_length); + context->cache_length = line_pad_length; + context->cache_offset = 0; + } else { + memset(binary_p, 0, line_pad_length); + binary_p += line_pad_length; + *binary_length += line_pad_length; + } + } + } + } + + succeeded: + LOG(("out: eb_read_binary_gray_graphic(binary_length=%ld) = %s", + (long)*binary_length, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_read_binary_gray_graphic() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Unset current binary. + */ +void +eb_unset_binary(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_unset_binary(book=%d)", (int)book->code)); + + eb_reset_binary_context(book); + + LOG(("out: eb_unset_binary()")); + eb_unlock(&book->lock); +} + + diff --git a/lib/ebu/ebu/binary.h b/lib/ebu/ebu/binary.h new file mode 100644 index 0000000..dfd5447 --- /dev/null +++ b/lib/ebu/ebu/binary.h @@ -0,0 +1,73 @@ +/* -*- C -*- + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_BINARY_H +#define EB_BINARY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifdef EB_BUILD_LIBRARY +#include "defs.h" +#else +#include +#endif + +/* + * Function declarations. + */ +/* binary.c */ +EB_Error_Code eb_set_binary_mono_graphic(EB_Book *book, + const EB_Position *position, int width, int height); +EB_Error_Code eb_set_binary_gray_graphic(EB_Book *book, + const EB_Position *position, int width, int height); +EB_Error_Code eb_set_binary_wave(EB_Book *book, + const EB_Position *start_position, const EB_Position *end_position); +EB_Error_Code eb_set_binary_color_graphic(EB_Book *book, + const EB_Position *position); +EB_Error_Code eb_set_binary_mpeg(EB_Book *book, const unsigned int *argv); +EB_Error_Code eb_read_binary(EB_Book *book, size_t binary_max_length, + char *binary, ssize_t *binary_length); +void eb_unset_binary(EB_Book *book); + +/* filename.c */ +EB_Error_Code eb_compose_movie_file_name(const unsigned int *argv, + char *composed_file_name); +EB_Error_Code eb_compose_movie_path_name(EB_Book *book, + const unsigned int *argv, char *composed_path_name); +EB_Error_Code eb_decompose_movie_file_name(unsigned int *argv, + const char *composed_file_name); + +#ifdef __cplusplus +} +#endif + +#endif /* not EB_BINARY_H */ diff --git a/lib/ebu/ebu/binary.lo b/lib/ebu/ebu/binary.lo new file mode 100644 index 0000000..8f2c6e5 --- /dev/null +++ b/lib/ebu/ebu/binary.lo @@ -0,0 +1,12 @@ +# binary.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/binary.o' + +# Name of the non-PIC object +non_pic_object='binary.o' + diff --git a/lib/ebu/ebu/bitmap.c b/lib/ebu/ebu/bitmap.c new file mode 100644 index 0000000..b0f55f9 --- /dev/null +++ b/lib/ebu/ebu/bitmap.c @@ -0,0 +1,1400 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "font.h" +#include "build-post.h" + +#ifdef ENABLE_LIBDEFLATE +#include +#else +#include +#endif + +/* + * Unexported functions. + */ +static unsigned long png_crc(const char *buf, size_t len); +static int png_compress(const char *src, int width, int height, char *dest, + size_t *dest_len); + + +/* + * Return required buffer size for a narrow font character converted + * to XBM image format. + */ +EB_Error_Code +eb_narrow_font_xbm_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_narrow_font_xbm_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_NARROW_FONT_16_XBM; + break; + case EB_FONT_24: + *size = EB_SIZE_NARROW_FONT_24_XBM; + break; + case EB_FONT_30: + *size = EB_SIZE_NARROW_FONT_30_XBM; + break; + case EB_FONT_48: + *size = EB_SIZE_NARROW_FONT_48_XBM; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_narrow_font_xbm_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_narrow_font_xbm_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return required buffer size for a narrow font character converted + * to XPM image format. + */ +EB_Error_Code +eb_narrow_font_xpm_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_narrow_font_xpm_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_NARROW_FONT_16_XPM; + break; + case EB_FONT_24: + *size = EB_SIZE_NARROW_FONT_24_XPM; + break; + case EB_FONT_30: + *size = EB_SIZE_NARROW_FONT_30_XPM; + break; + case EB_FONT_48: + *size = EB_SIZE_NARROW_FONT_48_XPM; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_narrow_font_xpm_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_narrow_font_xpm_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return required buffer size for a narrow font character converted + * to GIF image format. + */ +EB_Error_Code +eb_narrow_font_gif_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_narrow_font_gif_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_NARROW_FONT_16_GIF; + break; + case EB_FONT_24: + *size = EB_SIZE_NARROW_FONT_24_GIF; + break; + case EB_FONT_30: + *size = EB_SIZE_NARROW_FONT_30_GIF; + break; + case EB_FONT_48: + *size = EB_SIZE_NARROW_FONT_48_GIF; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_narrow_font_gif_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_narrow_font_gif_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return required buffer size for a narrow font character converted + * to BMP image format. + */ +EB_Error_Code +eb_narrow_font_bmp_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_narrow_font_bmp_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_NARROW_FONT_16_BMP; + break; + case EB_FONT_24: + *size = EB_SIZE_NARROW_FONT_24_BMP; + break; + case EB_FONT_30: + *size = EB_SIZE_NARROW_FONT_30_BMP; + break; + case EB_FONT_48: + *size = EB_SIZE_NARROW_FONT_48_BMP; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_narrow_font_bmp_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_narrow_font_bmp_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return required buffer size for a narrow font character converted + * to PNG image format. + */ +EB_Error_Code +eb_narrow_font_png_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_narrow_font_png_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_NARROW_FONT_16_PNG; + break; + case EB_FONT_24: + *size = EB_SIZE_NARROW_FONT_24_PNG; + break; + case EB_FONT_30: + *size = EB_SIZE_NARROW_FONT_30_PNG; + break; + case EB_FONT_48: + *size = EB_SIZE_NARROW_FONT_48_PNG; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_narrow_font_png_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_narrow_font_png_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return required buffer size for a wide font character converted + * to XBM image format. + */ +EB_Error_Code +eb_wide_font_xbm_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_wide_font_xbm_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_WIDE_FONT_16_XBM; + break; + case EB_FONT_24: + *size = EB_SIZE_WIDE_FONT_24_XBM; + break; + case EB_FONT_30: + *size = EB_SIZE_WIDE_FONT_30_XBM; + break; + case EB_FONT_48: + *size = EB_SIZE_WIDE_FONT_48_XBM; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_wide_font_xbm_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_wide_font_xbm_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return required buffer size for a wide font character converted + * to XPM image format. + */ +EB_Error_Code +eb_wide_font_xpm_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_wide_font_xpm_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_WIDE_FONT_16_XPM; + break; + case EB_FONT_24: + *size = EB_SIZE_WIDE_FONT_24_XPM; + break; + case EB_FONT_30: + *size = EB_SIZE_WIDE_FONT_30_XPM; + break; + case EB_FONT_48: + *size = EB_SIZE_WIDE_FONT_48_XPM; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_wide_font_xpm_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_wide_font_xpm_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return required buffer size for a wide font character converted + * to GIF image format. + */ +EB_Error_Code +eb_wide_font_gif_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_wide_font_gif_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_WIDE_FONT_16_GIF; + break; + case EB_FONT_24: + *size = EB_SIZE_WIDE_FONT_24_GIF; + break; + case EB_FONT_30: + *size = EB_SIZE_WIDE_FONT_30_GIF; + break; + case EB_FONT_48: + *size = EB_SIZE_WIDE_FONT_48_GIF; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_wide_font_gif_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_wide_font_gif_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return required buffer size for a wide font character converted + * to BMP image format. + */ +EB_Error_Code +eb_wide_font_bmp_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_wide_font_bmp_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_WIDE_FONT_16_BMP; + break; + case EB_FONT_24: + *size = EB_SIZE_WIDE_FONT_24_BMP; + break; + case EB_FONT_30: + *size = EB_SIZE_WIDE_FONT_30_BMP; + break; + case EB_FONT_48: + *size = EB_SIZE_WIDE_FONT_48_BMP; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_wide_font_bmp_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_wide_font_bmp_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return required buffer size for a wide font character converted + * to PNG image format. + */ +EB_Error_Code +eb_wide_font_png_size(EB_Font_Code height, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_wide_font_png_size(height=%d)", (int)height)); + + switch (height) { + case EB_FONT_16: + *size = EB_SIZE_WIDE_FONT_16_PNG; + break; + case EB_FONT_24: + *size = EB_SIZE_WIDE_FONT_24_PNG; + break; + case EB_FONT_30: + *size = EB_SIZE_WIDE_FONT_30_PNG; + break; + case EB_FONT_48: + *size = EB_SIZE_WIDE_FONT_48_PNG; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_wide_font_png_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_wide_font_png_size() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * The maximum number of octets in a line in a XBM file. + */ +#define XBM_MAX_OCTETS_A_LINE 12 + +/* + * The base name of a XBM file. + */ +#define XBM_BASE_NAME "default" + +/* + * Convert a bitmap image to XBM format. + * + * It requires four arguements. `xbm' is buffer to store the XBM + * image data. `bitmap', `width', and `height' are bitmap data, + * width, and height of the bitmap image. + */ +EB_Error_Code +eb_bitmap_to_xbm(const char *bitmap, int width, int height, char *xbm, + size_t *xbm_length) +{ + char *xbm_p = xbm; + const unsigned char *bitmap_p = (const unsigned char *)bitmap; + int bitmap_size = (width + 7) / 8 * height; + int hex; + int i; + + LOG(("in: eb_bitmap_to_xbm(width=%d, height=%d)", width, height)); + + /* + * Output a header. + */ + sprintf(xbm_p, "#define %s_width %4d\n", XBM_BASE_NAME, width); + xbm_p = strchr(xbm_p, '\n') + 1; + sprintf(xbm_p, "#define %s_height %4d\n", XBM_BASE_NAME, height); + xbm_p = strchr(xbm_p, '\n') + 1; + sprintf(xbm_p, "static unsigned char %s_bits[] = {\n", XBM_BASE_NAME); + xbm_p = strchr(xbm_p, '\n') + 1; + + /* + * Output image data. + */ + for (i = 0; i < bitmap_size; i++) { + hex = 0; + hex |= (*bitmap_p & 0x80) ? 0x01 : 0x00; + hex |= (*bitmap_p & 0x40) ? 0x02 : 0x00; + hex |= (*bitmap_p & 0x20) ? 0x04 : 0x00; + hex |= (*bitmap_p & 0x10) ? 0x08 : 0x00; + hex |= (*bitmap_p & 0x08) ? 0x10 : 0x00; + hex |= (*bitmap_p & 0x04) ? 0x20 : 0x00; + hex |= (*bitmap_p & 0x02) ? 0x40 : 0x00; + hex |= (*bitmap_p & 0x01) ? 0x80 : 0x00; + bitmap_p++; + + if (i % XBM_MAX_OCTETS_A_LINE != 0) { + sprintf(xbm_p, ", 0x%02x", hex); + xbm_p += 6; + } else if (i == 0) { + sprintf(xbm_p, " 0x%02x", hex); + xbm_p += 7; + } else { + sprintf(xbm_p, ",\n 0x%02x", hex); + xbm_p += 9; + } + } + + /* + * Output a footer. + */ + memcpy(xbm_p, "};\n", 3); + xbm_p += 3; + + *xbm_length = xbm_p - xbm; + + LOG(("out: eb_bitmap_to_xbm(xbm_length=%ld) = %s", + (long)(xbm_p - xbm), eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; +} + + +/* + * The base name of a XPM file. + */ +#define XPM_BASE_NAME "default" + +/* + * The foreground and background colors of XPM image. + */ +#define XPM_FOREGROUND_COLOR "Black" +#define XPM_BACKGROUND_COLOR "None" + +/* + * Convert a bitmap image to XPM format. + * + * It requires four arguements. `xpm' is buffer to store the XPM + * image data. `bitmap', `width', and `height' are bitmap data, + * width, and height of the bitmap image. + */ +EB_Error_Code +eb_bitmap_to_xpm(const char *bitmap, int width, int height, char *xpm, + size_t *xpm_length) +{ + char *xpm_p = xpm; + const unsigned char *bitmap_p = (const unsigned char *)bitmap; + int i, j; + + LOG(("in: eb_bitmap_to_xpm(width=%d, height=%d)", width, height)); + + /* + * Output a header. + */ + sprintf(xpm_p, "/* XPM */\n"); + xpm_p = strchr(xpm_p, '\n') + 1; + + sprintf(xpm_p, "static char * %s[] = {\n", XPM_BASE_NAME); + xpm_p = strchr(xpm_p, '\n') + 1; + + sprintf(xpm_p, "\"%d %d 2 1\",\n", width, height); + xpm_p = strchr(xpm_p, '\n') + 1; + + sprintf(xpm_p, "\" c %s\",\n", XPM_BACKGROUND_COLOR); + xpm_p = strchr(xpm_p, '\n') + 1; + + sprintf(xpm_p, "\". c %s\",\n", XPM_FOREGROUND_COLOR); + xpm_p = strchr(xpm_p, '\n') + 1; + + /* + * Output image data. + */ + for (i = 0; i < height; i++) { + if (0 < i) { + strcpy(xpm_p, "\",\n\""); + xpm_p += 4; + } else { + *xpm_p++ = '\"'; + } + + for (j = 0; j + 7 < width; j += 8, bitmap_p++) { + *xpm_p++ = (*bitmap_p & 0x80) ? '.' : ' '; + *xpm_p++ = (*bitmap_p & 0x40) ? '.' : ' '; + *xpm_p++ = (*bitmap_p & 0x20) ? '.' : ' '; + *xpm_p++ = (*bitmap_p & 0x10) ? '.' : ' '; + *xpm_p++ = (*bitmap_p & 0x08) ? '.' : ' '; + *xpm_p++ = (*bitmap_p & 0x04) ? '.' : ' '; + *xpm_p++ = (*bitmap_p & 0x02) ? '.' : ' '; + *xpm_p++ = (*bitmap_p & 0x01) ? '.' : ' '; + } + + if (j < width) { + if (j++ < width) + *xpm_p++ = (*bitmap_p & 0x80) ? '.' : ' '; + if (j++ < width) + *xpm_p++ = (*bitmap_p & 0x40) ? '.' : ' '; + if (j++ < width) + *xpm_p++ = (*bitmap_p & 0x20) ? '.' : ' '; + if (j++ < width) + *xpm_p++ = (*bitmap_p & 0x10) ? '.' : ' '; + if (j++ < width) + *xpm_p++ = (*bitmap_p & 0x08) ? '.' : ' '; + if (j++ < width) + *xpm_p++ = (*bitmap_p & 0x04) ? '.' : ' '; + if (j++ < width) + *xpm_p++ = (*bitmap_p & 0x02) ? '.' : ' '; + if (j++ < width) + *xpm_p++ = (*bitmap_p & 0x01) ? '.' : ' '; + bitmap_p++; + } + } + + /* + * Output a footer. + */ + memcpy(xpm_p, "\"};\n", 4); + xpm_p += 4; + + if (xpm_length != NULL) + *xpm_length = xpm_p - xpm; + + LOG(("out: eb_bitmap_to_xpm(xpm_length=%ld) = %s", + (long)(xpm_p - xpm), eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; +} + + +/* + * The Foreground and background colors of GIF image. + */ +#define GIF_FOREGROUND_COLOR 0x000000 +#define GIF_BACKGROUND_COLOR 0xffffff + +/* + * The preamble of GIF image. + */ +#define GIF_PREAMBLE_LENGTH 38 + +static const unsigned char gif_preamble[GIF_PREAMBLE_LENGTH] = { + /* + * Header. (6 bytes) + */ + 'G', 'I', 'F', '8', '9', 'a', + + /* + * Logical Screen Descriptor. (7 bytes) + * global color table flag = 1. + * color resolution = 1 - 1 = 0. + * sort flag = 0. + * size of global color table = 1 - 1 = 0. + * background color index = 0. + * the pixel aspect ratio = 0 (unused) + * Logical screen width and height are set at run time. + */ + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + + /* + * Global Color Table. (6 bytes) + * These are set at run time. + */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + /* + * Graphic Control Extension. (8 bytes) + * disposal method = 0. + * user input flag = 0. + * transparency flag = 1. + * delay time = 0. + * transparent color index = 0. + */ + 0x21, 0xf9, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, + + /* + * Image Descriptor. (10 bytes) + * image left position = 0. + * image top position = 0. + * local color table flag = 0. + * interlace flag = 0. + * sort flag = 0. + * size of local color table = 0. + * Image width and height are set at run time. + */ + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + /* + * Code size. (1byte) + */ + 0x03 +}; + + +/* + * Convert a bitmap image to GIF format. + * + * It requires four arguements. `gif' is buffer to store the GIF + * image data. `bitmap', `width', and `height' are bitmap data, + * width, and height of the bitmap image. + * + * Note: This GIF image doesn't use LZW because of patent. + */ +EB_Error_Code +eb_bitmap_to_gif(const char *bitmap, int width, int height, char *gif, + size_t *gif_length) +{ + unsigned char *gif_p = (unsigned char *)gif; + const unsigned char *bitmap_p = (const unsigned char *)bitmap; + int i, j; + + LOG(("in: eb_bitmap_to_gif(width=%d, height=%d)", width, height)); + + /* + * Copy the default preamble. + */ + memcpy(gif_p, gif_preamble, GIF_PREAMBLE_LENGTH); + + /* + * Set logical screen width and height. + */ + gif_p[6] = width & 0xff; + gif_p[7] = (width >> 8) & 0xff; + gif_p[8] = height & 0xff; + gif_p[9] = (height >> 8) & 0xff; + + /* + * Set global colors. + */ + gif_p[13] = (GIF_BACKGROUND_COLOR >> 16) & 0xff; + gif_p[14] = (GIF_BACKGROUND_COLOR >> 8) & 0xff; + gif_p[15] = GIF_BACKGROUND_COLOR & 0xff; + gif_p[16] = (GIF_FOREGROUND_COLOR >> 16) & 0xff; + gif_p[17] = (GIF_FOREGROUND_COLOR >> 8) & 0xff; + gif_p[18] = GIF_FOREGROUND_COLOR & 0xff; + + /* + * Set image width and height. + */ + gif_p[32] = width & 0xff; + gif_p[33] = (width >> 8) & 0xff; + gif_p[34] = height & 0xff; + gif_p[35] = (height >> 8) & 0xff; + + gif_p += GIF_PREAMBLE_LENGTH; + + /* + * Output image data. + */ + for (i = 0; i < height; i++) { + *gif_p++ = (unsigned char)width; + for (j = 0; j + 7 < width; j += 8, bitmap_p++) { + *gif_p++ = (*bitmap_p & 0x80) ? 0x81 : 0x80; + *gif_p++ = (*bitmap_p & 0x40) ? 0x81 : 0x80; + *gif_p++ = (*bitmap_p & 0x20) ? 0x81 : 0x80; + *gif_p++ = (*bitmap_p & 0x10) ? 0x81 : 0x80; + *gif_p++ = (*bitmap_p & 0x08) ? 0x81 : 0x80; + *gif_p++ = (*bitmap_p & 0x04) ? 0x81 : 0x80; + *gif_p++ = (*bitmap_p & 0x02) ? 0x81 : 0x80; + *gif_p++ = (*bitmap_p & 0x01) ? 0x81 : 0x80; + } + + if (j < width) { + if (j++ < width) + *gif_p++ = (*bitmap_p & 0x80) ? 0x81 : 0x80; + if (j++ < width) + *gif_p++ = (*bitmap_p & 0x40) ? 0x81 : 0x80; + if (j++ < width) + *gif_p++ = (*bitmap_p & 0x20) ? 0x81 : 0x80; + if (j++ < width) + *gif_p++ = (*bitmap_p & 0x10) ? 0x81 : 0x80; + if (j++ < width) + *gif_p++ = (*bitmap_p & 0x08) ? 0x81 : 0x80; + if (j++ < width) + *gif_p++ = (*bitmap_p & 0x04) ? 0x81 : 0x80; + if (j++ < width) + *gif_p++ = (*bitmap_p & 0x02) ? 0x81 : 0x80; + if (j++ < width) + *gif_p++ = (*bitmap_p & 0x01) ? 0x81 : 0x80; + bitmap_p++; + } + } + + /* + * Output a trailer. + */ + memcpy(gif_p, "\001\011\000\073", 4); + gif_p += 4; + + if (gif_length != NULL) + *gif_length = ((char *)gif_p - gif); + + LOG(("out: eb_bitmap_to_gif(gif_length=%ld) = %s", + (long)((char *)gif_p - gif), eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; +} + + +/* + * The preamble of BMP image. + */ +#define BMP_PREAMBLE_LENGTH 62 + +static const unsigned char bmp_preamble[] = { + /* Type. */ + 'B', 'M', + + /* File size. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* Reserved. */ + 0x00, 0x00, 0x00, 0x00, + + /* Offset of bitmap bits part. */ + 0x3e, 0x00, 0x00, 0x00, + + /* Size of bitmap info part. */ + 0x28, 0x00, 0x00, 0x00, + + /* Width. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* Height. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* Planes. */ + 0x01, 0x00, + + /* Bits per pixels. */ + 0x01, 0x00, + + /* Compression mode. */ + 0x00, 0x00, 0x00, 0x00, + + /* Size of bitmap bits part. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* X Pixels per meter. */ + 0x6d, 0x0b, 0x00, 0x00, + + /* Y Pixels per meter. */ + 0x6d, 0x0b, 0x00, 0x00, + + /* Colors */ + 0x02, 0x00, 0x00, 0x00, + + /* Important colors */ + 0x02, 0x00, 0x00, 0x00, + + /* RGB quad of color 0 RGB quad of color 1 */ + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* + * Convert a bitmap image to BMP format. + * + * It requires four arguements. `bmp' is buffer to store the BMP + * image data. `bitmap', `width', and `height' are bitmap data, + * width, and height of the bitmap image. + */ +EB_Error_Code +eb_bitmap_to_bmp(const char *bitmap, int width, int height, char *bmp, + size_t *bmp_length) +{ + unsigned char *bmp_p = (unsigned char *)bmp; + size_t data_size; + size_t file_size; + size_t line_pad_length; + size_t bitmap_line_length; + int i, j; + + LOG(("in: eb_bitmap_to_bmp(width=%d, height=%d)", width, height)); + + if (width % 32 == 0) + line_pad_length = 0; + else if (width % 32 <= 8) + line_pad_length = 3; + else if (width % 32 <= 16) + line_pad_length = 2; + else if (width % 32 <= 24) + line_pad_length = 1; + else + line_pad_length = 0; + + data_size = (width / 2 + line_pad_length) * height; + file_size = data_size + BMP_PREAMBLE_LENGTH; + + /* + * Set BMP preamble. + */ + memcpy(bmp_p, bmp_preamble, BMP_PREAMBLE_LENGTH); + + bmp_p[2] = file_size & 0xff; + bmp_p[3] = (file_size >> 8) & 0xff; + bmp_p[4] = (file_size >> 16) & 0xff; + bmp_p[5] = (file_size >> 24) & 0xff; + + bmp_p[18] = width & 0xff; + bmp_p[19] = (width >> 8) & 0xff; + bmp_p[20] = (width >> 16) & 0xff; + bmp_p[21] = (width >> 24) & 0xff; + + bmp_p[22] = height & 0xff; + bmp_p[23] = (height >> 8) & 0xff; + bmp_p[24] = (height >> 16) & 0xff; + bmp_p[25] = (height >> 24) & 0xff; + + bmp_p[34] = data_size & 0xff; + bmp_p[35] = (data_size >> 8) & 0xff; + bmp_p[36] = (data_size >> 16) & 0xff; + bmp_p[37] = (data_size >> 24) & 0xff; + + bmp_p += BMP_PREAMBLE_LENGTH; + bitmap_line_length = (width + 7) / 8; + + for (i = height - 1; 0 <= i; i--) { + memcpy(bmp_p, bitmap + bitmap_line_length * i, bitmap_line_length); + bmp_p += bitmap_line_length; + for (j = 0; j < line_pad_length; j++, bmp_p++) + *bmp_p = 0x00; + } + + if (bmp_length != NULL) + *bmp_length = ((char *)bmp_p - bmp); + + LOG(("out: eb_bitmap_to_bmp(bmp_length=%ld) = %s", + (long)((char *)bmp_p - bmp), eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; +} + + +/* + * The Foreground and background colors of PNG image. + */ +#define PNG_FOREGROUND_COLOR 0x000000 +#define PNG_BACKGROUND_COLOR 0xffffff + +/* + * The preamble of PNG image. + */ +static const unsigned char png_preamble[] = { + /* + * PNG file signature (8 bytes) + */ + 0x89, 'P', 'N', 'G', '\r', '\n', 0x1a, '\n', + /* + * IHDR(Image Header) Chunk (25 bytes) + */ + /* Size of IHDR. */ + 0x00, 0x00, 0x00, 0x0d, + 'I', 'H', 'D', 'R', + /* Width. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + /* Height. (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + /* misc. */ + 0x01, 0x03, 0x00, 0x00, 0x00, + /* CRC (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* + * PLTE(Palette) Chunk (18 bytes) + */ + /* Size of PLTE */ + 0x00, 0x00, 0x00, 0x06, + 'P', 'L', 'T', 'E', + /* RGB for palette index 0 */ + 0xff, 0xff, 0xff, + /* RGB for palette index 1 */ + 0x00, 0x00, 0x00, + /* CRC (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + + /* + * tRNS(Transparency) Chunk (13 bytes) + */ + /* Size of tRNS */ + 0x00, 0x00, 0x00, 0x01, + 't', 'R', 'N', 'S', + /* Alpha for palette index 0 */ + 0x00, + /* CRC */ + 0x40, 0xe6, 0xd8, 0x66, + + /* + * IDAT(Image Data) Chunk (12+ bytes) + */ + /* Size of IDAT (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + 'I', 'D', 'A', 'T', +}; + +static const unsigned char png_trailer[] = { + /* CRC (set at run time) */ + 0x00, 0x00, 0x00, 0x00, + /* + * IEND(Image End) Chunk (12 bytes) + */ + /* Size of IEND */ + 0x00, 0x00, 0x00, 0x00, + 'I', 'E', 'N', 'D', + /* CRC */ + 0xae, 0x42, 0x60, 0x82, +}; + +/* + * Table of CRCs of all 8-bit messages. + */ +static const unsigned long png_crc_table[256] = { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, /* 0x00 - 0x03 */ + 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, /* 0x04 - 0x07 */ + 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, /* 0x08 - 0x0b */ + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, /* 0x0c - 0x0f */ + 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, /* 0x10 - 0x13 */ + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, /* 0x14 - 0x17 */ + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, /* 0x18 - 0x1b */ + 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, /* 0x1c - 0x1f */ + 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, /* 0x20 - 0x23 */ + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, /* 0x24 - 0x27 */ + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, /* 0x28 - 0x2b */ + 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, /* 0x2c - 0x2f */ + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, /* 0x30 - 0x33 */ + 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, /* 0x34 - 0x37 */ + 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, /* 0x38 - 0x3b */ + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, /* 0x3c - 0x3f */ + 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, /* 0x40 - 0x43 */ + 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, /* 0x44 - 0x47 */ + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, /* 0x48 - 0x4b */ + 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, /* 0x4c - 0x4f */ + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, /* 0x50 - 0x53 */ + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, /* 0x54 - 0x57 */ + 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, /* 0x58 - 0x5b */ + 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, /* 0x5c - 0x5f */ + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, /* 0x60 - 0x63 */ + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, /* 0x64 - 0x67 */ + 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, /* 0x68 - 0x6b */ + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, /* 0x6c - 0x6f */ + 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, /* 0x70 - 0x73 */ + 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, /* 0x74 - 0x77 */ + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, /* 0x78 - 0x7b */ + 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, /* 0x7c - 0x7f */ + 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, /* 0x80 - 0x83 */ + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, /* 0x84 - 0x87 */ + 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, /* 0x88 - 0x8b */ + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, /* 0x8c - 0x8f */ + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, /* 0x90 - 0x93 */ + 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, /* 0x94 - 0x97 */ + 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, /* 0x98 - 0x9b */ + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, /* 0x9c - 0x9f */ + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, /* 0xa0 - 0xa3 */ + 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, /* 0xa4 - 0xa7 */ + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, /* 0xa8 - 0xab */ + 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, /* 0xac - 0xaf */ + 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, /* 0xb0 - 0xb3 */ + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, /* 0xb4 - 0xb7 */ + 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, /* 0xb8 - 0xbb */ + 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, /* 0xbc - 0xbf */ + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, /* 0xc0 - 0xc3 */ + 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, /* 0xc4 - 0xc7 */ + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, /* 0xc8 - 0xcb */ + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, /* 0xcc - 0xcf */ + 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, /* 0xd0 - 0xd3 */ + 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, /* 0xd4 - 0xd7 */ + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, /* 0xd8 - 0xdb */ + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, /* 0xdc - 0xdf */ + 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, /* 0xe0 - 0xe3 */ + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, /* 0xe4 - 0xe7 */ + 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, /* 0xe8 - 0xeb */ + 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, /* 0xec - 0xef */ + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, /* 0xf0 - 0xf3 */ + 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, /* 0xf4 - 0xf7 */ + 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, /* 0xf8 - 0xfb */ + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d /* 0xfc - 0xff */ +}; + +static unsigned long +png_crc(const char *buf, size_t len) +{ + unsigned long c = 0xffffffffL; + int n; + + for (n = 0; n < len; n++) + c = png_crc_table[(c ^ *((unsigned char *)buf + n)) & 0xff] ^ (c >> 8); + return c ^ 0xffffffffL; +} + + +static int +png_compress(const char *src, int width, int height, char *dest, + size_t *dest_len) +{ +#ifdef ENABLE_LIBDEFLATE + int line_size = (width + 7) / 8; + char *in_buffer; + struct libdeflate_compressor *compressor; + int i; + size_t in_buffer_size = (line_size + 1) * height; + size_t result; + + in_buffer = malloc (in_buffer_size); + if (in_buffer == NULL) goto failed; + compressor = libdeflate_alloc_compressor(1); + if (compressor == NULL) goto failed; + + for (i = 0; i < height; i++) { + *(in_buffer + (line_size + 1) * i) = 0; + memcpy(in_buffer + (line_size + 1) * i + 1, src + line_size * i, line_size); + } + + result = libdeflate_zlib_compress(compressor, in_buffer, in_buffer_size, + dest, (line_size + 1) * height + 12 + 256); + if (result == 0) goto failed; + + *dest_len = result; + + free(in_buffer); + libdeflate_free_compressor(compressor); + return 0; + + failed: + if (in_buffer) free(in_buffer); + if (compressor) libdeflate_free_compressor(compressor); + return -1; +#else + int line_size = (width + 7) / 8; + z_stream z; + int z_result; + unsigned char byte_zero = 0x00; + int i; + + z.zalloc = Z_NULL; + z.zfree = Z_NULL; + z.opaque = Z_NULL; + z_result = deflateInit(&z, Z_NO_COMPRESSION); + if (z_result != Z_OK) + return -1; + + /* + * Exactly to say, `z.avail_out' must be: + * avail_out > (sizeof(src) + 12) * 1.001 + * but we use an approximation here. + */ + z.next_out = (unsigned char *)dest; + z.avail_out = (line_size + 1) * height + 12 + 256; + for (i = 0; i < height - 1; i++) { + z.next_in = &byte_zero; + z.avail_in = 1; + z_result = deflate(&z, Z_NO_FLUSH); + if (z_result != Z_OK || z.avail_in != 0) + goto failed; + + z.next_in = (unsigned char *)src + (line_size * i); + z.avail_in = line_size; + z_result = deflate(&z, Z_NO_FLUSH); + if (z_result != Z_OK || z.avail_in != 0) + goto failed; + } + + z.next_in = &byte_zero; + z.avail_in = 1; + z_result = deflate(&z, Z_NO_FLUSH); + if (z_result != Z_OK || z.avail_in != 0) + goto failed; + + z.next_in = (unsigned char *)src + (line_size * i); + z.avail_in = line_size; + if (deflate(&z, Z_FINISH) != Z_STREAM_END) + goto failed; + + z_result = deflateEnd(&z); + if (z_result != Z_OK) + return -1; + + *dest_len = (z.next_out - (unsigned char *)dest); + return 0; + + /* + * An error occurs... + */ + failed: + deflateEnd(&z); + return -1; +#endif +} + + +#define INT2CHARS(p, i) do { \ + *(unsigned char *)(p) = ((i) >> 24) & 0xff; \ + *((unsigned char *)(p) + 1) = ((i) >> 16) & 0xff; \ + *((unsigned char *)(p) + 2) = ((i) >> 8) & 0xff; \ + *((unsigned char *)(p) + 3) = (i) & 0xff; \ +} while (0); + +#define RGB2CHARS(p, i) do { \ + *(unsigned char *)(p) = ((i) >> 16) & 0xff; \ + *((unsigned char *)(p) + 1) = ((i) >> 8) & 0xff; \ + *((unsigned char *)(p) + 2) = (i) & 0xff; \ +} while (0); + +/* + * Convert a bitmap image to PNG format. + * + * It requires four arguements. `png' is buffer to store the PNG + * image data. `bitmap', `width', and `height' are bitmap data, + * width, and height of the bitmap image. + */ +EB_Error_Code +eb_bitmap_to_png(const char *bitmap, int width, int height, char *png, + size_t *png_length) +{ + EB_Error_Code error_code; + char *png_p = png; + char *idat_start; + size_t idat_len; + unsigned long crc; + int z_result; + + LOG(("in: eb_bitmap_to_png(width=%d, height=%d)", width, height)); + + /* + * Copy the default preamble. + */ + memcpy(png_p, png_preamble, sizeof(png_preamble)); + + /* + * Set image width and height. + */ + INT2CHARS(png_p + 16, width); + INT2CHARS(png_p + 20, height); + + crc = png_crc(png_p + 12, 17); + INT2CHARS(png_p + 29, crc); + + /* + * Set global colors. + */ + RGB2CHARS(png_p + 41, PNG_BACKGROUND_COLOR); + RGB2CHARS(png_p + 44, PNG_FOREGROUND_COLOR); + crc = png_crc(png_p + 37, 10); + INT2CHARS(png_p + 47, crc); + + /* + * Output `bitmap'. + * We assume memory allocation error occurs if png_compress() doesn't + * return Z_STREAM_END. + */ + idat_start = png_p + sizeof(png_preamble); + z_result = png_compress(bitmap, width, height, idat_start, &idat_len); + if (z_result != 0) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + INT2CHARS(png_p + 64, idat_len); + crc = png_crc(idat_start - 4, idat_len + 4); + png_p = idat_start + idat_len; + + /* + * Output a trailer. + */ + memcpy(png_p, png_trailer, sizeof(png_trailer)); + INT2CHARS(png_p, crc); + png_p += sizeof(png_trailer); + if (png_length != NULL) + *png_length = ((char *)png_p - png); + + LOG(("out: eb_bitmap_to_png(png_length=%ld) = %s", + (long)((char *)png_p - png), eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_bitmap_to_png(png_length=%ld) = %s", + (long)((char *)png_p - png), eb_error_string(error_code))); + return error_code; +} + +#undef INT2CHARS +#undef RGB2CHARS + + +#ifdef TEST + +#include +#include +#include + +#define test_width 32 +#define test_height 16 +static unsigned char test_bitmap[] = { + 0xff, 0xff, 0xff, 0xff, 0x80, 0x81, 0x83, 0x01, 0x80, 0x81, 0x01, 0x01, + 0x80, 0x81, 0x01, 0x01, 0xe3, 0x8f, 0x11, 0xc7, 0xe3, 0x8f, 0x0f, 0xc7, + 0xe3, 0x81, 0x87, 0xc7, 0xe3, 0x81, 0xc3, 0xc7, 0xe3, 0x81, 0xe1, 0xc7, + 0xe3, 0x8f, 0x11, 0xc7, 0xe3, 0x8f, 0x11, 0xc7, 0xe3, 0x81, 0x01, 0xc7, + 0xe3, 0x81, 0x01, 0xc7, 0xe3, 0x81, 0x83, 0xc7, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff +}; + +int +main(int argc, char *argv[]) +{ + char image[EB_SIZE_FONT_IMAGE]; + size_t image_size; + int file; + + eb_bitmap_to_xbm(test_bitmap, test_width, test_height, image, &image_size); + file = creat("test.xbm", 0644); + if (file < 0) + exit(1); + if (write(file, image, image_size) != image_size) { + close(file); + exit(1); + } + + eb_bitmap_to_xpm(test_bitmap, test_width, test_height, image, &image_size); + file = creat("test.xpm", 0644); + if (file < 0) + exit(1); + if (write(file, image, image_size) != image_size) { + close(file); + exit(1); + } + + eb_bitmap_to_gif(test_bitmap, test_width, test_height, image, &image_size); + file = creat("test.gif", 0644); + if (file < 0) + exit(1); + if (write(file, image, image_size) != image_size) { + close(file); + exit(1); + } + + eb_bitmap_to_bmp(test_bitmap, test_width, test_height, image, &image_size); + file = creat("test.bmp", 0644); + if (file < 0) + exit(1); + if (write(file, image, image_size) != image_size) { + close(file); + exit(1); + } + + eb_bitmap_to_png(test_bitmap, test_width, test_height, image, &image_size); + file = creat("test.png", 0644); + if (file < 0) + exit(1); + if (write(file, image, image_size) != image_size) { + close(file); + exit(1); + } + + return 0; +} + +#endif /* TEST */ diff --git a/lib/ebu/ebu/bitmap.lo b/lib/ebu/ebu/bitmap.lo new file mode 100644 index 0000000..58aaf3e --- /dev/null +++ b/lib/ebu/ebu/bitmap.lo @@ -0,0 +1,12 @@ +# bitmap.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/bitmap.o' + +# Name of the non-PIC object +non_pic_object='bitmap.o' + diff --git a/lib/ebu/ebu/book.c b/lib/ebu/ebu/book.c new file mode 100644 index 0000000..14e6374 --- /dev/null +++ b/lib/ebu/ebu/book.c @@ -0,0 +1,1006 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "font.h" +#ifdef ENABLE_EBNET +#include "ebnet.h" +#endif +#include "build-post.h" + +/* + * Book ID counter. + */ +static EB_Book_Code book_counter = 0; + +/* + * Mutex for `book_counter'. + */ +#ifdef ENABLE_PTHREAD +static pthread_mutex_t book_counter_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif + +/* + * Unexported functions. + */ +static void eb_fix_misleaded_book(EB_Book *book); +static EB_Error_Code eb_load_catalog(EB_Book *book); +static EB_Error_Code eb_load_catalog_eb(EB_Book *book, + const char *catalog_path); +static EB_Error_Code eb_load_catalog_epwing(EB_Book *book, + const char *catalog_path); +static Zio_Code eb_get_hint_zio_code(int catalog_hint_value); +static void eb_load_language(EB_Book *book); + + +/* + * Initialize `book'. + */ +void +eb_initialize_book(EB_Book *book) +{ + LOG(("in: eb_initialize_book()")); + + book->code = EB_BOOK_NONE; + book->disc_code = EB_DISC_INVALID; + book->character_code = EB_CHARCODE_INVALID; + book->path = NULL; + book->path_length = 0; + book->subbooks = NULL; + book->subbook_current = NULL; +#ifdef ENABLE_EBNET + book->ebnet_file = -1; +#endif + eb_initialize_text_context(book); + eb_initialize_binary_context(book); + eb_initialize_search_contexts(book); + eb_initialize_binary_context(book); + eb_initialize_lock(&book->lock); + + LOG(("out: eb_initialize_book()")); +} + + +/* + * Bind `book' to `path'. + */ +EB_Error_Code +eb_bind(EB_Book *book, const char *path) +{ + EB_Error_Code error_code; + char temporary_path[EB_MAX_PATH_LENGTH + 1]; + int is_ebnet; + + eb_lock(&book->lock); + LOG(("in: eb_bind(path=%s)", path)); + + /* + * Clear the book if the book has already been bound. + */ + if (book->path != NULL) { + eb_finalize_book(book); + eb_initialize_book(book); + } + + /* + * Assign a book code. + */ + pthread_mutex_lock(&book_counter_mutex); + book->code = book_counter++; + pthread_mutex_unlock(&book_counter_mutex); + + /* + * Check whether `path' is URL. + */ + is_ebnet = is_ebnet_url(path); +#ifndef ENABLE_EBNET + if (is_ebnet) { + error_code = EB_ERR_EBNET_UNSUPPORTED; + goto failed; + } +#endif + + /* + * Set the path of the book. + * The length of the file name "/subdir/subsubdir/file.ebz;1" must + * be EB_MAX_PATH_LENGTH maximum. + */ + if (EB_MAX_PATH_LENGTH < strlen(path)) { + error_code = EB_ERR_TOO_LONG_FILE_NAME; + goto failed; + } + strcpy(temporary_path, path); +#ifdef ENABLE_EBNET + if (is_ebnet) + error_code = ebnet_canonicalize_url(temporary_path); + else + error_code = eb_canonicalize_path_name(temporary_path); +#else + error_code = eb_canonicalize_path_name(temporary_path); +#endif + if (error_code != EB_SUCCESS) + goto failed; + + book->path_length = strlen(temporary_path); + if (EB_MAX_PATH_LENGTH + < book->path_length + 1 + EB_MAX_RELATIVE_PATH_LENGTH) { + error_code = EB_ERR_TOO_LONG_FILE_NAME; + goto failed; + } + + book->path = (char *)malloc(book->path_length + 1); + if (book->path == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + strcpy(book->path, temporary_path); + + /* + * Establish a connection with a ebnet server. + */ +#ifdef ENABLE_EBNET + if (is_ebnet) { + error_code = ebnet_bind(book, book->path); + if (error_code != EB_SUCCESS) + goto failed; + } +#endif + + /* + * Read information from the `LANGUAGE' file. + * If failed to initialize, JIS X 0208 is assumed. + */ + eb_load_language(book); + + /* + * Read information from the `CATALOG(S)' file. + */ + error_code = eb_load_catalog(book); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_bind(book=%d) = %s", (int)book->code, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_finalize_book(book); + LOG(("out: eb_bind() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Finish using `book'. + */ +void +eb_finalize_book(EB_Book *book) +{ + LOG(("in: eb_finalize_book(book=%d)", (int)book->code)); + + eb_unset_subbook(book); + + if (book->subbooks != NULL) { + eb_finalize_subbooks(book); + free(book->subbooks); + book->subbooks = NULL; + } + + book->subbook_current = NULL; + eb_finalize_text_context(book); + eb_finalize_binary_context(book); + eb_finalize_search_contexts(book); + eb_finalize_binary_context(book); + eb_finalize_lock(&book->lock); + +#ifdef ENABLE_EBNET + ebnet_finalize_book(book); +#endif + + if (book->path != NULL) + free(book->path); + + book->code = EB_BOOK_NONE; + book->disc_code = EB_DISC_INVALID; + book->character_code = EB_CHARCODE_INVALID; + book->path = NULL; + book->path_length = 0; + + LOG(("out: eb_finalize_book()")); +} + + +/* + * There are some books that EB Library sets wrong character code of + * the book. They are written in JIS X 0208, but the library sets + * ISO 8859-1. + * + * We fix the character of the books. The following table lists + * titles of the first subbook in those books. + */ +static const char * const misleaded_book_table[] = { + /* SONY DataDiskMan (DD-DR1) accessories. */ + "%;%s%A%e%j!\\%S%8%M%9!\\%/%i%&%s", + + /* Shin Eiwa Waei Chujiten (earliest edition) */ + "8&5fcode)); + + for (misleaded = misleaded_book_table; *misleaded != NULL; misleaded++) { + if (strcmp(book->subbooks[0].title, *misleaded) == 0) { + book->character_code = EB_CHARCODE_JISX0208; + for (i = 0, subbook = book->subbooks; i < book->subbook_count; + i++, subbook++) { + eb_jisx0208_to_euc(subbook->title, subbook->title); + } + break; + } + } + + LOG(("out: eb_fix_misleaded_book()")); +} + +/* + * Read information from the `CATALOG(S)' file in 'book'. + * Return EB_SUCCESS if it succeeds, error-code otherwise. + */ +static EB_Error_Code +eb_load_catalog(EB_Book *book) +{ + EB_Error_Code error_code; + char catalog_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + char catalog_path_name[EB_MAX_PATH_LENGTH + 1]; + + LOG(("in: eb_load_catalog(book=%d)", (int)book->code)); + + /* + * Find a catalog file. + */ + if (eb_find_file_name(book->path, "catalog", catalog_file_name) + == EB_SUCCESS) { + book->disc_code = EB_DISC_EB; + } else if (eb_find_file_name(book->path, "catalogs", catalog_file_name) + == EB_SUCCESS) { + book->disc_code = EB_DISC_EPWING; + } else { + error_code = EB_ERR_FAIL_OPEN_CAT; + goto failed; + } + + eb_compose_path_name(book->path, catalog_file_name, catalog_path_name); + + /* + * Load the catalog file. + */ + if (book->disc_code == EB_DISC_EB) + error_code = eb_load_catalog_eb(book, catalog_path_name); + else + error_code = eb_load_catalog_epwing(book, catalog_path_name); + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Fix chachacter-code of the book. + */ + eb_fix_misleaded_book(book); + LOG(("out: eb_load_catalog() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + if (book->subbooks != NULL) { + free(book->subbooks); + book->subbooks = NULL; + } + LOG(("out: eb_load_catalog() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Read information from the `CATALOG' file in 'book'. (EB) + */ +static EB_Error_Code +eb_load_catalog_eb(EB_Book *book, const char *catalog_path) +{ + EB_Error_Code error_code; + char buffer[EB_SIZE_PAGE]; + char *space; + EB_Subbook *subbook; + Zio zio; + Zio_Code zio_code; + int i; + + LOG(("in: eb_load_catalog_eb(book=%d, catalog=%s)", + (int)book->code, catalog_path)); + + zio_initialize(&zio); + + /* + * Open a catalog file. + */ + eb_path_name_zio_code(catalog_path, ZIO_PLAIN, &zio_code); + if (zio_open(&zio, catalog_path, zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_CAT; + goto failed; + } + + /* + * Get the number of subbooks in this book. + */ + if (zio_read(&zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_CAT; + goto failed; + } + + book->subbook_count = eb_uint2(buffer); + LOG(("aux: eb_load_catalog_eb(): subbook_count=%d", + book->subbook_count)); + if (EB_MAX_SUBBOOKS < book->subbook_count) + book->subbook_count = EB_MAX_SUBBOOKS; + if (book->subbook_count == 0) { + error_code = EB_ERR_UNEXP_CAT; + goto failed; + } + + /* + * Allocate memories for subbook entries. + */ + book->subbooks = (EB_Subbook *) malloc(sizeof(EB_Subbook) + * book->subbook_count); + if (book->subbooks == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + eb_initialize_subbooks(book); + + /* + * Read information about subbook. + */ + for (i = 0, subbook = book->subbooks; i < book->subbook_count; + i++, subbook++) { + /* + * Read data from the catalog file. + */ + if (zio_read(&zio, buffer, EB_SIZE_EB_CATALOG) + != EB_SIZE_EB_CATALOG) { + error_code = EB_ERR_FAIL_READ_CAT; + goto failed; + } + + /* + * Set a directory name. + */ + strncpy(subbook->directory_name, + buffer + 2 + EB_MAX_EB_TITLE_LENGTH, + EB_MAX_DIRECTORY_NAME_LENGTH); + subbook->directory_name[EB_MAX_DIRECTORY_NAME_LENGTH] = '\0'; + space = strchr(subbook->directory_name, ' '); + if (space != NULL) + *space = '\0'; + eb_fix_directory_name(book->path, subbook->directory_name); + + /* + * Set an index page. + */ + subbook->index_page = 1; + + /* + * Set a title. (Convert from JISX0208 to EUC JP) + */ + strncpy(subbook->title, buffer + 2, EB_MAX_EB_TITLE_LENGTH); + subbook->title[EB_MAX_EB_TITLE_LENGTH] = '\0'; + if (book->character_code != EB_CHARCODE_ISO8859_1) + eb_jisx0208_to_euc(subbook->title, subbook->title); + + subbook->initialized = 0; + subbook->code = i; + } + + /* + * Close the catalog file. + */ + zio_close(&zio); + zio_finalize(&zio); + + /* + * Fix chachacter-code of the book. + */ + eb_fix_misleaded_book(book); + LOG(("out: eb_load_catalog_eb() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + zio_close(&zio); + zio_initialize(&zio); + LOG(("out: eb_load_catalog() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Read information from the `CATALOGS' file in 'book'. (EPWING) + */ +static EB_Error_Code +eb_load_catalog_epwing(EB_Book *book, const char *catalog_path) +{ + EB_Error_Code error_code; + char buffer[EB_SIZE_PAGE]; + char *buffer_p; + char *space; + EB_Subbook *subbook; + EB_Font *font; + Zio zio; + Zio_Code zio_code; + int epwing_version; + int data_types; + int i, j; + + LOG(("in: eb_load_catalog_epwing(book=%d, catalog=%s)", + (int)book->code, catalog_path)); + + zio_initialize(&zio); + + /* + * Open a catalog file. + */ + eb_path_name_zio_code(catalog_path, ZIO_PLAIN, &zio_code); + if (zio_open(&zio, catalog_path, zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_CAT; + goto failed; + } + + /* + * Get the number of subbooks in this book. + */ + if (zio_read(&zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_CAT; + goto failed; + } + + book->subbook_count = eb_uint2(buffer); + LOG(("aux: eb_load_catalog_epwing(): subbook_count=%d", + book->subbook_count)); + if (EB_MAX_SUBBOOKS < book->subbook_count) + book->subbook_count = EB_MAX_SUBBOOKS; + if (book->subbook_count == 0) { + error_code = EB_ERR_UNEXP_CAT; + goto failed; + } + + epwing_version = eb_uint2(buffer + 2); + LOG(("aux: eb_load_catalog_epwing(): epwing_version=%d", epwing_version)); + + if (epwing_version >= 10) + book->character_code = EB_CHARCODE_UTF8; + + /* + * Allocate memories for subbook entries. + */ + book->subbooks = (EB_Subbook *) malloc(sizeof(EB_Subbook) + * book->subbook_count); + if (book->subbooks == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + eb_initialize_subbooks(book); + + /* + * Read information about subbook. + */ + for (i = 0, subbook = book->subbooks; i < book->subbook_count; + i++, subbook++) { + /* + * Read data from the catalog file. + */ + if (zio_read(&zio, buffer, EB_SIZE_EPWING_CATALOG) + != EB_SIZE_EPWING_CATALOG) { + error_code = EB_ERR_FAIL_READ_CAT; + goto failed; + } + + /* + * Set a directory name. + */ + strncpy(subbook->directory_name, + buffer + 2 + EB_MAX_EPWING_TITLE_LENGTH, + EB_MAX_DIRECTORY_NAME_LENGTH); + subbook->directory_name[EB_MAX_DIRECTORY_NAME_LENGTH] = '\0'; + space = strchr(subbook->directory_name, ' '); + if (space != NULL) + *space = '\0'; + eb_fix_directory_name(book->path, subbook->directory_name); + + /* + * Set an index page. + */ + subbook->index_page = eb_uint2(buffer + 2 + EB_MAX_EPWING_TITLE_LENGTH + + EB_MAX_DIRECTORY_NAME_LENGTH + 4); + + /* + * Set a title. (Convert from JISX0208 to EUC JP) + */ + strncpy(subbook->title, buffer + 2, EB_MAX_EPWING_TITLE_LENGTH); + subbook->title[EB_MAX_EPWING_TITLE_LENGTH] = '\0'; + if (book->character_code != EB_CHARCODE_ISO8859_1) + eb_jisx0208_to_euc(subbook->title, subbook->title); + + /* + * Narrow font file names. + */ + buffer_p = buffer + 2 + EB_MAX_EPWING_TITLE_LENGTH + 50; + for (font = subbook->narrow_fonts, j = 0; j < EB_MAX_FONTS; + j++, font++) { + /* + * Skip this entry if the first character of the file name + * is not valid. + */ + if (*buffer_p == '\0' || 0x80 <= *((unsigned char *)buffer_p)) { + buffer_p += EB_MAX_DIRECTORY_NAME_LENGTH; + continue; + } + strncpy(font->file_name, buffer_p, EB_MAX_DIRECTORY_NAME_LENGTH); + font->file_name[EB_MAX_DIRECTORY_NAME_LENGTH] = '\0'; + font->font_code = j; + font->page = 1; + space = strchr(font->file_name, ' '); + if (space != NULL) + *space = '\0'; + buffer_p += EB_MAX_DIRECTORY_NAME_LENGTH; + } + + /* + * Wide font file names. + */ + buffer_p = buffer + 2 + EB_MAX_EPWING_TITLE_LENGTH + 18; + for (font = subbook->wide_fonts, j = 0; j < EB_MAX_FONTS; + j++, font++) { + /* + * Skip this entry if the first character of the file name + * is not valid. + */ + if (*buffer_p == '\0' || 0x80 <= *((unsigned char *)buffer_p)) { + buffer_p += EB_MAX_DIRECTORY_NAME_LENGTH; + continue; + } + strncpy(font->file_name, buffer_p, EB_MAX_DIRECTORY_NAME_LENGTH); + font->file_name[EB_MAX_DIRECTORY_NAME_LENGTH] = '\0'; + font->font_code = j; + font->page = 1; + space = strchr(font->file_name, ' '); + if (space != NULL) + *space = '\0'; + buffer_p += EB_MAX_DIRECTORY_NAME_LENGTH; + } + + subbook->initialized = 0; + subbook->code = i; + } + + /* + * Set default file names and compression types. + */ + for (i = 0, subbook = book->subbooks; i < book->subbook_count; + i++, subbook++) { + strcpy(subbook->text_file_name, EB_FILE_NAME_HONMON); + strcpy(subbook->graphic_file_name, EB_FILE_NAME_HONMON); + strcpy(subbook->sound_file_name, EB_FILE_NAME_HONMON); + subbook->text_hint_zio_code = ZIO_PLAIN; + subbook->graphic_hint_zio_code = ZIO_PLAIN; + subbook->sound_hint_zio_code = ZIO_PLAIN; + } + + if (epwing_version == 1) + goto succeeded; + + /* + * Read extra information about subbook. + */ + for (i = 0, subbook = book->subbooks; i < book->subbook_count; + i++, subbook++) { + /* + * Read data from the catalog file. + * + * We don't complain about unexpected EOF. In that case, we + * return EB_SUCCESS. + */ + ssize_t read_result = zio_read(&zio, buffer, EB_SIZE_EPWING_CATALOG); + if (read_result < 0) { + error_code = EB_ERR_FAIL_READ_CAT; + goto failed; + } else if (read_result != EB_SIZE_EPWING_CATALOG) { + break; + } + if (*(buffer + 4) == '\0') + continue; + + /* + * Set a text file name and its compression hint. + */ + *(subbook->text_file_name) = '\0'; + strncpy(subbook->text_file_name, + buffer + 4, EB_MAX_DIRECTORY_NAME_LENGTH); + subbook->text_file_name[EB_MAX_DIRECTORY_NAME_LENGTH] = '\0'; + space = strchr(subbook->text_file_name, ' '); + if (space != NULL) + *space = '\0'; + subbook->text_hint_zio_code + = eb_get_hint_zio_code(eb_uint1(buffer + 55)); + if (subbook->text_hint_zio_code == ZIO_INVALID) { + error_code = EB_ERR_UNEXP_CAT; + goto failed; + } + + data_types = eb_uint2(buffer + 41); + + /* + * Set a graphic file name and its compression hint. + */ + *(subbook->graphic_file_name) = '\0'; + if ((data_types & 0x03) == 0x02) { + strncpy(subbook->graphic_file_name, buffer + 44, + EB_MAX_DIRECTORY_NAME_LENGTH); + subbook->graphic_hint_zio_code + = eb_get_hint_zio_code(eb_uint1(buffer + 54)); + } else if (((data_types >> 8) & 0x03) == 0x02) { + strncpy(subbook->graphic_file_name, buffer + 56, + EB_MAX_DIRECTORY_NAME_LENGTH); + subbook->graphic_hint_zio_code + = eb_get_hint_zio_code(eb_uint1(buffer + 53)); + } + subbook->graphic_file_name[EB_MAX_DIRECTORY_NAME_LENGTH] = '\0'; + space = strchr(subbook->graphic_file_name, ' '); + if (space != NULL) + *space = '\0'; + if (*(subbook->graphic_file_name) == '\0') { + strcpy(subbook->graphic_file_name, subbook->text_file_name); + subbook->graphic_hint_zio_code = subbook->text_hint_zio_code; + } + + if (subbook->graphic_hint_zio_code == ZIO_INVALID) { + error_code = EB_ERR_UNEXP_CAT; + goto failed; + } + + /* + * Set a sound file name and its compression hint. + */ + *(subbook->sound_file_name) = '\0'; + if ((data_types & 0x03) == 0x01) { + strncpy(subbook->sound_file_name, buffer + 44, + EB_MAX_DIRECTORY_NAME_LENGTH); + subbook->sound_hint_zio_code + = eb_get_hint_zio_code(eb_uint1(buffer + 54)); + } else if (((data_types >> 8) & 0x03) == 0x01) { + strncpy(subbook->sound_file_name, buffer + 56, + EB_MAX_DIRECTORY_NAME_LENGTH); + subbook->sound_hint_zio_code + = eb_get_hint_zio_code(eb_uint1(buffer + 53)); + } + subbook->sound_file_name[EB_MAX_DIRECTORY_NAME_LENGTH] = '\0'; + space = strchr(subbook->sound_file_name, ' '); + if (space != NULL) + *space = '\0'; + if (*(subbook->sound_file_name) == '\0') { + strcpy(subbook->sound_file_name, subbook->text_file_name); + subbook->sound_hint_zio_code = subbook->text_hint_zio_code; + } + + if (subbook->sound_hint_zio_code == ZIO_INVALID) { + error_code = EB_ERR_UNEXP_CAT; + goto failed; + } + } + + /* + * Close the catalog file. + */ + succeeded: + zio_close(&zio); + zio_finalize(&zio); + + /* + * Fix chachacter-code of the book. + */ + eb_fix_misleaded_book(book); + LOG(("out: eb_load_catalog_epwing() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + zio_close(&zio); + zio_initialize(&zio); + LOG(("out: eb_load_catalog_epwing() = %s", eb_error_string(error_code))); + return error_code; +} + + +static Zio_Code +eb_get_hint_zio_code(int catalog_hint_value) +{ + switch (catalog_hint_value) { + case 0x00: + return ZIO_PLAIN; + break; + case 0x11: + return ZIO_EPWING; + break; + case 0x12: + return ZIO_EPWING6; + break; + } + + return ZIO_INVALID; +} + + +/* + * Read information from the `LANGUAGE' file in `book'. + */ +static void +eb_load_language(EB_Book *book) +{ + Zio zio; + Zio_Code zio_code; + char language_path_name[EB_MAX_PATH_LENGTH + 1]; + char language_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + char buffer[16]; + + LOG(("in: eb_load_language(book=%d)", (int)book->code)); + + zio_initialize(&zio); + book->character_code = EB_CHARCODE_JISX0208; + + /* + * Open the language file. + */ + if (eb_find_file_name(book->path, "language", language_file_name) + != EB_SUCCESS) + goto failed; + + eb_compose_path_name(book->path, language_file_name, language_path_name); + eb_path_name_zio_code(language_path_name, ZIO_PLAIN, &zio_code); + + if (zio_open(&zio, language_path_name, zio_code) < 0) + goto failed; + + /* + * Get a character code of the book, and get the number of langueages + * in the file. + */ + if (zio_read(&zio, buffer, 16) != 16) + goto failed; + + book->character_code = eb_uint2(buffer); + if (book->character_code != EB_CHARCODE_ISO8859_1 + && book->character_code != EB_CHARCODE_JISX0208 + && book->character_code != EB_CHARCODE_JISX0208_GB2312) { + goto failed; + } + + zio_close(&zio); + LOG(("out: eb_load_language()")); + + return; + + /* + * An error occurs... + */ + failed: + zio_close(&zio); + LOG(("out: eb_load_language()")); +} + + +/* + * Test whether `book' is bound. + */ +int +eb_is_bound(EB_Book *book) +{ + int is_bound; + + eb_lock(&book->lock); + LOG(("in: eb_is_bound(book=%d)", (int)book->code)); + + /* + * Check for the current status. + */ + is_bound = (book->path != NULL); + + LOG(("out: eb_is_bound() = %d", is_bound)); + eb_unlock(&book->lock); + + return is_bound; +} + + +/* + * Return the bound path of `book'. + */ +EB_Error_Code +eb_path(EB_Book *book, char *path) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_path(book=%d)", (int)book->code)); + + /* + * Check for the current status. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Copy the path to `path'. + */ + strcpy(path, book->path); + + LOG(("out: eb_path(path=%s) = %s", path, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *path = '\0'; + LOG(("out: eb_path() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Inspect a disc type. + */ +EB_Error_Code +eb_disc_type(EB_Book *book, EB_Disc_Code *disc_code) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_disc_type(book=%d)", (int)book->code)); + + /* + * Check for the current status. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Copy the disc code to `disc_code'. + */ + *disc_code = book->disc_code; + + LOG(("out: eb_disc_type(disc_code=%d) = %s", (int)*disc_code, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *disc_code = EB_DISC_INVALID; + LOG(("out: eb_disc_type() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Inspect a character code used in the book. + */ +EB_Error_Code +eb_character_code(EB_Book *book, EB_Character_Code *character_code) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_character_code(book=%d)", (int)book->code)); + + /* + * Check for the current status. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Copy the character code to `character_code'. + */ + *character_code = book->character_code; + + LOG(("out: eb_character_code(character_code=%d) = %s", + (int)*character_code, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *character_code = EB_CHARCODE_INVALID; + LOG(("out: eb_character_code() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/book.lo b/lib/ebu/ebu/book.lo new file mode 100644 index 0000000..0224574 --- /dev/null +++ b/lib/ebu/ebu/book.lo @@ -0,0 +1,12 @@ +# book.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/book.o' + +# Name of the non-PIC object +non_pic_object='book.o' + diff --git a/lib/ebu/ebu/booklist.c b/lib/ebu/ebu/booklist.c new file mode 100644 index 0000000..9e8fac9 --- /dev/null +++ b/lib/ebu/ebu/booklist.c @@ -0,0 +1,326 @@ +/* + * Copyright (c) 2003-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#ifdef ENABLE_EBNET +#include "ebnet.h" +#endif +#include "build-post.h" + +/* + * Initial value of `max_entry_count' in `EB_BookList'. + */ +#define EB_INITIAL_BOOKLIST_MAX_ENTRY_COUNT 16 + +/* + * BookList ID counter. + */ +static EB_Book_Code booklist_counter = 0; + +/* + * Mutex for `booklist_counter'. + */ +#ifdef ENABLE_PTHREAD +static pthread_mutex_t booklist_counter_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif + + +/* + * Initialize a book list. + */ +void +eb_initialize_booklist(EB_BookList *booklist) +{ + LOG(("in: eb_initialize_booklist()")); + + booklist->entry_count = 0; + booklist->max_entry_count = 0; + booklist->entries = NULL; + eb_initialize_lock(&booklist->lock); + + LOG(("out: eb_initialize_booklist()")); +} + + +/* + * Finalize a book list. + */ +void +eb_finalize_booklist(EB_BookList *booklist) +{ + int i; + + LOG(("in: eb_finalize_booklist()")); + + if (booklist->entries != NULL) { + for (i = 0; i < booklist->entry_count; i++) { + free(booklist->entries[i].name); + free(booklist->entries[i].title); + } + free(booklist->entries); + booklist->entries = NULL; + } + booklist->entry_count = 0; + booklist->max_entry_count = 0; + + LOG(("out: eb_finalize_booklist()")); +} + + +/* + * Get a list of books from an EBNET server. + */ +EB_Error_Code +eb_bind_booklist(EB_BookList *booklist, const char *path) +{ + EB_Error_Code error_code; + int i; + + eb_lock(&booklist->lock); + LOG(("in: eb_bind_booklist(path=%s)", path)); + + pthread_mutex_lock(&booklist_counter_mutex); + booklist->code = booklist_counter++; + pthread_mutex_unlock(&booklist_counter_mutex); + +#ifndef ENABLE_EBNET + error_code = EB_ERR_EBNET_UNSUPPORTED; + goto failed; +#endif + if (!is_ebnet_url(path)) { + error_code = EB_ERR_BAD_FILE_NAME; + goto failed; + } + for (i = 0; i < booklist->entry_count; i++) { + free(booklist->entries[i].name); + free(booklist->entries[i].title); + } + + error_code = ebnet_bind_booklist(booklist, path); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_bind_booklist(book=%d) = %s", (int)booklist->code, + eb_error_string(EB_SUCCESS))); + eb_unlock(&booklist->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_finalize_booklist(booklist); + LOG(("out: eb_bind_booklist() = %s", eb_error_string(error_code))); + eb_unlock(&booklist->lock); + return error_code; +} + + +/* + * Add a book entry to `booklist'. + */ +EB_Error_Code +eb_booklist_add_book(EB_BookList *booklist, const char *name, + const char *title) +{ + int new_max_entry_count; + EB_BookList_Entry *new_entries; + char *new_name = NULL; + char *new_title = NULL; + EB_Error_Code error_code; + + LOG(("in: eb_booklist_add_book(name=%s, title=%s)", name, title)); + + if (booklist->entry_count == booklist->max_entry_count) { + if (booklist->max_entry_count == 0) { + new_max_entry_count = EB_INITIAL_BOOKLIST_MAX_ENTRY_COUNT; + new_entries = (EB_BookList_Entry *) + malloc(sizeof(EB_BookList_Entry) * new_max_entry_count); + } else { + new_max_entry_count = booklist->max_entry_count * 2; + new_entries = (EB_BookList_Entry *)realloc(booklist->entries, + sizeof(EB_BookList_Entry) * new_max_entry_count); + } + if (new_entries == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + booklist->max_entry_count = new_max_entry_count; + booklist->entries = new_entries; + } + + new_name = (char *)malloc(strlen(name) + 1); + if (new_name == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + strcpy(new_name, name); + + new_title = (char *)malloc(strlen(title) + 1); + if (new_title == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + strcpy(new_title, title); + + booklist->entries[booklist->entry_count].name = new_name; + booklist->entries[booklist->entry_count].title = new_title; + booklist->entry_count++; + + LOG(("out: eb_booklist_add_book() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + if (new_name != NULL) + free(new_name); + if (new_title != NULL) + free(new_title); + + LOG(("out: eb_booklist_book_add() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Return the number of books in `booklist'. + */ +EB_Error_Code +eb_booklist_book_count(EB_BookList *booklist, int *book_count) +{ + EB_Error_Code error_code; + + eb_lock(&booklist->lock); + LOG(("in: eb_booklist_book_count(booklist=%d)", (int)booklist->code)); + + if (booklist->entries == NULL) { + error_code = EB_ERR_UNBOUND_BOOKLIST; + goto failed; + } + *book_count = booklist->entry_count; + + LOG(("out: eb_booklist_book_count(count=%d) = %s", *book_count, + eb_error_string(EB_SUCCESS))); + eb_unlock(&booklist->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_booklist_book_count() = %s", eb_error_string(error_code))); + eb_unlock(&booklist->lock); + return error_code; +} + + +/* + * Return title of a book entry in `booklist'. + */ +EB_Error_Code +eb_booklist_book_name(EB_BookList *booklist, int book_index, char **book_name) +{ + EB_Error_Code error_code; + + eb_lock(&booklist->lock); + LOG(("in: eb_booklist_book_name(booklist=%d,index=%d)", + (int)booklist->code, book_index)); + + if (booklist->entries == NULL) { + error_code = EB_ERR_UNBOUND_BOOKLIST; + goto failed; + } + if (book_index < 0 || booklist->entry_count <= book_index) { + error_code = EB_ERR_NO_SUCH_BOOK; + goto failed; + } + + *book_name = booklist->entries[book_index].name; + + LOG(("out: eb_booklist_book_name(*book_name=%s) = %s", + (*book_name == NULL) ? "NULL" : *book_name, + eb_error_string(EB_SUCCESS))); + + eb_unlock(&booklist->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_booklist_book_name() = %s", eb_error_string(error_code))); + eb_unlock(&booklist->lock); + return error_code; +} + + +/* + * Return name of a book entry in `booklist'. + */ +EB_Error_Code +eb_booklist_book_title(EB_BookList *booklist, int book_index, + char **book_title) +{ + EB_Error_Code error_code; + + eb_lock(&booklist->lock); + LOG(("in: eb_booklist_book_title(booklist=%d,index=%d)", + (int)booklist->code, book_index)); + + if (booklist->entries == NULL) { + error_code = EB_ERR_UNBOUND_BOOKLIST; + goto failed; + } + if (book_index < 0 || booklist->entry_count <= book_index) { + error_code = EB_ERR_NO_SUCH_BOOK; + goto failed; + } + *book_title = booklist->entries[book_index].title; + + LOG(("out: eb_booklist_book_title(*book_title=%s) = %s", + (*book_title == NULL) ? "NULL" : *book_title, + eb_error_string(EB_SUCCESS))); + + eb_unlock(&booklist->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_booklist_book_title() = %s", eb_error_string(error_code))); + eb_unlock(&booklist->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/booklist.h b/lib/ebu/ebu/booklist.h new file mode 100644 index 0000000..59fcb62 --- /dev/null +++ b/lib/ebu/ebu/booklist.h @@ -0,0 +1,60 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_BOOKLIST_H +#define EB_BOOKLIST_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef EB_BUILD_LIBRARY +#include "eb.h" +#else +#include +#endif + +/* + * Function declarations. + */ +/* booklist.c */ +void eb_initialize_booklist(EB_BookList *booklist); +void eb_finalize_booklist(EB_BookList *booklist); +EB_Error_Code eb_bind_booklist(EB_BookList *booklist, const char *path); +EB_Error_Code eb_booklist_book_count(EB_BookList *booklist, int *book_count); +EB_Error_Code eb_booklist_book_name(EB_BookList *booklist, int book_index, + char **book_name); +EB_Error_Code eb_booklist_book_title(EB_BookList *booklist, int book_index, + char **book_title); + + +#ifdef __cplusplus +} +#endif + +#endif /* not EB_BOOKLIST_H */ diff --git a/lib/ebu/ebu/booklist.lo b/lib/ebu/ebu/booklist.lo new file mode 100644 index 0000000..e3fac85 --- /dev/null +++ b/lib/ebu/ebu/booklist.lo @@ -0,0 +1,12 @@ +# booklist.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/booklist.o' + +# Name of the non-PIC object +non_pic_object='booklist.o' + diff --git a/lib/ebu/ebu/build-post.h b/lib/ebu/ebu/build-post.h new file mode 100644 index 0000000..c01ebcd --- /dev/null +++ b/lib/ebu/ebu/build-post.h @@ -0,0 +1,367 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_BUILD_POST_H +#define EB_BUILD_POST_H + +#include "defs.h" + +/* + * Text domain name. + */ +#define EB_TEXT_DOMAIN_NAME "ebu" + +/* + * Locale directory. + */ +#ifndef WIN32 +#define EB_LOCALEDIR "/usr/local/share/locale" +#else +#define EB_LOCALEDIR localedir() +#endif + +/* + * Data size of a book entry in a catalog file. + */ +#define EB_SIZE_EB_CATALOG 40 +#define EB_SIZE_EPWING_CATALOG 164 + +/* + * Maximum number of search titles. + */ +#define EB_MAX_SEARCH_TITLES 14 + +/* + * File names. + */ +#define EB_FILE_NAME_START "start" +#define EB_FILE_NAME_HONMON "honmon" +#define EB_FILE_NAME_FUROKU "furoku" +#define EB_FILE_NAME_APPENDIX "appendix" + +/* + * Directory names. + */ +#define EB_DIRECTORY_NAME_DATA "data" +#define EB_DIRECTORY_NAME_GAIJI "gaiji" +#define EB_DIRECTORY_NAME_STREAM "stream" +#define EB_DIRECTORY_NAME_MOVIE "movie" + +/* + * Search word types. + */ +#define EB_WORD_ALPHABET 0 +#define EB_WORD_KANA 1 +#define EB_WORD_OTHER 2 +#define EB_WORD_INVALID -1 + +/* + * Index Style flags. + */ +#define EB_INDEX_STYLE_CONVERT 0 +#define EB_INDEX_STYLE_ASIS 1 +#define EB_INDEX_STYLE_REVERSED_CONVERT 2 +#define EB_INDEX_STYLE_DELETE 2 + +/* + * Text content currently read. + */ +#define EB_TEXT_MAIN_TEXT 1 +#define EB_TEXT_HEADING 2 +#define EB_TEXT_RAWTEXT 3 +#define EB_TEXT_OPTIONAL_TEXT 4 +#define EB_TEXT_SEEKED 0 +#define EB_TEXT_INVALID -1 + +/* + * Search method currently processed. + */ +#define EB_SEARCH_EXACTWORD 0 +#define EB_SEARCH_WORD 1 +#define EB_SEARCH_ENDWORD 2 +#define EB_SEARCH_KEYWORD 3 +#define EB_SEARCH_MULTI 4 +#define EB_SEARCH_CROSS 5 +#define EB_SEARCH_NONE -1 + +/* + * Arrangement style of entries in a search index page. + */ +#define EB_ARRANGE_FIXED 0 +#define EB_ARRANGE_VARIABLE 1 +#define EB_ARRANGE_INVALID -1 + +/* + * Binary data types. + */ +#define EB_BINARY_MONO_GRAPHIC 0 +#define EB_BINARY_COLOR_GRAPHIC 1 +#define EB_BINARY_WAVE 2 +#define EB_BINARY_MPEG 3 +#define EB_BINARY_GRAY_GRAPHIC 4 +#define EB_BINARY_INVALID -1 + +/* + * Text-stop status. + */ +#define EB_TEXT_STATUS_CONTINUED 0 +#define EB_TEXT_STATUS_SOFT_STOP 1 +#define EB_TEXT_STATUS_HARD_STOP 2 + +/* + * The maximum index depth of search indexes. + */ +#define EB_MAX_INDEX_DEPTH 6 + +/* + * The maximum length of path name relative to top directory of a CD-ROM + * book. An example of the longest relative path is: + * + * "subdir01/subdir02/filename.ebz;1" + */ +#define EB_MAX_RELATIVE_PATH_LENGTH \ + (EB_MAX_DIRECTORY_NAME_LENGTH + 1 \ + + EB_MAX_DIRECTORY_NAME_LENGTH + 1 \ + + EB_MAX_FILE_NAME_LENGTH) + +/* + * The environment variable name to enable/disable debug messages. + */ +#define EB_DEBUG_ENVIRONMENT_VARIABLE "EB_DEBUG" + +/* + * Trace log macro. + */ +#define LOG(x) do {if (eb_log_flag) eb_log x;} while (0) + +/* + * Get an unsigned value from an octet stream buffer. + */ +#define eb_uint1(p) (*(const unsigned char *)(p)) + +#define eb_uint2(p) ((*(const unsigned char *)(p) << 8) \ + + (*(const unsigned char *)((p) + 1))) + +#define eb_uint3(p) ((*(const unsigned char *)(p) << 16) \ + + (*(const unsigned char *)((p) + 1) << 8) \ + + (*(const unsigned char *)((p) + 2))) + +#define eb_uint4(p) ((*(const unsigned char *)(p) << 24) \ + + (*(const unsigned char *)((p) + 1) << 16) \ + + (*(const unsigned char *)((p) + 2) << 8) \ + + (*(const unsigned char *)((p) + 3))) + +#define eb_uint4_le(p) ((*(const unsigned char *)(p)) \ + + (*(const unsigned char *)((p) + 1) << 8) \ + + (*(const unsigned char *)((p) + 2) << 16) \ + + (*(const unsigned char *)((p) + 3) << 24)) + +/* + * Test whether the path is URL with the `ebnet' scheme. + */ +#define is_ebnet_url(p) \ + ( ((p)[0] == 'E' || (p)[0] == 'e') \ + && ((p)[1] == 'B' || (p)[1] == 'b') \ + && ((p)[2] == 'N' || (p)[2] == 'n') \ + && ((p)[3] == 'E' || (p)[3] == 'e') \ + && ((p)[4] == 'T' || (p)[4] == 't') \ + && (p)[5] == ':' && (p)[6] == '/' && (p)[7] == '/') + +/* + * Test whether `off_t' represents a large integer. + */ +#define off_t_is_large \ + ((((off_t) 1 << 41) + ((off_t) 1 << 40) + 1) % 9999991 == 7852006) + +/* + * External variable declarations. + */ +/* log.c */ +extern int eb_log_flag; + +/* hook.c */ +extern EB_Hookset eb_default_hookset; + +/* + * Function declarations. + */ +/* appendix.c */ +void eb_initialize_alt_caches(EB_Appendix *appendix); +void eb_finalize_alt_caches(EB_Appendix *appendix); + +/* appsub.c */ +void eb_initialize_appendix_subbooks(EB_Appendix *appendix); +void eb_finalize_appendix_subbooks(EB_Appendix *appendix); + +/* bcd.c */ +unsigned eb_bcd2(const char *stream); +unsigned eb_bcd4(const char *stream); +unsigned eb_bcd6(const char *stream); + +/* binary.c */ +void eb_initialize_binary_context(EB_Book *book); +void eb_reset_binary_context(EB_Book *book); +void eb_finalize_binary_context(EB_Book *book); + +/* booklist.c */ +EB_Error_Code eb_booklist_add_book(EB_BookList *booklist, const char *name, + const char *title); + +/* filename.c */ +EB_Error_Code eb_canonicalize_path_name(char *path_name); +void eb_canonicalize_file_name(char *file_name); +EB_Error_Code eb_fix_directory_name(const char *path, char *directory_name); +EB_Error_Code eb_fix_directory_name2(const char *path, + const char *directory_name, char *sub_directory_name); +void eb_fix_path_name_suffix(char *path_name, const char *suffix); +EB_Error_Code eb_find_file_name(const char *path_name, + const char *target_file_name, char *found_file_name); +EB_Error_Code eb_find_file_name2(const char *path_name, + const char *sub_directory_name, const char *target_file_name, + char *found_file_name); +EB_Error_Code eb_find_file_name3(const char *path_name, + const char *sub_directory_name, const char *sub2_directory_name, + const char *target_file_name, char *found_file_name); +void eb_compose_path_name(const char *path_name, const char *file_name, + char *composed_path_name); +void eb_compose_path_name2(const char *path_name, + const char *sub_directory_name, const char *file_name, + char *composed_path_name); +void eb_compose_path_name3(const char *path_name, + const char *sub_directory_name, const char *sub2_directory_name, + const char *file_name, char *composed_path_name); +void eb_path_name_zio_code(const char *path_name, Zio_Code default_zio_code, + Zio_Code *zio_code); + +/* font.c */ +void eb_initialize_fonts(EB_Book *book); +void eb_load_font_headers(EB_Book *book); +void eb_finalize_fonts(EB_Book *book); + +/* hook.c */ +void eb_initialize_default_hookset(void); + +/* jacode.c */ +void eb_jisx0208_to_euc(char *out_string, const char *in_string); +void eb_sjis_to_euc(char *out_string, const char *in_string); +void eb_ebcdic037_to_ascii(char *out_string, const char *in_string); + +/* lock.c */ +#ifdef ENABLE_PTHREAD +void eb_initialize_lock(EB_Lock *lock); +void eb_finalize_lock(EB_Lock *lock); +void eb_lock(EB_Lock *lock); +void eb_unlock(EB_Lock *lock); +#else /* not ENABLE_PTHREAD */ +#define eb_lock(x) +#define eb_unlock(x) +#define eb_initialize_lock(x) +#define eb_finalize_lock(x) +#endif /* not ENABLE_PTHREAD */ + +/* log.c */ +void eb_initialize_log(void); +const char *eb_quoted_stream(const char *stream, size_t stream_length); +const char *eb_quoted_string(const char *string); + +/* match.c */ +int eb_match_word(const char *word, const char *pattern, size_t length); +int eb_pre_match_word(const char *word, const char *pattern, size_t length); +int eb_exact_match_word_jis(const char *word, const char *pattern, + size_t length); +int eb_exact_pre_match_word_jis(const char *word, const char *pattern, + size_t length); +int eb_exact_match_word_latin(const char *word, const char *pattern, + size_t length); +int eb_exact_pre_match_word_latin(const char *word, const char *pattern, + size_t); +int eb_match_word_kana_single(const char *word, const char *pattern, + size_t length); +int eb_match_word_kana_group(const char *word, const char *pattern, + size_t length); +int eb_exact_match_word_kana_single(const char *word, const char *pattern, + size_t length); +int eb_exact_match_word_kana_group(const char *word, const char *pattern, + size_t length); + +/* message.c */ +EB_Error_Code eb_initialize_messages(EB_Book *book); + +/* multi.c */ +EB_Error_Code eb_load_multi_searches(EB_Book *book); +EB_Error_Code eb_load_multi_titles(EB_Book *book); + +/* narwfont.c */ +EB_Error_Code eb_open_narrow_font_file(EB_Book *book, EB_Font_Code font_code); +EB_Error_Code eb_load_narrow_font_header(EB_Book *book, + EB_Font_Code font_code); +EB_Error_Code eb_load_narrow_font_glyphs(EB_Book *book, + EB_Font_Code font_code); + +/* search.c */ +void eb_initialize_search_contexts(EB_Book *book); +void eb_finalize_search_contexts(EB_Book *book); +void eb_reset_search_contexts(EB_Book *book); +void eb_initialize_search(EB_Search *search); +void eb_finalize_search(EB_Search *search); +void eb_initialize_searches(EB_Book *book); +void eb_finalize_searches(EB_Book *book); +EB_Error_Code eb_presearch_word(EB_Book *book, EB_Search_Context *context); + +/* setword.c */ +EB_Error_Code eb_set_word(EB_Book *book, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code); +EB_Error_Code eb_set_endword(EB_Book *book, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code); +EB_Error_Code eb_set_keyword(EB_Book *book, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code); +EB_Error_Code eb_set_multiword(EB_Book *book, EB_Multi_Search_Code multi_id, + EB_Multi_Entry_Code entry_id, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code); + +/* subbook.c */ +void eb_initialize_subbooks(EB_Book *book); +void eb_finalize_subbooks(EB_Book *book); + +/* text.c */ +void eb_initialize_text_context(EB_Book *book); +void eb_finalize_text_context(EB_Book *book); +void eb_reset_text_context(EB_Book *book); +void eb_invalidate_text_context(EB_Book *book); +EB_Error_Code eb_forward_heading(EB_Book *book); + +/* widefont.c */ +EB_Error_Code eb_open_wide_font_file(EB_Book *book, EB_Font_Code font_code); +EB_Error_Code eb_load_wide_font_header(EB_Book *book, EB_Font_Code font_code); +EB_Error_Code eb_load_wide_font_glyphs(EB_Book *book, EB_Font_Code font_code); + +/* strcasecmp.c */ +int eb_strcasecmp(const char *string1, const char *string2); +int eb_strncasecmp(const char *string1, const char *string2, size_t n); + +#endif /* not EB_BUILD_POST_H */ diff --git a/lib/ebu/ebu/build-post.h.in b/lib/ebu/ebu/build-post.h.in new file mode 100644 index 0000000..9075cde --- /dev/null +++ b/lib/ebu/ebu/build-post.h.in @@ -0,0 +1,367 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_BUILD_POST_H +#define EB_BUILD_POST_H + +#include "defs.h" + +/* + * Text domain name. + */ +#define EB_TEXT_DOMAIN_NAME "ebu" + +/* + * Locale directory. + */ +#ifndef WIN32 +#define EB_LOCALEDIR "@localedir@" +#else +#define EB_LOCALEDIR localedir() +#endif + +/* + * Data size of a book entry in a catalog file. + */ +#define EB_SIZE_EB_CATALOG 40 +#define EB_SIZE_EPWING_CATALOG 164 + +/* + * Maximum number of search titles. + */ +#define EB_MAX_SEARCH_TITLES 14 + +/* + * File names. + */ +#define EB_FILE_NAME_START "start" +#define EB_FILE_NAME_HONMON "honmon" +#define EB_FILE_NAME_FUROKU "furoku" +#define EB_FILE_NAME_APPENDIX "appendix" + +/* + * Directory names. + */ +#define EB_DIRECTORY_NAME_DATA "data" +#define EB_DIRECTORY_NAME_GAIJI "gaiji" +#define EB_DIRECTORY_NAME_STREAM "stream" +#define EB_DIRECTORY_NAME_MOVIE "movie" + +/* + * Search word types. + */ +#define EB_WORD_ALPHABET 0 +#define EB_WORD_KANA 1 +#define EB_WORD_OTHER 2 +#define EB_WORD_INVALID -1 + +/* + * Index Style flags. + */ +#define EB_INDEX_STYLE_CONVERT 0 +#define EB_INDEX_STYLE_ASIS 1 +#define EB_INDEX_STYLE_REVERSED_CONVERT 2 +#define EB_INDEX_STYLE_DELETE 2 + +/* + * Text content currently read. + */ +#define EB_TEXT_MAIN_TEXT 1 +#define EB_TEXT_HEADING 2 +#define EB_TEXT_RAWTEXT 3 +#define EB_TEXT_OPTIONAL_TEXT 4 +#define EB_TEXT_SEEKED 0 +#define EB_TEXT_INVALID -1 + +/* + * Search method currently processed. + */ +#define EB_SEARCH_EXACTWORD 0 +#define EB_SEARCH_WORD 1 +#define EB_SEARCH_ENDWORD 2 +#define EB_SEARCH_KEYWORD 3 +#define EB_SEARCH_MULTI 4 +#define EB_SEARCH_CROSS 5 +#define EB_SEARCH_NONE -1 + +/* + * Arrangement style of entries in a search index page. + */ +#define EB_ARRANGE_FIXED 0 +#define EB_ARRANGE_VARIABLE 1 +#define EB_ARRANGE_INVALID -1 + +/* + * Binary data types. + */ +#define EB_BINARY_MONO_GRAPHIC 0 +#define EB_BINARY_COLOR_GRAPHIC 1 +#define EB_BINARY_WAVE 2 +#define EB_BINARY_MPEG 3 +#define EB_BINARY_GRAY_GRAPHIC 4 +#define EB_BINARY_INVALID -1 + +/* + * Text-stop status. + */ +#define EB_TEXT_STATUS_CONTINUED 0 +#define EB_TEXT_STATUS_SOFT_STOP 1 +#define EB_TEXT_STATUS_HARD_STOP 2 + +/* + * The maximum index depth of search indexes. + */ +#define EB_MAX_INDEX_DEPTH 6 + +/* + * The maximum length of path name relative to top directory of a CD-ROM + * book. An example of the longest relative path is: + * + * "subdir01/subdir02/filename.ebz;1" + */ +#define EB_MAX_RELATIVE_PATH_LENGTH \ + (EB_MAX_DIRECTORY_NAME_LENGTH + 1 \ + + EB_MAX_DIRECTORY_NAME_LENGTH + 1 \ + + EB_MAX_FILE_NAME_LENGTH) + +/* + * The environment variable name to enable/disable debug messages. + */ +#define EB_DEBUG_ENVIRONMENT_VARIABLE "EB_DEBUG" + +/* + * Trace log macro. + */ +#define LOG(x) do {if (eb_log_flag) eb_log x;} while (0) + +/* + * Get an unsigned value from an octet stream buffer. + */ +#define eb_uint1(p) (*(const unsigned char *)(p)) + +#define eb_uint2(p) ((*(const unsigned char *)(p) << 8) \ + + (*(const unsigned char *)((p) + 1))) + +#define eb_uint3(p) ((*(const unsigned char *)(p) << 16) \ + + (*(const unsigned char *)((p) + 1) << 8) \ + + (*(const unsigned char *)((p) + 2))) + +#define eb_uint4(p) ((*(const unsigned char *)(p) << 24) \ + + (*(const unsigned char *)((p) + 1) << 16) \ + + (*(const unsigned char *)((p) + 2) << 8) \ + + (*(const unsigned char *)((p) + 3))) + +#define eb_uint4_le(p) ((*(const unsigned char *)(p)) \ + + (*(const unsigned char *)((p) + 1) << 8) \ + + (*(const unsigned char *)((p) + 2) << 16) \ + + (*(const unsigned char *)((p) + 3) << 24)) + +/* + * Test whether the path is URL with the `ebnet' scheme. + */ +#define is_ebnet_url(p) \ + ( ((p)[0] == 'E' || (p)[0] == 'e') \ + && ((p)[1] == 'B' || (p)[1] == 'b') \ + && ((p)[2] == 'N' || (p)[2] == 'n') \ + && ((p)[3] == 'E' || (p)[3] == 'e') \ + && ((p)[4] == 'T' || (p)[4] == 't') \ + && (p)[5] == ':' && (p)[6] == '/' && (p)[7] == '/') + +/* + * Test whether `off_t' represents a large integer. + */ +#define off_t_is_large \ + ((((off_t) 1 << 41) + ((off_t) 1 << 40) + 1) % 9999991 == 7852006) + +/* + * External variable declarations. + */ +/* log.c */ +extern int eb_log_flag; + +/* hook.c */ +extern EB_Hookset eb_default_hookset; + +/* + * Function declarations. + */ +/* appendix.c */ +void eb_initialize_alt_caches(EB_Appendix *appendix); +void eb_finalize_alt_caches(EB_Appendix *appendix); + +/* appsub.c */ +void eb_initialize_appendix_subbooks(EB_Appendix *appendix); +void eb_finalize_appendix_subbooks(EB_Appendix *appendix); + +/* bcd.c */ +unsigned eb_bcd2(const char *stream); +unsigned eb_bcd4(const char *stream); +unsigned eb_bcd6(const char *stream); + +/* binary.c */ +void eb_initialize_binary_context(EB_Book *book); +void eb_reset_binary_context(EB_Book *book); +void eb_finalize_binary_context(EB_Book *book); + +/* booklist.c */ +EB_Error_Code eb_booklist_add_book(EB_BookList *booklist, const char *name, + const char *title); + +/* filename.c */ +EB_Error_Code eb_canonicalize_path_name(char *path_name); +void eb_canonicalize_file_name(char *file_name); +EB_Error_Code eb_fix_directory_name(const char *path, char *directory_name); +EB_Error_Code eb_fix_directory_name2(const char *path, + const char *directory_name, char *sub_directory_name); +void eb_fix_path_name_suffix(char *path_name, const char *suffix); +EB_Error_Code eb_find_file_name(const char *path_name, + const char *target_file_name, char *found_file_name); +EB_Error_Code eb_find_file_name2(const char *path_name, + const char *sub_directory_name, const char *target_file_name, + char *found_file_name); +EB_Error_Code eb_find_file_name3(const char *path_name, + const char *sub_directory_name, const char *sub2_directory_name, + const char *target_file_name, char *found_file_name); +void eb_compose_path_name(const char *path_name, const char *file_name, + char *composed_path_name); +void eb_compose_path_name2(const char *path_name, + const char *sub_directory_name, const char *file_name, + char *composed_path_name); +void eb_compose_path_name3(const char *path_name, + const char *sub_directory_name, const char *sub2_directory_name, + const char *file_name, char *composed_path_name); +void eb_path_name_zio_code(const char *path_name, Zio_Code default_zio_code, + Zio_Code *zio_code); + +/* font.c */ +void eb_initialize_fonts(EB_Book *book); +void eb_load_font_headers(EB_Book *book); +void eb_finalize_fonts(EB_Book *book); + +/* hook.c */ +void eb_initialize_default_hookset(void); + +/* jacode.c */ +void eb_jisx0208_to_euc(char *out_string, const char *in_string); +void eb_sjis_to_euc(char *out_string, const char *in_string); +void eb_ebcdic037_to_ascii(char *out_string, const char *in_string); + +/* lock.c */ +#ifdef ENABLE_PTHREAD +void eb_initialize_lock(EB_Lock *lock); +void eb_finalize_lock(EB_Lock *lock); +void eb_lock(EB_Lock *lock); +void eb_unlock(EB_Lock *lock); +#else /* not ENABLE_PTHREAD */ +#define eb_lock(x) +#define eb_unlock(x) +#define eb_initialize_lock(x) +#define eb_finalize_lock(x) +#endif /* not ENABLE_PTHREAD */ + +/* log.c */ +void eb_initialize_log(void); +const char *eb_quoted_stream(const char *stream, size_t stream_length); +const char *eb_quoted_string(const char *string); + +/* match.c */ +int eb_match_word(const char *word, const char *pattern, size_t length); +int eb_pre_match_word(const char *word, const char *pattern, size_t length); +int eb_exact_match_word_jis(const char *word, const char *pattern, + size_t length); +int eb_exact_pre_match_word_jis(const char *word, const char *pattern, + size_t length); +int eb_exact_match_word_latin(const char *word, const char *pattern, + size_t length); +int eb_exact_pre_match_word_latin(const char *word, const char *pattern, + size_t); +int eb_match_word_kana_single(const char *word, const char *pattern, + size_t length); +int eb_match_word_kana_group(const char *word, const char *pattern, + size_t length); +int eb_exact_match_word_kana_single(const char *word, const char *pattern, + size_t length); +int eb_exact_match_word_kana_group(const char *word, const char *pattern, + size_t length); + +/* message.c */ +EB_Error_Code eb_initialize_messages(EB_Book *book); + +/* multi.c */ +EB_Error_Code eb_load_multi_searches(EB_Book *book); +EB_Error_Code eb_load_multi_titles(EB_Book *book); + +/* narwfont.c */ +EB_Error_Code eb_open_narrow_font_file(EB_Book *book, EB_Font_Code font_code); +EB_Error_Code eb_load_narrow_font_header(EB_Book *book, + EB_Font_Code font_code); +EB_Error_Code eb_load_narrow_font_glyphs(EB_Book *book, + EB_Font_Code font_code); + +/* search.c */ +void eb_initialize_search_contexts(EB_Book *book); +void eb_finalize_search_contexts(EB_Book *book); +void eb_reset_search_contexts(EB_Book *book); +void eb_initialize_search(EB_Search *search); +void eb_finalize_search(EB_Search *search); +void eb_initialize_searches(EB_Book *book); +void eb_finalize_searches(EB_Book *book); +EB_Error_Code eb_presearch_word(EB_Book *book, EB_Search_Context *context); + +/* setword.c */ +EB_Error_Code eb_set_word(EB_Book *book, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code); +EB_Error_Code eb_set_endword(EB_Book *book, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code); +EB_Error_Code eb_set_keyword(EB_Book *book, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code); +EB_Error_Code eb_set_multiword(EB_Book *book, EB_Multi_Search_Code multi_id, + EB_Multi_Entry_Code entry_id, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code); + +/* subbook.c */ +void eb_initialize_subbooks(EB_Book *book); +void eb_finalize_subbooks(EB_Book *book); + +/* text.c */ +void eb_initialize_text_context(EB_Book *book); +void eb_finalize_text_context(EB_Book *book); +void eb_reset_text_context(EB_Book *book); +void eb_invalidate_text_context(EB_Book *book); +EB_Error_Code eb_forward_heading(EB_Book *book); + +/* widefont.c */ +EB_Error_Code eb_open_wide_font_file(EB_Book *book, EB_Font_Code font_code); +EB_Error_Code eb_load_wide_font_header(EB_Book *book, EB_Font_Code font_code); +EB_Error_Code eb_load_wide_font_glyphs(EB_Book *book, EB_Font_Code font_code); + +/* strcasecmp.c */ +int eb_strcasecmp(const char *string1, const char *string2); +int eb_strncasecmp(const char *string1, const char *string2, size_t n); + +#endif /* not EB_BUILD_POST_H */ diff --git a/lib/ebu/ebu/build-pre.h b/lib/ebu/ebu/build-pre.h new file mode 100644 index 0000000..0dd96bf --- /dev/null +++ b/lib/ebu/ebu/build-pre.h @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2000-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_BUILD_PRE_H +#define EB_BUILD_PRE_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_DIRECT_H +#include +#endif + +#ifdef HAVE__GETDCWD +#define getcwd _getcwd +#define getdcwd _getdcwd +#endif + +#ifdef ENABLE_PTHREAD +#include +#endif + +#ifdef ENABLE_NLS +#include +#endif + +/* + * Mutual exclusion lock of Pthreads. + */ +#ifndef ENABLE_PTHREAD +#define pthread_mutex_lock(m) +#define pthread_mutex_unlock(m) +#endif + +/* + * stat() macros. + */ +#ifndef S_ISREG +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif +#ifndef S_ISDIR +#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif + +/* + * Flags for open(). + */ +#ifndef O_BINARY +#define O_BINARY 0 +#endif + +/* + * Character type tests and conversions. + */ +#define ASCII_ISDIGIT(c) ('0' <= (c) && (c) <= '9') +#define ASCII_ISUPPER(c) ('A' <= (c) && (c) <= 'Z') +#define ASCII_ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define ASCII_ISALPHA(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c)) +#define ASCII_ISALNUM(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c) || ASCII_ISDIGIT(c)) +#define ASCII_ISXDIGIT(c) \ + (ASCII_ISDIGIT(c) || ('A' <= (c) && (c) <= 'F') || ('a' <= (c) && (c) <= 'f')) +#define ASCII_TOUPPER(c) (('a' <= (c) && (c) <= 'z') ? (c) - 0x20 : (c)) +#define ASCII_TOLOWER(c) (('A' <= (c) && (c) <= 'Z') ? (c) + 0x20 : (c)) + +/* + * Tricks for gettext. + */ +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define _(string) (string) +#define N_(string) (string) +#endif + +/* + * Fake missing function names. + */ +#ifndef HAVE_STRCASECMP +#define strcasecmp eb_strcasecmp +#define strncasecmp eb_strncasecmp +#endif + +#ifndef HAVE_GETADDRINFO +#define addrinfo ebnet_addrinfo +#define getaddrinfo ebnet_getaddrinfo +#define freeaddrinfo ebnet_freeaddrinfo +#endif + +#ifndef HAVE_GETNAMEINFO +#define getnameinfo ebnet_getnameinfo +#endif + +#ifndef HAVE_GAI_STRERROR +#define gai_strerror ebnet_gai_strerror +#endif + +#ifndef IN6ADDR_ANY_DECLARED +#define in6addr_any ebnet_in6addr_any +#endif + +#ifndef IN6ADDR_LOOPBACK_DECLARED +#define in6addr_loopback ebnet_in6addr_loopback +#endif + +#endif /* EB_BUILD_PRE_H */ diff --git a/lib/ebu/ebu/color.c b/lib/ebu/ebu/color.c new file mode 100644 index 0000000..82895cd --- /dev/null +++ b/lib/ebu/ebu/color.c @@ -0,0 +1,292 @@ +/* + * Copyright (c) 2020 Kazuhiro Ito + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `book' has color chart or + * not. + */ +int +eb_have_color_chart(EB_Book *book) +{ + int result = 0; + + eb_lock(&book->lock); + LOG(("in: eb_have_color_chart(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * Check for the index page of color chart. + */ + if (book->subbook_current->color_chart.start_page == 0) + goto failed; + + result = 1; + + failed: + LOG(("out: eb_have_color_chart() = %d", result)); + eb_unlock(&book->lock); + return result; +} + + +/* return beginning POSITION of color chart. */ +EB_Error_Code +eb_color_chart(EB_Book *book, EB_Position *position) +{ + EB_Error_Code error_code; + int page; + + eb_lock(&book->lock); + LOG(("in: eb_color_chart(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check for the page number of color chart. + */ + page = book->subbook_current->color_chart.start_page; + if (page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + position->page = page; + position->offset = 0; + + LOG(("out: eb_color_chart(position={%d,%d}) = %s", + position->page, position->offset, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + failed: + LOG(("out: eb_color_chart() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + + +/* + * Write NUMBERth color's Munsell value (in ascii) into buffer VALUE. + * buffer needs EB_MAX_COLOR_VALUE_LENGTH + 1 bytes. + * NUMBER starts from 1. + */ +EB_Error_Code +eb_color_value(EB_Book *book, int number, char *value) +{ + EB_Error_Code error_code; + int page; + + eb_lock(&book->lock); + LOG(("in: eb_color_value(book=%d, number=%d)", (int)book->code, number)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check for the page number of color chart. + */ + page = book->subbook_current->color_chart.start_page; + if (page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + page += (number -1); + if (number < 1 || page > book->subbook_current->color_chart.end_page) { + error_code = EB_ERR_NO_SUCH_COLOR; + goto failed; + } + + if (zio_lseek(&book->subbook_current->text_zio, + (page - 1) * EB_SIZE_PAGE, SEEK_SET) == -1) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + + if (zio_read(&book->subbook_current->text_zio, value, + EB_MAX_COLOR_VALUE_LENGTH) < EB_MAX_COLOR_VALUE_LENGTH) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + value[EB_MAX_COLOR_VALUE_LENGTH] = 0; + eb_ebcdic037_to_ascii(value, value); + + error_code = EB_SUCCESS; + + failed: + LOG(("out: eb_color_value() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + +/* + * Write NUMBERth color name (in EUC-JP) into buffer NAME. + * Buffer needs (EB_MAX_COLOR_NAME_LENGTH + 1) bytes. + * NUMBER starts from 1. + */ +EB_Error_Code +eb_color_name(EB_Book *book, int number, char *name) +{ + EB_Error_Code error_code; + int page; + ssize_t length; + + eb_lock(&book->lock); + LOG(("in: eb_color_name(book=%d, number=%d)", (int)book->code, number)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check for the page number of color chart. + */ + page = book->subbook_current->color_chart.start_page; + if (page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + page += (number -1); + if (number < 1 || page > book->subbook_current->color_chart.end_page) { + error_code = EB_ERR_NO_SUCH_COLOR; + goto failed; + } + + if (zio_lseek(&book->subbook_current->text_zio, + (page - 1) * EB_SIZE_PAGE + EB_MAX_COLOR_VALUE_LENGTH, + SEEK_SET) == -1) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + + if (zio_read(&book->subbook_current->text_zio, name, + EB_MAX_COLOR_NAME_LENGTH) < EB_MAX_COLOR_NAME_LENGTH) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + name[EB_MAX_COLOR_NAME_LENGTH] = 0; + eb_jisx0208_to_euc(name, name); + + error_code = EB_SUCCESS; + + failed: + LOG(("out: eb_color_name() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + +/* + * Write NUMBERth color page dump into buffer BUFFER. + * Buffer needs EB_SIZE_PAGE bytes. + * NUMBER starts from 1. + */ +EB_Error_Code +eb_color_page(EB_Book *book, int number, char *buffer) +{ + EB_Error_Code error_code; + int page; + + eb_lock(&book->lock); + LOG(("in: eb_color_page(book=%d, number=%d)", (int)book->code, number)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check for the page number of color chart. + */ + page = book->subbook_current->color_chart.start_page; + if (page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + page += (number - 1); + if (number < 1 || page > book->subbook_current->color_chart.end_page) { + error_code = EB_ERR_NO_SUCH_COLOR; + goto failed; + } + + if (zio_lseek(&book->subbook_current->text_zio, + (page - 1) * EB_SIZE_PAGE + EB_MAX_COLOR_VALUE_LENGTH, + SEEK_SET) == -1) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + + if (zio_read(&book->subbook_current->text_zio, buffer, EB_SIZE_PAGE) < + EB_SIZE_PAGE) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + error_code = EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_color_name() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} diff --git a/lib/ebu/ebu/color.lo b/lib/ebu/ebu/color.lo new file mode 100644 index 0000000..79ac378 --- /dev/null +++ b/lib/ebu/ebu/color.lo @@ -0,0 +1,12 @@ +# color.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/color.o' + +# Name of the non-PIC object +non_pic_object='color.o' + diff --git a/lib/ebu/ebu/copyright.c b/lib/ebu/ebu/copyright.c new file mode 100644 index 0000000..d297382 --- /dev/null +++ b/lib/ebu/ebu/copyright.c @@ -0,0 +1,121 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `book' have a copyright + * notice or not. + */ +int +eb_have_copyright(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_copyright(book=%d)", (int)book->code)); + + /* + * Check for the current status. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * Check for the index page of copyright notice. + */ + if (book->subbook_current->copyright.start_page == 0) + goto failed; + + LOG(("out: eb_have_copyright() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_copyright() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Get a position of copyright notice. + */ +EB_Error_Code +eb_copyright(EB_Book *book, EB_Position *position) +{ + EB_Error_Code error_code; + int page; + + eb_lock(&book->lock); + LOG(("in: eb_copyright(book=%d)", (int)book->code)); + + /* + * Check for the current status. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check for the page number of COPYRIGHT NOTICE. + */ + page = book->subbook_current->copyright.start_page; + if (page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Copy the position to `position'. + */ + position->page = page; + position->offset = 0; + + LOG(("out: eb_copyright(position={%d,%d}) = %s", + position->page, position->offset, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_copyright() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/copyright.lo b/lib/ebu/ebu/copyright.lo new file mode 100644 index 0000000..ebf30dd --- /dev/null +++ b/lib/ebu/ebu/copyright.lo @@ -0,0 +1,12 @@ +# copyright.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/copyright.o' + +# Name of the non-PIC object +non_pic_object='copyright.o' + diff --git a/lib/ebu/ebu/cross.c b/lib/ebu/ebu/cross.c new file mode 100644 index 0000000..b60f279 --- /dev/null +++ b/lib/ebu/ebu/cross.c @@ -0,0 +1,191 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `book' supports `KEYWORD SEARCH' + * or not. + */ +int +eb_have_cross_search(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_cross_search(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + if (book->subbook_current->cross.start_page == 0) + goto failed; + + LOG(("out: eb_have_cross_search() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_cross_search() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Keyword search. + */ +EB_Error_Code +eb_search_cross(EB_Book *book, const char * const input_words[]) +{ + EB_Error_Code error_code; + EB_Search_Context *context; + EB_Word_Code word_code; + int word_count; + int i; + + /* + * Lock the book. + */ + eb_lock(&book->lock); + LOG(("in: eb_search_cross(book=%d, input_words=[below])", + (int)book->code)); + + if (eb_log_flag) { + for (i = 0; i < EB_MAX_KEYWORDS && input_words[i] != NULL; i++) { + LOG((" input_words[%d]=%s", i, + eb_quoted_string(input_words[i]))); + } + LOG((" input_words[%d]=NULL", i)); + } + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check whether the current subbook has cross search. + */ + if (book->subbook_current->cross.start_page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Attach a search context for each word, and pre-search the word. + */ + eb_reset_search_contexts(book); + word_count = 0; + + for (i = 0; i < EB_MAX_KEYWORDS; i++) { + if (input_words[i] == NULL) + break; + + /* + * Initialize search context. + */ + context = book->search_contexts + word_count; + context->code = EB_SEARCH_CROSS; + + /* + * Choose comparison functions. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1 + || book->character_code == EB_CHARCODE_UTF8) { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word; + } else { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word_kana_group; + } + context->page = book->subbook_current->cross.start_page; + + /* + * Make a fixed word and a canonicalized word to search from + * `input_words[i]'. + */ + error_code = eb_set_keyword(book, input_words[i], context->word, + context->canonicalized_word, &word_code); + if (error_code == EB_ERR_EMPTY_WORD) + continue; + else if (error_code != EB_SUCCESS) + goto failed; + + /* + * Pre-search. + */ + error_code = eb_presearch_word(book, context); + if (error_code != EB_SUCCESS) + goto failed; + + word_count++; + } + if (word_count == 0) { + error_code = EB_ERR_NO_WORD; + goto failed; + } else if (EB_MAX_KEYWORDS <= i && input_words[i] != NULL) { + error_code = EB_ERR_TOO_MANY_WORDS; + goto failed; + } + + /* + * Set `EB_SEARCH_NONE' to the rest unused search context. + */ + for (i = word_count; i < EB_MAX_KEYWORDS; i++) + (book->search_contexts + i)->code = EB_SEARCH_NONE; + + LOG(("out: eb_search_cross() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_search_contexts(book); + LOG(("out: eb_search_cross() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/cross.lo b/lib/ebu/ebu/cross.lo new file mode 100644 index 0000000..57f387e --- /dev/null +++ b/lib/ebu/ebu/cross.lo @@ -0,0 +1,12 @@ +# cross.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/cross.o' + +# Name of the non-PIC object +non_pic_object='cross.o' + diff --git a/lib/ebu/ebu/defs.h b/lib/ebu/ebu/defs.h new file mode 100644 index 0000000..fa61126 --- /dev/null +++ b/lib/ebu/ebu/defs.h @@ -0,0 +1,1068 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_DEFS_H +#define EB_DEFS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#ifdef EB_BUILD_LIBRARY +#include "sysdefs.h" +#include "zio.h" +#else +#include +#include +#endif + +#ifdef EB_ENABLE_PTHREAD +#include +#endif + +/* + * Disc code + */ +#define EB_DISC_EB 0 +#define EB_DISC_EPWING 1 +#define EB_DISC_INVALID -1 + +/* + * Character codes. + */ +#define EB_CHARCODE_ISO8859_1 1 +#define EB_CHARCODE_JISX0208 2 +#define EB_CHARCODE_JISX0208_GB2312 3 +#define EB_CHARCODE_UTF8 4 +#define EB_CHARCODE_INVALID -1 + +/* + * Special book ID for cache to represent "no cache data for any book". + */ +#define EB_BOOK_NONE -1 + +/* + * Special disc code, subbook code, multi search ID, and multi search + * entry ID, for representing error state. + */ +#define EB_SUBBOOK_INVALID -1 +#define EB_MULTI_INVALID -1 + +/* + * Size of a page (The term `page' means `block' in JIS X 4081). + */ +#define EB_SIZE_PAGE 2048 + +/* + * Maximum length of a word to be searched. + */ +#define EB_MAX_WORD_LENGTH 255 + +/* + * Maximum length of an EB* book title. + */ +#define EB_MAX_EB_TITLE_LENGTH 30 + +/* + * Maximum length of an EPWING book title. + */ +#define EB_MAX_EPWING_TITLE_LENGTH 80 + +/* + * Maximum length of a book title. + */ +#define EB_MAX_TITLE_LENGTH 80 + +/* + * Maximum length of a word to be searched. + */ +#if defined(PATH_MAX) +#define EB_MAX_PATH_LENGTH PATH_MAX +#elif defined(MAXPATHLEN) +#define EB_MAX_PATH_LENGTH MAXPATHLEN +#else +#define EB_MAX_PATH_LENGTH 1024 +#endif + +/* + * Maximum length of a directory name. + */ +#define EB_MAX_DIRECTORY_NAME_LENGTH 8 + +/* + * Maximum length of a file name under a certain directory. + * prefix(8 chars) + '.' + suffix(3 chars) + ';' + digit(1 char) + */ +#define EB_MAX_FILE_NAME_LENGTH 14 + +/* + * Maximum length of a label for multi-search entry. + */ +#define EB_MAX_MULTI_LABEL_LENGTH 30 + +/* + * Maximum length of alternation text string for a private character. + */ +#define EB_MAX_ALTERNATION_TEXT_LENGTH 31 + +/* + * Maximum length of title for multi search. + */ +#define EB_MAX_MULTI_TITLE_LENGTH 32 + +/* + * Maximum number of font heights in a subbok. + */ +#define EB_MAX_FONTS 4 + +/* + * Maximum number of subbooks in a book. + */ +#define EB_MAX_SUBBOOKS 50 + +/* + * Maximum number of multi-search types in a subbook. + */ +#define EB_MAX_MULTI_SEARCHES 10 + +/* + * Maximum number of entries in a multi-search. + */ +#define EB_MAX_MULTI_ENTRIES 5 + +/* + * Maximum number of entries in a keyword search. + */ +#define EB_MAX_KEYWORDS EB_MAX_MULTI_ENTRIES + +/* + * Maximum number of entries in a cross search. + */ +#define EB_MAX_CROSS_ENTRIES EB_MAX_MULTI_ENTRIES + +/* + * Maximum number of characters for alternation cache. + */ +#define EB_MAX_ALTERNATION_CACHE 16 + +/* + * The number of text hooks. + */ +#define EB_NUMBER_OF_HOOKS 57 + +/* + * The number of search contexts required by a book. + */ +#define EB_NUMBER_OF_SEARCH_CONTEXTS EB_MAX_MULTI_ENTRIES + +/* + * Maximum length of an EB* book title. + */ +#define EB_MAX_COLOR_VALUE_LENGTH 20 +#define EB_MAX_COLOR_NAME_LENGTH (EB_SIZE_PAGE - EB_MAX_COLOR_VALUE_LENGTH) + +/* + * Types for various codes. + */ +typedef int EB_Error_Code; +typedef int EB_Book_Code; +typedef int EB_Disc_Code; +typedef int EB_Case_Code; +typedef int EB_Suffix_Code; +typedef int EB_Character_Code; +typedef int EB_Font_Code; +typedef int EB_Word_Code; +typedef int EB_Subbook_Code; +typedef int EB_Index_Style_Code; +typedef int EB_Search_Code; +typedef int EB_Text_Code; +typedef int EB_Text_Status_Code; +typedef int EB_Multi_Search_Code; +typedef int EB_Hook_Code; +typedef int EB_Binary_Code; + +/* + * Typedef for Structures. + */ +#ifdef EB_ENABLE_PTHREAD +typedef struct EB_Lock_Struct EB_Lock; +#endif +typedef struct EB_Position_Struct EB_Position; +typedef struct EB_Alternation_Cache_Struct EB_Alternation_Cache; +typedef struct EB_Appendix_Subbook_Struct EB_Appendix_Subbook; +typedef struct EB_Appendix_Struct EB_Appendix; +typedef struct EB_Font_Struct EB_Font; +typedef struct EB_Search_Struct EB_Search; +typedef struct EB_Multi_Search_Struct EB_Multi_Search; +typedef struct EB_Subbook_Struct EB_Subbook; +typedef struct EB_Text_Context_Struct EB_Text_Context; +typedef struct EB_Binary_Context_Struct EB_Binary_Context; +typedef struct EB_Search_Context_Struct EB_Search_Context; +typedef struct EB_Book_Struct EB_Book; +typedef struct EB_Hit_Struct EB_Hit; +typedef struct EB_Hook_Struct EB_Hook; +typedef struct EB_Hookset_Struct EB_Hookset; +typedef struct EB_BookList_Entry EB_BookList_Entry; +typedef struct EB_BookList EB_BookList; + +/* + * Pthreads lock. + */ +#ifdef EB_ENABLE_PTHREAD +struct EB_Lock_Struct { + /* + * Lock count. (For emulating recursive lock). + */ + int lock_count; + + /* + * Mutex for `lock_count'. + */ + pthread_mutex_t lock_count_mutex; + + /* + * Mutex for struct entity. + */ + pthread_mutex_t entity_mutex; +}; +#endif /* EB_ENABLE_PTHREAD */ + +/* + * A pair of page and offset. + */ +struct EB_Position_Struct { + /* + * Page. (1, 2, 3 ...) + */ + int page; + + /* + * Offset in `page'. (0 ... 2047) + */ + int offset; +}; + +/* + * Chace of aternation text. + */ +struct EB_Alternation_Cache_Struct { + /* + * Character number. + */ + int character_number; + + /* + * Alternation string for `char_no'. + */ + char text[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; +}; + +/* + * UTF-8 normalization table. + */ +struct EB_UTF8_Table_Struct{ + int code; + char *string; +}; +typedef struct EB_UTF8_Table_Struct EB_UTF8_Table; + +/* + * An appendix for a subbook. + */ +struct EB_Appendix_Subbook_Struct { + + /* + * Initialization flag. + */ + int initialized; + + /* + * Subbook ID. + */ + EB_Subbook_Code code; + + /* + * Directory name. + */ + char directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + + /* + * Sub-directory name. (EPWING only) + */ + char data_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + + /* + * File name. + */ + char file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + + /* + * Character code of the book. + */ + EB_Character_Code character_code; + + /* + * Start character number of the narrow/wide font. + */ + int narrow_start; + int wide_start; + + /* + * End character number of the narrow/wide font. + */ + int narrow_end; + int wide_end; + + /* + * Start page number of the narrow/wide font. + */ + int narrow_page; + int wide_page; + + /* + * Stop code (first and second characters). + */ + int stop_code0; + int stop_code1; + + /* + * Compression Information for appendix file. + */ + Zio zio; +}; + +/* + * Additional resources for a book. + */ +struct EB_Appendix_Struct { + /* + * Book ID. + */ + EB_Book_Code code; + + /* + * Path of the book. + */ + char *path; + + /* + * The length of the path. + */ + size_t path_length; + + /* + * Disc type. EB (EB/EBG/EBXA/EBXA-C/S-EBXA) or EPWING. + */ + EB_Disc_Code disc_code; + + /* + * The number of subbooks the book has. + */ + int subbook_count; + + /* + * Subbook list. + */ + EB_Appendix_Subbook *subbooks; + + /* + * Current subbook. + */ + EB_Appendix_Subbook *subbook_current; + + /* + * ebnet socket file. + */ +#ifdef EB_ENABLE_EBNET + int ebnet_file; +#endif + + /* + * Lock. + */ +#ifdef EB_ENABLE_PTHREAD + EB_Lock lock; +#endif + + /* + * Cache table for alternation text. + */ + EB_Alternation_Cache narrow_cache[EB_MAX_ALTERNATION_CACHE]; + EB_Alternation_Cache wide_cache[EB_MAX_ALTERNATION_CACHE]; +}; + +/* + * A font in a subbook. + */ +struct EB_Font_Struct { + /* + * Font Code. + * This font is not available, if the code is EB_FONT_INVALID. + */ + EB_Font_Code font_code; + + /* + * Whether the object has been initialized. + */ + int initialized; + + /* + * Character numbers of the start and end of the font. + */ + int start; + int end; + + /* + * Page number of the start page of the font data. + * Used in EB* only. (In EPWING, it is alyways 1). + */ + int page; + + /* + * File name of the font. (EPWING only) + */ + char file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + + /* + * Font data cache. + */ + char *glyphs; + + /* + * Compression Information. + */ + Zio zio; +}; + +/* + * Search methods in a subbook. + */ +struct EB_Search_Struct { + /* + * Index ID. + */ + int index_id; + + /* + * Page number of the start page of an index. + * This search method is not available, if `start_page' is 0, + */ + int start_page; + int end_page; + + /* + * Page number of the start page of candidates. + * (for multi search entry) + */ + int candidates_page; + + /* + * Index style flags. + */ + EB_Index_Style_Code katakana; + EB_Index_Style_Code lower; + EB_Index_Style_Code mark; + EB_Index_Style_Code long_vowel; + EB_Index_Style_Code double_consonant; + EB_Index_Style_Code contracted_sound; + EB_Index_Style_Code voiced_consonant; + EB_Index_Style_Code small_vowel; + EB_Index_Style_Code p_sound; + EB_Index_Style_Code space; + + /* + * Label. (for an entry in multi search) + */ + char label[EB_MAX_MULTI_LABEL_LENGTH + 1]; +}; + +/* + * A multi-search entry in a subbook. + */ +struct EB_Multi_Search_Struct { + /* + * Search method information. + */ + EB_Search search; + + /* + * Search title. (EPWING only) + */ + char title[EB_MAX_MULTI_TITLE_LENGTH + 1]; + + /* + * The number of entries the multi search has. + */ + int entry_count; + + /* + * List of Word entry information. + */ + EB_Search entries[EB_MAX_MULTI_ENTRIES]; +}; + +/* + * A subbook in a book. + */ +struct EB_Subbook_Struct { + /* + * Whether the object has been initialized. + */ + int initialized; + + /* + * Index page. + */ + int index_page; + + /* + * Subbook ID. + * This subbook is not available, if the code is EB_SUBBOOK_INVALID. + */ + EB_Subbook_Code code; + + /* + * File descriptor and compression information for text file. + */ + Zio text_zio; + + /* + * File descriptor and compression information for graphic file. + */ + Zio graphic_zio; + + /* + * File descriptor and compression information for sound file. + */ + Zio sound_zio; + + /* + * File descriptor and compression information for movie file. + */ + Zio movie_zio; + + /* + * Title of the subbook. + */ + char title[EB_MAX_TITLE_LENGTH + 1]; + + /* + * Subbook directory name. + */ + char directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + + /* + * Sub-directory names. (EPWING only) + */ + char data_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + char gaiji_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + char movie_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + + /* + * File names. + */ + char text_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + char graphic_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + char sound_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + + /* + * Compression hints of Text, graphic and sound files. + * (temporary need, EPWING only). + */ + Zio_Code text_hint_zio_code; + Zio_Code graphic_hint_zio_code; + Zio_Code sound_hint_zio_code; + + /* + * Page number where search method titles are stored. + * (temporary need, EPWING only). + */ + int search_title_page; + + /* + * The top page of search methods. + */ + EB_Search word_alphabet; + EB_Search word_asis; + EB_Search word_kana; + EB_Search endword_alphabet; + EB_Search endword_asis; + EB_Search endword_kana; + EB_Search keyword; + EB_Search menu; + EB_Search image_menu; + EB_Search cross; + EB_Search copyright; + EB_Search text; + EB_Search sound; + EB_Search color_chart; + + /* + * The number of multi-search methods the subbook has. + */ + int multi_count; + + /* + * The top page of multi search methods. + */ + EB_Multi_Search multis[EB_MAX_MULTI_SEARCHES]; + + /* + * Font list. + */ + EB_Font narrow_fonts[EB_MAX_FONTS]; + EB_Font wide_fonts[EB_MAX_FONTS]; + + /* + * Current narrow and wide fonts. + */ + EB_Font *narrow_current; + EB_Font *wide_current; + + /* + * Normalization table for UTF-8 subbook. + */ + int table_page; + int table_size; + + EB_UTF8_Table *table; + int table_count; + char *table_buffer; + +}; + +/* + * Length of cache buffer in a binary context. + * It must be greater than 38, size of GIF preamble. + * It must be greater than 44, size of WAVE sound header. + * It must be greater than 118, size of BMP header + info + 16 rgbquads. + */ +#define EB_SIZE_BINARY_CACHE_BUFFER 128 + +/* + * Context parameters for binary data. + */ +struct EB_Binary_Context_Struct { + /* + * Binary type ID. + * The context is not active, if this code is EB_BINARY_INVALID. + */ + EB_Binary_Code code; + + /* + * Compress information. + */ + Zio *zio; + + /* + * Location of the the binary data, relative to the start of the file. + */ + off_t location; + + /* + * Data size. + * Size zero means that the binary has no size information. + */ + size_t size; + + /* + * The current offset of binary data. + */ + size_t offset; + + /* + * Cache buffer. + */ + char cache_buffer[EB_SIZE_BINARY_CACHE_BUFFER]; + + /* + * Length of cached data. + */ + size_t cache_length; + + /* + * Current offset of cached data. + */ + size_t cache_offset; + + /* + * Width of Image. (monochrome graphic only) + */ + int width; +}; + +/* + * Context parameters for text reading. + */ +struct EB_Text_Context_Struct { + /* + * Current text content type. + * The context is not active, if this code is EB_TEXT_INVALID. + */ + EB_Text_Code code; + + /* + * Current offset pointer of the START or HONMON file. + */ + off_t location; + + /* + * The current point of a buffer on which text is written. + */ + char *out; + + /* + * Length of `out'. + */ + size_t out_rest_length; + + /* + * Unprocessed string that a hook function writes on text. + */ + char *unprocessed; + + /* + * Size of `unprocessed'. + */ + size_t unprocessed_size; + + /* + * Length of the current output text phrase. + */ + size_t out_step; + + /* + * Narrow character region flag. + */ + int narrow_flag; + + /* + * Whether a printable character has been appeared in the current + * text content. + */ + int printable_count; + + /* + * EOF flag of the current subbook. + */ + int file_end_flag; + + /* + * Status of the current text processing. + */ + EB_Text_Status_Code text_status; + + /* + * Skip until `skipcode' appears. + */ + int skip_code; + + /* + * Stop-code automatically set by EB Library. + */ + int auto_stop_code; + + /* + * The current candidate word for multi search. + */ + char candidate[EB_MAX_WORD_LENGTH + 1]; + + /* + * Whether the current text point is in the candidate word or not. + */ + int is_candidate; + + /* + * Whether the current text point is in EBXA-C gaiji area. + */ + int ebxac_gaiji_flag; +}; + +/* + * Context parameters for word search. + */ +struct EB_Search_Context_Struct { + /* + * Current search method type. + * The context is not active, if this code is EB_SEARCH_NONE. + */ + EB_Search_Code code; + + /* + * Function which compares word to search and pattern in an index page. + */ + int (*compare_pre)(const char *word, const char *pattern, + size_t length); + int (*compare_single)(const char *word, const char *pattern, + size_t length); + int (*compare_group)(const char *word, const char *pattern, + size_t length); + + /* + * Result of comparison by `compare'. + */ + int comparison_result; + + /* + * Word to search. + */ + char word[EB_MAX_WORD_LENGTH + 1]; + + /* + * Canonicalized word to search. + */ + char canonicalized_word[EB_MAX_WORD_LENGTH + 1]; + + /* + * Page which is searched currently. + */ + int page; + + /* + * Offset which is searched currently in the page. + */ + int offset; + + /* + * Page ID of the current page. + */ + int page_id; + + /* + * How many entries in the current page. + */ + int entry_count; + + /* + * Entry index pointer. + */ + int entry_index; + + /* + * Length of the current entry. + */ + int entry_length; + + /* + * Arrangement style of entries in the current page (fixed or variable). + */ + int entry_arrangement; + + /* + * In a group entry or not. + */ + int in_group_entry; + + /* + * Current heading position (for keyword search). + */ + EB_Position keyword_heading; +}; + +/* + * A book. + */ +struct EB_Book_Struct { + /* + * Book ID. + */ + EB_Book_Code code; + + /* + * Disc type. EB* or EPWING. + */ + EB_Disc_Code disc_code; + + /* + * Character code of the book. + */ + EB_Character_Code character_code; + + /* + * Path of the book. + */ + char *path; + + /* + * The length of the path. + */ + size_t path_length; + + /* + * The number of subbooks the book has. + */ + int subbook_count; + + /* + * Subbook list. + */ + EB_Subbook *subbooks; + + /* + * Current subbook. + */ + EB_Subbook *subbook_current; + + /* + * Context parameters for text reading. + */ + EB_Text_Context text_context; + + /* + * Context parameters for binary reading. + */ + EB_Binary_Context binary_context; + + /* + * Context parameters for text reading. + */ + EB_Search_Context search_contexts[EB_NUMBER_OF_SEARCH_CONTEXTS]; + + /* + * ebnet socket file. + */ +#ifdef EB_ENABLE_EBNET + int ebnet_file; +#endif + + /* + * Lock. + */ +#ifdef EB_ENABLE_PTHREAD + EB_Lock lock; +#endif +}; + +/* + * In a word search, heading and text locations of a matched entry + * are stored. + */ +struct EB_Hit_Struct { + /* + * Heading position. + */ + EB_Position heading; + + /* + * Text position. + */ + EB_Position text; +}; + +/* + * A text hook. + */ +struct EB_Hook_Struct { + /* + * Hook code. + */ + EB_Hook_Code code; + + /* + * Hook function for the hook code `code'. + */ + EB_Error_Code (*function)(EB_Book *book, EB_Appendix *appendix, + void *container, EB_Hook_Code hook_code, int argc, + const unsigned int *argv); +}; + +/* + * A set of text hooks. + */ +struct EB_Hookset_Struct { + /* + * List of hooks. + */ + EB_Hook hooks[EB_NUMBER_OF_HOOKS]; + + /* + * Lock. + */ +#ifdef EB_ENABLE_PTHREAD + EB_Lock lock; +#endif +}; + +/* + * An entry of book list. + */ +struct EB_BookList_Entry { + /* + * name. + */ + char *name; + + /* + * Title. + */ + char *title; +}; + +/* + * Book list. + */ +struct EB_BookList { + /* + * Book List ID. + */ + EB_Book_Code code; + + /* + * The number of book entries this list has. + */ + int entry_count; + + /* + * The maximum number of book entries that `entries' can memory. + */ + int max_entry_count; + + /* + * Book entries. + */ + EB_BookList_Entry *entries; + + /* + * Lock. + */ +#ifdef EB_ENABLE_PTHREAD + EB_Lock lock; +#endif +}; + +/* for backward compatibility */ +#define EB_Multi_Entry_Code int + +#ifdef __cplusplus +} +#endif + +#endif /* not EB_DEFS_H */ diff --git a/lib/ebu/ebu/dummyin6.c b/lib/ebu/ebu/dummyin6.c new file mode 100644 index 0000000..e3ee2fa --- /dev/null +++ b/lib/ebu/ebu/dummyin6.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * This program provides macros, types and external variables related + * to basic IPv6 programming such as PF_INET6. This program is useful + * for application which supports both IPv6 and traditional IPv4 systems. + * + * To use this program, include the header file. + * + * #include "dummyin6.h" + * + * This program is intended to be used in combination with GNU Autoconf. + * (see below). + * + * Restriction: + * `struct sockaddr_storage' has no ss_ or __ss_ member (e.g. ss_family) + * since the structure is merely alias of `sturct sockaddr_in'. + */ + +/* + * This program requires the following Autoconf macros: + * AC_STRUCT_IN6_ADDR + * AC_STRUCT_SOCKADDR_IN6 + * AX_STRUCT_SOCKADDR_STORAGE + * AC_DECL_IN6ADDR_ANY + * AC_DECL_IN6ADDR_LOOPBACK + */ +#include "dummyin6.h" + +const struct in6_addr ebnet_in6addr_any = IN6ADDR_ANY_INIT; +const struct in6_addr ebnet_in6addr_loopback = IN6ADDR_LOOPBACK_INIT; + diff --git a/lib/ebu/ebu/dummyin6.h b/lib/ebu/ebu/dummyin6.h new file mode 100644 index 0000000..7ae202b --- /dev/null +++ b/lib/ebu/ebu/dummyin6.h @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef DUMMYIN6_H +#define DUMMYIN6_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#include +#endif + +#ifndef AF_INET6 +#define AF_INET6 (AF_INET + 1) +#endif + +#ifndef PF_INET6 +#define PF_INET6 (PF_INET + 1) +#endif + +#ifndef AF_UNSPEC +#define AF_UNSPEC AF_INET +#endif + +#ifndef PF_UNSPEC +#define PF_UNSPEC PF_INET +#endif + +#ifndef INET6_ADDRSTRLEN +#define INET6_ADDRSTRLEN 46 +#endif + +#ifndef INET_ADDRSTRLEN +#define INET_ADDRSTRLEN 16 +#endif + +#ifndef HAVE_STRUCT_IN6_ADDR +struct in6_addr { + unsigned char s6_addr[16]; +}; +#endif + +#ifndef HAVE_STRUCT_SOCKADDR_IN6 +struct sockaddr_in6 { + sa_family_t sin6_family; + in_port_t sin6_port; + unsigned long sin6_flowinfo; + struct in6_addr sin6_addr; + unsigned long sin6_scope_id; +}; +#endif + +#if !defined(HAVE_STRUCT_SOCKADDR_STORAGE) && !defined(sockaddr_storage) +#define sockaddr_storage sockaddr_in +#endif + +#ifndef IN6ADDR_ANY_DECLARED +extern const struct in6_addr in6addr_any; +#endif + +#ifndef IN6ADDR_LOOPBACK_DECLARED +extern const struct in6_addr in6addr_loopback; +#endif + +#ifndef IN6ADDR_ANY_INIT +#define IN6ADDR_ANY_INIT \ + {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} +#endif + +#ifndef IN6ADDR_LOOPBACK_INIT +#define IN6ADDR_LOOPBACK_INIT \ + {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}} +#endif + +#ifndef IN6_IS_ADDR_UNSPECIFIED +#define IN6_IS_ADDR_UNSPECIFIED(a) \ + ( (a)->s6_addr[ 0] == 0 && (a)->s6_addr[ 1] == 0 \ + && (a)->s6_addr[ 2] == 0 && (a)->s6_addr[ 3] == 0 \ + && (a)->s6_addr[ 4] == 0 && (a)->s6_addr[ 5] == 0 \ + && (a)->s6_addr[ 6] == 0 && (a)->s6_addr[ 7] == 0 \ + && (a)->s6_addr[ 8] == 0 && (a)->s6_addr[ 9] == 0 \ + && (a)->s6_addr[10] == 0 && (a)->s6_addr[11] == 0 \ + && (a)->s6_addr[12] == 0 && (a)->s6_addr[13] == 0 \ + && (a)->s6_addr[14] == 0 && (a)->s6_addr[15] == 0) +#endif + +#ifndef IN6_IS_ADDR_LOOPBACK +#define IN6_IS_ADDR_LOOPBACK(a) \ + ( (a)->s6_addr[ 0] == 0 && (a)->s6_addr[ 1] == 0 \ + && (a)->s6_addr[ 2] == 0 && (a)->s6_addr[ 3] == 0 \ + && (a)->s6_addr[ 4] == 0 && (a)->s6_addr[ 5] == 0 \ + && (a)->s6_addr[ 6] == 0 && (a)->s6_addr[ 7] == 0 \ + && (a)->s6_addr[ 8] == 0 && (a)->s6_addr[ 9] == 0 \ + && (a)->s6_addr[10] == 0 && (a)->s6_addr[11] == 0 \ + && (a)->s6_addr[12] == 0 && (a)->s6_addr[13] == 0 \ + && (a)->s6_addr[14] == 0 && (a)->s6_addr[15] == 1) +#endif + +#ifndef IN6_IS_ADDR_MULTICAST +#define IN6_IS_ADDR_MULTICAST(a) \ + ((a)->s6_addr[0] == 0xff) +#endif + +#ifndef IN6_IS_ADDR_LINKLOCAL +#define IN6_IS_ADDR_LINKLOCAL(a) \ + (((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0x80)) +#endif + +#ifndef IN6_IS_ADDR_SITELOCAL +#define IN6_IS_ADDR_SITELOCAL(a) \ + (((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0xc0)) +#endif + +#ifndef IN6_IS_ADDR_V4MAPPED +#define IN6_IS_ADDR_V4MAPPED(a) \ + ( (a)->s6_addr[ 0] == 0 && (a)->s6_addr[ 1] == 0 \ + && (a)->s6_addr[ 2] == 0 && (a)->s6_addr[ 3] == 0 \ + && (a)->s6_addr[ 4] == 0 && (a)->s6_addr[ 5] == 0 \ + && (a)->s6_addr[ 6] == 0 && (a)->s6_addr[ 7] == 0 \ + && (a)->s6_addr[ 8] == 0 && (a)->s6_addr[ 9] == 0 \ + && (a)->s6_addr[10] == 0xff && (a)->s6_addr[11] == 0xff) +#endif + +#ifndef IN6_IS_ADDR_V4COMPAT +#define IN6_IS_ADDR_V4COMPAT(a) \ + ( (a)->s6_addr[ 0] == 0 && (a)->s6_addr[ 1] == 0 \ + && (a)->s6_addr[ 2] == 0 && (a)->s6_addr[ 3] == 0 \ + && (a)->s6_addr[ 4] == 0 && (a)->s6_addr[ 5] == 0 \ + && (a)->s6_addr[ 6] == 0 && (a)->s6_addr[ 7] == 0 \ + && (a)->s6_addr[ 8] == 0 && (a)->s6_addr[ 9] == 0 \ + && (a)->s6_addr[10] == 0 && (a)->s6_addr[11] == 0 \ + && ((a)->s6_addr[12] != 0 || (a)->s6_addr[13] != 0 \ + || (a)->s6_addr[14] != 0 \ + || ((a)->s6_addr[15] != 0 && (a)->s6_addr[15] != 1))) +#endif + +#endif /* not DUMMYIN6_H */ diff --git a/lib/ebu/ebu/dummyin6.lo b/lib/ebu/ebu/dummyin6.lo new file mode 100644 index 0000000..d0cd747 --- /dev/null +++ b/lib/ebu/ebu/dummyin6.lo @@ -0,0 +1,12 @@ +# dummyin6.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/dummyin6.o' + +# Name of the non-PIC object +non_pic_object='dummyin6.o' + diff --git a/lib/ebu/ebu/eb.c b/lib/ebu/ebu/eb.c new file mode 100644 index 0000000..bf6375e --- /dev/null +++ b/lib/ebu/ebu/eb.c @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2000-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#ifdef ENABLE_EBNET +#include "ebnet.h" +#endif +#include "build-post.h" + +/* + * Initialize the library. + */ +EB_Error_Code +eb_initialize_library(void) +{ + EB_Error_Code error_code; + + eb_initialize_log(); + + LOG(("in: eb_initialize_library()")); + LOG(("aux: EB Library version %s", EB_VERSION_STRING)); + + eb_initialize_default_hookset(); +#ifdef ENABLE_NLS + bindtextdomain(EB_TEXT_DOMAIN_NAME, EB_LOCALEDIR); +#endif +#ifdef ENABLE_EBNET + ebnet_initialize(); +#endif + if (zio_initialize_library() < 0) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + + LOG(("out: eb_initialize_library() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_initialize_library() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Finalize the library. + */ +void +eb_finalize_library(void) +{ + LOG(("in: eb_finalize_library()")); + + zio_finalize_library(); +#ifdef ENABLE_EBNET + ebnet_finalize(); +#endif + + LOG(("out: eb_finalize_library()")); +} diff --git a/lib/ebu/ebu/eb.h b/lib/ebu/ebu/eb.h new file mode 100644 index 0000000..e0fb9b3 --- /dev/null +++ b/lib/ebu/ebu/eb.h @@ -0,0 +1,169 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_EB_H +#define EB_EB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef EB_BUILD_LIBRARY +#include "defs.h" +#else +#include +#endif + +#include + +/* + * Function declarations. + */ +/* book.c */ +void eb_initialize_book(EB_Book *book); +EB_Error_Code eb_bind(EB_Book *book, const char *path); +void eb_finalize_book(EB_Book *book); +int eb_is_bound(EB_Book *book); +EB_Error_Code eb_path(EB_Book *book, char *path); +EB_Error_Code eb_disc_type(EB_Book *book, EB_Disc_Code *disc_code); +EB_Error_Code eb_character_code(EB_Book *book, +EB_Character_Code *character_code); + +/* color.c */ +int eb_have_color_chart(EB_Book *book); +EB_Error_Code eb_color_chart(EB_Book *book, EB_Position *position); +EB_Error_Code eb_color_value(EB_Book *book, int number, char *value); +EB_Error_Code eb_color_name(EB_Book *book, int number, char *name); +EB_Error_Code eb_color_page(EB_Book *book, int number, char *buffer); + +/* copyright.h */ +int eb_have_copyright(EB_Book *book); +EB_Error_Code eb_copyright(EB_Book *book, EB_Position *position); +EB_Error_Code eb_search_cross(EB_Book *book, + const char * const input_words[]); + +/* cross.c */ +int eb_have_cross_search(EB_Book *book); + +/* eb.c */ +EB_Error_Code eb_initialize_library(void); +void eb_finalize_library(void); + +/* endword.c */ +int eb_have_endword_search(EB_Book *book); +EB_Error_Code eb_search_endword(EB_Book *book, const char *input_word); + +/* exactword.c */ +int eb_have_exactword_search(EB_Book *book); +EB_Error_Code eb_search_exactword(EB_Book *book, const char *input_word); + +/* graphic.c */ +int eb_have_graphic_search(EB_Book *book); + +/* keyword.c */ +int eb_have_keyword_search(EB_Book *book); +EB_Error_Code eb_search_keyword(EB_Book *book, + const char * const input_words[]); + +/* lock.c */ +int eb_pthread_enabled(void); + +/* log.c */ +void eb_set_log_function(void (*function)(const char *message, va_list ap)); +void eb_enable_log(void); +void eb_disable_log(void); +void eb_log(const char *message, ...); +void eb_log_stderr(const char *message, va_list ap); + +/* menu.c */ +int eb_have_menu(EB_Book *book); +EB_Error_Code eb_menu(EB_Book *book, EB_Position *position); +int eb_have_image_menu(EB_Book *book); +EB_Error_Code eb_image_menu(EB_Book *book, EB_Position *position); + +/* multi.c */ +int eb_have_multi_search(EB_Book *book); +EB_Error_Code eb_multi_title(EB_Book *book, EB_Multi_Search_Code multi_id, + char *title); +EB_Error_Code eb_multi_search_list(EB_Book *book, + EB_Multi_Search_Code *search_list, int *search_count); +EB_Error_Code eb_multi_entry_count(EB_Book *book, + EB_Multi_Search_Code multi_id, int *entry_count); +EB_Error_Code eb_multi_entry_list(EB_Book *book, + EB_Multi_Search_Code multi_id, int *entry_list, int *entry_count); +EB_Error_Code eb_multi_entry_label(EB_Book *book, + EB_Multi_Search_Code multi_id, int entry_index, char *label); +int eb_multi_entry_have_candidates(EB_Book *book, + EB_Multi_Search_Code multi_id, int entry_index); +EB_Error_Code eb_multi_entry_candidates(EB_Book *book, + EB_Multi_Search_Code multi_id, int entry_index, EB_Position *position); +EB_Error_Code eb_search_multi(EB_Book *book, EB_Multi_Search_Code multi_id, + const char * const input_words[]); + +/* text.c */ +int eb_have_text(EB_Book *book); +EB_Error_Code eb_text(EB_Book *book, EB_Position *position); + +/* search.c */ +EB_Error_Code eb_hit_list(EB_Book *book, int max_hit_count, EB_Hit *hit_list, + int *hit_count); + +/* subbook.c */ +EB_Error_Code eb_load_all_subbooks(EB_Book *book); +EB_Error_Code eb_subbook_list(EB_Book *book, EB_Subbook_Code *subbook_list, + int *subbook_count); +EB_Error_Code eb_subbook(EB_Book *book, EB_Subbook_Code *subbook_code); +EB_Error_Code eb_subbook_title(EB_Book *book, char *title); +EB_Error_Code eb_subbook_title2(EB_Book *book, EB_Subbook_Code subbook_code, + char *title); +EB_Error_Code eb_subbook_directory(EB_Book *book, char *directory); +EB_Error_Code eb_subbook_directory2(EB_Book *book, + EB_Subbook_Code subbook_code, char *directory); +EB_Error_Code eb_set_subbook(EB_Book *book, EB_Subbook_Code subbook_code); +void eb_unset_subbook(EB_Book *book); + +/* utf8.c */ +char *eb_normalize_utf8 (EB_Book *book, int code); +EB_Error_Code eb_load_utf8_table (EB_Book *book); +void eb_initialize_utf8_table (EB_Book *book); +void eb_finalize_utf8_table (EB_Book *book); +int eb_read_utf8 (const char *buffer, int *code); + +/* word.c */ +int eb_have_word_search(EB_Book *book); +EB_Error_Code eb_search_word(EB_Book *book, const char *input_word); + +/* for backward compatibility */ +#define eb_suspend eb_unset_subbook +#define eb_initialize_all_subbooks eb_load_all_subbooks + +#ifdef __cplusplus +} +#endif + +#endif /* not EB_EB_H */ diff --git a/lib/ebu/ebu/eb.lo b/lib/ebu/ebu/eb.lo new file mode 100644 index 0000000..399f470 --- /dev/null +++ b/lib/ebu/ebu/eb.lo @@ -0,0 +1,12 @@ +# eb.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/eb.o' + +# Name of the non-PIC object +non_pic_object='eb.o' + diff --git a/lib/ebu/ebu/ebnet.c b/lib/ebu/ebu/ebnet.c new file mode 100644 index 0000000..e8fe4cd --- /dev/null +++ b/lib/ebu/ebu/ebnet.c @@ -0,0 +1,1170 @@ +/* + * Copyright (c) 2003-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "build-pre.h" + +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#endif +#include + +#include "eb.h" +#include "error.h" +#include "build-post.h" +#include "dummyin6.h" + +#if !defined(HAVE_GETADDRINFO) || !defined(HAVE_GETNAMEINFO) +#include "getaddrinfo.h" +#endif + +#include "ebnet.h" +#include "linebuf.h" +#include "urlparts.h" + +#ifndef IF_NAMESIZE +#ifdef IFNAMSIZ +#define IF_NAMESIZE IFNAMSIZ +#else +#define IF_NAMESIZE 16 +#endif +#endif + +#ifndef NI_MAXHOST +#define NI_MAXHOST 1025 +#endif + +#ifndef SHUT_RD +#define SHUT_RD 0 +#endif +#ifndef SHUT_WR +#define SHUT_WR 1 +#endif +#ifndef SHUT_RDWR +#define SHUT_RDWR 2 +#endif + +/* + * Max retry count for establishing a new connection with the server. + */ +#define EBNET_MAX_RETRY_COUNT 1 + +/* + * Unexported functions. + */ +static int ebnet_parse_booklist_entry(const char *line, char *book_name, + char *book_title); +static int ebnet_send_quit(int file); +static int ebnet_parse_url(const char *url, char *host, in_port_t *port, + char *book_name, char *file_path); +static int is_integer(const char *string); +static int write_string_all(int file, int timeout, const char *string); + + +/* + * Initialize ebnet. + */ +void +ebnet_initialize(void) +{ +#ifdef ENABLE_WINSOCK2 + WSADATA wsa_data; + + WSAStartup(MAKEWORD(2, 2), &wsa_data); +#endif + ebnet_initialize_multiplex(); + ebnet_set_bye_hook(ebnet_send_quit); +} + + +/* + * Get a book list from a server. + */ +EB_Error_Code +ebnet_bind_booklist(EB_BookList *booklist, const char *url) +{ + EB_Error_Code error_code; + char host[NI_MAXHOST]; + in_port_t port; + char book_name[EBNET_MAX_BOOK_NAME_LENGTH + 1]; + char book_title[EBNET_MAX_BOOK_TITLE_LENGTH + 1]; + char url_path[EB_MAX_RELATIVE_PATH_LENGTH + 1]; + Line_Buffer line_buffer; + char line[EBNET_MAX_LINE_LENGTH + 1]; + int ebnet_file = -1; + ssize_t read_result; + int lost_sync; + int retry_count = 0; + + LOG(("in: ebnet_bind_booklist(url=%s)", url)); + + retry: + lost_sync = 0; + initialize_line_buffer(&line_buffer); + set_line_buffer_timeout(&line_buffer, EBNET_TIMEOUT_SECONDS); + + /* + * Parse URL. + */ + if (ebnet_parse_url(url, host, &port, book_name, url_path) < 0 + || *book_name != '\0') { + error_code = EB_ERR_BAD_FILE_NAME; + goto failed; + } + + /* + * Establish a connection. + */ + ebnet_file = ebnet_connect_socket(host, port, PF_UNSPEC); + if (ebnet_file < 0) { + error_code = EB_ERR_EBNET_FAIL_CONNECT; + goto failed; + } + + /* + * Request BOOKLIST. + */ + bind_file_to_line_buffer(&line_buffer, ebnet_file); + sprintf(line, "BOOKLIST %s\r\n", book_name); + if (write_string_all(ebnet_file, EBNET_TIMEOUT_SECONDS, line) <= 0) { + error_code = EB_ERR_EBNET_FAIL_CONNECT; + lost_sync = 1; + goto failed; + } + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line) || *line != '!') { + lost_sync = 1; + error_code = EB_ERR_EBNET_FAIL_CONNECT; + goto failed; + } + if (strncasecmp(line, "!OK;", 4) != 0) { + error_code = EB_ERR_EBNET_FAIL_CONNECT; + goto failed; + } + + /* + * Get a list. + */ + for (;;) { + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line)) { + lost_sync = 1; + error_code = EB_ERR_EBNET_FAIL_CONNECT; + goto failed; + } + if (*line == '\0') + break; + if (ebnet_parse_booklist_entry(line, book_name, book_title) < 0) { + lost_sync = 1; + error_code = EB_ERR_EBNET_FAIL_CONNECT; + goto failed; + } + error_code = eb_booklist_add_book(booklist, book_name, book_title); + if (error_code != EB_SUCCESS) + goto failed; + } + + ebnet_disconnect_socket(ebnet_file); + finalize_line_buffer(&line_buffer); + LOG(("out: ebnet_bind_booklist() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + finalize_line_buffer(&line_buffer); + if (0 <= ebnet_file) { + if (lost_sync) { + shutdown(ebnet_file, SHUT_RDWR); + ebnet_set_lost_sync(ebnet_file); + } + ebnet_disconnect_socket(ebnet_file); + ebnet_file = -1; + if (lost_sync && retry_count < EBNET_MAX_RETRY_COUNT) { + retry_count++; + goto retry; + } + } + LOG(("out: ebnet_bind_booklist() = %s", eb_error_string(error_code))); + return error_code; +} + + +static int +ebnet_parse_booklist_entry(const char *line, char *book_name, char *book_title) +{ + const char *space; + size_t book_name_length; + size_t book_title_length; + char *p; + + space = strchr(line, ' '); + if (space == NULL) + return -1; + book_name_length = space - line; + book_title_length = strlen(space + 1); + + if (book_name_length == 0 + || EBNET_MAX_BOOK_NAME_LENGTH < book_name_length) + return -1; + if (book_title_length == 0 + || EBNET_MAX_BOOK_TITLE_LENGTH < book_title_length) + return -1; + + memcpy(book_name, line, book_name_length); + *(book_name + book_name_length) = '\0'; + memcpy(book_title, space + 1, book_title_length); + *(book_title + book_title_length) = '\0'; + + for (p = book_name; *p != '\0'; p++) { + if (!ASCII_ISLOWER(*p) && !ASCII_ISDIGIT(*p) + && *p != '_' && *p != '-' && *p != '.') + return -1; + } + + return 0; +} + + +/* + * Extension code for eb_bind() to support ebnet. + */ +EB_Error_Code +ebnet_bind(EB_Book *book, const char *url) +{ + EB_Error_Code error_code; + char host[NI_MAXHOST]; + in_port_t port; + char book_name[EBNET_MAX_BOOK_NAME_LENGTH + 1]; + char url_path[EB_MAX_RELATIVE_PATH_LENGTH + 1]; + Line_Buffer line_buffer; + char line[EBNET_MAX_LINE_LENGTH + 1]; + ssize_t read_result; + int lost_sync; + int retry_count = 0; + + LOG(("in: ebnet_bind(url=%s)", url)); + + retry: + lost_sync = 0; + initialize_line_buffer(&line_buffer); + set_line_buffer_timeout(&line_buffer, EBNET_TIMEOUT_SECONDS); + + /* + * Parse URL. + */ + if (ebnet_parse_url(url, host, &port, book_name, url_path) < 0 + || *book_name == '\0') { + error_code = EB_ERR_BAD_FILE_NAME; + goto failed; + } + + /* + * Establish a connection. + */ + book->ebnet_file = ebnet_connect_socket(host, port, PF_UNSPEC); + if (book->ebnet_file < 0) { + error_code = EB_ERR_EBNET_FAIL_CONNECT; + goto failed; + } + + ebnet_set_book_name(book->ebnet_file, book_name); + + /* + * Request BOOK. + */ + bind_file_to_line_buffer(&line_buffer, book->ebnet_file); + sprintf(line, "BOOK %s\r\n", book_name); + if (write_string_all(book->ebnet_file, EBNET_TIMEOUT_SECONDS, line) <= 0) { + error_code = EB_ERR_FAIL_OPEN_CAT; + lost_sync = 1; + goto failed; + } + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line) || *line != '!') { + lost_sync = 1; + error_code = EB_ERR_EBNET_FAIL_CONNECT; + goto failed; + } + if (strncasecmp(line, "!OK;", 4) != 0) { + if (strncasecmp(line, "!BUSY;", 6) == 0) + error_code = EB_ERR_EBNET_SERVER_BUSY; + else if (strncasecmp(line, "!PERM;", 6) == 0) + error_code = EB_ERR_EBNET_NO_PERMISSION; + else + error_code = EB_ERR_FAIL_OPEN_CAT; + goto failed; + } + + finalize_line_buffer(&line_buffer); + LOG(("out: ebnet_bind() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + finalize_line_buffer(&line_buffer); + if (0 <= book->ebnet_file) { + if (lost_sync) { + shutdown(book->ebnet_file, SHUT_RDWR); + ebnet_set_lost_sync(book->ebnet_file); + } + ebnet_disconnect_socket(book->ebnet_file); + book->ebnet_file = -1; + if (lost_sync && retry_count < EBNET_MAX_RETRY_COUNT) { + retry_count++; + goto retry; + } + } + LOG(("out: ebnet_bind() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Extension code for eb_bind_appendix() to support ebnet. + */ +EB_Error_Code +ebnet_bind_appendix(EB_Appendix *appendix, const char *url) +{ + EB_Error_Code error_code; + char host[NI_MAXHOST]; + in_port_t port; + char appendix_name[EBNET_MAX_BOOK_NAME_LENGTH + 1]; + char url_path[EB_MAX_RELATIVE_PATH_LENGTH + 1]; + Line_Buffer line_buffer; + char line[EBNET_MAX_LINE_LENGTH + 1]; + ssize_t read_result; + int lost_sync; + int retry_count = 0; + + LOG(("in: ebnet_bind(url=%s)", url)); + + retry: + lost_sync = 0; + initialize_line_buffer(&line_buffer); + set_line_buffer_timeout(&line_buffer, EBNET_TIMEOUT_SECONDS); + + /* + * Parse URL. + */ + if (ebnet_parse_url(url, host, &port, appendix_name, url_path) < 0 + || *appendix_name == '\0') { + error_code = EB_ERR_BAD_FILE_NAME; + goto failed; + } + + /* + * Establish a connection. + */ + appendix->ebnet_file = ebnet_connect_socket(host, port, PF_UNSPEC); + if (appendix->ebnet_file < 0) { + error_code = EB_ERR_EBNET_FAIL_CONNECT; + goto failed; + } + + ebnet_set_book_name(appendix->ebnet_file, appendix_name); + + /* + * Request BOOK. + */ + bind_file_to_line_buffer(&line_buffer, appendix->ebnet_file); + sprintf(line, "BOOK %s\r\n", appendix_name); + if (write_string_all(appendix->ebnet_file, EBNET_TIMEOUT_SECONDS, line) + <= 0) { + error_code = EB_ERR_FAIL_OPEN_CAT; + lost_sync = 1; + goto failed; + } + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line) || *line != '!') { + lost_sync = 1; + error_code = EB_ERR_EBNET_FAIL_CONNECT; + goto failed; + } + if (strncasecmp(line, "!OK;", 4) != 0) { + if (strncasecmp(line, "!BUSY;", 6) == 0) + error_code = EB_ERR_EBNET_SERVER_BUSY; + else if (strncasecmp(line, "!PERM;", 6) == 0) + error_code = EB_ERR_EBNET_NO_PERMISSION; + else + error_code = EB_ERR_FAIL_OPEN_CAT; + goto failed; + } + + finalize_line_buffer(&line_buffer); + LOG(("out: ebnet_bind() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + finalize_line_buffer(&line_buffer); + if (0 <= appendix->ebnet_file) { + if (lost_sync) { + shutdown(appendix->ebnet_file, SHUT_RDWR); + ebnet_set_lost_sync(appendix->ebnet_file); + } + ebnet_disconnect_socket(appendix->ebnet_file); + appendix->ebnet_file = -1; + if (lost_sync && retry_count < EBNET_MAX_RETRY_COUNT) { + retry_count++; + goto retry; + } + } + LOG(("out: ebnet_bind() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Extension code for eb_finalize_book() to support ebnet. + */ +void +ebnet_finalize_book(EB_Book *book) +{ + LOG(("in+out: ebnet_finalize_book(book=%d)", (int)book->code)); + + if (0 <= book->ebnet_file) { + ebnet_disconnect_socket(book->ebnet_file); + book->ebnet_file = -1; + } +} + + +/* + * Extension code for eb_finalize_appendix() to support ebnet. + */ +void +ebnet_finalize_appendix(EB_Appendix *appendix) +{ + LOG(("in+out: ebnet_finalize_appendix(appendix=%d)", (int)appendix->code)); + + if (0 <= appendix->ebnet_file) { + ebnet_disconnect_socket(appendix->ebnet_file); + appendix->ebnet_file = -1; + } +} + + +/* + * Extension code for zio_open_raw() to support ebnet. + */ +int +ebnet_open(const char *url) +{ + char host[NI_MAXHOST]; + in_port_t port; + char book_name[EBNET_MAX_BOOK_NAME_LENGTH + 1]; + char url_path[EB_MAX_RELATIVE_PATH_LENGTH + 1]; + Line_Buffer line_buffer; + char line[EBNET_MAX_LINE_LENGTH + 1]; + ssize_t read_result; + off_t file_size; + int new_file; + int lost_sync; + int retry_count = 0; + + LOG(("in: ebnet_open(url=%s)", url)); + + retry: + new_file = -1; + lost_sync = 0; + initialize_line_buffer(&line_buffer); + set_line_buffer_timeout(&line_buffer, EBNET_TIMEOUT_SECONDS); + + /* + * Parse URL. + */ + if (ebnet_parse_url(url, host, &port, book_name, url_path) < 0 + || *book_name == '\0') { + goto failed; + } + + /* + * Connect with a server. + */ + new_file = ebnet_connect_socket(host, port, PF_UNSPEC); + if (new_file < 0) + goto failed; + + ebnet_set_book_name(new_file, book_name); + ebnet_set_file_path(new_file, url_path); + + /* + * Request FILESIZE. + */ + bind_file_to_line_buffer(&line_buffer, new_file); + sprintf(line, "FILESIZE %s /%s\r\n", book_name, url_path); + if (write_string_all(new_file, EBNET_TIMEOUT_SECONDS, line) <= 0) { + lost_sync = 1; + goto failed; + } + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line) || *line != '!') { + lost_sync = 1; + goto failed; + } + if (strncasecmp(line, "!OK;", 4) != 0) + goto failed; + + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line) || !is_integer(line)) { + lost_sync = 1; + goto failed; + } + +#if defined(HAVE_ATOLL) + file_size = atoll(line); +#elif defined(HAVE__ATOI64) + file_size = _atoi64(line); +#else + file_size = atol(line); +#endif + + if (file_size < 0) + goto failed; + ebnet_set_file_size(new_file, file_size); + + finalize_line_buffer(&line_buffer); + LOG(("out: ebnet_open() = %d", new_file)); + return new_file; + + /* + * An error occurs... + */ + failed: + finalize_line_buffer(&line_buffer); + if (0 <= new_file) { + if (lost_sync) { + shutdown(new_file, SHUT_RDWR); + ebnet_set_lost_sync(new_file); + } + ebnet_disconnect_socket(new_file); + if (lost_sync && retry_count < EBNET_MAX_RETRY_COUNT) { + retry_count++; + goto retry; + } + } + LOG(("out: ebnet_open() = %d", -1)); + return -1; +} + + +/* + * Extension code for zio_close_raw() to support ebnet. + */ +int +ebnet_close(int file) +{ + LOG(("in+out: ebnet_close(file=%d)", file)); + ebnet_disconnect_socket(file); + return 0; +} + + +/* + * Extension code for zio_lseek_raw() to support ebnet. + */ +off_t +ebnet_lseek(int file, off_t offset, int whence) +{ + off_t file_size; + off_t new_offset = 0; + + LOG(("in: ebnet_lseek(file=%d, location=%ld, whence=%d)", file, + (long)offset, whence)); + + file_size = ebnet_get_file_size(file); + if (file_size < 0) + goto failed; + + switch (whence) { + case SEEK_SET: + new_offset = offset; + break; + case SEEK_CUR: + new_offset = new_offset + offset; + break; + case SEEK_END: + if (offset <= file_size) + new_offset = file_size - offset; + else + new_offset = 0; + break; + default: + goto failed; + } + + ebnet_set_offset(file, new_offset); + LOG(("out: ebnet_lseek() = %ld", (long)new_offset)); + return new_offset; + + /* + * An error occurs... + */ + failed: + LOG(("out: ebnet_lseek() = %ld", (long)-1)); + return -1; +} + + +/* + * Extension code for zio_read_raw() to support ebnet. + */ +ssize_t +ebnet_read(int *file, char *buffer, size_t length) +{ + Line_Buffer line_buffer; + char line[EBNET_MAX_LINE_LENGTH + 1]; + const char *book_name; + const char *url_path; + off_t offset; + size_t received_length; + ssize_t read_result; + ssize_t chunk_length; + int lost_sync; + int retry_count = 0; + + LOG(("in: ebnet_read(*file=%d, length=%ld)", *file, (long)length)); + + if (length == 0) { + LOG(("out: ebnet_read() = %ld", (long)0)); + return 0; + } + + retry: + lost_sync = 0; + initialize_line_buffer(&line_buffer); + + /* + * Request READ. + */ + book_name = ebnet_get_book_name(*file); + url_path = ebnet_get_file_path(*file); + offset = ebnet_get_offset(*file); + if (book_name == NULL || url_path == NULL || offset < 0) + goto failed; + + bind_file_to_line_buffer(&line_buffer, *file); +#if defined(PRINTF_LL_MODIFIER) + sprintf(line, "READ %s /%s %llu %ld\r\n", book_name, url_path, + (unsigned long long) offset, (long) length); +#elif defined(PRINTF_I64_MODIFIER) + sprintf(line, "READ %s /%s %I64u %ld\r\n", book_name, url_path, + (unsigned __int64) offset, (long) length); +#else + sprintf(line, "READ %s /%s %lu %ld\r\n", book_name, url_path, + (unsigned long) offset, (long) length); +#endif + if (write_string_all(*file, EBNET_TIMEOUT_SECONDS, line) <= 0) { + lost_sync = 1; + goto failed; + } + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line) || *line != '!') { + lost_sync = 1; + goto failed; + } + if (strncasecmp(line, "!OK;", 4) != 0) + goto failed; + + received_length = 0; + while (received_length < length) { + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line) || *line != '*') { + lost_sync = 1; + goto failed; + } + + if (!is_integer(line + 1)) { + lost_sync = 1; + goto failed; + } else if (strcmp(line + 1, "-1") == 0) { + ebnet_set_offset(*file, (off_t) offset + received_length); + goto failed; + } else if (strcmp(line + 1, "0") == 0) { + break; + } + chunk_length = atoi(line + 1); + if (chunk_length <= 0 || length < received_length + chunk_length) { + lost_sync = 1; + goto failed; + } + + read_result = binary_read_line_buffer(&line_buffer, + buffer + received_length, chunk_length); + if (read_result != chunk_length) { + lost_sync = 1; + goto failed; + } + received_length += chunk_length; + } + + ebnet_set_offset(*file, (off_t) offset + received_length); + finalize_line_buffer(&line_buffer); + LOG(("out: ebnet_read(*file=%d) = %ld", *file, (long)received_length)); + return received_length; + + /* + * An error occurs... + */ + failed: + finalize_line_buffer(&line_buffer); + if (lost_sync) { + shutdown(*file, SHUT_RDWR); + ebnet_set_lost_sync(*file); + if (retry_count < EBNET_MAX_RETRY_COUNT) { + int new_file = ebnet_reconnect_socket(*file); + if (0 <= new_file) { + *file = new_file; + retry_count++; + goto retry; + } + } + } + LOG(("out: ebnet_read(*file=%d) = %ld", *file, (long)-1)); + return -1; +} + + +/* + * Extension code for eb_fix_directory_name() to support ebnet. + */ +EB_Error_Code +ebnet_fix_directory_name(const char *url, char *directory_name) +{ + char host[NI_MAXHOST]; + in_port_t port; + char book_name[EBNET_MAX_BOOK_NAME_LENGTH + 1]; + char url_path[EB_MAX_RELATIVE_PATH_LENGTH + 1]; + Line_Buffer line_buffer; + char line[EBNET_MAX_LINE_LENGTH + 1]; + ssize_t read_result; + int new_file; + int lost_sync; + int retry_count = 0; + + retry: + new_file = -1; + lost_sync = 0; + initialize_line_buffer(&line_buffer); + set_line_buffer_timeout(&line_buffer, EBNET_TIMEOUT_SECONDS); + + /* + * Parse URL. + */ + if (ebnet_parse_url(url, host, &port, book_name, url_path) < 0 + || *book_name == '\0') { + goto failed; + } + + /* + * Connect with a server. + */ + new_file = ebnet_connect_socket(host, port, PF_UNSPEC); + if (new_file < 0) + goto failed; + + /* + * Request DIR. + */ + bind_file_to_line_buffer(&line_buffer, new_file); + sprintf(line, "DIR %s /%s %s\r\n", book_name, url_path, directory_name); + if (write_string_all(new_file, EBNET_TIMEOUT_SECONDS, line) <= 0) { + lost_sync = 1; + goto failed; + } + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line) || *line != '!') { + lost_sync = 1; + goto failed; + } + if (strncasecmp(line, "!OK;", 4) != 0) + goto failed; + + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line)) { + lost_sync = 1; + goto failed; + } + + if (*line == '\0' || EB_MAX_DIRECTORY_NAME_LENGTH < strlen(line)) + goto failed; + strcpy(directory_name, line); + + finalize_line_buffer(&line_buffer); + ebnet_disconnect_socket(new_file); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + finalize_line_buffer(&line_buffer); + if (0 <= new_file) { + if (lost_sync) { + shutdown(new_file, SHUT_RDWR); + ebnet_set_lost_sync(new_file); + } + ebnet_disconnect_socket(new_file); + if (lost_sync && retry_count < EBNET_MAX_RETRY_COUNT) { + retry_count++; + goto retry; + } + } + return EB_ERR_BAD_DIR_NAME; +} + + +/* + * Extension code for eb_find_file_name() to support ebnet. + */ +EB_Error_Code +ebnet_find_file_name(const char *url, const char *target_file_name, + char *found_file_name) +{ + char host[NI_MAXHOST]; + in_port_t port; + char book_name[EBNET_MAX_BOOK_NAME_LENGTH + 1]; + char url_path[EB_MAX_RELATIVE_PATH_LENGTH + 1]; + Line_Buffer line_buffer; + char line[EBNET_MAX_LINE_LENGTH + 1]; + ssize_t read_result; + int new_file; + int lost_sync; + int retry_count = 0; + + retry: + new_file = -1; + lost_sync = 0; + initialize_line_buffer(&line_buffer); + set_line_buffer_timeout(&line_buffer, EBNET_TIMEOUT_SECONDS); + + /* + * Parse URL. + */ + if (ebnet_parse_url(url, host, &port, book_name, url_path) < 0 + || *book_name == '\0') { + goto failed; + } + + /* + * Connect with a server. + */ + new_file = ebnet_connect_socket(host, port, PF_UNSPEC); + if (new_file < 0) + goto failed; + + /* + * Request FILE. + */ + bind_file_to_line_buffer(&line_buffer, new_file); + sprintf(line, "FILE %s /%s %s\r\n", book_name, url_path, target_file_name); + if (write_string_all(new_file, EBNET_TIMEOUT_SECONDS, line) <= 0) { + lost_sync = 1; + goto failed; + } + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line) || *line != '!') { + lost_sync = 1; + goto failed; + } + if (strncasecmp(line, "!OK;", 4) != 0) + goto failed; + + read_result = read_line_buffer(&line_buffer, line, sizeof(line)); + if (read_result < 0 || read_result == sizeof(line)) { + lost_sync = 1; + goto failed; + } + + if (*line == '\0' || EB_MAX_FILE_NAME_LENGTH < strlen(line)) + goto failed; + strcpy(found_file_name, line); + + finalize_line_buffer(&line_buffer); + ebnet_disconnect_socket(new_file); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + finalize_line_buffer(&line_buffer); + if (0 <= new_file) { + if (lost_sync) { + shutdown(new_file, SHUT_RDWR); + ebnet_set_lost_sync(new_file); + } + ebnet_disconnect_socket(new_file); + if (lost_sync && retry_count < EBNET_MAX_RETRY_COUNT) { + retry_count++; + goto retry; + } + } + return EB_ERR_BAD_FILE_NAME; +} + + +/* + * Bye hook. + * We must send `QUIT' command before close a connection. + */ +static int +ebnet_send_quit(int file) +{ + if (write_string_all(file, EBNET_TIMEOUT_SECONDS, "QUIT\r\n") <= 0) + return -1; + return 0; +} + + +/* + * URL version of eb_canonicalize_path_name(). + */ +EB_Error_Code +ebnet_canonicalize_url(char *url) +{ + char host[NI_MAXHOST]; + in_port_t port; + char book_name[EBNET_MAX_BOOK_NAME_LENGTH + 1]; + char url_path[EB_MAX_RELATIVE_PATH_LENGTH + 1]; + + if (ebnet_parse_url(url, host, &port, book_name, url_path) < 0 + || *book_name == '\0') { + return EB_ERR_BAD_FILE_NAME; + } + + /* + * "ebnet://[]:/" must not exceed + * EB_MAX_PATH_LENGTH. + * + * Note: + * "ebnet://[" + "]:" + "/" = 12 characters. + * is 5 characters maximum. + */ + if (EB_MAX_PATH_LENGTH + < strlen(host) + strlen(book_name) + strlen(url_path) + 17) + return EB_ERR_TOO_LONG_FILE_NAME; + + if (strchr(host, ':') != NULL) + sprintf(url, "ebnet://[%s]:%d/%s", host, (int)port, book_name); + else + sprintf(url, "ebnet://%s:%d/%s", host, (int)port, book_name); + + return EB_SUCCESS; +} + + +/* + * Parse URL. + * + * As the result, host, port, book_name and file-path are put into + * the corresponding arguments. + */ +static int +ebnet_parse_url(const char *url, char *host, in_port_t *port, + char *book_name, char *file_path) +{ + URL_Parts parts; + const char *scheme_part; + const char *host_part; + const char *port_part; + const char *port_part_p; + const char *path_part; + const char *slash; + size_t book_name_length; + + *host = '\0'; + *port = 0; + *book_name = '\0'; + *file_path = '\0'; + + url_parts_initialize(&parts); + if (url_parts_parse(&parts, url) < 0) + goto failed; + + /* + * Check scheme. + */ + scheme_part = url_parts_scheme(&parts); + if (scheme_part == NULL || strcmp(scheme_part, EBNET_SERVICE_NAME) != 0) + goto failed; + + /* + * Check host. + */ + host_part = url_parts_host(&parts); + if (host_part == NULL || *host_part == '\0' + || NI_MAXHOST < strlen(host_part) + 1) + goto failed; + strcpy(host, host_part); + + /* + * Check port. + */ + port_part = url_parts_port(&parts); + if (port_part == NULL || *port_part == '\0') + port_part = EBNET_DEFAULT_PORT; + + for (port_part_p = port_part; *port_part_p != '\0'; port_part_p++) { + if (!ASCII_ISDIGIT(*port_part_p)) + goto failed; + } + *port = atoi(port_part); + + /* + * Check path. + */ + path_part = url_parts_path(&parts); + if (path_part == NULL || *path_part == '\0') { + *book_name = '\0'; + *file_path = '\0'; + } else { + slash = strchr(path_part + 1, '/'); + if (slash == NULL) { + book_name_length = strlen(path_part + 1); + if (EBNET_MAX_BOOK_NAME_LENGTH < book_name_length) + goto failed; + strcpy(book_name, path_part + 1); + *file_path = '\0'; + } else { + book_name_length = slash - (path_part + 1); + if (book_name_length == 0 + || EBNET_MAX_BOOK_NAME_LENGTH < book_name_length) + goto failed; + memcpy(book_name, path_part + 1, book_name_length); + *(book_name + book_name_length) = '\0'; + + if (EB_MAX_RELATIVE_PATH_LENGTH < strlen(slash + 1)) + goto failed; + strcpy(file_path, slash + 1); + } + } + + url_parts_finalize(&parts); + return 0; + + /* + * An error occurs... + */ + failed: + *host = '\0'; + *port = 0; + *book_name = '\0'; + *file_path = '\0'; + url_parts_finalize(&parts); + return -1; +} + + +/* + * Check whether `string' is integer or not. + * Return 1 if it is, 0 otherwise. + */ +static int +is_integer(const char *string) +{ + const char *s = string; + + if (*s == '-') + s++; + if (!ASCII_ISDIGIT(*s)) + return 0; + s++; + + while (*s != '\0') { + if (!ASCII_ISDIGIT(*s)) + return 0; + s++; + } + + return 1; +} + + +/* + * Write data to a file. + * It repeats to call write() until all data will have written. + * The function returns 1 upon success, 0 upon timeout, -1 upon error. + */ +static int +write_string_all(int file, int timeout, const char *string) +{ + const char *string_p = string; + ssize_t rest_length = strlen(string); + fd_set fdset; + struct timeval timeval; + int select_result; + ssize_t write_result; + + while (0 < rest_length) { + errno = 0; + FD_ZERO(&fdset); + FD_SET(file, &fdset); + + if (timeout == 0) + select_result = select(file + 1, NULL, &fdset, NULL, NULL); + else { + timeval.tv_sec = timeout; + timeval.tv_usec = 0; + select_result = select(file + 1, NULL, &fdset, NULL, &timeval); + } + if (select_result < 0) { + if (errno == EINTR) + continue; + return -1; + } else if (select_result == 0) { + return 0; + } + + errno = 0; + write_result = send(file, string_p, rest_length, 0); + if (write_result < 0) { + if (errno == EINTR) + continue; + return -1; + } else { + rest_length -= write_result; + string_p += write_result; + } + } + + return 1; +} + + diff --git a/lib/ebu/ebu/ebnet.h b/lib/ebu/ebu/ebnet.h new file mode 100644 index 0000000..1ab8eb7 --- /dev/null +++ b/lib/ebu/ebu/ebnet.h @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2003-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EBNET_H +#define EBNET_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "eb.h" + +/* + * Service name. + */ +#define EBNET_SERVICE_NAME "ebnet" + +/* + * Default port number. + */ +#define EBNET_DEFAULT_PORT "22010" + +/* + * Maximum length of book name. + * EBNETD defins 14, but we add +4 for the ".app" suffix here. + */ +#define EBNET_MAX_BOOK_NAME_LENGTH 18 + +/* + * Maximum length of book title. + * EBNETD defins 80, and EB Library uses the same value. + */ +#define EBNET_MAX_BOOK_TITLE_LENGTH 80 + +/* + * Maximum length of an EBNET request or response line. + */ +#define EBNET_MAX_LINE_LENGTH 511 + +/* + * Timeout period in seconds. + */ +#define EBNET_TIMEOUT_SECONDS 30 + +/* + * Function declarations. + */ +/* multiplex.c */ +void ebnet_initialize_multiplex(void); +void ebnet_finalize(void); +void ebnet_set_hello_hook(int (*hook)(int file)); +void ebnet_set_bye_hook(int (*hook)(int file)); +int ebnet_connect_socket(const char *host, int port, int family); +void ebnet_disconnect_socket(int file); +int ebnet_reconnect_socket(int file); +int ebnet_set_lost_sync(int file); +int ebnet_set_book_name(int file, const char *book_name); +const char *ebnet_get_book_name(int file); +int ebnet_set_file_path(int file, const char *file_path); +const char *ebnet_get_file_path(int file); +int ebnet_set_offset(int file, off_t offset); +off_t ebnet_get_offset(int file); +int ebnet_set_file_size(int file, off_t file_size); +off_t ebnet_get_file_size(int file); + +/* ebnet.c */ +void ebnet_initialize(void); +EB_Error_Code ebnet_bind_booklist(EB_BookList *booklist, const char *url); +EB_Error_Code ebnet_bind(EB_Book *book, const char *url); +EB_Error_Code ebnet_bind_appendix(EB_Appendix *appendix, const char *url); +void ebnet_finalize_book(EB_Book *book); +void ebnet_finalize_appendix(EB_Appendix *appendix); +int ebnet_open(const char *url); +int ebnet_close(int file); +off_t ebnet_lseek(int file, off_t offset, int whence); +ssize_t ebnet_read(int *file, char *buffer, size_t length); +EB_Error_Code ebnet_fix_directory_name(const char *url, char *directory_name); +EB_Error_Code ebnet_find_file_name(const char *url, + const char *target_file_name, char *found_file_name); +EB_Error_Code ebnet_canonicalize_url(char *url); + +#endif /* EBNET_H */ diff --git a/lib/ebu/ebu/ebnet.lo b/lib/ebu/ebu/ebnet.lo new file mode 100644 index 0000000..8de235c --- /dev/null +++ b/lib/ebu/ebu/ebnet.lo @@ -0,0 +1,12 @@ +# ebnet.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/ebnet.o' + +# Name of the non-PIC object +non_pic_object='ebnet.o' + diff --git a/lib/ebu/ebu/endword.c b/lib/ebu/ebu/endword.c new file mode 100644 index 0000000..e16bee9 --- /dev/null +++ b/lib/ebu/ebu/endword.c @@ -0,0 +1,192 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `book' supports `ENDWORD SEARCH' + * or not. + */ +int +eb_have_endword_search(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_endword_search(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * Check for the index page of endword search. + */ + if (book->subbook_current->endword_alphabet.start_page == 0 + && book->subbook_current->endword_asis.start_page == 0 + && book->subbook_current->endword_kana.start_page == 0) + goto failed; + + LOG(("out: eb_have_endword_search() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_endword_search() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Endword search. + */ +EB_Error_Code +eb_search_endword(EB_Book *book, const char *input_word) +{ + EB_Error_Code error_code; + EB_Word_Code word_code; + EB_Search_Context *context; + + eb_lock(&book->lock); + LOG(("in: eb_search_endword(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Initialize search context. + */ + eb_reset_search_contexts(book); + context = book->search_contexts; + context->code = EB_SEARCH_ENDWORD; + + /* + * Make a fixed word and a canonicalized word to search from + * `input_word'. + */ + error_code = eb_set_endword(book, input_word, context->word, + context->canonicalized_word, &word_code); + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Get a page number. + */ + switch (word_code) { + case EB_WORD_ALPHABET: + if (book->subbook_current->endword_alphabet.start_page != 0) + context->page = book->subbook_current->endword_alphabet.start_page; + else if (book->subbook_current->endword_asis.start_page != 0) + context->page = book->subbook_current->endword_asis.start_page; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_KANA: + if (book->subbook_current->endword_kana.start_page != 0) + context->page = book->subbook_current->endword_kana.start_page; + else if (book->subbook_current->endword_asis.start_page != 0) + context->page = book->subbook_current->endword_asis.start_page; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_OTHER: + if (book->subbook_current->endword_asis.start_page != 0) + context->page = book->subbook_current->endword_asis.start_page; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + default: + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Choose comparison functions. + */ + + if (book->character_code == EB_CHARCODE_ISO8859_1 + || book->character_code == EB_CHARCODE_UTF8) { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word; + } else if (context->page == book->subbook_current->word_kana.start_page) { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word_kana_single; + context->compare_group = eb_match_word_kana_group; + } else { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word_kana_group; + } + + /* + * Pre-search. + */ + error_code = eb_presearch_word(book, context); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_search_endword() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_search_contexts(book); + LOG(("out: eb_search_endword() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/endword.lo b/lib/ebu/ebu/endword.lo new file mode 100644 index 0000000..680a436 --- /dev/null +++ b/lib/ebu/ebu/endword.lo @@ -0,0 +1,12 @@ +# endword.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/endword.o' + +# Name of the non-PIC object +non_pic_object='endword.o' + diff --git a/lib/ebu/ebu/error.c b/lib/ebu/ebu/error.c new file mode 100644 index 0000000..99489d4 --- /dev/null +++ b/lib/ebu/ebu/error.c @@ -0,0 +1,286 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Mutex for gettext function call. + */ +#if defined(ENABLE_NLS) && defined(ENABLE_PTHREAD) +pthread_mutex_t gettext_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif + +/* + * Error code strings. + */ +static const char * const error_strings[] = { + /* 0 -- 4 */ + "EB_SUCCESS", + "EB_ERR_MEMORY_EXHAUSTED", + "EB_ERR_EMPTY_FILE_NAME", + "EB_ERR_TOO_LONG_FILE_NAME", + "EB_ERR_BAD_FILE_NAME", + + /* 5 -- 9 */ + "EB_ERR_BAD_DIR_NAME", + "EB_ERR_TOO_LONG_WORD", + "EB_ERR_BAD_WORD", + "EB_ERR_EMPTY_WORD", + "EB_ERR_FAIL_GETCWD", + + /* 10 -- 14 */ + "EB_ERR_FAIL_OPEN_CAT", + "EB_ERR_FAIL_OPEN_CATAPP", + "EB_ERR_FAIL_OPEN_TEXT", + "EB_ERR_FAIL_OPEN_FONT", + "EB_ERR_FAIL_OPEN_APP", + + /* 15 -- 19 */ + "EB_ERR_FAIL_OPEN_BINARY", + "EB_ERR_FAIL_READ_CAT", + "EB_ERR_FAIL_READ_CATAPP", + "EB_ERR_FAIL_READ_TEXT", + "EB_ERR_FAIL_READ_FONT", + + /* 20 -- 24 */ + "EB_ERR_FAIL_READ_APP", + "EB_ERR_FAIL_READ_BINARY", + "EB_ERR_FAIL_SEEK_CAT", + "EB_ERR_FAIL_SEEK_CATAPP", + "EB_ERR_FAIL_SEEK_TEXT", + + /* 25 -- 29 */ + "EB_ERR_FAIL_SEEK_FONT", + "EB_ERR_FAIL_SEEK_APP", + "EB_ERR_FAIL_SEEK_BINARY", + "EB_ERR_UNEXP_CAT", + "EB_ERR_UNEXP_CATAPP", + + /* 30 -- 34 */ + "EB_ERR_UNEXP_TEXT", + "EB_ERR_UNEXP_FONT", + "EB_ERR_UNEXP_APP", + "EB_ERR_UNEXP_BINARY", + "EB_ERR_UNBOUND_BOOK", + + /* 35 -- 39 */ + "EB_ERR_UNBOUND_APP", + "EB_ERR_NO_SUB", + "EB_ERR_NO_APPSUB", + "EB_ERR_NO_FONT", + "EB_ERR_NO_TEXT", + + /* 40 -- 44 */ + "EB_ERR_NO_STOPCODE", + "EB_ERR_NO_ALT", + "EB_ERR_NO_CUR_SUB", + "EB_ERR_NO_CUR_APPSUB", + "EB_ERR_NO_CUR_FONT", + + /* 45 -- 49 */ + "EB_ERR_NO_CUR_BINARY", + "EB_ERR_NO_SUCH_SUB", + "EB_ERR_NO_SUCH_APPSUB", + "EB_ERR_NO_SUCH_FONT", + "EB_ERR_NO_SUCH_CHAR_BMP", + + /* 50 -- 54 */ + "EB_ERR_NO_SUCH_CHAR_TEXT", + "EB_ERR_NO_SUCH_SEARCH", + "EB_ERR_NO_SUCH_HOOK", + "EB_ERR_NO_SUCH_BINARY", + "EB_ERR_DIFF_CONTENT", + + /* 55 -- 59 */ + "EB_ERR_NO_PREV_SEARCH", + "EB_ERR_NO_SUCH_MULTI_ID", + "EB_ERR_NO_SUCH_ENTRY_ID", + "EB_ERR_TOO_MANY_WORDS", + "EB_ERR_NO_WORD", + + /* 60 -- 64 */ + "EB_ERR_NO_CANDIDATES", + "EB_ERR_END_OF_CONTENT", + "EB_ERR_NO_PREV_SEEK", + "EB_ERR_EBNET_UNSUPPORTED", + "EB_ERR_EBNET_FAIL_CONNECT", + + /* 65 -- 69 */ + "EB_ERR_EBNET_SERVER_BUSY", + "EB_ERR_EBNET_NO_PERMISSION", + "EB_ERR_UNBOUND_BOOKLIST", + "EB_ERR_NO_SUCH_BOOK", + "EB_ERR_NO_SUCH_COLOR", + + NULL +}; + +/* + * Look up the error message corresponding to the error code `error_code'. + */ +const char * +eb_error_string(EB_Error_Code error_code) +{ + const char *string; + + if (0 <= error_code && error_code < EB_NUMBER_OF_ERRORS) + string = error_strings[error_code]; + else + string = "EB_ERR_UNKNOWN"; + + return string; +} + + +/* + * Error messages. + */ +static const char * const error_messages[] = { + /* 0 -- 4 */ + N_("no error"), + N_("memory exhausted"), + N_("an empty file name"), + N_("too long file name"), + N_("bad file name"), + + /* 5 -- 9 */ + N_("bad directory name"), + N_("too long word"), + N_("a word contains bad character"), + N_("an empty word"), + N_("failed to get the current working directory"), + + /* 10 -- 14 */ + N_("failed to open a catalog file"), + N_("failed to open an appendix catalog file"), + N_("failed to open a text file"), + N_("failed to open a font file"), + N_("failed to open an appendix file"), + + /* 15 -- 19 */ + N_("failed to open a binary file"), + N_("failed to read a catalog file"), + N_("failed to read an appendix catalog file"), + N_("failed to read a text file"), + N_("failed to read a font file"), + + /* 20 -- 24 */ + N_("failed to read an appendix file"), + N_("failed to read a binary file"), + N_("failed to seek a catalog file"), + N_("failed to seek an appendix catalog file"), + N_("failed to seek a text file"), + + /* 25 -- 29 */ + N_("failed to seek a font file"), + N_("failed to seek an appendix file"), + N_("failed to seek a binary file"), + N_("unexpected format in a catalog file"), + N_("unexpected format in an appendix catalog file"), + + /* 30 -- 34 */ + N_("unexpected format in a text file"), + N_("unexpected format in a font file"), + N_("unexpected format in an appendix file"), + N_("unexpected format in a binary file"), + N_("book not bound"), + + /* 35 -- 39 */ + N_("appendix not bound"), + N_("no subbook"), + N_("no subbook in the appendix"), + N_("no font"), + N_("no text file"), + + /* 40 -- 44 */ + N_("no stop-code"), + N_("no alternation string"), + N_("no current subbook"), + N_("no current appendix subbook"), + N_("no current font"), + + /* 45 -- 49 */ + N_("no current binary"), + N_("no such subbook"), + N_("no such appendix subbook"), + N_("no such font"), + N_("no such character bitmap"), + + /* 50 -- 54 */ + N_("no such character text"), + N_("no such search method"), + N_("no such hook"), + N_("no such binary"), + N_("different content type"), + + /* 55 -- 59 */ + N_("no previous search"), + N_("no such multi search"), + N_("no such multi search entry"), + N_("too many words specified"), + N_("no word specified"), + + /* 60 -- 64 */ + N_("no candidates"), + N_("end of content"), + N_("no previous seek"), + N_("ebnet is not supported"), + N_("failed to connect to an ebnet server"), + + /* 65 -- 69 */ + N_("ebnet server is busy"), + N_("no access permission"), + N_("booklist not bound"), + N_("no such book"), + N_("no such color"), + + NULL +}; + +/* + * Look up the error message corresponding to the error code `error_code'. + */ +const char * +eb_error_message(EB_Error_Code error_code) +{ + const char *message; + + if (0 <= error_code && error_code < EB_NUMBER_OF_ERRORS) + message = error_messages[error_code]; + else + message = N_("unknown error"); + +#ifdef ENABLE_NLS + message = dgettext(EB_TEXT_DOMAIN_NAME, message); +#endif /* ENABLE_NLS */ + + return message; +} diff --git a/lib/ebu/ebu/error.h b/lib/ebu/ebu/error.h new file mode 100644 index 0000000..c48266b --- /dev/null +++ b/lib/ebu/ebu/error.h @@ -0,0 +1,152 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_ERROR_H +#define EB_ERROR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef EB_BUILD_LIBRARY +#include "defs.h" +#else +#include +#endif + +/* + * Error codes. + */ +#define EB_SUCCESS 0 +#define EB_ERR_MEMORY_EXHAUSTED 1 +#define EB_ERR_EMPTY_FILE_NAME 2 +#define EB_ERR_TOO_LONG_FILE_NAME 3 +#define EB_ERR_BAD_FILE_NAME 4 + +#define EB_ERR_BAD_DIR_NAME 5 +#define EB_ERR_TOO_LONG_WORD 6 +#define EB_ERR_BAD_WORD 7 +#define EB_ERR_EMPTY_WORD 8 +#define EB_ERR_FAIL_GETCWD 9 + +#define EB_ERR_FAIL_OPEN_CAT 10 +#define EB_ERR_FAIL_OPEN_CATAPP 11 +#define EB_ERR_FAIL_OPEN_TEXT 12 +#define EB_ERR_FAIL_OPEN_FONT 13 +#define EB_ERR_FAIL_OPEN_APP 14 + +#define EB_ERR_FAIL_OPEN_BINARY 15 +#define EB_ERR_FAIL_READ_CAT 16 +#define EB_ERR_FAIL_READ_CATAPP 17 +#define EB_ERR_FAIL_READ_TEXT 18 +#define EB_ERR_FAIL_READ_FONT 19 + +#define EB_ERR_FAIL_READ_APP 20 +#define EB_ERR_FAIL_READ_BINARY 21 +#define EB_ERR_FAIL_SEEK_CAT 22 +#define EB_ERR_FAIL_SEEK_CATAPP 23 +#define EB_ERR_FAIL_SEEK_TEXT 24 + +#define EB_ERR_FAIL_SEEK_FONT 25 +#define EB_ERR_FAIL_SEEK_APP 26 +#define EB_ERR_FAIL_SEEK_BINARY 27 +#define EB_ERR_UNEXP_CAT 28 +#define EB_ERR_UNEXP_CATAPP 29 + +#define EB_ERR_UNEXP_TEXT 30 +#define EB_ERR_UNEXP_FONT 31 +#define EB_ERR_UNEXP_APP 32 +#define EB_ERR_UNEXP_BINARY 33 +#define EB_ERR_UNBOUND_BOOK 34 + +#define EB_ERR_UNBOUND_APP 35 +#define EB_ERR_NO_SUB 36 +#define EB_ERR_NO_APPSUB 37 +#define EB_ERR_NO_FONT 38 +#define EB_ERR_NO_TEXT 39 + +#define EB_ERR_NO_STOPCODE 40 +#define EB_ERR_NO_ALT 41 +#define EB_ERR_NO_CUR_SUB 42 +#define EB_ERR_NO_CUR_APPSUB 43 +#define EB_ERR_NO_CUR_FONT 44 + +#define EB_ERR_NO_CUR_BINARY 45 +#define EB_ERR_NO_SUCH_SUB 46 +#define EB_ERR_NO_SUCH_APPSUB 47 +#define EB_ERR_NO_SUCH_FONT 48 +#define EB_ERR_NO_SUCH_CHAR_BMP 49 + +#define EB_ERR_NO_SUCH_CHAR_TEXT 50 +#define EB_ERR_NO_SUCH_SEARCH 51 +#define EB_ERR_NO_SUCH_HOOK 52 +#define EB_ERR_NO_SUCH_BINARY 53 +#define EB_ERR_DIFF_CONTENT 54 + +#define EB_ERR_NO_PREV_SEARCH 55 +#define EB_ERR_NO_SUCH_MULTI_ID 56 +#define EB_ERR_NO_SUCH_ENTRY_ID 57 +#define EB_ERR_TOO_MANY_WORDS 58 +#define EB_ERR_NO_WORD 59 + +#define EB_ERR_NO_CANDIDATES 60 +#define EB_ERR_END_OF_CONTENT 61 +#define EB_ERR_NO_PREV_SEEK 62 +#define EB_ERR_EBNET_UNSUPPORTED 63 +#define EB_ERR_EBNET_FAIL_CONNECT 64 + +#define EB_ERR_EBNET_SERVER_BUSY 65 +#define EB_ERR_EBNET_NO_PERMISSION 66 +#define EB_ERR_UNBOUND_BOOKLIST 67 +#define EB_ERR_NO_SUCH_BOOK 68 + +#define EB_ERR_NO_SUCH_COLOR 69 + + +/* + * The number of error codes. + */ +#define EB_NUMBER_OF_ERRORS 70 + +/* + * The maximum length of an error message. + */ +#define EB_MAX_ERROR_MESSAGE_LENGTH 127 + +/* + * Function declarations. + */ +/* error.c */ +const char *eb_error_string(EB_Error_Code error_code); +const char *eb_error_message(EB_Error_Code error_code); + +#ifdef __cplusplus +} +#endif + +#endif /* not EB_ERROR_H */ diff --git a/lib/ebu/ebu/error.lo b/lib/ebu/ebu/error.lo new file mode 100644 index 0000000..0074fc0 --- /dev/null +++ b/lib/ebu/ebu/error.lo @@ -0,0 +1,12 @@ +# error.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/error.o' + +# Name of the non-PIC object +non_pic_object='error.o' + diff --git a/lib/ebu/ebu/exactword.c b/lib/ebu/ebu/exactword.c new file mode 100644 index 0000000..a87dde7 --- /dev/null +++ b/lib/ebu/ebu/exactword.c @@ -0,0 +1,189 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `book' supports `EXACTWORD SEARCH' + * or not. + */ +int +eb_have_exactword_search(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_exactword_search(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * Check for the index page of word search. + */ + if (book->subbook_current->word_alphabet.start_page == 0 + && book->subbook_current->word_asis.start_page == 0 + && book->subbook_current->word_kana.start_page == 0) + goto failed; + + LOG(("out: eb_have_exactword_search() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_exactword_search() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Exactword search. + */ +EB_Error_Code +eb_search_exactword(EB_Book *book, const char *input_word) +{ + EB_Error_Code error_code; + EB_Word_Code word_code; + EB_Search_Context *context; + + eb_lock(&book->lock); + LOG(("in: eb_search_exactword(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Initialize search context. + */ + eb_reset_search_contexts(book); + context = book->search_contexts; + context->code = EB_SEARCH_EXACTWORD; + + /* + * Make a fixed word and a canonicalized word to search from + * `input_word'. + */ + error_code = eb_set_word(book, input_word, context->word, + context->canonicalized_word, &word_code); + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Get a page number. + */ + switch (word_code) { + case EB_WORD_ALPHABET: + if (book->subbook_current->word_alphabet.start_page != 0) + context->page = book->subbook_current->word_alphabet.start_page; + else if (book->subbook_current->word_asis.start_page != 0) + context->page = book->subbook_current->word_asis.start_page; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_KANA: + if (book->subbook_current->word_kana.start_page != 0) + context->page = book->subbook_current->word_kana.start_page; + else if (book->subbook_current->word_asis.start_page != 0) + context->page = book->subbook_current->word_asis.start_page; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_OTHER: + if (book->subbook_current->word_asis.start_page != 0) + context->page = book->subbook_current->word_asis.start_page; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + default: + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Choose comparison functions. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1 + || book->character_code == EB_CHARCODE_UTF8) { + context->compare_pre = eb_exact_pre_match_word_latin; + context->compare_single = eb_exact_match_word_latin; + context->compare_group = eb_exact_match_word_latin; + } else if (context->page == book->subbook_current->word_kana.start_page) { + context->compare_pre = eb_exact_pre_match_word_jis; + context->compare_single = eb_exact_match_word_kana_single; + context->compare_group = eb_exact_match_word_kana_group; + } else { + context->compare_pre = eb_exact_pre_match_word_jis; + context->compare_single = eb_exact_match_word_jis; + context->compare_group = eb_exact_match_word_kana_group; + } + + /* + * Pre-search. + */ + error_code = eb_presearch_word(book, context); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_search_exactword() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_search_contexts(book); + LOG(("out: eb_search_exactword() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} diff --git a/lib/ebu/ebu/exactword.lo b/lib/ebu/ebu/exactword.lo new file mode 100644 index 0000000..e427454 --- /dev/null +++ b/lib/ebu/ebu/exactword.lo @@ -0,0 +1,12 @@ +# exactword.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/exactword.o' + +# Name of the non-PIC object +non_pic_object='exactword.o' + diff --git a/lib/ebu/ebu/filename.c b/lib/ebu/ebu/filename.c new file mode 100644 index 0000000..ee87969 --- /dev/null +++ b/lib/ebu/ebu/filename.c @@ -0,0 +1,783 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#ifdef ENABLE_EBNET +#include "ebnet.h" +#endif +#include "build-post.h" + +#if defined(DOS_FILE_PATH) && defined(HAVE_MBSTRING_H) +/* a path may contain double-byte chars in SJIS. */ +#include +#define strchr _mbschr +#define strrchr _mbsrchr +#endif + + +#ifndef DOS_FILE_PATH + +/* + * Canonicalize `path_name' (UNIX version). + * Convert a path name to an absolute path. + */ +EB_Error_Code +eb_canonicalize_path_name(char *path_name) +{ + char cwd[EB_MAX_PATH_LENGTH + 1]; + char temporary_path_name[EB_MAX_PATH_LENGTH + 1]; + char *last_slash; + + if (*path_name != '/') { + /* + * `path_name' is an relative path. Convert to an absolute + * path. + */ + if (getcwd(cwd, EB_MAX_PATH_LENGTH + 1) == NULL) + return EB_ERR_FAIL_GETCWD; + if (EB_MAX_PATH_LENGTH < strlen(cwd) + 1 + strlen(path_name)) + return EB_ERR_TOO_LONG_FILE_NAME; + + if (strcmp(path_name, ".") == 0) { + strcpy(path_name, cwd); + } else if (strncmp(path_name, "./", 2) == 0) { + sprintf(temporary_path_name, "%s/%s", cwd, path_name + 2); + strcpy(path_name, temporary_path_name); + } else { + sprintf(temporary_path_name, "%s/%s", cwd, path_name); + strcpy(path_name, temporary_path_name); + } + } + + /* + * Unless `path_name' is "/", eliminate `/' in the tail of the + * path name. + */ + last_slash = strrchr(path_name, '/'); + if (last_slash != path_name && *(last_slash + 1) == '\0') + *last_slash = '\0'; + + return EB_SUCCESS; +} + +#else /* DOS_FILE_PATH */ + +/* + * Canonicalize `path_name' (DOS version). + * Convert a path name to an absolute path with drive letter unless + * that is an UNC path. + * + * Original version by KSK Jan/30/1998. + * Current version by Motoyuki Kasahara. + */ +EB_Error_Code +eb_canonicalize_path_name(char *path_name) +{ + char cwd[EB_MAX_PATH_LENGTH + 1]; + char temporary_path_name[EB_MAX_PATH_LENGTH + 1]; + char *slash; + char *last_backslash; + + /* + * Replace `/' with `\\'. + */ + slash = path_name; + for (;;) { + slash = strchr(slash, '/'); + if (slash == NULL) + break; + *slash++ = '\\'; + } + + if (*path_name == '\\' && *(path_name + 1) == '\\') { + /* + * `path_name' is UNC path. Nothing to be done. + */ + } else if (ASCII_ISALPHA(*path_name) && *(path_name + 1) == ':') { + /* + * `path_name' has a drive letter. + * Nothing to be done if it is an absolute path. + */ + if (*(path_name + 2) != '\\') { + /* + * `path_name' is a relative path. + * Covert the path name to an absolute path. + */ + if (getdcwd(ASCII_TOUPPER(*path_name) - 'A' + 1, cwd, + EB_MAX_PATH_LENGTH + 1) == NULL) { + return EB_ERR_FAIL_GETCWD; + } + if (EB_MAX_PATH_LENGTH < strlen(cwd) + 1 + strlen(path_name + 2)) + return EB_ERR_TOO_LONG_FILE_NAME; + sprintf(temporary_path_name, "%s\\%s", cwd, path_name + 2); + strcpy(path_name, temporary_path_name); + } + } else if (*path_name == '\\') { + /* + * `path_name' has no drive letter and is an absolute path. + * Add a drive letter to the path name. + */ + if (getcwd(cwd, EB_MAX_PATH_LENGTH + 1) == NULL) + return EB_ERR_FAIL_GETCWD; + cwd[1] = '\0'; + if (EB_MAX_PATH_LENGTH < strlen(cwd) + 1 + strlen(path_name)) + return EB_ERR_TOO_LONG_FILE_NAME; + sprintf(temporary_path_name, "%s:%s", cwd, path_name); + strcpy(path_name, temporary_path_name); + + } else { + /* + * `path_name' has no drive letter and is a relative path. + * Add a drive letter and convert it to an absolute path. + */ + if (getcwd(cwd, EB_MAX_PATH_LENGTH + 1) == NULL) + return EB_ERR_FAIL_GETCWD; + + if (EB_MAX_PATH_LENGTH < strlen(cwd) + 1 + strlen(path_name)) + return EB_ERR_TOO_LONG_FILE_NAME; + sprintf(temporary_path_name, "%s\\%s", cwd, path_name); + strcpy(path_name, temporary_path_name); + } + + + /* + * Now `path_name' is `X:\...' or `\\...'. + * Unless it is "X:\", eliminate `\' in the tail of the path name. + */ + last_backslash = strrchr(path_name, '\\'); + if (ASCII_ISALPHA(*path_name)) { + if (last_backslash != path_name + 2 && *(last_backslash + 1) == '\0') + *last_backslash = '\0'; + } else { + if (last_backslash != path_name + 1 && *(last_backslash + 1) == '\0') + *last_backslash = '\0'; + } + + return EB_SUCCESS; +} + +#endif /* DOS_FILE_PATH */ + + +/* + * Canonicalize file name. + * - Suffix including dot is removed + * - Version including semicolon is removed. + * - Letters are converted to upper case. + * + * We minght fail to load a file after we fix the file name. + * If loading the file is tried again, we need the original file name, + * not fixed file name. Therefore, we get orignal file name from fixed + * file name using this function. + */ +void +eb_canonicalize_file_name(char *file_name) +{ + char *p; + + for (p = file_name; *p != '\0' && *p != '.' && *p != ';'; p++) + *p = ASCII_TOUPPER(*p); + *p = '\0'; +} + + +/* + * Rewrite `directory_name' to a real directory name in the `path' directory. + * + * If a directory matched to `directory_name' exists, then EB_SUCCESS is + * returned, and `directory_name' is rewritten to that name. Otherwise + * EB_ERR_BAD_DIR_NAME is returned. + */ +EB_Error_Code +eb_fix_directory_name(const char *path, char *directory_name) +{ + struct dirent *entry; + DIR *dir; + +#ifdef ENABLE_EBNET + if (is_ebnet_url(path)) + return ebnet_fix_directory_name(path, directory_name); +#endif + + /* + * Open the directory `path'. + */ + dir = opendir(path); + if (dir == NULL) + goto failed; + + for (;;) { + /* + * Read the directory entry. + */ + entry = readdir(dir); + if (entry == NULL) + goto failed; + + if (strcasecmp(entry->d_name, directory_name) == 0) + break; + } + + strcpy(directory_name, entry->d_name); + closedir(dir); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + if (dir != NULL) + closedir(dir); + return EB_ERR_BAD_DIR_NAME; +} + + +/* + * Rewrite `sub_directory_name' to a real sub directory name in the + * `path/directory_name' directory. + * + * If a directory matched to `sub_directory_name' exists, then EB_SUCCESS + * is returned, and `directory_name' is rewritten to that name. Otherwise + * EB_ERR_BAD_FILE_NAME is returned. + */ +EB_Error_Code +eb_fix_directory_name2(const char *path, const char *directory_name, + char *sub_directory_name) +{ + char sub_path_name[EB_MAX_PATH_LENGTH + 1]; + + eb_compose_path_name(path, directory_name, sub_path_name); + return eb_fix_directory_name(sub_path_name, sub_directory_name); +} + + +/* + * Fix suffix of `path_name'. + * + * If `suffix' is an empty string, delete suffix from `path_name'. + * Otherwise, add `suffix' to `path_name'. + */ +void +eb_fix_path_name_suffix(char *path_name, const char *suffix) +{ + char *base_name; + char *dot; + char *semicolon; + +#ifndef DOS_FILE_PATH + base_name = strrchr(path_name, '/'); +#else + if (is_ebnet_url(path_name)) + base_name = strrchr(path_name, '/'); + else + base_name = strrchr(path_name, '\\'); +#endif + if (base_name == NULL) + base_name = path_name; + else + base_name++; + + dot = strchr(base_name, '.'); + semicolon = strchr(base_name, ';'); + + if (*suffix == '\0') { + /* + * Remove `.xxx' from `fixed_file_name': + * foo.xxx --> foo + * foo.xxx;1 --> foo;1 + * foo. --> foo. (unchanged) + * foo.;1 --> foo.;1 (unchanged) + */ + if (dot != NULL && *(dot + 1) != '\0' && *(dot + 1) != ';') { + if (semicolon != NULL) + sprintf(dot, ";%c", *(semicolon + 1)); + else + *dot = '\0'; + } + } else { + /* + * Add `.xxx' to `fixed_file_name': + * foo --> foo.xxx + * foo. --> foo.xxx + * foo;1 --> foo.xxx;1 + * foo.;1 --> foo.xxx;1 + * foo.xxx --> foo.xxx (unchanged) + */ + if (dot != NULL) { + if (semicolon != NULL) + sprintf(dot, "%s;%c", suffix, *(semicolon + 1)); + else + strcpy(dot, suffix); + } else { + if (semicolon != NULL) + sprintf(semicolon, "%s;%c", suffix, *(semicolon + 1)); + else + strcat(base_name, suffix); + } + } +} + + +#define FOUND_NONE 0 +#define FOUND_EBZ 1 +#define FOUND_BASENAME 2 +#define FOUND_ORG 3 + +/* + * Rewrite `found_file_name' to a real file name in the `path_name' + * directory. + * + * If a file matched to `target_file_name' exists, then EB_SUCCESS + * is returned, and `found_file_name' is rewritten to that name. + * Otherwise EB_ERR_BAD_FILE_NAME is returned. + * + * Note that `target_file_name' must not contain `.' or excceed + * EB_MAX_DIRECTORY_NAME_LENGTH characters. + */ +EB_Error_Code +eb_find_file_name(const char *path_name, const char *target_file_name, + char *found_file_name) +{ + char ebz_target_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + char org_target_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + char candidate_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + DIR *dir; + struct dirent *entry; + size_t d_namlen; + int found = FOUND_NONE; + +#ifdef ENABLE_EBNET + if (is_ebnet_url(path_name)) { + return ebnet_find_file_name(path_name, target_file_name, + found_file_name); + } +#endif + + strcpy(ebz_target_file_name, target_file_name); + strcat(ebz_target_file_name, ".ebz"); + strcpy(org_target_file_name, target_file_name); + strcat(org_target_file_name, ".org"); + candidate_file_name[0] = '\0'; + + /* + * Open the directory `path_name'. + */ + dir = opendir(path_name); + if (dir == NULL) + goto failed; + + for (;;) { + /* + * Read the directory entry. + */ + entry = readdir(dir); + if (entry == NULL) + break; + + /* + * Compare the given file names and the current entry name. + * We consider they are matched when one of the followings + * is true: + * + * == + * +";1' == + * +"." == + * +".;1" == + * +".ebz" == + * +".ebz;1" == + * +".org" == + * +".org;1" == + * + * All the comparisons are done without case sensitivity. + * We support version number ";1" only. + */ + d_namlen = strlen(entry->d_name); + if (2 < d_namlen + && *(entry->d_name + d_namlen - 2) == ';' + && ASCII_ISDIGIT(*(entry->d_name + d_namlen - 1))) { + d_namlen -= 2; + } + if (1 < d_namlen && *(entry->d_name + d_namlen - 1) == '.') + d_namlen--; + + if (strcasecmp(entry->d_name, ebz_target_file_name) == 0 + && *(ebz_target_file_name + d_namlen) == '\0' + && found < FOUND_EBZ) { + strcpy(candidate_file_name, entry->d_name); + found = FOUND_EBZ; + } + if (strncasecmp(entry->d_name, target_file_name, d_namlen) == 0 + && *(target_file_name + d_namlen) == '\0' + && found < FOUND_BASENAME) { + strcpy(candidate_file_name, entry->d_name); + found = FOUND_BASENAME; + } + if (strcasecmp(entry->d_name, org_target_file_name) == 0 + && *(org_target_file_name + d_namlen) == '\0' + && found < FOUND_ORG) { + strcpy(candidate_file_name, entry->d_name); + found = FOUND_ORG; + break; + } + } + + if (found == FOUND_NONE) + goto failed; + + closedir(dir); + strcpy(found_file_name, candidate_file_name); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + if (dir != NULL) + closedir(dir); + return EB_ERR_BAD_FILE_NAME; +} + + +/* + * Rewrite `file_name' to a real file name in the directory + * `path_name/sub_directory_name'. + * + * If a file matched to `file_name' exists, then EB_SUCCESS is returned, + * and `file_name' is rewritten to that name. Otherwise EB_ERR_BAD_FILE_NAME + * is returned. + */ +EB_Error_Code +eb_find_file_name2(const char *path_name, const char *sub_directory_name, + const char *target_file_name, char *found_file_name) +{ + char sub_path_name[EB_MAX_PATH_LENGTH + 1]; + + eb_compose_path_name(path_name, sub_directory_name, sub_path_name); + return eb_find_file_name(sub_path_name, target_file_name, found_file_name); +} + + +EB_Error_Code +eb_find_file_name3(const char *path_name, const char *sub_directory_name, + const char *sub2_directory_name, const char *target_file_name, + char *found_file_name) +{ + char sub2_path_name[EB_MAX_PATH_LENGTH + 1]; + + eb_compose_path_name2(path_name, sub_directory_name, sub2_directory_name, + sub2_path_name); + return eb_find_file_name(sub2_path_name, target_file_name, + found_file_name); +} + + +/* + * Compose a file name + * `path_name/file_name' + * and copy it into `composed_path_name'. + */ +void +eb_compose_path_name(const char *path_name, const char *file_name, + char *composed_path_name) +{ +#ifndef DOS_FILE_PATH + if (strcmp(path_name, "/") == 0) + sprintf(composed_path_name, "%s%s", path_name, file_name); + else + sprintf(composed_path_name, "%s/%s", path_name, file_name); +#else + if (is_ebnet_url(path_name)) + sprintf(composed_path_name, "%s/%s", path_name, file_name); + else if (ASCII_ISALPHA(*path_name) && strcmp(path_name + 1, ":\\") == 0) + sprintf(composed_path_name, "%s%s", path_name, file_name); + else + sprintf(composed_path_name, "%s\\%s", path_name, file_name); +#endif +} + + +/* + * Compose a file name + * `path_name/sub_directory/file_name' + * and copy it into `composed_path_name'. + */ +void +eb_compose_path_name2(const char *path_name, const char *sub_directory_name, + const char *file_name, char *composed_path_name) +{ +#ifndef DOS_FILE_PATH + if (strcmp(path_name, "/") == 0) { + sprintf(composed_path_name, "%s%s/%s", + path_name, sub_directory_name, file_name); + } else { + sprintf(composed_path_name, "%s/%s/%s", + path_name, sub_directory_name, file_name); + } +#else + if (is_ebnet_url(path_name)) { + sprintf(composed_path_name, "%s/%s/%s", + path_name, sub_directory_name, file_name); + } else if (ASCII_ISALPHA(*path_name) + && strcmp(path_name + 1, ":\\") == 0) { + sprintf(composed_path_name, "%s%s\\%s", + path_name, sub_directory_name, file_name); + } else { + sprintf(composed_path_name, "%s\\%s\\%s", + path_name, sub_directory_name, file_name); + } +#endif +} + + +/* + * Compose a file name + * `path_name/sub_directory/sub2_directory/file_name' + * and copy it into `composed_path_name'. + */ +void +eb_compose_path_name3(const char *path_name, const char *sub_directory_name, + const char *sub2_directory_name, const char *file_name, + char *composed_path_name) +{ +#ifndef DOS_FILE_PATH + if (strcmp(path_name, "/") == 0) { + sprintf(composed_path_name, "%s%s/%s/%s", + path_name, sub_directory_name, sub2_directory_name, file_name); + } else { + sprintf(composed_path_name, "%s/%s/%s/%s", + path_name, sub_directory_name, sub2_directory_name, file_name); + } +#else + if (is_ebnet_url(path_name)) { + sprintf(composed_path_name, "%s/%s/%s/%s", + path_name, sub_directory_name, sub2_directory_name, file_name); + } else if (ASCII_ISALPHA(*path_name) + && strcmp(path_name + 1, ":\\") == 0) { + sprintf(composed_path_name, "%s%s\\%s\\%s", + path_name, sub_directory_name, sub2_directory_name, file_name); + } else { + sprintf(composed_path_name, "%s\\%s\\%s\\%s", + path_name, sub_directory_name, sub2_directory_name, file_name); + } +#endif +} + + +/* + * Compose movie file name from argv[], and copy the result to + * `composed_file_name'. Note that upper letters are converted to lower + * letters. + * + * If a file `composed_path_name' exists, then EB_SUCCESS is returned. + * Otherwise EB_ERR_BAD_FILE_NAME is returned. + */ +EB_Error_Code +eb_compose_movie_file_name(const unsigned int *argv, char *composed_file_name) +{ + unsigned short jis_characters[EB_MAX_DIRECTORY_NAME_LENGTH]; + const unsigned int *arg_p; + char *composed_p; + unsigned short c; + int i; + + /* + * Initialize `jis_characters[]'. + */ + for (i = 0, arg_p = argv; + i + 1 < EB_MAX_DIRECTORY_NAME_LENGTH; i += 2, arg_p++) { + jis_characters[i] = (*arg_p >> 16) & 0xffff; + jis_characters[i + 1] = (*arg_p) & 0xffff; + } + if (i < EB_MAX_DIRECTORY_NAME_LENGTH) + jis_characters[i] = (*arg_p >> 16) & 0xffff; + + /* + * Compose file name. + */ + for (i = 0, composed_p = composed_file_name; + i < EB_MAX_DIRECTORY_NAME_LENGTH; i++, composed_p++) { + c = jis_characters[i]; + if (c == 0x2121 || c == 0x0000) + break; + if ((0x2330 <= c && c <= 0x2339) || (0x2361 <= c && c <= 0x237a)) + *composed_p = c & 0xff; + else if (0x2341 <= c && c <= 0x235a) + *composed_p = (c | 0x20) & 0xff; + else + return EB_ERR_BAD_FILE_NAME; + } + + *composed_p = '\0'; + + return EB_SUCCESS; +} + + +/* + * This function is similar to eb_compose_movie_file_name(), but it + * returns full path of the movie file name. + */ +EB_Error_Code +eb_compose_movie_path_name(EB_Book *book, const unsigned int *argv, + char *composed_path_name) +{ + EB_Subbook *subbook; + EB_Error_Code error_code; + char composed_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; + + /* + * Lock the book. + */ + eb_lock(&book->lock); + LOG(("in: eb_compose_movie_path_name(book=%d, argv=%x)", + (int)book->code, argv)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + subbook = book->subbook_current; + + error_code = eb_compose_movie_file_name(argv, composed_file_name); + if (error_code != EB_SUCCESS) + goto failed; + + error_code = eb_find_file_name3(book->path, subbook->directory_name, + subbook->movie_directory_name, composed_file_name, composed_file_name); + if (error_code != EB_SUCCESS) + goto failed; + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->movie_directory_name, composed_file_name, composed_path_name); + + LOG(("out: eb_compse_movie_path_name() = %s", + eb_error_string(EB_SUCCESS))); + + eb_unlock(&book->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_compse_movie_path_name() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Decompose movie file name into argv[]. This is the reverse of + * eb_compose_movie_file_name(). Note that lower letters are converted + * to upper letters. + * + * EB_SUCCESS is returned upon success, EB_ERR_BAD_FILE_NAME otherwise. + */ +EB_Error_Code +eb_decompose_movie_file_name(unsigned int *argv, + const char *composed_file_name) +{ + unsigned short jis_characters[EB_MAX_DIRECTORY_NAME_LENGTH]; + unsigned int *arg_p; + const char *composed_p; + int i; + + /* + * Initialize `jis_characters[]'. + */ + for (i = 0; i < EB_MAX_DIRECTORY_NAME_LENGTH; i++) + jis_characters[i] = 0x0000; + + /* + * Set jis_characters[]. + */ + for (i = 0, composed_p = composed_file_name; + i < EB_MAX_DIRECTORY_NAME_LENGTH && *composed_p != '\0'; + i++, composed_p++) { + if ('0' <= *composed_p && *composed_p <= '9') + jis_characters[i] = 0x2330 + (*composed_p - '0'); + else if ('A' <= *composed_p && *composed_p <= 'Z') + jis_characters[i] = 0x2341 + (*composed_p - 'A'); + else if ('a' <= *composed_p && *composed_p <= 'z') + jis_characters[i] = 0x2341 + (*composed_p - 'a'); + else + return EB_ERR_BAD_FILE_NAME; + } + if (*composed_p != '\0') + return EB_ERR_BAD_FILE_NAME; + + /* + * Decompose file name. + */ + for (i = 0, arg_p = argv; + i + 1 < EB_MAX_DIRECTORY_NAME_LENGTH; i += 2, arg_p++) { + *arg_p = (jis_characters[i] << 16) | jis_characters[i + 1]; + } + if (i < EB_MAX_DIRECTORY_NAME_LENGTH) { + *arg_p++ = jis_characters[i] << 16; + } + *arg_p = '\0'; + + return EB_SUCCESS; +} + + +void +eb_path_name_zio_code(const char *path_name, Zio_Code default_zio_code, + Zio_Code *zio_code) +{ + const char *base_name; + const char *dot; + +#ifndef DOS_FILE_PATH + base_name = strrchr(path_name, '/'); +#else + if (is_ebnet_url(path_name)) + base_name = strrchr(path_name, '/'); + else + base_name = strrchr(path_name, '\\'); +#endif + if (base_name != NULL) + base_name++; + else + base_name = path_name; + + dot = strchr(base_name, '.'); + if (dot != NULL && strncasecmp(dot, ".ebz", 4) == 0) + *zio_code = ZIO_EBZIP1; + else if (dot != NULL && strncasecmp(dot, ".org", 4) == 0) + *zio_code = ZIO_PLAIN; + else + *zio_code = default_zio_code; +} diff --git a/lib/ebu/ebu/filename.lo b/lib/ebu/ebu/filename.lo new file mode 100644 index 0000000..dcfcf33 --- /dev/null +++ b/lib/ebu/ebu/filename.lo @@ -0,0 +1,12 @@ +# filename.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/filename.o' + +# Name of the non-PIC object +non_pic_object='filename.o' + diff --git a/lib/ebu/ebu/font.c b/lib/ebu/ebu/font.c new file mode 100644 index 0000000..6d28ca1 --- /dev/null +++ b/lib/ebu/ebu/font.c @@ -0,0 +1,551 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "font.h" +#include "build-post.h" + +/* + * Initialize all fonts in the current subbook. + */ +void +eb_initialize_fonts(EB_Book *book) +{ + EB_Subbook *subbook; + EB_Font *font; + int i; + + LOG(("in: eb_initialize_fonts(book=%d)", (int)book->code)); + + subbook = book->subbook_current; + + for (i = 0, font = subbook->narrow_fonts; i < EB_MAX_FONTS; i++, font++) { + font->font_code = EB_FONT_INVALID; + font->initialized = 0; + font->start = -1; + font->end = -1; + font->page = 0; + font->glyphs = NULL; + zio_initialize(&font->zio); + } + + for (i = 0, font = subbook->wide_fonts; i < EB_MAX_FONTS; i++, font++) { + font->font_code = EB_FONT_INVALID; + font->initialized = 0; + font->start = -1; + font->end = -1; + font->page = 0; + font->glyphs = NULL; + zio_initialize(&font->zio); + } + + LOG(("out: eb_initialize_fonts()")); +} + + +/* + * Load font files. + */ +void +eb_load_font_headers(EB_Book *book) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Font_Code i; + + LOG(("in: eb_load_fonts(book=%d)", (int)book->code)); + + subbook = book->subbook_current; + + /* + * Load narrow font headers. + */ + for (i = 0; i < EB_MAX_FONTS; i++) { + if (subbook->narrow_fonts[i].font_code == EB_FONT_INVALID + || subbook->narrow_fonts[i].initialized) + continue; + + error_code = eb_open_narrow_font_file(book, i); + if (error_code == EB_SUCCESS) + error_code = eb_load_narrow_font_header(book, i); + if (error_code != EB_SUCCESS) + subbook->narrow_fonts[i].font_code = EB_FONT_INVALID; + subbook->narrow_fonts[i].initialized = 1; + zio_close(&subbook->narrow_fonts[i].zio); + } + + /* + * Load wide font header. + */ + for (i = 0; i < EB_MAX_FONTS; i++) { + if (subbook->wide_fonts[i].font_code == EB_FONT_INVALID + || subbook->wide_fonts[i].initialized) + continue; + + error_code = eb_open_wide_font_file(book, i); + if (error_code == EB_SUCCESS) + error_code = eb_load_wide_font_header(book, i); + if (error_code != EB_SUCCESS) + subbook->wide_fonts[i].font_code = EB_FONT_INVALID; + subbook->wide_fonts[i].initialized = 1; + zio_close(&subbook->wide_fonts[i].zio); + } + + LOG(("out: eb_load_font_headers()")); +} + + +/* + * Finalize all fonts in the current subbook. + */ +void +eb_finalize_fonts(EB_Book *book) +{ + EB_Subbook *subbook; + EB_Font *font; + int i; + + LOG(("in: eb_finalize_fonts(book=%d)", (int)book->code)); + + subbook = book->subbook_current; + + for (i = 0, font = subbook->narrow_fonts; i < EB_MAX_FONTS; i++, font++) { + zio_finalize(&font->zio); + if (font->glyphs != NULL) { + free(font->glyphs); + font->glyphs = NULL; + } + } + + for (i = 0, font = subbook->wide_fonts; i < EB_MAX_FONTS; i++, font++) { + zio_finalize(&font->zio); + if (font->glyphs != NULL) { + free(font->glyphs); + font->glyphs = NULL; + } + } + + LOG(("out: eb_finalize_fonts()")); +} + + +/* + * Look up the height of the current font of the current subbook in + * `book'. + */ +EB_Error_Code +eb_font(EB_Book *book, EB_Font_Code *font_code) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_font(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Look up the height of the current font. + */ + if (book->subbook_current->narrow_current != NULL) + *font_code = book->subbook_current->narrow_current->font_code; + else if (book->subbook_current->wide_current != NULL) + *font_code = book->subbook_current->wide_current->font_code; + else { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + LOG(("out: eb_font(font_code=%d) = %s", (int)*font_code, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *font_code = EB_FONT_INVALID; + LOG(("out: eb_font() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Set the font with `font_code' as the current font of the current + * subbook in `book'. + */ +EB_Error_Code +eb_set_font(EB_Book *book, EB_Font_Code font_code) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + + eb_lock(&book->lock); + LOG(("in: eb_set_font(book=%d, font_code=%d)", (int)book->code, + (int)font_code)); + + /* + * Check `font_code'. + */ + if (font_code < 0 || EB_MAX_FONTS <= font_code) { + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + /* + * Current subbook must have been set. + */ + subbook = book->subbook_current; + if (subbook == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * If the current font is the font with `font_code', return immediately. + * Otherwise close the current font and continue. + */ + if (subbook->narrow_current != NULL) { + if (subbook->narrow_current->font_code == font_code) + goto succeeded; + if (book->disc_code == EB_DISC_EPWING) + zio_close(&subbook->narrow_current->zio); + subbook->narrow_current = NULL; + } + if (subbook->wide_current != NULL) { + if (subbook->wide_current->font_code == font_code) + goto succeeded; + if (book->disc_code == EB_DISC_EPWING) + zio_close(&subbook->wide_current->zio); + subbook->wide_current = NULL; + } + + /* + * Set the current font. + */ + if (subbook->narrow_fonts[font_code].font_code != EB_FONT_INVALID) + subbook->narrow_current = subbook->narrow_fonts + font_code; + if (subbook->wide_fonts[font_code].font_code != EB_FONT_INVALID) + subbook->wide_current = subbook->wide_fonts + font_code; + + if (subbook->narrow_current == NULL && subbook->wide_current == NULL) { + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + /* + * Initialize current font informtaion. + */ + if (subbook->narrow_current != NULL) { + error_code = eb_open_narrow_font_file(book, font_code); + if (error_code != EB_SUCCESS) + goto failed; + if (is_ebnet_url(book->path)) { + error_code = eb_load_narrow_font_glyphs(book, font_code); + if (error_code != EB_SUCCESS) + goto failed; + } + } + if (subbook->wide_current != NULL) { + error_code = eb_open_wide_font_file(book, font_code); + if (error_code != EB_SUCCESS) + goto failed; + if (is_ebnet_url(book->path)) { + error_code = eb_load_wide_font_glyphs(book, font_code); + if (error_code != EB_SUCCESS) + goto failed; + } + } + + + succeeded: + LOG(("out: eb_set_font() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_unset_font(book); + LOG(("out: eb_set_font() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Unset the font in the current subbook in `book'. + */ +void +eb_unset_font(EB_Book *book) +{ + EB_Subbook *subbook; + + eb_lock(&book->lock); + LOG(("in: eb_unset_font(book=%d)", (int)book->code)); + + subbook = book->subbook_current; + + if (subbook == NULL) + goto succeeded; + + /* + * Close font files. + */ + if (subbook->narrow_current != NULL) { + zio_close(&subbook->narrow_current->zio); + if (subbook->narrow_current->glyphs != NULL) { + free(subbook->narrow_current->glyphs); + subbook->narrow_current->glyphs = NULL; + } + } + if (subbook->wide_current != NULL) { + zio_close(&subbook->wide_current->zio); + if (subbook->wide_current->glyphs != NULL) { + free(subbook->wide_current->glyphs); + subbook->wide_current->glyphs = NULL; + } + } + + book->subbook_current->narrow_current = NULL; + book->subbook_current->wide_current = NULL; + + succeeded: + LOG(("out: eb_unset_font()")); + eb_unlock(&book->lock); +} + + +/* + * Make a list of fonts in the current subbook in `book'. + */ +EB_Error_Code +eb_font_list(EB_Book *book, EB_Font_Code *font_list, int *font_count) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Font_Code *list_p; + int i; + + eb_lock(&book->lock); + LOG(("in: eb_font_list(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + subbook = book->subbook_current; + if (subbook == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Scan the font table in the book. + */ + subbook = book->subbook_current; + list_p = font_list; + *font_count = 0; + for (i = 0; i < EB_MAX_FONTS; i++) { + if (subbook->narrow_fonts[i].font_code != EB_FONT_INVALID + || subbook->wide_fonts[i].font_code != EB_FONT_INVALID) { + *list_p++ = i; + *font_count += 1; + } + } + + LOG(("out: eb_font(font_count=%d) = %s", *font_count, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_font_list() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Test whether the current subbook in `book' has a font with + * `font_code' or not. + */ +int +eb_have_font(EB_Book *book, EB_Font_Code font_code) +{ + EB_Subbook *subbook; + + eb_lock(&book->lock); + LOG(("in: eb_have_font(book=%d, font_code=%d)", (int)book->code, + (int)font_code)); + + /* + * Check `font_code'. + */ + if (font_code < 0 || EB_MAX_FONTS <= font_code) + goto failed; + + /* + * Current subbook must have been set. + */ + subbook = book->subbook_current; + if (subbook == NULL) + goto failed; + + if (subbook->narrow_fonts[font_code].font_code == EB_FONT_INVALID + && subbook->wide_fonts[font_code].font_code == EB_FONT_INVALID) + goto failed; + + LOG(("out: eb_have_font() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_font() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Get height of the font `font_code' in the current subbook of `book'. + */ +EB_Error_Code +eb_font_height(EB_Book *book, int *height) +{ + EB_Error_Code error_code; + EB_Font_Code font_code; + + eb_lock(&book->lock); + LOG(("in: eb_font_height(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (book->subbook_current->narrow_current != NULL) + font_code = book->subbook_current->narrow_current->font_code; + else if (book->subbook_current->wide_current != NULL) + font_code = book->subbook_current->wide_current->font_code; + else { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + /* + * Calculate height. + */ + error_code = eb_font_height2(font_code, height); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_font_heigt(height=%d) = %s", *height, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *height = 0; + LOG(("out: eb_font_height() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get height of the font `font_code'. + */ +EB_Error_Code +eb_font_height2(EB_Font_Code font_code, int *height) +{ + EB_Error_Code error_code; + + LOG(("in: eb_font_height2(font_code=%d)", (int)font_code)); + + switch (font_code) { + case EB_FONT_16: + *height = EB_HEIGHT_FONT_16; + break; + case EB_FONT_24: + *height = EB_HEIGHT_FONT_24; + break; + case EB_FONT_30: + *height = EB_HEIGHT_FONT_30; + break; + case EB_FONT_48: + *height = EB_HEIGHT_FONT_48; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_font_heigt2(height=%d) = %s", *height, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *height = 0; + LOG(("out: eb_font_height2() = %s", eb_error_string(error_code))); + return error_code; +} + + diff --git a/lib/ebu/ebu/font.h b/lib/ebu/ebu/font.h new file mode 100644 index 0000000..640c3ec --- /dev/null +++ b/lib/ebu/ebu/font.h @@ -0,0 +1,200 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_FONT_H +#define EB_FONT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifdef EB_BUILD_LIBRARY +#include "defs.h" +#else +#include +#endif + +/* + * Font types. + */ +#define EB_FONT_16 0 +#define EB_FONT_24 1 +#define EB_FONT_30 2 +#define EB_FONT_48 3 +#define EB_FONT_INVALID -1 + +/* + * Font sizes. + */ +#define EB_SIZE_NARROW_FONT_16 16 +#define EB_SIZE_WIDE_FONT_16 32 +#define EB_SIZE_NARROW_FONT_24 48 +#define EB_SIZE_WIDE_FONT_24 72 +#define EB_SIZE_NARROW_FONT_30 60 +#define EB_SIZE_WIDE_FONT_30 120 +#define EB_SIZE_NARROW_FONT_48 144 +#define EB_SIZE_WIDE_FONT_48 288 + +/* + * Font width. + */ +#define EB_WIDTH_NARROW_FONT_16 8 +#define EB_WIDTH_WIDE_FONT_16 16 +#define EB_WIDTH_NARROW_FONT_24 16 +#define EB_WIDTH_WIDE_FONT_24 24 +#define EB_WIDTH_NARROW_FONT_30 16 +#define EB_WIDTH_WIDE_FONT_30 32 +#define EB_WIDTH_NARROW_FONT_48 24 +#define EB_WIDTH_WIDE_FONT_48 48 + +/* + * Font height. + */ +#define EB_HEIGHT_FONT_16 16 +#define EB_HEIGHT_FONT_24 24 +#define EB_HEIGHT_FONT_30 30 +#define EB_HEIGHT_FONT_48 48 + +/* + * Bitmap image sizes. + */ +#define EB_SIZE_NARROW_FONT_16_XBM 184 +#define EB_SIZE_WIDE_FONT_16_XBM 284 +#define EB_SIZE_NARROW_FONT_16_XPM 266 +#define EB_SIZE_WIDE_FONT_16_XPM 395 +#define EB_SIZE_NARROW_FONT_16_GIF 186 +#define EB_SIZE_WIDE_FONT_16_GIF 314 +#define EB_SIZE_NARROW_FONT_16_BMP 126 +#define EB_SIZE_WIDE_FONT_16_BMP 126 +#define EB_SIZE_NARROW_FONT_16_PNG 131 +#define EB_SIZE_WIDE_FONT_16_PNG 147 + +#define EB_SIZE_NARROW_FONT_24_XBM 383 +#define EB_SIZE_WIDE_FONT_24_XBM 533 +#define EB_SIZE_NARROW_FONT_24_XPM 555 +#define EB_SIZE_WIDE_FONT_24_XPM 747 +#define EB_SIZE_NARROW_FONT_24_GIF 450 +#define EB_SIZE_WIDE_FONT_24_GIF 642 +#define EB_SIZE_NARROW_FONT_24_BMP 158 +#define EB_SIZE_WIDE_FONT_24_BMP 158 +#define EB_SIZE_NARROW_FONT_24_PNG 171 +#define EB_SIZE_WIDE_FONT_24_PNG 195 + +#define EB_SIZE_NARROW_FONT_30_XBM 458 +#define EB_SIZE_WIDE_FONT_30_XBM 833 +#define EB_SIZE_NARROW_FONT_30_XPM 675 +#define EB_SIZE_WIDE_FONT_30_XPM 1155 +#define EB_SIZE_NARROW_FONT_30_GIF 552 +#define EB_SIZE_WIDE_FONT_30_GIF 1032 +#define EB_SIZE_NARROW_FONT_30_BMP 182 +#define EB_SIZE_WIDE_FONT_30_BMP 182 +#define EB_SIZE_NARROW_FONT_30_PNG 189 +#define EB_SIZE_WIDE_FONT_30_PNG 249 + +#define EB_SIZE_NARROW_FONT_48_XBM 983 +#define EB_SIZE_WIDE_FONT_48_XBM 1883 +#define EB_SIZE_NARROW_FONT_48_XPM 1419 +#define EB_SIZE_WIDE_FONT_48_XPM 2571 +#define EB_SIZE_NARROW_FONT_48_GIF 1242 +#define EB_SIZE_WIDE_FONT_48_GIF 2394 +#define EB_SIZE_NARROW_FONT_48_BMP 254 +#define EB_SIZE_WIDE_FONT_48_BMP 446 +#define EB_SIZE_NARROW_FONT_48_PNG 291 +#define EB_SIZE_WIDE_FONT_48_PNG 435 + +#define EB_SIZE_FONT_IMAGE EB_SIZE_WIDE_FONT_48_XPM + +/* + * Function declarations. + */ +/* bitmap.c */ +EB_Error_Code eb_narrow_font_xbm_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_narrow_font_xpm_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_narrow_font_gif_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_narrow_font_bmp_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_narrow_font_png_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_wide_font_xbm_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_wide_font_xpm_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_wide_font_gif_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_wide_font_bmp_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_wide_font_png_size(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_bitmap_to_xbm(const char *bitmap, int width, int height, + char *xbm, size_t *xbm_length); +EB_Error_Code eb_bitmap_to_xpm(const char *bitmap, int width, int height, + char *xpm, size_t *xpm_length); +EB_Error_Code eb_bitmap_to_gif(const char *bitmap, int width, int height, + char *gif, size_t *gif_length); +EB_Error_Code eb_bitmap_to_bmp(const char *bitmap, int width, int height, + char *bmp, size_t *bmp_length); +EB_Error_Code eb_bitmap_to_png(const char *bitmap, int width, int height, + char *png, size_t *png_length); + +/* font.c */ +EB_Error_Code eb_font(EB_Book *book, EB_Font_Code *font_code); +EB_Error_Code eb_set_font(EB_Book *book, EB_Font_Code font_code); +void eb_unset_font(EB_Book *book); +EB_Error_Code eb_font_list(EB_Book *book, EB_Font_Code *font_list, + int *font_count); +int eb_have_font(EB_Book *book, EB_Font_Code font_code); +EB_Error_Code eb_font_height(EB_Book *book, int *height); +EB_Error_Code eb_font_height2(EB_Font_Code font_code, int *height); + +/* narwfont.c */ +int eb_have_narrow_font(EB_Book *book); +EB_Error_Code eb_narrow_font_width(EB_Book *book, int *width); +EB_Error_Code eb_narrow_font_width2(EB_Font_Code font_code, int *width); +EB_Error_Code eb_narrow_font_size(EB_Book *book, size_t *size); +EB_Error_Code eb_narrow_font_size2(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_narrow_font_start(EB_Book *book, int *start); +EB_Error_Code eb_narrow_font_end(EB_Book *book, int *end); +EB_Error_Code eb_narrow_font_character_bitmap(EB_Book *book, int, char *); +EB_Error_Code eb_forward_narrow_font_character(EB_Book *book, int, int *); +EB_Error_Code eb_backward_narrow_font_character(EB_Book *book, int, int *); + +/* widefont.c */ +int eb_have_wide_font(EB_Book *book); +EB_Error_Code eb_wide_font_width(EB_Book *book, int *width); +EB_Error_Code eb_wide_font_width2(EB_Font_Code font_code, int *width); +EB_Error_Code eb_wide_font_size(EB_Book *book, size_t *size); +EB_Error_Code eb_wide_font_size2(EB_Font_Code font_code, size_t *size); +EB_Error_Code eb_wide_font_start(EB_Book *book, int *start); +EB_Error_Code eb_wide_font_end(EB_Book *book, int *end); +EB_Error_Code eb_wide_font_character_bitmap(EB_Book *book, + int character_number, char *bitmap); +EB_Error_Code eb_forward_wide_font_character(EB_Book *book, int n, + int *character_number); +EB_Error_Code eb_backward_wide_font_character(EB_Book *book, int n, + int *character_number); + +#ifdef __cplusplus +} +#endif + +#endif /* not EB_FONT_H */ diff --git a/lib/ebu/ebu/font.lo b/lib/ebu/ebu/font.lo new file mode 100644 index 0000000..2859e65 --- /dev/null +++ b/lib/ebu/ebu/font.lo @@ -0,0 +1,12 @@ +# font.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/font.o' + +# Name of the non-PIC object +non_pic_object='font.o' + diff --git a/lib/ebu/ebu/getaddrinfo.c b/lib/ebu/ebu/getaddrinfo.c new file mode 100644 index 0000000..a763e8d --- /dev/null +++ b/lib/ebu/ebu/getaddrinfo.c @@ -0,0 +1,556 @@ +/* + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * This program provides getaddrinfo() and getnameinfo() described in + * RFC2133, 2553 and 3493. These functions are mainly used for IPv6 + * application to resolve hostname or address. + * + * This program is designed to be working on traditional IPv4 systems + * which don't have those functions. Therefore, this implementation + * supports IPv4 only. + * + * This program is useful for application which should support both IPv6 + * and traditional IPv4 systems. Use genuine getaddrinfo() and getnameinfo() + * provided by system if the system supports IPv6. Otherwise, use this + * implementation. + * + * This program is intended to be used in combination with GNU Autoconf. + * + * This program also provides freeaddrinfo() and gai_strerror(). + * + * To use this program in your application, insert the following lines to + * C source files after including `sys/types.h', `sys/socket.h' and + * `netdb.h'. `getaddrinfo.h' defines `struct addrinfo' and AI_, NI_, + * EAI_ macros. + * + * #ifndef HAVE_GETADDRINFO + * #include "getaddrinfo.h" + * #endif + * + * Restriction: + * getaddrinfo() and getnameinfo() of this program are NOT thread + * safe, unless the cpp macro ENABLE_PTHREAD is defined. + */ + +/* + * Add the following code to your configure.ac (or configure.in). + * AC_TYPE_SOCKLEN_T + * AC_TYPE_IN_PORT_T + * AC_DECL_H_ERRNO + * + * AC_CHECK_FUNCS(getaddrinfo getnameinfo) + * if test "$ac_cv_func_getaddrinfo$ac_cv_func_getnameinfo" != yesyes ; then + * LIBOBJS="$LIBOBJS getaddrinfo.$ac_objext" + * fi + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#ifdef ENABLE_WINSOCK2 +#include +#include +#else +#include +#include +#include +#include +#endif +#include +#include + +#ifdef ENABLE_PTHREAD +#include +#endif + +#ifdef ENABLE_NLS +#include +#endif + +#if !defined(H_ERRNO_DECLARED) && !defined(ENABLE_WINSOCK2) +extern int h_errno; +#endif + +#include "getaddrinfo.h" + +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define gettext(string) (string) +#define _(string) (string) +#define N_(string) (string) +#endif + +/* + * Error messages for gai_strerror(). + */ +static char *eai_errlist[] = { + N_("Success"), + + /* EAI_ADDRFAMILY */ + N_("Address family for hostname not supported"), + + /* EAI_AGAIN */ + N_("Temporary failure in name resolution"), + + /* EAI_BADFLAGS */ + N_("Invalid value for ai_flags"), + + /* EAI_FAIL */ + N_("Non-recoverable failure in name resolution"), + + /* EAI_FAMILY */ + N_("ai_family not supported"), + + /* EAI_MEMORY */ + N_("Memory allocation failure"), + + /* EAI_NONAME */ + N_("hostname nor servname provided, or not known"), + + /* EAI_OVERFLOW */ + N_("An argument buffer overflowed"), + + /* EAI_SERVICE */ + N_("servname not supported for ai_socktype"), + + /* EAI_SOCKTYPE */ + N_("ai_socktype not supported"), + + /* EAI_SYSTEM */ + N_("System error returned in errno") +}; + +/* + * Default hints for getaddrinfo(). + */ +static struct addrinfo default_hints = { + 0, PF_UNSPEC, 0, 0, 0, NULL, NULL, NULL +}; + +/* + * Mutex. + */ +#ifdef ENABLE_PTHREAD +static pthread_mutex_t gai_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif + +/* + * Declaration of static functions. + */ +static int is_integer(const char *s); +static int is_address(const char *s); +static int itoa_length(int n); + + +/* + * gai_strerror(). + */ +const char * +gai_strerror(int ecode) +{ + if (ecode < 0 || ecode > EAI_SYSTEM) + return _("Unknown error"); + + return gettext(eai_errlist[ecode]); +} + +/* + * freeaddrinfo(). + */ +void +freeaddrinfo(struct addrinfo *ai) +{ + struct addrinfo *next_ai; + + while (ai != NULL) { + if (ai->ai_canonname != NULL) + free(ai->ai_canonname); + if (ai->ai_addr != NULL) + free(ai->ai_addr); + next_ai = ai->ai_next; + free(ai); + ai = next_ai; + } +} + +/* + * Return 1 if the string `s' represents an integer. + */ +static int +is_integer(const char *s) +{ + if (*s == '-' || *s == '+') + s++; + if (*s < '0' || '9' < *s) + return 0; + + s++; + while ('0' <= *s && *s <= '9') + s++; + + return (*s == '\0'); +} + +/* + * Return 1 if the string `s' represents an IPv4 address. + * Unlike inet_addr(), it doesn't permit malformed nortation such + * as "192.168". + */ +static int +is_address(const char *s) +{ + const static char delimiters[] = {'.', '.', '.', '\0'}; + int i, j; + int octet; + + for (i = 0; i < 4; i++) { + if (*s == '0' && *(s + 1) != delimiters[i]) + return 0; + for (j = 0, octet = 0; '0' <= *s && *s <= '9' && j < 3; s++, j++) + octet = octet * 10 + (*s - '0'); + if (j == 0 || octet > 255 || *s != delimiters[i]) + return 0; + s++; + } + + return 1; +} + +/* + * Calcurate length of the string `s', where `s' is set by + * sprintf(s, "%d", n). + */ +static int +itoa_length(int n) +{ + int result = 1; + + if (n < 0) { + n = -n; + result++; + } + + while (n >= 10) { + result++; + n /= 10; + } + + return result; +} + +/* + * getaddrinfo(). + */ +int +getaddrinfo(const char *nodename, const char *servname, + const struct addrinfo *hints, struct addrinfo **res) +{ + struct addrinfo *head_res = NULL; + struct addrinfo *tail_res = NULL; + struct addrinfo *new_res; + struct sockaddr_in *sa_in; + struct in_addr **addr_list; + struct in_addr *addr_list_buf[2]; + struct in_addr addr_buf; + struct in_addr **ap; + struct servent *servent; + struct hostent *hostent; + const char *canonname = NULL; + in_port_t port; + int saved_h_errno; + int result = 0; + +#ifdef ENABLE_PTHREAD + pthread_mutex_lock(&gai_mutex); +#endif + + saved_h_errno = h_errno; + + if (nodename == NULL && servname == NULL) { + result = EAI_NONAME; + goto end; + } + + if (hints != NULL) { + if (hints->ai_family != PF_INET && hints->ai_family != PF_UNSPEC) { + result = EAI_FAMILY; + goto end; + } + if (hints->ai_socktype != SOCK_DGRAM + && hints->ai_socktype != SOCK_STREAM + && hints->ai_socktype != 0) { + result = EAI_SOCKTYPE; + goto end; + } + } else { + hints = &default_hints; + } + + if (servname != NULL) { + if (is_integer(servname)) + port = htons(atoi(servname)); + else { + if (hints->ai_flags & AI_NUMERICSERV) { + result = EAI_NONAME; + goto end; + } + + if (hints->ai_socktype == SOCK_DGRAM) + servent = getservbyname(servname, "udp"); + else if (hints->ai_socktype == SOCK_STREAM) + servent = getservbyname(servname, "tcp"); + else if (hints->ai_socktype == 0) + servent = getservbyname(servname, "tcp"); + else { + result = EAI_SOCKTYPE; + goto end; + } + + if (servent == NULL) { + result = EAI_SERVICE; + goto end; + } + port = servent->s_port; + } + } else { + port = htons(0); + } + + if (nodename != NULL) { + if (is_address(nodename)) { + addr_buf.s_addr = inet_addr(nodename); + addr_list_buf[0] = &addr_buf; + addr_list_buf[1] = NULL; + addr_list = addr_list_buf; + + if (hints->ai_flags & AI_CANONNAME + && !(hints->ai_flags & AI_NUMERICHOST)) { + hostent = gethostbyaddr((char *)&addr_buf, + sizeof(struct in_addr), AF_INET); + if (hostent != NULL) + canonname = hostent->h_name; + else + canonname = nodename; + } + } else { + if (hints->ai_flags & AI_NUMERICHOST) { + result = EAI_NONAME; + goto end; + } + + hostent = gethostbyname(nodename); + if (hostent == NULL) { + switch (h_errno) { + case HOST_NOT_FOUND: + case NO_DATA: + result = EAI_NONAME; + goto end; + case TRY_AGAIN: + result = EAI_AGAIN; + goto end; + default: + result = EAI_FAIL; + goto end; + } + } + addr_list = (struct in_addr **)hostent->h_addr_list; + + if (hints->ai_flags & AI_CANONNAME) + canonname = hostent->h_name; + } + } else { + if (hints->ai_flags & AI_PASSIVE) + addr_buf.s_addr = htonl(INADDR_ANY); + else + addr_buf.s_addr = htonl(0x7F000001); + addr_list_buf[0] = &addr_buf; + addr_list_buf[1] = NULL; + addr_list = addr_list_buf; + } + + for (ap = addr_list; *ap != NULL; ap++) { + new_res = (struct addrinfo *)malloc(sizeof(struct addrinfo)); + if (new_res == NULL) { + if (head_res != NULL) + freeaddrinfo(head_res); + result = EAI_MEMORY; + goto end; + } + + new_res->ai_family = PF_INET; + new_res->ai_socktype = hints->ai_socktype; + new_res->ai_protocol = hints->ai_protocol; + new_res->ai_addr = NULL; + new_res->ai_addrlen = sizeof(struct sockaddr_in); + new_res->ai_canonname = NULL; + new_res->ai_next = NULL; + + new_res->ai_addr = (struct sockaddr *) + malloc(sizeof(struct sockaddr_in)); + if (new_res->ai_addr == NULL) { + free(new_res); + if (head_res != NULL) + freeaddrinfo(head_res); + result = EAI_MEMORY; + goto end; + } + + sa_in = (struct sockaddr_in *)new_res->ai_addr; + memset(sa_in, 0, sizeof(struct sockaddr_in)); + sa_in->sin_family = PF_INET; + sa_in->sin_port = port; + memcpy(&sa_in->sin_addr, *ap, sizeof(struct in_addr)); + + if (head_res == NULL) + head_res = new_res; + else + tail_res->ai_next = new_res; + tail_res = new_res; + } + + if (canonname != NULL && head_res != NULL) { + head_res->ai_canonname = (char *)malloc(strlen(canonname) + 1); + if (head_res->ai_canonname != NULL) + strcpy(head_res->ai_canonname, canonname); + } + + *res = head_res; + + end: +#ifndef ENABLE_WINSOCK2 + h_errno = saved_h_errno; +#else + WSASetLastError(saved_h_errno); +#endif +#ifdef ENABLE_PTHREAD + pthread_mutex_unlock(&gai_mutex); +#endif + return result; +} + +/* + * getnameinfo(). + */ +int +getnameinfo(const struct sockaddr *sa, socklen_t salen, char *node, + socklen_t nodelen, char *serv, socklen_t servlen, int flags) +{ + const struct sockaddr_in *sa_in = (const struct sockaddr_in *)sa; + struct hostent *hostent; + struct servent *servent; + char *ntoa_address; + int saved_h_errno; + int result = 0; + +#ifdef ENABLE_PTHREAD + pthread_mutex_lock(&gai_mutex); +#endif + + saved_h_errno = h_errno; + + if (sa_in->sin_family != PF_INET) { + result = EAI_FAMILY; + goto end; + } else if (node == NULL && serv == NULL) { + result = EAI_NONAME; + goto end; + } + + if (serv != NULL && servlen > 0) { + if (flags & NI_NUMERICSERV) + servent = NULL; + else if (flags & NI_DGRAM) + servent = getservbyport(sa_in->sin_port, "udp"); + else + servent = getservbyport(sa_in->sin_port, "tcp"); + + if (servent != NULL) { + if (servlen <= strlen(servent->s_name)) { + result = EAI_OVERFLOW; + goto end; + } + strcpy(serv, servent->s_name); + } else { + if (servlen <= itoa_length(ntohs(sa_in->sin_port))) { + result = EAI_OVERFLOW; + goto end; + } + sprintf(serv, "%d", ntohs(sa_in->sin_port)); + } + } + + if (node != NULL && nodelen > 0) { + if (flags & NI_NUMERICHOST) + hostent = NULL; + else { + hostent = gethostbyaddr((char *)&sa_in->sin_addr, + sizeof(struct in_addr), AF_INET); + } + if (hostent != NULL) { + if (nodelen <= strlen(hostent->h_name)) { + result = EAI_OVERFLOW; + goto end; + } + strcpy(node, hostent->h_name); + } else { + if (flags & NI_NAMEREQD) { + result = EAI_NONAME; + goto end; + } + ntoa_address = inet_ntoa(sa_in->sin_addr); + if (nodelen <= strlen(ntoa_address)) { + result = EAI_OVERFLOW; + goto end; + } + strcpy(node, ntoa_address); + } + + } + + end: +#ifndef ENABLE_WINSOCK2 + h_errno = saved_h_errno; +#else + WSASetLastError(saved_h_errno); +#endif +#ifdef ENABLE_PTHREAD + pthread_mutex_unlock(&gai_mutex); +#endif + return result; +} + diff --git a/lib/ebu/ebu/getaddrinfo.h b/lib/ebu/ebu/getaddrinfo.h new file mode 100644 index 0000000..2f9d6b3 --- /dev/null +++ b/lib/ebu/ebu/getaddrinfo.h @@ -0,0 +1,226 @@ +/* + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef GETADDRINFO_H +#define GETADDRINFO_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif + +#include "build-pre.h" + +/********************************************************************/ +/* + * Undefine all the macros. + * might defines some of them. + */ +#ifdef EAI_ADDRFAMILY +#undef EAI_ADDRFAMILY +#endif +#ifdef EAI_AGAIN +#undef EAI_AGAIN +#endif +#ifdef EAI_BADFLAGS +#undef EAI_BADFLAGS +#endif +#ifdef EAI_FAIL +#undef EAI_FAIL +#endif +#ifdef EAI_FAMILY +#undef EAI_FAMILY +#endif +#ifdef EAI_MEMORY +#undef EAI_MEMORY +#endif +#ifdef EAI_NONAME +#undef EAI_NONAME +#endif +#ifdef EAI_OVERFLOW +#undef EAI_OVERFLOW +#endif +#ifdef EAI_SERVICE +#undef EAI_SERVICE +#endif +#ifdef EAI_SOCKTYPE +#undef EAI_SOCKTYPE +#endif +#ifdef EAI_SYSTEM +#undef EAI_SYSTEM +#endif + +#ifdef AI_PASSIVE +#undef AI_PASSIVE +#endif +#ifdef AI_CANONNAME +#undef AI_CANONNAME +#endif +#ifdef AI_NUMERICHOST +#undef AI_NUMERICHOST +#endif +#ifdef AI_NUMERICSERV +#undef AI_NUMERICSERV +#endif +#ifdef AI_V4MAPPED +#undef AI_V4MAPPED +#endif +#ifdef AI_ALL +#undef AI_ALL +#endif +#ifdef AI_ADDRCONFIG +#undef AI_ADDRCONFIG +#endif +#ifdef AI_DEFAULT +#undef AI_DEFAULT +#endif + +#ifdef NI_NOFQDN +#undef NI_NOFQDN +#endif +#ifdef NI_NUMERICHOST +#undef NI_NUMERICHOST +#endif +#ifdef NI_NAMEREQD +#undef NI_NAMEREQD +#endif +#ifdef NI_NUMERICSERV +#undef NI_NUMERICSERV +#endif +#ifdef NI_NUMERICSCOPE +#undef NI_NUMERICSCOPE +#endif + +#ifdef NI_DGRAM +#undef NI_DGRAM +#endif +#ifdef NI_MAXHOST +#undef NI_MAXHOST +#endif +#ifdef NI_MAXSERV +#undef NI_MAXSERV +#endif + +/* + * Fake struct and function names. + * might declares all or some of them. + */ +#if defined(HAVE_GETADDRINFO) || defined(HAVE_GETNAMEINFO) +#define addrinfo ebnet_addrinfo +#define gai_strerror ebnet_gai_strerror +#define freeaddrinfo ebnet_freeaddrinfo +#define getaddrinfo ebnet_getaddrinfo +#define getnameinfo ebnet_getnameinfo +#endif + +/********************************************************************/ +/* + * Error codes. + */ +#define EAI_ADDRFAMILY 1 +#define EAI_AGAIN 2 +#define EAI_BADFLAGS 3 +#define EAI_FAIL 4 +#define EAI_FAMILY 5 +#define EAI_MEMORY 6 +#define EAI_NONAME 7 +#define EAI_OVERFLOW 8 +#define EAI_SERVICE 9 +#define EAI_SOCKTYPE 10 +#define EAI_SYSTEM 11 + +/* + * Flags for getaddrinfo(). + */ +#define AI_ADDRCONFIG 0x0001 +#define AI_ALL 0x0002 +#define AI_CANONNAME 0x0004 +#define AI_NUMERICHOST 0x0008 +#define AI_NUMERICSERV 0x0010 +#define AI_PASSIVE 0x0020 +#define AI_V4MAPPED 0x0040 +#define AI_DEFAULT (AI_V4MAPPED | AI_ADDRCONFIG) + +/* + * Flags for getnameinfo(). + */ +#define NI_DGRAM 0x0001 +#define NI_NAMEREQD 0x0002 +#define NI_NOFQDN 0x0004 +#define NI_NUMERICHOST 0x0008 +#define NI_NUMERICSCOPE 0x0010 +#define NI_NUMERICSERV 0x0020 + +/* + * Maximum length of FQDN and servie name for getnameinfo(). + */ +#define NI_MAXHOST 1025 +#define NI_MAXSERV 32 + +/* + * Address families and Protocol families. + */ +#ifndef AF_UNSPEC +#define AF_UNSPEC AF_INET +#endif +#ifndef PF_UNSPEC +#define PF_UNSPEC PF_INET +#endif + +/* + * struct addrinfo. + */ +struct addrinfo { + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + socklen_t ai_addrlen; + char *ai_canonname; + struct sockaddr *ai_addr; + struct addrinfo *ai_next; +}; + +/* + * Functions. + */ +const char *gai_strerror(int ecode); +void freeaddrinfo(struct addrinfo *ai); +int getaddrinfo(const char *nodename, const char *servname, + const struct addrinfo *hints, struct addrinfo **res); +int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *node, + socklen_t nodelen, char *serv, socklen_t servlen, int flags); + +#endif /* not GETADDRINFO_H */ diff --git a/lib/ebu/ebu/getaddrinfo.lo b/lib/ebu/ebu/getaddrinfo.lo new file mode 100644 index 0000000..97acad2 --- /dev/null +++ b/lib/ebu/ebu/getaddrinfo.lo @@ -0,0 +1,12 @@ +# getaddrinfo.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/getaddrinfo.o' + +# Name of the non-PIC object +non_pic_object='getaddrinfo.o' + diff --git a/lib/ebu/ebu/hook.c b/lib/ebu/ebu/hook.c new file mode 100644 index 0000000..9590e51 --- /dev/null +++ b/lib/ebu/ebu/hook.c @@ -0,0 +1,321 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "appendix.h" +#include "text.h" +#include "build-post.h" + +/* + * Default hookset. + */ +EB_Hookset eb_default_hookset; + + +/* + * Initialize default hookset. + */ +void +eb_initialize_default_hookset(void) +{ + LOG(("in: eb_initialize_default_hookset()")); + + eb_initialize_hookset(&eb_default_hookset); + + LOG(("out: eb_initialize_default_hookset()")); +} + + +/* + * Initialize a hookset. + */ +void +eb_initialize_hookset(EB_Hookset *hookset) +{ + int i; + + LOG(("in: eb_initialize_hookset()")); + + eb_initialize_lock(&hookset->lock); + + for (i = 0; i < EB_NUMBER_OF_HOOKS; i++) { + hookset->hooks[i].code = i; + hookset->hooks[i].function = NULL; + } + hookset->hooks[EB_HOOK_NARROW_JISX0208].function + = eb_hook_euc_to_ascii; + hookset->hooks[EB_HOOK_NARROW_FONT].function + = eb_hook_narrow_character_text; + hookset->hooks[EB_HOOK_WIDE_FONT].function + = eb_hook_wide_character_text; + hookset->hooks[EB_HOOK_NEWLINE].function + = eb_hook_newline; + + LOG(("out: eb_initialize_hookset()")); +} + + +/* + * Finalize a hookset. + */ +void +eb_finalize_hookset(EB_Hookset *hookset) +{ + int i; + + LOG(("in: eb_finalize_hookset()")); + + for (i = 0; i < EB_NUMBER_OF_HOOKS; i++) { + hookset->hooks[i].code = i; + hookset->hooks[i].function = NULL; + } + eb_finalize_lock(&hookset->lock); + + LOG(("out: eb_finalize_hookset()")); +} + + +/* + * Set a hook. + */ +EB_Error_Code +eb_set_hook(EB_Hookset *hookset, const EB_Hook *hook) +{ + EB_Error_Code error_code; + + eb_lock(&hookset->lock); + LOG(("in: eb_set_hook(hook=%d)", (int)hook->code)); + + /* + * Set a hook. + */ + if (hook->code < 0 || EB_NUMBER_OF_HOOKS <= hook->code) { + error_code = EB_ERR_NO_SUCH_HOOK; + goto failed; + } + hookset->hooks[hook->code].function = hook->function; + + LOG(("out: eb_set_hook() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&hookset->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_set_hook() = %s", eb_error_string(error_code))); + eb_unlock(&hookset->lock); + return error_code; +} + + +/* + * Set a list of hooks. + */ +EB_Error_Code +eb_set_hooks(EB_Hookset *hookset, const EB_Hook *hook) +{ + EB_Error_Code error_code; + const EB_Hook *h; + + eb_lock(&hookset->lock); + LOG(("in: eb_set_hooks(hooks=[below])")); + + if (eb_log_flag) { + for (h = hook; h->code != EB_HOOK_NULL; h++) + LOG((" hook=%d", h->code)); + } + + /* + * Set hooks. + */ + for (h = hook; h->code != EB_HOOK_NULL; h++) { + if (h->code < 0 || EB_NUMBER_OF_HOOKS <= h->code) { + error_code = EB_ERR_NO_SUCH_HOOK; + goto failed; + } + hookset->hooks[h->code].function = h->function; + } + + /* + * Unlock the hookset. + */ + LOG(("out: eb_set_hooks() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&hookset->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_set_hooks() = %s", eb_error_string(error_code))); + eb_unlock(&hookset->lock); + return error_code; +} + + +/* + * EUC JP to ASCII conversion table. + */ +#define EUC_TO_ASCII_TABLE_START 0xa0 +#define EUC_TO_ASCII_TABLE_END 0xff + +static const unsigned char euc_a1_to_ascii_table[] = { + 0x00, 0x20, 0x00, 0x00, 0x2c, 0x2e, 0x00, 0x3a, /* 0xa0 */ + 0x3b, 0x3f, 0x21, 0x00, 0x00, 0x00, 0x60, 0x00, /* 0xa8 */ + 0x5e, 0x7e, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x2f, /* 0xb8 */ + 0x5c, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x27, /* 0xc0 */ + 0x00, 0x22, 0x28, 0x29, 0x00, 0x00, 0x5b, 0x5d, /* 0xc8 */ + 0x7b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0 */ + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x2d, 0x00, 0x00, /* 0xd8 */ + 0x00, 0x3d, 0x00, 0x3c, 0x3e, 0x00, 0x00, 0x00, /* 0xe0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, /* 0xe8 */ + 0x24, 0x00, 0x00, 0x25, 0x23, 0x26, 0x2a, 0x40, /* 0xf0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8 */ +}; + +static const unsigned char euc_a3_to_ascii_table[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8 */ + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0xb0 */ + 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8 */ + 0x00, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0xc0 */ + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0xc8 */ + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0xd0 */ + 0x58, 0x59, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8 */ + 0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0xe0 */ + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0xe8 */ + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0xf0 */ + 0x78, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8 */ +}; + + +/* + * Hook which converts a character from EUC-JP to ASCII. + */ +EB_Error_Code +eb_hook_euc_to_ascii(EB_Book *book, EB_Appendix *appendix, void *container, + EB_Hook_Code hook_code, int argc, const unsigned int *argv) +{ + int in_code1, in_code2; + int out_code = 0; + + in_code1 = argv[0] >> 8; + in_code2 = argv[0] & 0xff; + + if (in_code2 < EUC_TO_ASCII_TABLE_START + || EUC_TO_ASCII_TABLE_END < in_code2) { + out_code = 0; + } else if (in_code1 == 0xa1) { + out_code = euc_a1_to_ascii_table[in_code2 - EUC_TO_ASCII_TABLE_START]; + } else if (in_code1 == 0xa3) { + out_code = euc_a3_to_ascii_table[in_code2 - EUC_TO_ASCII_TABLE_START]; + } + + if (out_code == 0) + eb_write_text_byte2(book, in_code1, in_code2); + else + eb_write_text_byte1(book, out_code); + + return EB_SUCCESS; +} + + +/* + * Hook for narrow local character. + */ +EB_Error_Code +eb_hook_narrow_character_text(EB_Book *book, EB_Appendix *appendix, + void *container, EB_Hook_Code hook_code, int argc, + const unsigned int *argv) +{ + char alt_text[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; + + if (appendix == NULL + || eb_narrow_alt_character_text(appendix, (int)argv[0], alt_text) + != EB_SUCCESS) { + eb_write_text_string(book, ""); + } else { + eb_write_text_string(book, alt_text); + } + + return EB_SUCCESS; +} + + +/* + * Hook for wide local character. + */ +EB_Error_Code +eb_hook_wide_character_text(EB_Book *book, EB_Appendix *appendix, + void *container, EB_Hook_Code hook_code, int argc, + const unsigned int *argv) +{ + char alt_text[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; + + if (appendix == NULL + || eb_wide_alt_character_text(appendix, (int)argv[0], alt_text) + != EB_SUCCESS) { + eb_write_text_string(book, ""); + } else { + eb_write_text_string(book, alt_text); + } + + return EB_SUCCESS; +} + + +/* + * Hook for a newline character. + */ +EB_Error_Code +eb_hook_newline(EB_Book *book, EB_Appendix *appendix, void *container, + EB_Hook_Code code, int argc, const unsigned int *argv) +{ + eb_write_text_byte1(book, '\n'); + + return EB_SUCCESS; +} + + +/* + * Hook which does nothing. + */ +EB_Error_Code +eb_hook_empty(EB_Book *book, EB_Appendix *appendix, void *container, + EB_Hook_Code hook_code, int argc, const unsigned int *argv) +{ + return EB_SUCCESS; +} + + diff --git a/lib/ebu/ebu/hook.lo b/lib/ebu/ebu/hook.lo new file mode 100644 index 0000000..ec6c19d --- /dev/null +++ b/lib/ebu/ebu/hook.lo @@ -0,0 +1,12 @@ +# hook.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/hook.o' + +# Name of the non-PIC object +non_pic_object='hook.o' + diff --git a/lib/ebu/ebu/jacode.c b/lib/ebu/ebu/jacode.c new file mode 100644 index 0000000..dfc974f --- /dev/null +++ b/lib/ebu/ebu/jacode.c @@ -0,0 +1,158 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" + +/* + * Convert a string from JIS X 0208 to EUC JP. + */ +void +eb_jisx0208_to_euc(char *out_string, const char *in_string) +{ + unsigned char *out_p = (unsigned char *)out_string; + const unsigned char *in_p = (unsigned char *)in_string; + + while (*in_p != '\0') + *out_p++ = ((*in_p++) | 0x80); + + *out_p = '\0'; +} + + +/* + * Convert a string from shift-JIS to EUC JP. + * (Shift-JIS is used only in the `LANGUAGE' file.) + */ +void +eb_sjis_to_euc(char *out_string, const char *in_string) +{ + unsigned char *out_p = (unsigned char *)out_string; + const unsigned char *in_p = (unsigned char *)in_string; + unsigned char c1, c2; + + for (;;) { + /* + * Break at '\0'. + */ + c1 = *in_p++; + if (c1 == '\0') + break; + + if (c1 <= 0x7f) { + /* + * JIS X 0201 Roman character. + */ + *out_p++ = c1; + } else if (0xa1 <= c1 && c1 <= 0xdf) { + /* + * JIS X 0201 Kana. + */ + *out_p++ = ' '; + } else { + /* + * JIS X 0208 character. + */ + c2 = *in_p++; + if (c2 == 0x00) + break; + + if (c2 < 0x9f) { + if (c1 < 0xdf) + c1 = ((c1 - 0x30) << 1) - 1; + else + c1 = ((c1 - 0x70) << 1) - 1; + + if (c2 < 0x7f) + c2 += 0x61; + else + c2 += 0x60; + } else { + if (c1 < 0xdf) + c1 = (c1 - 0x30) << 1; + else + c1 = (c1 - 0x70) << 1; + c2 += 0x02; + } + + *out_p++ = c1; + *out_p++ = c2; + } + } + + *out_p = '\0'; +} + + +/* + * Convert a string from EBCDIC code page 37 to ascii. + * non-ascii characters are converted into SP. + */ +static const char ebcdic_ascii_table[] = { + 0x00, 0x01, 0x02, 0x03, 0x20, 0x09, 0x20, 0x7f, + 0x20, 0x20, 0x20, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x20, 0x20, 0x08, 0x20, + 0x18, 0x19, 0x20, 0x20, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x17, 0x1b, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x05, 0x06, 0x07, + 0x20, 0x20, 0x16, 0x20, 0x20, 0x20, 0x20, 0x04, + 0x20, 0x20, 0x20, 0x20, 0x15, 0x15, 0x20, 0x1a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, + 0x26, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x20, + 0x2d, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, + 0x20, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, + 0x71, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, + 0x79, 0x7a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x5b, 0x5d, 0x20, 0x20, 0x20, 0x20, + 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, + 0x51, 0x52, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x5c, 0x20, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, + 0x59, 0x5a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +}; + +void +eb_ebcdic037_to_ascii(char *out_string, const char *in_string) +{ + while (*in_string != 0) { + *out_string = ebcdic_ascii_table[(unsigned char)*in_string]; + out_string++; + in_string++; + } +} diff --git a/lib/ebu/ebu/jacode.lo b/lib/ebu/ebu/jacode.lo new file mode 100644 index 0000000..b2d9f7f --- /dev/null +++ b/lib/ebu/ebu/jacode.lo @@ -0,0 +1,12 @@ +# jacode.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/jacode.o' + +# Name of the non-PIC object +non_pic_object='jacode.o' + diff --git a/lib/ebu/ebu/keyword.c b/lib/ebu/ebu/keyword.c new file mode 100644 index 0000000..71f48d9 --- /dev/null +++ b/lib/ebu/ebu/keyword.c @@ -0,0 +1,192 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `book' supports `KEYWORD SEARCH' + * or not. + */ +int +eb_have_keyword_search(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_keyword_search(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + if (book->subbook_current->keyword.start_page == 0) + goto failed; + + LOG(("out: eb_have_keyword_search() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_keyword_search() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Keyword search. + */ +EB_Error_Code +eb_search_keyword(EB_Book *book, const char * const input_words[]) +{ + EB_Error_Code error_code; + EB_Search_Context *context; + EB_Word_Code word_code; + int word_count; + int i; + + /* + * Lock the book. + */ + eb_lock(&book->lock); + LOG(("in: eb_search_keyword(book=%d, input_words=[below])", + (int)book->code)); + + if (eb_log_flag) { + for (i = 0; i < EB_MAX_KEYWORDS && input_words[i] != NULL; i++) { + LOG((" input_words[%d]=%s", i, + eb_quoted_string(input_words[i]))); + } + LOG((" input_words[%d]=NULL", i)); + } + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check whether the current subbook has keyword search. + */ + if (book->subbook_current->keyword.start_page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Attach a search context for each keyword, and pre-search the + * keywords. + */ + eb_reset_search_contexts(book); + word_count = 0; + + for (i = 0; i < EB_MAX_KEYWORDS; i++) { + if (input_words[i] == NULL) + break; + + /* + * Initialize search context. + */ + context = book->search_contexts + word_count; + context->code = EB_SEARCH_KEYWORD; + + /* + * Choose comparison functions. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1 + || book->character_code == EB_CHARCODE_UTF8) { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word; + } else { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word_kana_group; + } + context->page = book->subbook_current->keyword.start_page; + + /* + * Make a fixed word and a canonicalized word to search from + * `input_words[i]'. + */ + error_code = eb_set_keyword(book, input_words[i], context->word, + context->canonicalized_word, &word_code); + if (error_code == EB_ERR_EMPTY_WORD) + continue; + else if (error_code != EB_SUCCESS) + goto failed; + + /* + * Pre-search. + */ + error_code = eb_presearch_word(book, context); + if (error_code != EB_SUCCESS) + goto failed; + + word_count++; + } + if (word_count == 0) { + error_code = EB_ERR_NO_WORD; + goto failed; + } else if (EB_MAX_KEYWORDS <= i && input_words[i] != NULL) { + error_code = EB_ERR_TOO_MANY_WORDS; + goto failed; + } + + /* + * Set `EB_SEARCH_NONE' to the rest unused search context. + */ + for (i = word_count; i < EB_MAX_KEYWORDS; i++) + (book->search_contexts + i)->code = EB_SEARCH_NONE; + + LOG(("out: eb_search_keyword() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_search_contexts(book); + LOG(("out: eb_search_keyword() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/keyword.lo b/lib/ebu/ebu/keyword.lo new file mode 100644 index 0000000..98ea1dc --- /dev/null +++ b/lib/ebu/ebu/keyword.lo @@ -0,0 +1,12 @@ +# keyword.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/keyword.o' + +# Name of the non-PIC object +non_pic_object='keyword.o' + diff --git a/lib/ebu/ebu/libebu.la b/lib/ebu/ebu/libebu.la new file mode 100644 index 0000000..cae7c5d --- /dev/null +++ b/lib/ebu/ebu/libebu.la @@ -0,0 +1,41 @@ +# libebu.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libebu.so.17' + +# Names of this library. +library_names='libebu.so.17.0.0 libebu.so.17 libebu.so' + +# The name of the static archive. +old_library='libebu.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags=' -fopenmp' + +# Libraries that this one depends upon. +dependency_libs=' -lz -lnsl' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libebu. +current=17 +age=0 +revision=0 + +# Is this an already installed library? +installed=no + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/usr/local/lib' diff --git a/lib/ebu/ebu/linebuf.c b/lib/ebu/ebu/linebuf.c new file mode 100644 index 0000000..dd5865d --- /dev/null +++ b/lib/ebu/ebu/linebuf.c @@ -0,0 +1,422 @@ +/* + * copyright (c) 1997-2005 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#ifdef ENABLE_WINSOCK2 +#include +#include +#else +#include +#endif +#include +#include +#include +#include + +#include "linebuf.h" + +#ifdef USE_FAKELOG +#include "fakelog.h" +#endif + + +/* + * Initialize `linebuffer'. + */ +void +initialize_line_buffer(Line_Buffer *line_buffer) +{ + line_buffer->buffer[0] = '\0'; + line_buffer->file = -1; + line_buffer->cache_length = 0; + line_buffer->timeout = 0; +} + + +/* + * Finalize `line_buffer'. + */ +void +finalize_line_buffer(Line_Buffer *line_buffer) +{ + line_buffer->buffer[0] = '\0'; + line_buffer->file = -1; + line_buffer->cache_length = 0; + line_buffer->timeout = 0; +} + + +/* + * Set timeout seconds. + */ +void +set_line_buffer_timeout(Line_Buffer *line_buffer, int timeout) +{ + line_buffer->timeout = timeout; +} + + +/* + * Bind `file' to `line_buffer'. + */ +void +bind_file_to_line_buffer(Line_Buffer *line_buffer, int file) +{ + if (line_buffer->file < 0) + initialize_line_buffer(line_buffer); + line_buffer->file = file; +} + + +/* + * Return file descriptor bound to `line_buffer'. + * Return -1 when no file is bound. + */ +int +file_bound_to_line_buffer(Line_Buffer *line_buffer) +{ + return line_buffer->file; +} + + +/* + * Discard cache data in `line_buffer'. + */ +void +discard_cache_in_line_buffer(Line_Buffer *line_buffer) +{ + line_buffer->cache_length = 0; +} + + +/* + * Get the length of cache data in `line_buffer'. + */ +size_t +cache_length_in_line_buffer(Line_Buffer *line_buffer) +{ + return line_buffer->cache_length; +} + + +/* + * Read a line from the file bound to `line_buffer', and copy the read + * line to `line'. It reads at most `max_line_length' bytes. + * + * The function recognizes both "\n" and "\r\n" as end of line. + * "\n" or "\r\n" is not copied to `buffer', but "\0" is added, instead. + * + * The function returns the number of characters in the line, upon + * successful. It doesn't count "\n" or "\r\n" in the tail of the line, + * so that 0 is returned for an empty line, and the line length doesn't + * exceed one less than `max_line_length'. + * + * If EOF is received or an error occurs, -1 is returned. If the + * line is too long, `max_line_length' is returned. + */ +ssize_t +read_line_buffer(Line_Buffer *line_buffer, char *line, size_t max_line_length) +{ + char *line_p; + char *newline; + size_t search_length; + size_t additional_length; + size_t line_length; + fd_set fdset; + struct timeval timeval; + int select_result; + ssize_t read_result; + + /* + * Return -1 if no file is bound, or if `max_line_length' is 0. + */ + if (line_buffer->file < 0) + return -1; + if (max_line_length == 0) + return -1; + + /* + * Read a file until newline is appeared. + */ + line_length = 0; + line_p = line; + + for (;;) { + if (0 < line_buffer->cache_length) { + /* + * Find a newline in the cache data. + */ + if (max_line_length - line_length < line_buffer->cache_length) + search_length = max_line_length - line_length; + else + search_length = line_buffer->cache_length; + + newline = (char *)memchr(line_buffer->buffer, '\n', search_length); + + /* + * Append cache data in front of the newline to `line'. + */ + if (newline != NULL) + additional_length = newline - line_buffer->buffer + 1; + else + additional_length = search_length; + memcpy(line_p, line_buffer->buffer, additional_length); + line_p += additional_length; + line_length += additional_length; + line_buffer->cache_length -= additional_length; + + /* + * If cache data not copied to `line' are remained in the + * buffer, we move them to the beginning of the buffer. + */ + memmove(line_buffer->buffer, + line_buffer->buffer + additional_length, + line_buffer->cache_length); + + if (newline != NULL) + break; + } + + /* + * Check for the length of the current line. Return if the + * line is too long. + * + * Note that the following conditional expression can be + * substituted to (line_buffer->cache_length != 0), because + * remained cache data mean that the line is too long. + */ + if (max_line_length <= line_length) + return line_length; + + /* + * Call select(). + */ + errno = 0; + FD_ZERO(&fdset); + FD_SET(line_buffer->file, &fdset); + + if (line_buffer->timeout == 0) { + select_result = select(line_buffer->file + 1, &fdset, NULL, NULL, + NULL); + } else { + timeval.tv_sec = line_buffer->timeout; + timeval.tv_usec = 0; + select_result = select(line_buffer->file + 1, &fdset, NULL, NULL, + &timeval); + } + if (select_result < 0) { + if (errno == EINTR) + continue; + return -1; + } else if (select_result == 0) { + return -1; + } + + /* + * Read from a file. (No cache data are remaind.) + */ + errno = 0; + read_result = recv(line_buffer->file, line_buffer->buffer, + LINEBUF_BUFFER_SIZE, 0); + if (read_result < 0) { + if (errno == EINTR) + continue; + return -1; + } else if (read_result == 0) { + if (line_length == 0) { + return -1; + } + return line_length; + } + line_buffer->cache_length += read_result; + } + + /* + * Overwrite `\n' with `\0'. + */ + line_p--; + *line_p = '\0'; + line_length--; + + /* + * If the line is end with `\r\n', remove not only `\n' but `\r'. + */ + if (0 < line_length && *(line_p - 1) == '\r') { + line_p--; + *line_p = '\0'; + line_length--; + } + + return line_length; +} + + +/* + * Read just `stream_length' bytes from the file bound to `line_buffer', + * and copy the read bytes to `stream'. + * + * Unlike read_line_buffer(), it doesn't append `\0' to the read data, + * nor remove newline character in the read data. + * + * If it succeeds, the number of bytes actually read is returned. + * If EOF is received or an error occurs, -1 is returned. + */ +ssize_t +binary_read_line_buffer(Line_Buffer *line_buffer, char *stream, + size_t stream_length) +{ + char *stream_p; + size_t done_length; + fd_set fdset; + struct timeval timeval; + int select_result; + ssize_t read_result; + + /* + * Return -1 if no file is bound. + */ + if (line_buffer->file < 0) + return -1; + + /* + * Return 0 if `stream_length' is 0. + */ + if (stream_length == 0) + return 0; + + /* + * Test whether cache data are left in `line_buffer->buffer'. + * If they are, copy them to `stream'. + */ + stream_p = stream; + done_length = 0; + + if (0 < line_buffer->cache_length) { + if (stream_length <= line_buffer->cache_length) + done_length = stream_length; + else + done_length = line_buffer->cache_length; + + memcpy(stream_p, line_buffer->buffer, done_length); + stream_p += done_length; + line_buffer->cache_length -= done_length; + memmove(line_buffer->buffer, + line_buffer->buffer + done_length, + line_buffer->cache_length); + } + + /* + * Read the file until the number of read bytes (`done_length') is + * reached to `stream_length'. + */ + while (done_length < stream_length) { + /* + * Call select(). + */ + errno = 0; + FD_ZERO(&fdset); + FD_SET(line_buffer->file, &fdset); + + if (line_buffer->timeout == 0) { + select_result = select(line_buffer->file + 1, NULL, &fdset, NULL, + NULL); + } else { + timeval.tv_sec = line_buffer->timeout; + timeval.tv_usec = 0; + select_result = select(line_buffer->file + 1, NULL, &fdset, NULL, + &timeval); + } + if (select_result < 0) { + if (errno == EINTR) + continue; + return -1; + } else if (select_result == 0) { + return -1; + } + + /* + * Read from a file. + */ + errno = 0; + read_result = recv(line_buffer->file, stream_p, + stream_length - done_length, 0); + if (read_result < 0) { + if (errno == EINTR) + continue; + return read_result; + } else if (read_result == 0) { + if (done_length == 0) { + return -1; + } + return done_length; + } + stream_p += read_result; + done_length += read_result; + } + + return stream_length; +} + + +/* + * Skip too long line read by read_line_buffer(). + * + * If a line read by read_line_buffer() doesn't contain a newline + * character, the line is too long. This function reads and discards + * the rest of the line. + * + * If EOF is received or an error occurs, -1 is returned. + * Otherwise, 0 is returned. + */ +int +skip_line_buffer(Line_Buffer *line_buffer) +{ + ssize_t line_length; + + /* + * Read data until the end of the line is found. + */ + for (;;) { + line_length = read_line_buffer(line_buffer, line_buffer->buffer, + LINEBUF_BUFFER_SIZE); + if (line_length < 0) + return -1; + if (line_length < LINEBUF_BUFFER_SIZE) + break; + } + + return 0; +} + + diff --git a/lib/ebu/ebu/linebuf.h b/lib/ebu/ebu/linebuf.h new file mode 100644 index 0000000..82fdd4c --- /dev/null +++ b/lib/ebu/ebu/linebuf.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef LINEBUF_H +#define LINEBUF_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/* + * Buffer size of `Line_Buffer' struct. + */ +#define LINEBUF_BUFFER_SIZE 256 + +/* + * Line buffer manager. + */ +typedef struct { + int file; /* file descriptor */ + int timeout; /* idle timeout interval */ + size_t cache_length; /* length of cache data */ + char buffer[LINEBUF_BUFFER_SIZE]; /* buffer */ +} Line_Buffer; + + +/* + * Function declarations. + */ +void initialize_line_buffer(Line_Buffer *line_buffer); +void finalize_line_buffer(Line_Buffer *line_buffer); +void set_line_buffer_timeout(Line_Buffer *line_buffer, int timeout); +void bind_file_to_line_buffer(Line_Buffer *line_buffer, int file); +int file_bound_to_line_buffer(Line_Buffer *line_buffer); +void discard_cache_in_line_buffer(Line_Buffer *line_buffer); +size_t cache_length_in_line_buffer(Line_Buffer *line_buffer); +ssize_t read_line_buffer(Line_Buffer *line_buffer, char *line, + size_t max_line_length); +ssize_t binary_read_line_buffer(Line_Buffer *line_buffer, char *stream, + size_t stream_length); +int skip_line_buffer(Line_Buffer *line_buffer); + +#endif /* not LINEBUF_H */ diff --git a/lib/ebu/ebu/linebuf.lo b/lib/ebu/ebu/linebuf.lo new file mode 100644 index 0000000..ffcbe5a --- /dev/null +++ b/lib/ebu/ebu/linebuf.lo @@ -0,0 +1,12 @@ +# linebuf.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/linebuf.o' + +# Name of the non-PIC object +non_pic_object='linebuf.o' + diff --git a/lib/ebu/ebu/lock.c b/lib/ebu/ebu/lock.c new file mode 100644 index 0000000..faded3e --- /dev/null +++ b/lib/ebu/ebu/lock.c @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2000-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "defs.h" +#include "build-post.h" + +/* + * Examine whether built library supports Pthread. + */ +int +eb_pthread_enabled(void) +{ +#ifdef ENABLE_PTHREAD + return 1; +#else + return 0; +#endif +} + + +/* + * These functions are compiled only when ENABLE_PTHREAD is defined. + */ +#ifdef ENABLE_PTHREAD + +/* + * Ininialize a lock manager. + */ +void +eb_initialize_lock(EB_Lock *lock) +{ + pthread_mutex_init(&lock->lock_count_mutex, NULL); + pthread_mutex_init(&lock->entity_mutex, NULL); + lock->lock_count = 0; +} + + +/* + * Finalize a lock manager. + */ +void +eb_finalize_lock(EB_Lock *lock) +{ + /* Nothing to be done. */ +} + + +/* + * Lock an entity. + */ +void +eb_lock(EB_Lock *lock) +{ + pthread_mutex_lock(&lock->lock_count_mutex); + if (lock->lock_count == 0) + pthread_mutex_lock(&lock->entity_mutex); + lock->lock_count++; + pthread_mutex_unlock(&lock->lock_count_mutex); +} + + +/* + * Unlock an entity. + */ +void +eb_unlock(EB_Lock *lock) +{ + pthread_mutex_lock(&lock->lock_count_mutex); + if (0 < lock->lock_count) { + lock->lock_count--; + if (lock->lock_count == 0) + pthread_mutex_unlock(&lock->entity_mutex); + } + pthread_mutex_unlock(&lock->lock_count_mutex); +} + +#endif /* ENABLE_PTHREAD */ diff --git a/lib/ebu/ebu/lock.lo b/lib/ebu/ebu/lock.lo new file mode 100644 index 0000000..1f7cf27 --- /dev/null +++ b/lib/ebu/ebu/lock.lo @@ -0,0 +1,12 @@ +# lock.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/lock.o' + +# Name of the non-PIC object +non_pic_object='lock.o' + diff --git a/lib/ebu/ebu/log.c b/lib/ebu/ebu/log.c new file mode 100644 index 0000000..6c0d3ed --- /dev/null +++ b/lib/ebu/ebu/log.c @@ -0,0 +1,200 @@ +/* + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "build-post.h" + +#include + + +/* + * Mutex. + */ +#ifdef ENABLE_PTHREAD +static pthread_mutex_t log_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif + +/* + * Initialization flag. + */ +int eb_log_initialized = 0; + +/* + * Debug log flag. + */ +int eb_log_flag = 0; + +/* + * Pointer to log function. + */ +static void (*eb_log_function)(const char *message, va_list) = eb_log_stderr; + + +/* + * Initialize logging sub-system. + */ +void +eb_initialize_log(void) +{ + if (eb_log_initialized) + return; + + eb_log_flag = (getenv(EB_DEBUG_ENVIRONMENT_VARIABLE) != NULL); + eb_log_function = eb_log_stderr; + eb_log_initialized = 1; +} + +/* + * Set log function. + */ +void +eb_set_log_function(void (*function)(const char *message, va_list ap)) +{ + if (!eb_log_initialized) + eb_initialize_log(); + eb_log_function = function; +} + +/* + * Enable logging. + */ +void +eb_enable_log(void) +{ + if (!eb_log_initialized) + eb_initialize_log(); + eb_log_flag = 1; +} + +/* + * Disable logging. + */ +void +eb_disable_log(void) +{ + if (!eb_log_initialized) + eb_initialize_log(); + eb_log_flag = 0; +} + +/* + * Log a message. + */ +void +eb_log(const char *message, ...) +{ + va_list ap; + + va_start(ap, message); + + if (eb_log_flag && eb_log_function != NULL) + eb_log_function(message, ap); + + va_end(ap); +} + +/* + * Output a log message to standard error. + * This is the default log handler. + * + * Currently, this function doesn't work if the system lacks vprintf() + * and dopront(). + */ +void +eb_log_stderr(const char *message, va_list ap) +{ + pthread_mutex_lock(&log_mutex); + + fputs("[EB] ", stderr); + + vfprintf(stderr, message, ap); + fputc('\n', stderr); + fflush(stderr); + + pthread_mutex_unlock(&log_mutex); +} + +#define MAX_QUOTED_STREAM_LENGTH 100 + +/* + * Return Quoted printable string of `stream'. + */ +const char * +eb_quoted_stream(const char *stream, size_t stream_length) +{ + static char quoted_streams[EB_MAX_KEYWORDS][MAX_QUOTED_STREAM_LENGTH + 3]; + static int current_index = 0; + unsigned char *quoted_p; + const unsigned char *stream_p; + size_t quoted_length = 0; + int i; + + current_index = (current_index + 1) % EB_MAX_KEYWORDS; + quoted_p = (unsigned char *)quoted_streams[current_index]; + stream_p = (const unsigned char *)stream; + + if (stream == NULL) + return ""; + + for (i = 0; i < stream_length && *stream_p != '\0'; i++) { + if (0x20 <= *stream_p && *stream_p <= 0x7f && *stream_p != '=') { + if (MAX_QUOTED_STREAM_LENGTH < quoted_length + 1) { + *quoted_p++ = '.'; + *quoted_p++ = '.'; + break; + } + *quoted_p++ = *stream_p; + quoted_length++; + } else { + if (MAX_QUOTED_STREAM_LENGTH < quoted_length + 3) { + *quoted_p++ = '.'; + *quoted_p++ = '.'; + break; + } + *quoted_p++ = '='; + *quoted_p++ = "0123456789ABCDEF" [*stream_p / 0x10]; + *quoted_p++ = "0123456789ABCDEF" [*stream_p % 0x10]; + quoted_length += 3; + } + stream_p++; + } + + *quoted_p = '\0'; + return quoted_streams[current_index]; +} + + +/* + * Return Quoted printable string. + */ +const char * +eb_quoted_string(const char *string) +{ + return eb_quoted_stream(string, strlen(string)); +} diff --git a/lib/ebu/ebu/log.lo b/lib/ebu/ebu/log.lo new file mode 100644 index 0000000..3bd976b --- /dev/null +++ b/lib/ebu/ebu/log.lo @@ -0,0 +1,12 @@ +# log.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/log.o' + +# Name of the non-PIC object +non_pic_object='log.o' + diff --git a/lib/ebu/ebu/match.c b/lib/ebu/ebu/match.c new file mode 100644 index 0000000..c619083 --- /dev/null +++ b/lib/ebu/ebu/match.c @@ -0,0 +1,585 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "build-post.h" + +/* + * Compare `word' and `pattern'. + * `word' must be terminated by `\0' and `pattern' is assumed to be + * `length' characters long. + * + * When `word' is equal to `pattern', or equal to the beginning of + * `pattern', 0 is returned. A positive or negateive integer is + * returned according as `pattern' is greater or less than `word'. + */ +int +eb_match_word(const char *word, const char *pattern, size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + int result; + + LOG(("in: eb_match_word(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = *word_p; + break; + } + if (*word_p == '\0') { + result = 0; + break; + } + + if (*word_p != *pattern_p) { + result = *word_p - *pattern_p; + break; + } + + word_p++; + pattern_p++; + i++; + } + + LOG(("out: eb_match_word() = %d", result)); + return result; +} + + +/* + * Compare `word' and `pattern' for pre-search. + * `word' must be terminated by `\0' and `pattern' is assumed to be + * `length' characters long. + * + * When `word' is equal to `pattern', or equal to the beginning of + * `pattern', 0 is returned. A positive or negateive integer is + * returned according as `pattern' is greater or less than `word'. + */ +int +eb_pre_match_word(const char *word, const char *pattern, size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + int result; + + LOG(("in: eb_pre_match_word(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = 0; + break; + } + if (*word_p == '\0') { + result = 0; + break; + } + + if (*word_p != *pattern_p) { + result = *word_p - *pattern_p; + break; + } + + word_p++; + pattern_p++; + i++; + } + + LOG(("out: eb_pre_match_word() = %d", result)); + return result; +} + + +/* + * Compare `word' and `pattern' in JIS X 0208. + * `word' must be terminated by `\0' and `pattern' is assumed to be + * `length' characters long. + * + * When the word is equal to the pattern, 0 is returned. A positive or + * negateive integer is returned according as `pattern' is greater or + * less than `word'. + */ +int +eb_exact_match_word_jis(const char *word, const char *pattern, size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + int result; + + LOG(("in: eb_exact_match_word_jis(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = *word_p; + break; + } + if (*word_p == '\0') { + /* ignore spaces in the tail of the pattern */ + while (i < length && *pattern_p == '\0') { + pattern_p++; + i++; + } + result = (i - length); + break; + } + if (*word_p != *pattern_p) { + result = *word_p - *pattern_p; + break; + } + + word_p++; + pattern_p++; + i++; + } + + LOG(("out: eb_exact_match_word_jis() = %d", result)); + return result; +} + + +/* + * Compare `word' and `pattern' in JIS X 0208 for pre-search. + * `word' must be terminated by `\0' and `pattern' is assumed to be + * `length' characters long. + * + * When the word is equal to the pattern, 0 is returned. A positive or + * negateive integer is returned according as `pattern' is greater or + * less than `word'. + */ +int +eb_exact_pre_match_word_jis(const char *word, const char *pattern, + size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + int result; + + LOG(("in: eb_exact_pre_match_word_jis(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = 0; + break; + } + if (*word_p == '\0') { + /* ignore spaces in the tail of the pattern */ + while (i < length && *pattern_p == '\0') { + pattern_p++; + i++; + } + result = (i - length); + break; + } + if (*word_p != *pattern_p) { + result = *word_p - *pattern_p; + break; + } + + word_p++; + pattern_p++; + i++; + } + + LOG(("out: eb_exact_pre_match_word_jis() = %d", result)); + return result; +} + + +/* + * Compare `word' and `pattern' in Latin1. + * `word' must be terminated by `\0' and `pattern' is assumed to be + * `length' characters long. + * + * When the word is equal to the pattern, 0 is returned. A positive or + * negateive integer is returned according as `pattern' is greater or + * less than `word'. + */ +int +eb_exact_match_word_latin(const char *word, const char *pattern, size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + int result; + + LOG(("in: eb_exact_match_word_latin(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = *word_p; + break; + } + if (*word_p == '\0') { + /* ignore spaces in the tail of the pattern */ + while (i < length && (*pattern_p == ' ' || *pattern_p == '\0')) { + pattern_p++; + i++; + } + result = (i - length); + break; + } + if (*word_p != *pattern_p) { + result = *word_p - *pattern_p; + break; + } + + word_p++; + pattern_p++; + i++; + } + + LOG(("out: eb_exact_match_word_latin() = %d", result)); + return result; +} + + +/* + * Compare `word' and `pattern' in Latin1 for pre-search. + * `word' must be terminated by `\0' and `pattern' is assumed to be + * `length' characters long. + * + * When the word is equal to the pattern, 0 is returned. A positive or + * negateive integer is returned according as `pattern' is greater or + * less than `word'. + */ +int +eb_exact_pre_match_word_latin(const char *word, const char *pattern, + size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + int result; + + LOG(("in: eb_exact_pre_match_word_latin(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = 0; + break; + } + if (*word_p == '\0') { + /* ignore spaces in the tail of the pattern */ + while (i < length && (*pattern_p == ' ' || *pattern_p == '\0')) { + pattern_p++; + i++; + } + result = (i - length); + break; + } + if (*word_p != *pattern_p) { + result = *word_p - *pattern_p; + break; + } + + word_p++; + pattern_p++; + i++; + } + + LOG(("out: eb_exact_pre_match_word_latin() = %d", result)); + return result; +} + + +/* + * Compare `word' and `pattern' in JIS X 0208. + * + * This function is equivalent to eb_match_word() except that this function + * ignores differences of kana (katakana and hiragana). The order of + * hiragana and katakana characters is: + * + * If `word' and `pattern' differ, the function compares their characters + * with the following rule: + * + * HIRAGANA `KA' < HIRAGANA `GA' < KATAKANA `KA' < KATAKANA `GA' + */ +int +eb_match_word_kana_group(const char *word, const char *pattern, size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + unsigned char wc0, wc1, pc0, pc1; + int result; + + LOG(("in: eb_match_word_kana_group(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = *word_p; + break; + } + if (*word_p == '\0') { + result = 0; + break; + } + if (length <= i + 1 || *(word_p + 1) == '\0') { + result = *word_p - *pattern_p; + break; + } + + wc0 = *word_p; + wc1 = *(word_p + 1); + pc0 = *pattern_p; + pc1 = *(pattern_p + 1); + + if ((wc0 == 0x24 || wc0 == 0x25) && (pc0 == 0x24 || pc0 == 0x25)) { + if (wc1 != pc1) { + result = ((wc0 << 8) + wc1) - ((pc0 << 8) + pc1); + break; + } + } else { + if (wc0 != pc0 || wc1 != pc1) { + result = ((wc0 << 8) + wc1) - ((pc0 << 8) + pc1); + break; + } + } + word_p += 2; + pattern_p += 2; + i += 2; + } + + LOG(("out: eb_match_word_kana_group() = %d", result)); + return result; +} + + +/* + * Compare `word' and `pattern' in JIS X 0208. + * + * This function is equivalent to eb_match_word() except that this function + * ignores differences of kana (katakana and hiragana). The order of + * hiragana and katakana characters is: + * + * If `word' and `pattern' differ, the function compares their characters + * with the following rule: + * + * HIRAGANA `KA' == KATAKANA `KA' < HIRAGANA `GA' == KATAKANA `GA'. + */ +int +eb_match_word_kana_single(const char *word, const char *pattern, size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + unsigned char wc0, wc1, pc0, pc1; + int result; + + LOG(("in: eb_match_word_kana_single(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = *word_p; + break; + } + if (*word_p == '\0') { + result = 0; + break; + } + if (length <= i + 1 || *(word_p + 1) == '\0') { + result = *word_p - *pattern_p; + break; + } + + wc0 = *word_p; + wc1 = *(word_p + 1); + pc0 = *pattern_p; + pc1 = *(pattern_p + 1); + + if ((wc0 == 0x24 || wc0 == 0x25) && (pc0 == 0x24 || pc0 == 0x25)) { + if (wc1 != pc1) { + result = wc1 - pc1; + break; + } + } else { + if (wc0 != pc0 || wc1 != pc1) { + result = ((wc0 << 8) + wc1) - ((pc0 << 8) + pc1); + break; + } + } + word_p += 2; + pattern_p += 2; + i += 2; + } + + LOG(("out: eb_match_word_kana_single() = %d", result)); + return result; +} + + +/* + * Compare `word' and `pattern' in JIS X 0208. + * + * This function is equivalent to eb_exact_match_word_jis() except that + * this function ignores differences of kana (katakana and hiragana). + * + * If `word' and `pattern' differ, the function compares their characters + * with the following rule: + * + * HIRAGANA `KA' < HIRAGANA `GA' < KATAKANA `KA' < KATAKANA `GA' + */ +int +eb_exact_match_word_kana_group(const char *word, const char *pattern, + size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + unsigned char wc0, wc1, pc0, pc1; + int result; + + LOG(("in: eb_exact_match_word_kana_group(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = *word_p; + break; + } + if (*word_p == '\0') { + result = - *pattern_p; + break; + } + if (length <= i + 1 || *(word_p + 1) == '\0') { + result = *word_p - *pattern_p; + break; + } + wc0 = *word_p; + wc1 = *(word_p + 1); + pc0 = *pattern_p; + pc1 = *(pattern_p + 1); + + if ((wc0 == 0x24 || wc0 == 0x25) && (pc0 == 0x24 || pc0 == 0x25)) { + if (wc1 != pc1) { + result = ((wc0 << 8) + wc1) - ((pc0 << 8) + pc1); + break; + } + } else { + if (wc0 != pc0 || wc1 != pc1) { + result = ((wc0 << 8) + wc1) - ((pc0 << 8) + pc1); + break; + } + } + word_p += 2; + pattern_p += 2; + i += 2; + } + + LOG(("out: eb_exact_match_word_kana_group() = %d", result)); + return result; +} + + +/* + * Compare `word' and `pattern' in JIS X 0208. + * + * This function is equivalent to eb_exact_match_word_jis() except that + * this function ignores differences of kana (katakana and hiragana). + * The order of hiragana and katakana characters is: + * + * If `word' and `pattern' differ, the function compares their characters + * with the following rule: + * + * HIRAGANA `KA' == KATAKANA `KA' < HIRAGANA `GA' == KATAKANA `GA'. + */ +int +eb_exact_match_word_kana_single(const char *word, const char *pattern, + size_t length) +{ + int i = 0; + unsigned char *word_p = (unsigned char *)word; + unsigned char *pattern_p = (unsigned char *)pattern; + unsigned char wc0, wc1, pc0, pc1; + int result; + + LOG(("in: eb_exact_match_word_kana_single(word=%s, pattern=%s)", + eb_quoted_stream(word, EB_MAX_WORD_LENGTH), + eb_quoted_stream(pattern, length))); + + for (;;) { + if (length <= i) { + result = *word_p; + break; + } + if (*word_p == '\0') { + result = - *pattern_p; + break; + } + if (length <= i + 1 || *(word_p + 1) == '\0') { + result = *word_p - *pattern_p; + break; + } + wc0 = *word_p; + wc1 = *(word_p + 1); + pc0 = *pattern_p; + pc1 = *(pattern_p + 1); + + if ((wc0 == 0x24 || wc0 == 0x25) && (pc0 == 0x24 || pc0 == 0x25)) { + if (wc1 != pc1) { + result = wc1 - pc1; + break; + } + } else { + if (wc0 != pc0 || wc1 != pc1) { + result = ((wc0 << 8) + wc1) - ((pc0 << 8) + pc1); + break; + } + } + word_p += 2; + pattern_p += 2; + i += 2; + } + + LOG(("out: eb_exact_match_word_kana_single() = %d", result)); + return result; +} + + diff --git a/lib/ebu/ebu/match.lo b/lib/ebu/ebu/match.lo new file mode 100644 index 0000000..d973f42 --- /dev/null +++ b/lib/ebu/ebu/match.lo @@ -0,0 +1,12 @@ +# match.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/match.o' + +# Name of the non-PIC object +non_pic_object='match.o' + diff --git a/lib/ebu/ebu/menu.c b/lib/ebu/ebu/menu.c new file mode 100644 index 0000000..298be55 --- /dev/null +++ b/lib/ebu/ebu/menu.c @@ -0,0 +1,206 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `book' supports `MENU SEARCH' + * or not. + */ +int +eb_have_menu(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_menu(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * Check for the index page of menu search. + */ + if (book->subbook_current->menu.start_page == 0) + goto failed; + + LOG(("out: eb_have_menu() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_menu() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Menu. + */ +EB_Error_Code +eb_menu(EB_Book *book, EB_Position *position) +{ + EB_Error_Code error_code; + int page; + + eb_lock(&book->lock); + LOG(("in: eb_menu(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check for the page number of menu search. + */ + page = book->subbook_current->menu.start_page; + if (page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Copy the position to `position'. + */ + position->page = page; + position->offset = 0; + + LOG(("out: eb_menu(position={%d,%d}) = %s", + position->page, position->offset, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_menu() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + +/* + * Examine whether the current subbook in `book' supports `GRAPHIC MENU SEARCH' + * or not. + */ +int +eb_have_image_menu(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_image_menu(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * Check for the index page of graphic menu search. + */ + if (book->subbook_current->image_menu.start_page == 0) + goto failed; + + LOG(("out: eb_have_image_menu() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_image_menu() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Graphic Menu. + */ +EB_Error_Code +eb_image_menu(EB_Book *book, EB_Position *position) +{ + EB_Error_Code error_code; + int page; + + eb_lock(&book->lock); + LOG(("in: eb_image_menu(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check for the page number of graphic menu search. + */ + page = book->subbook_current->image_menu.start_page; + if (page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Copy the position to `position'. + */ + position->page = page; + position->offset = 0; + + LOG(("out: eb_image_menu(position={%d,%d}) = %s", + position->page, position->offset, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_image_menu() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} diff --git a/lib/ebu/ebu/menu.lo b/lib/ebu/ebu/menu.lo new file mode 100644 index 0000000..645478a --- /dev/null +++ b/lib/ebu/ebu/menu.lo @@ -0,0 +1,12 @@ +# menu.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/menu.o' + +# Name of the non-PIC object +non_pic_object='menu.o' + diff --git a/lib/ebu/ebu/multi.c b/lib/ebu/ebu/multi.c new file mode 100644 index 0000000..45ffc93 --- /dev/null +++ b/lib/ebu/ebu/multi.c @@ -0,0 +1,844 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Get information about the current subbook. + */ +EB_Error_Code +eb_load_multi_searches(EB_Book *book) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Multi_Search *multi; + EB_Search *entry; + char buffer[EB_SIZE_PAGE]; + char *buffer_p; + int index_count; + int index_id; + int i, j, k; + + LOG(("in: eb_load_multi_searches(book=%d)", book->code)); + + subbook = book->subbook_current; + + for (i = 0, multi = subbook->multis; i < subbook->multi_count; + i++, multi++) { + /* + * Read the index table page of the multi search. + */ + if (zio_lseek(&subbook->text_zio, + ((off_t) multi->search.start_page - 1) * EB_SIZE_PAGE, SEEK_SET) + < 0) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + if (zio_read(&subbook->text_zio, buffer, EB_SIZE_PAGE) + != EB_SIZE_PAGE) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + /* + * Get the number of entries in this multi search. + */ + multi->entry_count = eb_uint2(buffer); + if (EB_MAX_MULTI_SEARCHES <= multi->entry_count) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + buffer_p = buffer + 16; + for (j = 0, entry = multi->entries; + j < multi->entry_count; j++, entry++) { + /* + * Get the number of indexes in this entry, and title + * of this entry. + */ + index_count = eb_uint1(buffer_p); + strncpy(entry->label, buffer_p + 2, EB_MAX_MULTI_LABEL_LENGTH); + entry->label[EB_MAX_MULTI_LABEL_LENGTH] = '\0'; + eb_jisx0208_to_euc(entry->label, entry->label); + buffer_p += EB_MAX_MULTI_LABEL_LENGTH + 2; + + /* + * Initialize index page information of the entry. + */ + for (k = 0; k < index_count; k++) { + /* + * Get the index page information of the entry. + */ + index_id = eb_uint1(buffer_p); + switch (index_id) { + case 0x71: + case 0x91: + case 0xa1: + if (entry->start_page != 0 && entry->index_id != 0x71) + break; + entry->start_page = eb_uint4(buffer_p + 2); + entry->end_page = entry->start_page + + eb_uint4(buffer_p + 6) - 1; + entry->index_id = index_id; + entry->katakana = EB_INDEX_STYLE_ASIS; + entry->lower = EB_INDEX_STYLE_CONVERT; + entry->mark = EB_INDEX_STYLE_ASIS; + entry->long_vowel = EB_INDEX_STYLE_ASIS; + entry->double_consonant = EB_INDEX_STYLE_ASIS; + entry->contracted_sound = EB_INDEX_STYLE_ASIS; + entry->voiced_consonant = EB_INDEX_STYLE_ASIS; + entry->small_vowel = EB_INDEX_STYLE_ASIS; + entry->p_sound = EB_INDEX_STYLE_ASIS; + entry->space = EB_INDEX_STYLE_ASIS; + break; + case 0x01: + entry->candidates_page = eb_uint4(buffer_p + 2); + break; + } + buffer_p += 16; + } + } + } + + LOG(("out: eb_load_multi_searches() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_load_multi_searches() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Default multi search titles (written in JIS X 0208). + */ +static const char *default_multi_titles_jisx0208[] = { + "J#9g8!:w#1", /* Multi search 1. */ + "J#9g8!:w#2", /* Multi search 2. */ + "J#9g8!:w#3", /* Multi search 3. */ + "J#9g8!:w#4", /* Multi search 4. */ + "J#9g8!:w#5", /* Multi search 5. */ + "J#9g8!:w#6", /* Multi search 6. */ + "J#9g8!:w#7", /* Multi search 7. */ + "J#9g8!:w#8", /* Multi search 8. */ + "J#9g8!:w#9", /* Multi search 9. */ + "J#9g8!:w#1#0", /* Multi search 10. */ +}; + +/* + * Default multi search titles (written in ASCII, subset of ISO 8859-1). + */ +static const char *default_multi_titles_latin[] = { + "Multi search 1", + "Multi search 2", + "Multi search 3", + "Multi search 4", + "Multi search 5", + "Multi search 6", + "Multi search 7", + "Multi search 8", + "Multi search 9", + "Multi search 10", +}; + +/* + * Load multi search titles. + */ +EB_Error_Code +eb_load_multi_titles(EB_Book *book) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + char buffer[EB_SIZE_PAGE]; + int title_count; + char *title; + size_t offset; + int i; + + LOG(("in: eb_load_multi_searches(book=%d)", book->code)); + + subbook = book->subbook_current; + + /* + * Set default titles. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1 + || book->character_code == EB_CHARCODE_UTF8) { + for (i = 0; i < subbook->multi_count; i++) { + title = subbook->multis[i].title; + strcpy(title, default_multi_titles_latin[i]); + } + } else { + for (i = 0; i < subbook->multi_count; i++) { + title = subbook->multis[i].title; + strcpy(title, default_multi_titles_jisx0208[i]); + eb_jisx0208_to_euc(title, title); + } + } + + if (book->disc_code != EB_DISC_EPWING || subbook->search_title_page == 0) + goto succeeded; + + /* + * Read the page of the multi search. + */ + if (zio_lseek(&subbook->text_zio, + ((off_t) subbook->search_title_page - 1) * EB_SIZE_PAGE, SEEK_SET) + < 0) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + if (zio_read(&subbook->text_zio, buffer, EB_SIZE_PAGE) != EB_SIZE_PAGE) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + title_count = eb_uint2(buffer); + if (EB_MAX_SEARCH_TITLES < title_count) + title_count = EB_MAX_SEARCH_TITLES; + + /* + * We need titles for multi searches only. + * titles[ 0]: title for word and endword searches. + * titles[ 1]: title for keyword search. + * titles[ 2]: common title for all multi searches. + * (we don't need this) + * titles[ 3]: title for multi search 1. + * : + * titles[12]: title for multi search 10. + * titles[13]: title for menu search. + * + * The offset of titles[3] is: + * the number of entries(2bytes) + * + reserved 1 (68bytes) + * + title for word and endword searches (70bytes) + * + title for keyword search (70bytes) + * + common title for all multi searches (70bytes) + * + reserved 2 (70bytes) + * = 2 + 68 + 70 + 70 + 70 + 70 = 350 + */ + for (i = 4, offset = 350; i < EB_MAX_SEARCH_TITLES; i++, offset += 70) { + if (subbook->multi_count <= i - 4) + break; + if (eb_uint2(buffer + offset) != 0x02) + continue; + + /* + * Each titles[] consists of + * parameter (2bytes) + * short title (16bytes) + * long title (32bytes) + * We get long title rather than short one. + */ + title = subbook->multis[i - 4].title; + strncpy(title, buffer + offset + 2 + 16, EB_MAX_MULTI_TITLE_LENGTH); + title[EB_MAX_MULTI_TITLE_LENGTH] = '\0'; + eb_jisx0208_to_euc(title, title); + } + +succeeded: + LOG(("out: eb_load_multi_titles() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_load_multi_titles() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Examine whether the current subbook in `book' supports `MULTI SEARCH' + * or not. + */ +int +eb_have_multi_search(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_multi_search(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + if (book->subbook_current->multi_count == 0) + goto failed; + + LOG(("out: eb_have_multi_search() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_multi_search() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Return a title of the multi search `multi_id'. + */ +EB_Error_Code +eb_multi_title(EB_Book *book, EB_Multi_Search_Code multi_id, char *title) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + + eb_lock(&book->lock); + LOG(("in: eb_multi_title(book=%d, multi_id=%d)", + (int)book->code, (int)multi_id)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Current subbook must have been set. + */ + subbook = book->subbook_current; + if (subbook == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * `multi_id' must be a valid code. + */ + if (multi_id < 0 || subbook->multi_count <= multi_id) { + error_code = EB_ERR_NO_SUCH_MULTI_ID; + goto failed; + } + + strcpy(title, subbook->multis[multi_id].title); + + LOG(("out: eb_multi_title(title=%s) = %s", title, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *title = '\0'; + LOG(("out: eb_multi_title() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return a list of multi search ids in `book'. + */ +EB_Error_Code +eb_multi_search_list(EB_Book *book, EB_Multi_Search_Code *search_list, + int *search_count) +{ + EB_Error_Code error_code; + EB_Subbook_Code *list_p; + int i; + + eb_lock(&book->lock); + LOG(("in: eb_multi_search_list(book=%d)", (int)book->code)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + *search_count = book->subbook_current->multi_count; + for (i = 0, list_p = search_list; i < *search_count; i++, list_p++) + *list_p = i; + + LOG(("out: eb_multi_search_list(search_count=%d) = %s", *search_count, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *search_count = 0; + LOG(("out: eb_multi_search_list() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return the number of entries that the multi search `multi_id' in `book'. + */ +EB_Error_Code +eb_multi_entry_count(EB_Book *book, EB_Multi_Search_Code multi_id, + int *entry_count) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_multi_entry_count(book=%d, multi_id=%d)", (int)book->code, + (int)multi_id)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * `multi_id' must be a valid code. + */ + if (multi_id < 0 || book->subbook_current->multi_count <= multi_id) { + error_code = EB_ERR_NO_SUCH_MULTI_ID; + goto failed; + } + + *entry_count = book->subbook_current->multis[multi_id].entry_count; + + LOG(("out: eb_multi_entry_count(entry_count=%d) = %s", (int)*entry_count, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *entry_count = 0; + LOG(("out: eb_multi_entry_count() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return a list of entries that the multi search `multi_id' in `book' has. + * (Legacy function) + */ +EB_Error_Code +eb_multi_entry_list(EB_Book *book, EB_Multi_Search_Code multi_id, + int *entry_list, int *entry_count) +{ + EB_Error_Code error_code; + EB_Subbook_Code *list_p; + int i; + + error_code = eb_multi_entry_count(book, multi_id, entry_count); + if (error_code != EB_SUCCESS) + return error_code; + + for (i = 0, list_p = entry_list; i < *entry_count; i++, list_p++) + *list_p = i; + + return EB_SUCCESS; +} + + +/* + * Return a lable of the entry `entry_index' in the multi search `multi_id'. + */ +EB_Error_Code +eb_multi_entry_label(EB_Book *book, EB_Multi_Search_Code multi_id, + int entry_index, char *label) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + + eb_lock(&book->lock); + LOG(("in: eb_multi_entry_label(book=%d, multi_id=%d, entry_index=%d)", + (int)book->code, (int)multi_id, entry_index)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Current subbook must have been set. + */ + subbook = book->subbook_current; + if (subbook == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * `multi_id' must be a valid code. + */ + if (multi_id < 0 || subbook->multi_count <= multi_id) { + error_code = EB_ERR_NO_SUCH_MULTI_ID; + goto failed; + } + + /* + * `entry_index' must be a valid code. + */ + if (entry_index < 0 + || subbook->multis[multi_id].entry_count <= entry_index) { + error_code = EB_ERR_NO_SUCH_ENTRY_ID; + goto failed; + } + + strcpy(label, subbook->multis[multi_id].entries[entry_index].label); + + LOG(("out: eb_multi_entry_label(label=%s) = %s", label, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *label = '\0'; + LOG(("out: eb_multi_entry_label() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Whether the entry `entry_index' in the multi search `multi_id' has + * candidates or not. + */ +int +eb_multi_entry_have_candidates(EB_Book *book, EB_Multi_Search_Code multi_id, + int entry_index) +{ + EB_Multi_Search *multi; + + eb_lock(&book->lock); + LOG(("in: eb_multi_entry_have_candidates(book=%d, multi_id=%d, \ +entry_index=%d)", + (int)book->code, (int)multi_id, entry_index)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) + goto failed; + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * `multi_id' must be a valid code. + */ + if (multi_id < 0 || book->subbook_current->multi_count <= multi_id) + goto failed; + + /* + * `entry_index' must be a valid code. + */ + multi = book->subbook_current->multis + multi_id; + if (entry_index < 0 || multi->entry_count <= entry_index) + goto failed; + + if (multi->entries[entry_index].candidates_page == 0) + goto failed; + + LOG(("out: eb_multi_entry_have_candidates() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_multi_entry_have_candidates() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Return a position of candidates for the entry `entry_index' in the multi + * search `multi_id'. + */ +EB_Error_Code +eb_multi_entry_candidates(EB_Book *book, EB_Multi_Search_Code multi_id, + int entry_index, EB_Position *position) +{ + EB_Error_Code error_code; + EB_Multi_Search *multi; + + eb_lock(&book->lock); + LOG(("in: eb_multi_entry_candidates(book=%d, multi_id=%d, entry_index=%d)", + (int)book->code, (int)multi_id, entry_index)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * `multi_id' must be a valid code. + */ + if (multi_id < 0 || book->subbook_current->multi_count <= multi_id) { + error_code = EB_ERR_NO_SUCH_MULTI_ID; + goto failed; + } + + /* + * `entry_index' must be a valid code. + */ + multi = book->subbook_current->multis + multi_id; + if (entry_index < 0 || multi->entry_count <= entry_index) { + error_code = EB_ERR_NO_SUCH_ENTRY_ID; + goto failed; + } + + if (multi->entries[entry_index].candidates_page == 0) { + error_code = EB_ERR_NO_CANDIDATES; + goto failed; + } + + position->page = multi->entries[entry_index].candidates_page; + position->offset = 0; + + LOG(("out: eb_multi_entry_candidates(position={%d,%d}) = %s", + position->page, position->offset, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_multi_entry_candidates() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Multi search. + */ +EB_Error_Code +eb_search_multi(EB_Book *book, EB_Multi_Search_Code multi_id, + const char * const input_words[]) +{ + EB_Error_Code error_code; + EB_Search_Context *context; + EB_Search *entry; + EB_Word_Code word_code; + int word_count; + int i; + + eb_lock(&book->lock); + LOG(("in: eb_search_multi(book=%d, multi_id=%d, input_words=[below])", + (int)book->code, (int)multi_id)); + + if (eb_log_flag) { + for (i = 0; i < EB_MAX_KEYWORDS && input_words[i] != NULL; i++) { + LOG((" input_words[%d]=%s", i, + eb_quoted_string(input_words[i]))); + } + LOG((" input_words[%d]=NULL", i)); + } + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check whether the current subbook has keyword search. + */ + if (multi_id < 0 || book->subbook_current->multi_count <= multi_id) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Attach a search context for each keyword, and pre-search the + * keywords. + */ + eb_reset_search_contexts(book); + word_count = 0; + + for (i = 0, entry = book->subbook_current->multis[multi_id].entries; + i < book->subbook_current->multis[multi_id].entry_count; + i++, entry++) { + + if (input_words[i] == NULL) + break; + + /* + * Initialize search context. + */ + context = book->search_contexts + word_count; + context->code = EB_SEARCH_MULTI; + + /* + * Choose comparison functions. + */ + if (entry->candidates_page == 0) { + if (book->character_code == EB_CHARCODE_ISO8859_1 + || book->character_code == EB_CHARCODE_UTF8) { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word; + } else { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word_kana_group; + } + } else { + if (book->character_code == EB_CHARCODE_ISO8859_1 + || book->character_code == EB_CHARCODE_UTF8) { + context->compare_pre = eb_exact_pre_match_word_latin; + context->compare_single = eb_exact_match_word_latin; + context->compare_group = eb_exact_match_word_latin; + } else { + context->compare_pre = eb_exact_pre_match_word_jis; + context->compare_single = eb_exact_match_word_jis; + context->compare_group = eb_exact_match_word_kana_group; + } + } + context->page = entry->start_page; + if (context->page == 0) + continue; + + /* + * Make a fixed word and a canonicalized word to search from + * `input_words[i]'. + */ + error_code = eb_set_multiword(book, multi_id, i, input_words[i], + context->word, context->canonicalized_word, &word_code); + if (error_code == EB_ERR_EMPTY_WORD) + continue; + else if (error_code != EB_SUCCESS) + goto failed; + + /* + * Pre-search. + */ + error_code = eb_presearch_word(book, context); + if (error_code != EB_SUCCESS) + goto failed; + + word_count++; + } + if (word_count == 0) { + error_code = EB_ERR_NO_WORD; + goto failed; + } else if (book->subbook_current->multis[multi_id].entry_count <= i + && input_words[i] != NULL) { + error_code = EB_ERR_TOO_MANY_WORDS; + goto failed; + } + + /* + * Set `EB_SEARCH_NONE' to the rest unused search context. + */ + for (i = word_count; i < EB_MAX_KEYWORDS; i++) + (book->search_contexts + i)->code = EB_SEARCH_NONE; + + LOG(("out: eb_search_multi() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_search_contexts(book); + LOG(("out: eb_search_multi() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/multi.lo b/lib/ebu/ebu/multi.lo new file mode 100644 index 0000000..7d158d4 --- /dev/null +++ b/lib/ebu/ebu/multi.lo @@ -0,0 +1,12 @@ +# multi.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multi.o' + +# Name of the non-PIC object +non_pic_object='multi.o' + diff --git a/lib/ebu/ebu/multiplex.c b/lib/ebu/ebu/multiplex.c new file mode 100644 index 0000000..617e8e3 --- /dev/null +++ b/lib/ebu/ebu/multiplex.c @@ -0,0 +1,970 @@ +/* + * Copyright (c) 2003-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#include +#include +#endif + +#ifdef HAVE_NET_IF_H +#include +#endif + +#include "build-pre.h" +#include "eb.h" +#include "build-post.h" +#include "dummyin6.h" + +#if !defined(HAVE_GETADDRINFO) || !defined(HAVE_GETNAMEINFO) +#include "getaddrinfo.h" +#endif + +#include "ebnet.h" + +#ifndef IF_NAMESIZE +#ifdef IFNAMSIZ +#define IF_NAMESIZE IFNAMSIZ +#else +#define IF_NAMESIZE 16 +#endif +#endif + +#ifndef AI_NUMERICHOST +#define AI_NUMERICHOST 0 +#endif +#ifndef NI_WITHSCOPEID +#define NI_WITHSCOPEID 0 +#endif + +#ifdef ENABLE_WINSOCK2 +#define close closesocket +#endif + +/* + * Maximum length (including NUL) of a TCP/UDP port number string. + */ +#define IN_PORTSTRLEN 6 + +/* + * Socket entry pool. + */ +typedef struct EBNet_Socket_Entry_Struct EBNet_Socket_Entry; +struct EBNet_Socket_Entry_Struct { + /* IPv6 or IPv4 Address of peer */ + char address[INET6_ADDRSTRLEN + IF_NAMESIZE]; + + /* destination port */ + in_port_t port; + + /* socket file */ + int file; + + /* reference count of the entry */ + int reference_count; + + /* object ID of the entry */ + int reference_id; + + /* lost synchronization flag */ + int lost_sync; + + /* next and previous entries. */ + EBNet_Socket_Entry *next; + EBNet_Socket_Entry *back; + + /* book name */ + char book_name[EBNET_MAX_BOOK_NAME_LENGTH + 1]; + + /* file path */ + char file_path[EB_MAX_RELATIVE_PATH_LENGTH + 1]; + + /* current file pointer */ + off_t offset; + + /* file size */ + off_t file_size; +}; + +static EBNet_Socket_Entry *ebnet_socket_entries; +static EBNet_Socket_Entry *ebnet_socket_entry_cache; + +/* + * Host name information cache. + */ +typedef struct { + /* hostname or IP address */ + char *host; + + /* IPv6 address of `host' */ + char ipv6_address[INET6_ADDRSTRLEN + IF_NAMESIZE]; + + /* IPv4 address of `host' */ + char ipv4_address[INET_ADDRSTRLEN]; +} EBNet_Host_Info; + +static EBNet_Host_Info ebnet_host_info_cache; + + +/* + * Hello and Bye hooks. + * + * The multiplex module invokes the hello hook each time it establish + * a new connection with a server, and invokes the bye hook each time + * it closes a last socket connected with a server. + */ +static int (*hello_hook)(int file); +static int (*bye_hook)(int file); + +/* + * Unexported functions. + */ +static void ebnet_get_addresses(const char *host, char *ipv6_address, + char *ipv4_address); +static EBNet_Socket_Entry *ebnet_find_multiplex_entry(const char *ipv6_address, + const char *ipv4_address, int port, int family); +static int ebnet_create_new_connection(const char *address, int port); +static void ebnet_add_socket_entry(EBNet_Socket_Entry *new_entry); +static void ebnet_delete_socket_entry(EBNet_Socket_Entry *target_entry); +static EBNet_Socket_Entry *ebnet_find_socket_entry(int file); + + +/* + * Initialize the multiplex module. + */ +void +ebnet_initialize_multiplex(void) +{ + ebnet_socket_entries = NULL; + ebnet_socket_entry_cache = NULL; + + ebnet_host_info_cache.host = NULL; + ebnet_host_info_cache.ipv6_address[0] = '\0'; + ebnet_host_info_cache.ipv4_address[0] = '\0'; + + hello_hook = NULL; + bye_hook = NULL; +} + + +/* + * Finalize the multiplex module. + */ +void +ebnet_finalize(void) +{ + while (ebnet_socket_entries != NULL) { + close(ebnet_socket_entries->file); + ebnet_delete_socket_entry(ebnet_socket_entries); + } + + ebnet_socket_entries = NULL; + ebnet_socket_entry_cache = NULL; + + if (ebnet_host_info_cache.host != NULL) + free(ebnet_host_info_cache.host); +} + + +/* + * Set hello hook. + */ +void +ebnet_set_hello_hook(int (*hook)(int file)) +{ + hello_hook = hook; +} + + +/* + * Set bye hook. + */ +void +ebnet_set_bye_hook(int (*hook)(int file)) +{ + bye_hook = hook; +} + + +/* + * Create a socket connected with a server. + * + * `host' is a host name or an IP address of the server. `port' is + * destination port number of the TCP connection. `family' is protocol + * family: PF_INET, PF_INET6 or PF_UNSPEC. + * + * Upon success, file descriptor of the socket is returned. + * Otherwise -1 is returned. + * + * If there has been a socket entry in `ebnet_socket_entries' which is + * connected with the server, this function simply duplicates the socket. + */ +int +ebnet_connect_socket(const char *host, int port, int family) +{ + char ipv6_address[INET6_ADDRSTRLEN + IF_NAMESIZE]; + char ipv4_address[INET_ADDRSTRLEN]; + EBNet_Socket_Entry *multiplex_entry = NULL; + EBNet_Socket_Entry *new_entry = NULL; + int new_file = -1; + + /* + * Get IP addresses of `host'. + */ + *ipv6_address = '\0'; + *ipv4_address = '\0'; + ebnet_get_addresses(host, ipv6_address, ipv4_address); + + switch (family) { + case PF_UNSPEC: + if (*ipv6_address == '\0' && *ipv4_address == '\0') + goto failed; + break; + + case PF_INET6: + if (*ipv6_address == '\0') + goto failed; + break; + + case PF_INET: + if (*ipv4_address == '\0') + goto failed; + break; + } + + /* + * Search `ebnet_socket_entries' for a connection entry with + * the server. + */ + multiplex_entry = ebnet_find_multiplex_entry(ipv6_address, ipv4_address, + port, family); + + /* + * Create a socket entry. + */ + new_entry = (EBNet_Socket_Entry *)malloc(sizeof(EBNet_Socket_Entry)); + if (new_entry == NULL) + goto failed; + + new_entry->address[0] = '\0'; + new_entry->port = port; + new_entry->file = -1; + new_entry->reference_count = 1; + new_entry->reference_id = -1; + new_entry->lost_sync = 0; + new_entry->next = NULL; + new_entry->back = NULL; + new_entry->book_name[0] = '\0'; + new_entry->file_path[0] = '\0'; + new_entry->offset = 0; + new_entry->file_size = 0; + + if (multiplex_entry != NULL) { + /* + * There is an IPv6 or IPv4 socket with the server. + * Duplicate the socket entry. + */ +#ifndef ENABLE_WINSOCK2 + new_file = dup(multiplex_entry->file); +#else /* ENABLE_WINSOCK2 */ + { + WSAPROTOCOL_INFO info; + + if (WSADuplicateSocket(multiplex_entry->file, + GetCurrentProcessId(), &info) != 0) + goto failed; + new_file = WSASocket(FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO, + FROM_PROTOCOL_INFO, &info, 0, 0); + } +#endif /* ENABLE_WINSOCK2 */ + if (new_file < 0) + goto failed; + + strcpy(new_entry->address, multiplex_entry->address); + new_entry->file = new_file; + new_entry->reference_count = multiplex_entry->reference_count; + new_entry->reference_id = multiplex_entry->reference_id; + + } else { + /* + * There is no socket connected with the server. + * Establish a connection with the server. + */ + do { + if ((family == PF_INET6 || family == PF_UNSPEC) + && *ipv6_address != '\0') { + new_file = ebnet_create_new_connection(ipv6_address, port); + if (0 <= new_file) { + strcpy(new_entry->address, ipv6_address); + new_entry->file = new_file; + new_entry->reference_id = new_file; + break; + } + } + if ((family == PF_INET || family == PF_UNSPEC) + && *ipv4_address != '\0') { + new_file = ebnet_create_new_connection(ipv4_address, port); + if (0 <= new_file) { + strcpy(new_entry->address, ipv4_address); + new_entry->file = new_file; + new_entry->reference_id = new_file; + break; + } + } + goto failed; + + } while (0); + + } + + /* + * Add the entry to `ebnet_socket_entries'. + */ + ebnet_add_socket_entry(new_entry); + + /* + * Say hello. + */ + if (multiplex_entry == NULL && hello_hook != NULL) { + if (hello_hook(new_file) < 0) + goto failed; + } + + return new_file; + + /* + * An error occurs... + */ + failed: + if (new_entry != NULL) { + if (ebnet_find_socket_entry(new_file) != NULL) + ebnet_delete_socket_entry(new_entry); + else + free(new_entry); + } + if (new_file >= 0) + close(new_file); + return -1; +} + + +/* + * Get IPv6 and IPv4 addresses of `host'. + * + * `host' may be either an host name or an IP address. + * If `host' has an IPv6 address, the address is written on `ipv6_address'. + * Otherwise an empty string is written. + * If `host' has an IPv4 address, the address is written on `ipv4_address'. + * Otherwise an empty string is written. + */ +static void +ebnet_get_addresses(const char *host, char *ipv6_address, char *ipv4_address) +{ + struct addrinfo hints; + struct addrinfo *info_list = NULL; + struct addrinfo *info; + char dummy_service[IN_PORTSTRLEN]; + int gai_error; + + *ipv6_address = '\0'; + *ipv4_address = '\0'; + + /* + * Look up `ebnet_host_info_cache'. + */ + if (ebnet_host_info_cache.host != NULL + && strcmp(ebnet_host_info_cache.host, host) == 0) { + strcpy(ipv6_address, ebnet_host_info_cache.ipv6_address); + strcpy(ipv4_address, ebnet_host_info_cache.ipv4_address); + return; + } + + /* + * Get IP addresses using getaddrinfo(). + */ + hints.ai_flags = 0; + hints.ai_family = PF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = 0; + hints.ai_addrlen = 0; + hints.ai_canonname = NULL; + hints.ai_addr = NULL; + hints.ai_next = NULL; + + gai_error = getaddrinfo(host, EBNET_DEFAULT_PORT, &hints, &info_list); + if (gai_error != 0) + return; + + for (info = info_list; info != NULL; info = info->ai_next) { + if (info->ai_family != PF_INET6) + continue; + gai_error = getnameinfo(info->ai_addr, info->ai_addrlen, + ipv6_address, INET6_ADDRSTRLEN + IF_NAMESIZE, + dummy_service, sizeof(dummy_service), + NI_NUMERICHOST | NI_NUMERICSERV | NI_WITHSCOPEID); +#if NI_WITHSCOPEID != 0 + if (gai_error != 0) { + gai_error = getnameinfo(info->ai_addr, info->ai_addrlen, + ipv6_address, INET6_ADDRSTRLEN + IF_NAMESIZE, + dummy_service, sizeof(dummy_service), + NI_NUMERICHOST | NI_NUMERICSERV); + } +#endif + if (gai_error == 0) + break; + *ipv6_address = '\0'; + } + + for (info = info_list; info != NULL; info = info->ai_next) { + if (info->ai_family != PF_INET) + continue; + gai_error = getnameinfo(info->ai_addr, info->ai_addrlen, + ipv4_address, INET_ADDRSTRLEN, + dummy_service, sizeof(dummy_service), + NI_NUMERICHOST | NI_NUMERICSERV); + if (gai_error == 0) + break; + *ipv4_address = '\0'; + } + + freeaddrinfo(info_list); + + /* + * Update `ebnet_host_info_cache'. + */ + if (ebnet_host_info_cache.host != NULL) { + free(ebnet_host_info_cache.host); + ebnet_host_info_cache.host = NULL; + } + ebnet_host_info_cache.host = malloc(strlen(host) + 1); + if (ebnet_host_info_cache.host != NULL) { + strcpy(ebnet_host_info_cache.host, host); + strcpy(ebnet_host_info_cache.ipv6_address, ipv6_address); + strcpy(ebnet_host_info_cache.ipv4_address, ipv4_address); + } + + return; +} + + +/* + * Find `ebnet_socket_entries' for a socket entry which matches with + * port, family and either `ipv6_address' or `ipv4_address'. + * + * If found, the function returns the entry. Otherwise it returns NULL. + */ +static EBNet_Socket_Entry * +ebnet_find_multiplex_entry(const char *ipv6_address, const char *ipv4_address, + int port, int family) +{ + EBNet_Socket_Entry *entry; + + /* + * Inspect `ebnet_socket_entry_cache'. + */ + if (ebnet_socket_entry_cache != NULL + && (family == PF_INET6 || family == PF_UNSPEC) + && strcasecmp(ebnet_socket_entry_cache->address, ipv6_address) == 0 + && ebnet_socket_entry_cache->port == port + && !ebnet_socket_entry_cache->lost_sync) { + return ebnet_socket_entry_cache; + } + if (ebnet_socket_entry_cache != NULL + && (family == PF_INET || family == PF_UNSPEC) + && strcasecmp(ebnet_socket_entry_cache->address, ipv4_address) == 0 + && ebnet_socket_entry_cache->port == port + && !ebnet_socket_entry_cache->lost_sync) { + return ebnet_socket_entry_cache; + } + + /* + * Then inspect entires in `ebnet_socket_entries'. + */ + for (entry = ebnet_socket_entries; entry != NULL; entry = entry->next) { + if ((family == PF_INET6 || family == PF_UNSPEC) + && strcasecmp(entry->address, ipv6_address) == 0 + && entry->port == port + && !entry->lost_sync) { + ebnet_socket_entry_cache = entry; + return entry; + } + if ((family == PF_INET || family == PF_UNSPEC) + && strcasecmp(entry->address, ipv4_address) == 0 + && entry->port == port + && !entry->lost_sync) { + ebnet_socket_entry_cache = entry; + return entry; + } + } + + return NULL; +} + + +/* + * Establish a TCP connection with an EBNET server. + * + * `host' is a host name or an IP address of the server. `port' is + * destination port number of the TCP connection. + * + * Upon success, file descriptor of the socket is returned. + * Otherwise -1 is returned. + */ +static int +ebnet_create_new_connection(const char *address, int port) +{ + struct addrinfo hints; + struct addrinfo *info_list = NULL; + int new_file = -1; + int gai_error; + char port_string[IN_PORTSTRLEN]; +#ifdef O_NONBLOCK + int file_flags; +#endif + + if (port < 0 || 65535 < port) + goto failed; + sprintf(port_string, "%d", port); + + hints.ai_flags = AI_NUMERICHOST; + hints.ai_family = PF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = 0; + hints.ai_addrlen = 0; + hints.ai_canonname = NULL; + hints.ai_addr = NULL; + hints.ai_next = NULL; + + gai_error = getaddrinfo(address, port_string, &hints, &info_list); + if (gai_error != 0) + goto failed; + + new_file = socket(info_list->ai_addr->sa_family, SOCK_STREAM, 0); + if (new_file < 0) + goto failed; + if (connect(new_file, info_list->ai_addr, info_list->ai_addrlen) < 0) + goto failed; + +#ifdef O_NONBLOCK + file_flags = fcntl(new_file, F_GETFL, 0); + if (file_flags >= 0) + fcntl(new_file, F_SETFL, file_flags | O_NONBLOCK); +#endif + + freeaddrinfo(info_list); + + return new_file; + + /* + * An error occurs... + */ + failed: + if (info_list != NULL) + freeaddrinfo(info_list); + if (new_file >= 0) + close(new_file); + return -1; +} + + +/* + * Add `new_entry' to `ebnet_socket_entries'. + */ +static void +ebnet_add_socket_entry(EBNet_Socket_Entry *new_entry) +{ + EBNet_Socket_Entry *entry; + int reference_count; + + /* + * Increment reference counts. + */ + reference_count = 1; + for (entry = ebnet_socket_entries; entry != NULL; entry = entry->next) { + if (entry->reference_id == new_entry->reference_id) { + entry->reference_count++; + reference_count = entry->reference_count; + } + } + + new_entry->reference_count = reference_count; + + /* + * Add `new_entry' to `ebnet_socket_entries'. + */ + if (ebnet_socket_entries != NULL) + ebnet_socket_entries->back = new_entry; + new_entry->back = NULL; + new_entry->next = ebnet_socket_entries; + ebnet_socket_entries = new_entry; + + ebnet_socket_entry_cache = new_entry; +} + + +/* + * Delete `target_entry' from `ebnet_socket_entries'. + */ +static void +ebnet_delete_socket_entry(EBNet_Socket_Entry *target_entry) +{ + EBNet_Socket_Entry *entry; + int new_reference_id; + + if (ebnet_socket_entry_cache == target_entry) + ebnet_socket_entry_cache = NULL; + + /* + * Delete `target_entry' from `ebnet_socket_entries'. + */ + if (target_entry->next != NULL) + target_entry->next->back = target_entry->back; + if (target_entry->back != NULL) + target_entry->back->next = target_entry->next; + if (target_entry == ebnet_socket_entries) + ebnet_socket_entries = ebnet_socket_entries->next; + + /* + * Decrement reference counts and update reference ID. + */ + entry = ebnet_socket_entries; + while (entry != NULL) { + if (entry->reference_id == target_entry->reference_id) { + new_reference_id = entry->file; + break; + } + entry = entry->next; + } + while (entry != NULL) { + if (entry->reference_id == target_entry->reference_id) { + entry->reference_id = new_reference_id; + entry->reference_count--; + } + entry = entry->next; + } + + /* + * Dispose `target_entry'. + */ + free(target_entry); +} + + +/* + * Disconnect with a server. + */ +void +ebnet_disconnect_socket(int file) +{ + EBNet_Socket_Entry *entry; + + /* + * Search `ebnet_socket_entries' for a connection entry with `file'. + */ + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return; + + /* + * Say good bye and close the connection. + */ + if (entry->reference_count == 1 && !entry->lost_sync && bye_hook != NULL) + bye_hook(entry->file); + + close(entry->file); + ebnet_delete_socket_entry(entry); +} + + +/* + * Reconnect `file'. + * It returns `file' upon success, -1 otherwise. + */ +int +ebnet_reconnect_socket(int file) +{ + EBNet_Socket_Entry *old_entry; + EBNet_Socket_Entry *new_entry = NULL; + int new_file; + + /* + * Search `ebnet_socket_entries' for a connection entry with `file'. + */ + old_entry = ebnet_find_socket_entry(file); + if (old_entry == NULL) + goto failed; + + /* + * Say good bye. + */ + if (old_entry->reference_count == 1 && !old_entry->lost_sync + && bye_hook != NULL) + bye_hook(old_entry->file); + + /* + * Establish a new connection with the server. + */ + ebnet_set_lost_sync(file); + new_file = ebnet_connect_socket(old_entry->address, old_entry->port, + PF_UNSPEC); + if (new_file < 0) + goto failed; + + new_entry = ebnet_find_socket_entry(new_file); + if (new_entry == NULL) + goto failed; + + /* + * Replace `old_entry' by `new_entry'. + */ + strcpy(new_entry->book_name, old_entry->book_name); + strcpy(new_entry->file_path, old_entry->file_path); + new_entry->offset = old_entry->offset; + new_entry->file_size = old_entry->file_size; + + ebnet_delete_socket_entry(old_entry); + +#ifndef ENABLE_WINSOCK2 + if (dup2(new_entry->file, file) < 0) + goto failed; + close(new_entry->file); + + if (new_entry->reference_id == new_entry->file) + new_entry->reference_id = file; + new_entry->file = file; +#else + close(file); +#endif + + return new_entry->file; + + /* + * An error occurs... + */ + failed: + if (new_entry != NULL && new_entry->file != file) + ebnet_disconnect_socket(new_entry->file); + return -1; +} + + +/* + * Mark files as lost-synchronization. + * + * Socket entries in `ebnet_socket_entries' which has the same reference + * ID as `file' are marked as lost-synchronization. + * The function doesn't close the files, but ebnet_connect_socket() + * doesn't duplicate lost-synchronized files. + */ +int +ebnet_set_lost_sync(int file) +{ + EBNet_Socket_Entry *entry; + int reference_id; + + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return -1; + reference_id = entry->reference_id; + + for (entry = ebnet_socket_entries; entry != NULL; entry = entry->next) { + if (entry->reference_id == reference_id) + entry->lost_sync = 1; + } + + return 0; +} + + +/* + * Search `ebnet_socket_entries' for a connection entry with `file'. + */ +static EBNet_Socket_Entry * +ebnet_find_socket_entry(int file) +{ + EBNet_Socket_Entry *entry; + + if (ebnet_socket_entry_cache != NULL + && ebnet_socket_entry_cache->file == file) + return ebnet_socket_entry_cache; + + for (entry = ebnet_socket_entries; entry != NULL; entry = entry->next) { + if (entry->file == file) { + ebnet_socket_entry_cache = entry; + return entry; + } + } + + return NULL; +} + + +/* + * Set book name associated with `file'. + */ +int +ebnet_set_book_name(int file, const char *book_name) +{ + EBNet_Socket_Entry *entry; + + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return -1; + + strncpy(entry->book_name, book_name, EBNET_MAX_BOOK_NAME_LENGTH + 1); + *(entry->book_name + EBNET_MAX_BOOK_NAME_LENGTH) = '\0'; + + return 0; +} + + +/* + * Get book name associated with `file'. + */ +const char * +ebnet_get_book_name(int file) +{ + EBNet_Socket_Entry *entry; + + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return NULL; + + return entry->book_name; +} + + +/* + * Set book name associated with `file'. + */ +int +ebnet_set_file_path(int file, const char *file_path) +{ + EBNet_Socket_Entry *entry; + + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return -1; + + strncpy(entry->file_path, file_path, EB_MAX_RELATIVE_PATH_LENGTH + 1); + *(entry->file_path + EB_MAX_RELATIVE_PATH_LENGTH + 1) = '\0'; + + return 0; +} + + +/* + * Get file path associated with `file'. + */ +const char * +ebnet_get_file_path(int file) +{ + EBNet_Socket_Entry *entry; + + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return NULL; + + return entry->file_path; +} + + +/* + * Set file offset. + */ +int +ebnet_set_offset(int file, off_t offset) +{ + EBNet_Socket_Entry *entry; + + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return -1; + + entry->offset = offset; + return 0; +} + + +/* + * Get file offset. + */ +off_t +ebnet_get_offset(int file) +{ + EBNet_Socket_Entry *entry; + + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return -1; + + return entry->offset; +} + + +/* + * Set file size. + */ +int +ebnet_set_file_size(int file, off_t file_size) +{ + EBNet_Socket_Entry *entry; + + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return -1; + + entry->file_size = file_size; + return 0; +} + + +/* + * Get file size. + */ +off_t +ebnet_get_file_size(int file) +{ + EBNet_Socket_Entry *entry; + + entry = ebnet_find_socket_entry(file); + if (entry == NULL) + return -1; + + return entry->file_size; +} + + diff --git a/lib/ebu/ebu/multiplex.lo b/lib/ebu/ebu/multiplex.lo new file mode 100644 index 0000000..6113bd7 --- /dev/null +++ b/lib/ebu/ebu/multiplex.lo @@ -0,0 +1,12 @@ +# multiplex.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/multiplex.o' + +# Name of the non-PIC object +non_pic_object='multiplex.o' + diff --git a/lib/ebu/ebu/narwalt.c b/lib/ebu/ebu/narwalt.c new file mode 100644 index 0000000..eb07991 --- /dev/null +++ b/lib/ebu/ebu/narwalt.c @@ -0,0 +1,628 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "appendix.h" +#include "build-post.h" + +/* + * Unexported functions. + */ +static EB_Error_Code eb_narrow_character_text_jis(EB_Appendix *appendix, + int character_number, char *text); +static EB_Error_Code eb_narrow_character_text_latin(EB_Appendix *appendix, + int character_number, char *text); + +/* + * Hash macro for cache data. + */ +#define EB_HASH_ALT_CACHE(c) ((c) & 0x0f) + + +/* + * Examine whether the current subbook in `book' has a narrow font + * alternation or not. + */ +int +eb_have_narrow_alt(EB_Appendix *appendix) +{ + eb_lock(&appendix->lock); + LOG(("in: eb_have_narrow_alt(appendix=%d)", (int)appendix->code)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) + goto failed; + + if (appendix->subbook_current->narrow_page == 0) + goto failed; + + LOG(("out: eb_have_narrow_alt() = %d", 1)); + eb_unlock(&appendix->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_narrow_alt() = %d", 0)); + eb_unlock(&appendix->lock); + return 0; +} + + +/* + * Look up the character number of the start of the narrow font alternation + * of the current subbook in `book'. + */ +EB_Error_Code +eb_narrow_alt_start(EB_Appendix *appendix, int *start) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_narrow_alt_start(appendix=%d)", (int)appendix->code)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + if (appendix->subbook_current->narrow_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + *start = appendix->subbook_current->narrow_start; + + LOG(("out: eb_narrow_alt_start(start=%d) = %s", *start, + eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *start = -1; + LOG(("out: eb_narrow_alt_start() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Return the character number of the end of the narrow font alternation + * of the current subbook in `book'. + */ +EB_Error_Code +eb_narrow_alt_end(EB_Appendix *appendix, int *end) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_narrow_alt_end(appendix=%d)", (int)appendix->code)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + if (appendix->subbook_current->narrow_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + *end = appendix->subbook_current->narrow_end; + + LOG(("out: eb_narrow_alt_end(end=%d) = %s", *end, + eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *end = -1; + LOG(("out: eb_narrow_alt_end() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Get the alternation text of the character number `character_number'. + */ +EB_Error_Code +eb_narrow_alt_character_text(EB_Appendix *appendix, int character_number, + char *text) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_narrow_alt_character_text(appendix=%d, character_number=%d)", + (int)appendix->code, character_number)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (appendix->subbook_current->narrow_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + if (appendix->subbook_current->character_code == EB_CHARCODE_ISO8859_1) { + error_code = eb_narrow_character_text_latin(appendix, + character_number, text); + } else { + error_code = eb_narrow_character_text_jis(appendix, character_number, + text); + } + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_narrow_alt_character_text(text=%s) = %s", + eb_quoted_string(text), eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *text = '\0'; + LOG(("out: eb_narrow_alt_character_text() = %s", + eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Get the alternation text of the character number `character_number'. + */ +static EB_Error_Code +eb_narrow_character_text_jis(EB_Appendix *appendix, int character_number, + char *text) +{ + EB_Error_Code error_code; + int start; + int end; + off_t location; + EB_Alternation_Cache *cachep; + + LOG(("in: eb_narrow_alt_character_text_jis(appendix=%d, \ +character_number=%d)", + (int)appendix->code, character_number)); + + start = appendix->subbook_current->narrow_start; + end = appendix->subbook_current->narrow_end; + + /* + * Check for `character_number'. Is it in a font? + * This test works correctly even when the font doesn't exist in + * the current subbook because `start' and `end' have set to -1 + * in the case. + */ + if (character_number < start + || end < character_number + || (character_number & 0xff) < 0x21 + || 0x7e < (character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Calculate the location of alternation data. + */ + location + = (appendix->subbook_current->narrow_page - 1) * EB_SIZE_PAGE + + (((character_number >> 8) - (start >> 8)) * 0x5e + + (character_number & 0xff) - (start & 0xff)) + * (EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + + /* + * Check for the cache data. + */ + cachep = appendix->narrow_cache + EB_HASH_ALT_CACHE(character_number); + if (cachep->character_number == character_number) { + memcpy(text, cachep->text, EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + goto succeeded; + } + + /* + * Read the alternation data. + */ + if (zio_lseek(&appendix->subbook_current->zio, location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_APP; + goto failed; + } + cachep->character_number = -1; + if (zio_read(&appendix->subbook_current->zio, cachep->text, + EB_MAX_ALTERNATION_TEXT_LENGTH + 1) + != EB_MAX_ALTERNATION_TEXT_LENGTH + 1) { + error_code = EB_ERR_FAIL_READ_APP; + goto failed; + } + + /* + * Update cache data. + */ + memcpy(text, cachep->text, EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + cachep->text[EB_MAX_ALTERNATION_TEXT_LENGTH] = '\0'; + cachep->character_number = character_number; + + succeeded: + LOG(("out: eb_narrow_alt_character_text_jis(text=%s) = %s", + eb_quoted_string(text), eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *text = '\0'; + LOG(("out: eb_narrow_alt_character_text_jis() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Get the alternation text of the character number `character_number'. + */ +static EB_Error_Code +eb_narrow_character_text_latin(EB_Appendix *appendix, int character_number, + char *text) +{ + EB_Error_Code error_code; + int start; + int end; + off_t location; + EB_Alternation_Cache *cache_p; + + LOG(("in: eb_narrow_alt_character_text_latin(appendix=%d, \ +character_number=%d)", + (int)appendix->code, character_number)); + + start = appendix->subbook_current->narrow_start; + end = appendix->subbook_current->narrow_end; + + /* + * Check for `character_number'. Is it in a font? + * This test works correctly even when the font doesn't exist in + * the current subbook because `start' and `end' have set to -1 + * in the case. + */ + if (character_number < start + || end < character_number + || (character_number & 0xff) < 0x01 + || 0xfe < (character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Calculate the location of alternation data. + */ + location + = (appendix->subbook_current->narrow_page - 1) * EB_SIZE_PAGE + + (((character_number >> 8) - (start >> 8)) * 0xfe + + (character_number & 0xff) - (start & 0xff)) + * (EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + + /* + * Check for the cache data. + */ + cache_p = appendix->narrow_cache + EB_HASH_ALT_CACHE(character_number); + if (cache_p->character_number == character_number) { + memcpy(text, cache_p->text, EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + goto succeeded; + } + + /* + * Read the alternation data. + */ + if (zio_lseek(&appendix->subbook_current->zio, location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_APP; + goto failed; + } + cache_p->character_number = -1; + if (zio_read(&appendix->subbook_current->zio, cache_p->text, + EB_MAX_ALTERNATION_TEXT_LENGTH + 1) + != EB_MAX_ALTERNATION_TEXT_LENGTH + 1) { + error_code = EB_ERR_FAIL_READ_APP; + goto failed; + } + + /* + * Update cache data. + */ + memcpy(text, cache_p->text, EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + cache_p->text[EB_MAX_ALTERNATION_TEXT_LENGTH] = '\0'; + cache_p->character_number = character_number; + + succeeded: + LOG(("out: eb_narrow_alt_character_text_latin(text=%s) = %s", + eb_quoted_string(text), eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *text = '\0'; + LOG(("out: eb_narrow_alt_character_text_latin() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Return next `n'th character number from `*character_number'. + */ +EB_Error_Code +eb_forward_narrow_alt_character(EB_Appendix *appendix, int n, + int *character_number) +{ + EB_Error_Code error_code; + int start; + int end; + int i; + + if (n < 0) { + return eb_backward_narrow_alt_character(appendix, -n, + character_number); + } + + eb_lock(&appendix->lock); + LOG(("in: eb_forward_narrow_alt_character(appendix=%d, n=%d, \ +character_number=%d)", + (int)appendix->code, n, *character_number)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (appendix->subbook_current->narrow_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + start = appendix->subbook_current->narrow_start; + end = appendix->subbook_current->narrow_end; + + if (appendix->subbook_current->character_code == EB_CHARCODE_ISO8859_1) { + /* + * Check for `*character_number'. (ISO 8859 1) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x01 + || 0xfe < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Get character number. (ISO 8859 1) + */ + for (i = 0; i < n; i++) { + if (0xfe <= (*character_number & 0xff)) + *character_number += 3; + else + *character_number += 1; + if (end < *character_number) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + } + } else { + /* + * Check for `*character_number'. (JIS X 0208) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x21 + || 0x7e < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Get character number. (JIS X 0208) + */ + for (i = 0; i < n; i++) { + if (0x7e <= (*character_number & 0xff)) + *character_number += 0xa3; + else + *character_number += 1; + if (end < *character_number) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + } + } + + LOG(("out: eb_forkward_narrow_alt_character(character_number=%d) = %s", + *character_number, eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *character_number = -1; + LOG(("out: eb_forward_narrow_alt_character() = %s", + eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Return previous `n'th character number from `*character_number'. + */ +EB_Error_Code +eb_backward_narrow_alt_character(EB_Appendix *appendix, int n, + int *character_number) +{ + EB_Error_Code error_code; + int start; + int end; + int i; + + if (n < 0) { + return eb_forward_narrow_alt_character(appendix, -n, character_number); + } + + eb_lock(&appendix->lock); + LOG(("in: eb_backward_narrow_alt_character(appendix=%d, n=%d, \ +character_number=%d)", + (int)appendix->code, n, *character_number)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (appendix->subbook_current->narrow_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + start = appendix->subbook_current->narrow_start; + end = appendix->subbook_current->narrow_end; + + if (appendix->subbook_current->character_code == EB_CHARCODE_ISO8859_1) { + /* + * Check for `*character_number'. (ISO 8859 1) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x01 + || 0xfe < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Get character number. (ISO 8859 1) + */ + for (i = 0; i < n; i++) { + if ((*character_number & 0xff) <= 0x01) + *character_number -= 3; + else + *character_number -= 1; + if (*character_number < start) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + } + } else { + /* + * Check for `*character_number'. (JIS X 0208) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x21 + || 0x7e < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Get character number. (JIS X 0208) + */ + for (i = 0; i < n; i++) { + if ((*character_number & 0xff) <= 0x21) + *character_number -= 0xa3; + else + *character_number -= 1; + if (*character_number < start) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + } + } + + LOG(("out: eb_backward_narrow_alt_character(character_number=%d) = %s", + *character_number, eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *character_number = -1; + LOG(("out: eb_backward_narrow_alt_character() = %s", + eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/narwalt.lo b/lib/ebu/ebu/narwalt.lo new file mode 100644 index 0000000..3ce55e3 --- /dev/null +++ b/lib/ebu/ebu/narwalt.lo @@ -0,0 +1,12 @@ +# narwalt.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/narwalt.o' + +# Name of the non-PIC object +non_pic_object='narwalt.o' + diff --git a/lib/ebu/ebu/narwfont.c b/lib/ebu/ebu/narwfont.c new file mode 100644 index 0000000..245a751 --- /dev/null +++ b/lib/ebu/ebu/narwfont.c @@ -0,0 +1,1099 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "font.h" +#include "build-post.h" + +/* + * Unexported functions. + */ +static EB_Error_Code eb_narrow_character_bitmap_jis(EB_Book *book, + int character_number, char *bitmap); +static EB_Error_Code eb_narrow_character_bitmap_latin(EB_Book *book, + int character_number, char *bitmap); + + +/* + * Open a font file. + */ +EB_Error_Code +eb_open_narrow_font_file(EB_Book *book, EB_Font_Code font_code) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Font *narrow_font; + char font_path_name[EB_MAX_PATH_LENGTH + 1]; + Zio_Code zio_code; + + LOG(("in: eb_open_narrow_font(book=%d, font_code=%d)", + (int)book->code, (int)font_code)); + + subbook = book->subbook_current; + narrow_font = subbook->narrow_fonts + font_code; + + if (narrow_font->font_code == EB_FONT_INVALID) { + error_code = EB_ERR_FAIL_OPEN_FONT; + goto failed; + } + if (0 <= zio_file(&narrow_font->zio)) + goto succeeded; + + /* + * If the book is EBWING, open the narrow font file. + * (In EB books, font data are stored in the `START' file.) + */ + zio_code = ZIO_INVALID; + + if (book->disc_code == EB_DISC_EB) { + if (narrow_font->initialized) { + if (zio_mode(&narrow_font->zio) != ZIO_INVALID) + zio_code = ZIO_REOPEN; + } else { + zio_code = zio_mode(&subbook->text_zio); + } + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->text_file_name, font_path_name); + + } else { + if (narrow_font->initialized) { + if (zio_mode(&narrow_font->zio) != ZIO_INVALID) + zio_code = ZIO_REOPEN; + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, narrow_font->file_name, + font_path_name); + } else { + eb_canonicalize_file_name(narrow_font->file_name); + if (eb_find_file_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, narrow_font->file_name, + narrow_font->file_name) != EB_SUCCESS) { + error_code = EB_ERR_FAIL_OPEN_FONT; + goto failed; + } + + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, narrow_font->file_name, + font_path_name); + eb_path_name_zio_code(font_path_name, ZIO_PLAIN, &zio_code); + } + } + + if (zio_code != ZIO_INVALID + && zio_open(&narrow_font->zio, font_path_name, zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_FONT; + goto failed; + } + + succeeded: + LOG(("out: eb_open_narrow_font_file(file=%d) = %s", + zio_file(&narrow_font->zio), eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_open_narrow_font_file() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Read font header. + */ +EB_Error_Code +eb_load_narrow_font_header(EB_Book *book, EB_Font_Code font_code) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Font *narrow_font; + char buffer[16]; + int character_count; + Zio *zio; + + LOG(("in: eb_load_narrow_font_header(book=%d, font_code=%d)", + (int)book->code, (int)font_code)); + + subbook = book->subbook_current; + narrow_font = subbook->narrow_fonts + font_code; + zio = &narrow_font->zio; + + if (narrow_font->initialized) + goto succeeded; + + /* + * Read information from the text file. + */ + if (zio_lseek(zio, ((off_t) narrow_font->page - 1) * EB_SIZE_PAGE, + SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_FONT; + goto failed; + } + if (zio_read(zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_FONT; + goto failed; + } + + /* + * If the number of characters (`character_count') is 0, the font + * is unavailable. We return EB_ERR_NO_SUCH_FONT. + */ + character_count = eb_uint2(buffer + 12); + if (character_count == 0) { + zio_close(zio); + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + /* + * Set the information. + */ + narrow_font->start = eb_uint2(buffer + 10); + if (book->character_code == EB_CHARCODE_ISO8859_1) { + narrow_font->end = narrow_font->start + + ((character_count / 0xfe) << 8) + (character_count % 0xfe) - 1; + if (0xfe < (narrow_font->end & 0xff)) + narrow_font->end += 3; + } else { + narrow_font->end = narrow_font->start + + ((character_count / 0x5e) << 8) + (character_count % 0x5e) - 1; + if (0x7e < (narrow_font->end & 0xff)) + narrow_font->end += 0xa3; + } + + if (book->character_code == EB_CHARCODE_ISO8859_1) { + if ((narrow_font->start & 0xff) < 0x01 + || 0xfe < (narrow_font->start & 0xff) + || narrow_font->start < 0x0001 + || 0x1efe < narrow_font->end) { + error_code = EB_ERR_UNEXP_FONT; + goto failed; + } + } else { + if ((narrow_font->start & 0xff) < 0x21 + || 0x7e < (narrow_font->start & 0xff) + || narrow_font->start < 0xa121 + || 0xfe7e < narrow_font->end) { + error_code = EB_ERR_UNEXP_FONT; + goto failed; + } + } + + succeeded: + LOG(("out: eb_load_narrow_font_header()", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_load_narrow_font_header()", eb_error_string(error_code))); + return error_code; +} + + +/* + * Read font glyph data. + */ +EB_Error_Code +eb_load_narrow_font_glyphs(EB_Book *book, EB_Font_Code font_code) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Font *narrow_font; + int character_count; + size_t glyph_size; + size_t total_glyph_size; + Zio *zio; + + LOG(("in: eb_load_narrow_font_glyphs(book=%d, font_code=%d)", + (int)book->code, (int)font_code)); + + subbook = book->subbook_current; + narrow_font = subbook->narrow_fonts + font_code; + zio = &narrow_font->zio; + + if (narrow_font->glyphs != NULL) + goto succeeded; + + /* + * Calculate size of glyph data (`total_glyph_size'). + * + * Set the number of local defined characters to `character_count'. + * Set the number of character glpyhs in a page to `page_glyph_count'. + * Set size of glyph data to `total_glyph_size'. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1) { + character_count + = ((narrow_font->end >> 8) - (narrow_font->start >> 8)) * 0xfe + + ((narrow_font->end & 0xff) - (narrow_font->start & 0xff)) + 1; + } else { + character_count + = ((narrow_font->end >> 8) - (narrow_font->start >> 8)) * 0x5e + + ((narrow_font->end & 0xff) - (narrow_font->start & 0xff)) + 1; + } + + eb_narrow_font_size2(font_code, &glyph_size); + total_glyph_size + = (character_count / (1024 / glyph_size)) * 1024 + + (character_count % (1024 / glyph_size)) * glyph_size; + + /* + * Allocate memory for glyph data. + */ + narrow_font->glyphs = (char *) malloc(total_glyph_size); + if (narrow_font->glyphs == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + + /* + * Read glyphs. + */ + if (zio_lseek(zio, (off_t) narrow_font->page * EB_SIZE_PAGE, SEEK_SET) + < 0) { + error_code = EB_ERR_FAIL_SEEK_FONT; + goto failed; + } + if (zio_read(zio, narrow_font->glyphs, total_glyph_size) + != total_glyph_size) { + error_code = EB_ERR_FAIL_READ_FONT; + goto failed; + } + + succeeded: + LOG(("out: eb_load_narrow_font_glyphs()", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_load_narrow_font_glyphs()", eb_error_string(error_code))); + if (narrow_font->glyphs != NULL) { + free(narrow_font->glyphs); + narrow_font->glyphs = NULL; + } + return error_code; +} + + +/* + * Examine whether the current subbook in `book' has a narrow font. + */ +int +eb_have_narrow_font(EB_Book *book) +{ + int i; + + eb_lock(&book->lock); + LOG(("in: eb_have_narrow_font(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * If the narrow font has already set, the subbook has narrow fonts. + */ + if (book->subbook_current->narrow_current != NULL) + goto succeeded; + + /* + * Scan the font table. + */ + for (i = 0; i < EB_MAX_FONTS; i++) { + if (book->subbook_current->narrow_fonts[i].font_code + != EB_FONT_INVALID) + break; + } + + if (EB_MAX_FONTS <= i) + goto failed; + + succeeded: + LOG(("out: eb_have_narrow_font() = %d", 1)); + eb_unlock(&book->lock); + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_narrow_font() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Get width of the font `font_code' in the current subbook of `book'. + */ +EB_Error_Code +eb_narrow_font_width(EB_Book *book, int *width) +{ + EB_Error_Code error_code; + EB_Font_Code font_code; + + eb_lock(&book->lock); + LOG(("in: eb_narrow_font_width(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (book->subbook_current->narrow_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + /* + * Calculate width. + */ + font_code = book->subbook_current->narrow_current->font_code; + error_code = eb_narrow_font_width2(font_code, width); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_narrow_font_width(width=%d) = %s", (int)*width, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *width = 0; + LOG(("out: eb_narrow_font_width() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get width of the font `font_code'. + */ +EB_Error_Code +eb_narrow_font_width2(EB_Font_Code font_code, int *width) +{ + EB_Error_Code error_code; + + LOG(("in: eb_narrow_font_width2(font_code=%d)", (int)font_code)); + + switch (font_code) { + case EB_FONT_16: + *width = EB_WIDTH_NARROW_FONT_16; + break; + case EB_FONT_24: + *width = EB_WIDTH_NARROW_FONT_24; + break; + case EB_FONT_30: + *width = EB_WIDTH_NARROW_FONT_30; + break; + case EB_FONT_48: + *width = EB_WIDTH_NARROW_FONT_48; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_narrow_font_width2(width=%d) = %s", *width, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *width = 0; + LOG(("out: eb_narrow_font_width2() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Get the bitmap size of the font `font_code' in the current subbook + * of `book'. + */ +EB_Error_Code +eb_narrow_font_size(EB_Book *book, size_t *size) +{ + EB_Error_Code error_code; + EB_Font_Code font_code; + int width; + int height; + + eb_lock(&book->lock); + LOG(("in: eb_narrow_font_size(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (book->subbook_current->narrow_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + /* + * Calculate size. + */ + font_code = book->subbook_current->narrow_current->font_code; + error_code = eb_narrow_font_width2(font_code, &width); + if (error_code != EB_SUCCESS) + goto failed; + error_code = eb_font_height2(font_code, &height); + if (error_code != EB_SUCCESS) + goto failed; + *size = (width / 8) * height; + + LOG(("out: eb_narrow_font_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_narrow_font_size() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get the bitmap size of a character in `font_code' of the current + * subbook. + */ +EB_Error_Code +eb_narrow_font_size2(EB_Font_Code font_code, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_narrow_font_size2(font_code=%d)", (int)font_code)); + + switch (font_code) { + case EB_FONT_16: + *size = EB_SIZE_NARROW_FONT_16; + break; + case EB_FONT_24: + *size = EB_SIZE_NARROW_FONT_24; + break; + case EB_FONT_30: + *size = EB_SIZE_NARROW_FONT_30; + break; + case EB_FONT_48: + *size = EB_SIZE_NARROW_FONT_48; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_narrow_font_size2(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_narrow_font_size2() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Get the character number of the start of the narrow font of the current + * subbook in `book'. + */ +EB_Error_Code +eb_narrow_font_start(EB_Book *book, int *start) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_narrow_font_start(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (book->subbook_current->narrow_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + *start = book->subbook_current->narrow_current->start; + + LOG(("out: eb_narrow_font_start(start=%d) = %s", *start, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_narrow_font_start() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get the character number of the end of the narrow font of the current + * subbook in `book'. + */ +EB_Error_Code +eb_narrow_font_end(EB_Book *book, int *end) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_narrow_font_end(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (book->subbook_current->narrow_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + *end = book->subbook_current->narrow_current->end; + + LOG(("out: eb_narrow_font_end(end=%d) = %s", *end, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_narrow_font_end() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get bitmap data of the character with character number `character_number' + * in the current narrow font of the current subbook in `book'. + */ +EB_Error_Code +eb_narrow_font_character_bitmap(EB_Book *book, int character_number, + char *bitmap) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_narrow_font_character_bitmap(book=%d, character_number=%d)", + (int)book->code, character_number)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (book->subbook_current->narrow_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + if (book->character_code == EB_CHARCODE_ISO8859_1) { + error_code = eb_narrow_character_bitmap_latin(book, character_number, + bitmap); + } else { + error_code = eb_narrow_character_bitmap_jis(book, character_number, + bitmap); + } + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_narrow_font_character_bitmap() = %s", + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *bitmap = '\0'; + LOG(("out: eb_narrow_font_character_bitmap() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get bitmap data of the character with character number `character_number' + * in the current narrow font of the current subbook in `book'. + */ +static EB_Error_Code +eb_narrow_character_bitmap_jis(EB_Book *book, int character_number, + char *bitmap) +{ + EB_Error_Code error_code; + EB_Font *narrow_current; + int start; + int end; + int character_index; + off_t offset; + size_t size; + Zio *zio; + + LOG(("in: eb_narrow_font_character_bitmap_jis(book=%d, \ +character_number=%d)", + (int)book->code, character_number)); + + start = book->subbook_current->narrow_current->start; + end = book->subbook_current->narrow_current->end; + narrow_current = book->subbook_current->narrow_current; + + /* + * Check for `character_number'. Is it in a range of bitmaps? + * This test works correctly even when the font doesn't exist in + * the current subbook because `start' and `end' have set to -1 + * in the case. + */ + if (character_number < start + || end < character_number + || (character_number & 0xff) < 0x21 + || 0x7e < (character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Calculate the size and the location of bitmap data. + */ + error_code = eb_narrow_font_size(book, &size); + if (error_code != EB_SUCCESS) + goto failed; + + character_index = ((character_number >> 8) - (start >> 8)) * 0x5e + + ((character_number & 0xff) - (start & 0xff)); + offset + = (character_index / (1024 / size)) * 1024 + + (character_index % (1024 / size)) * size; + + /* + * Read bitmap data. + */ + if (narrow_current->glyphs == NULL) { + zio = &narrow_current->zio; + + if (zio_lseek(zio, + (off_t) narrow_current->page * EB_SIZE_PAGE + offset, + SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_FONT; + goto failed; + } + if (zio_read(zio, bitmap, size) != size) { + error_code = EB_ERR_FAIL_READ_FONT; + goto failed; + } + } else { + memcpy(bitmap, narrow_current->glyphs + offset, size); + } + + LOG(("out: eb_narrow_font_character_bitmap_jis() = %s", + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *bitmap = '\0'; + LOG(("out: eb_narrow_font_character_bitmap_jis() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Get bitmap data of the character with character number `character_number' + * in the current narrow font of the current subbook in `book'. + */ +static EB_Error_Code +eb_narrow_character_bitmap_latin(EB_Book *book, int character_number, + char *bitmap) +{ + EB_Error_Code error_code; + EB_Font *narrow_current; + int start; + int end; + int character_index; + off_t offset; + size_t size; + Zio *zio; + + LOG(("in: eb_narrow_font_character_bitmap_latin(book=%d, \ +character_number=%d)", + (int)book->code, character_number)); + + start = book->subbook_current->narrow_current->start; + end = book->subbook_current->narrow_current->end; + narrow_current = book->subbook_current->narrow_current; + + /* + * Check for `ch'. Is it in a range of bitmaps? + * This test works correctly even when the font doesn't exist in + * the current subbook because `start' and `end' have set to -1 + * in the case. + */ + if (character_number < start + || end < character_number + || (character_number & 0xff) < 0x01 + || 0xfe < (character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Calculate the size and the location of bitmap data. + */ + error_code = eb_narrow_font_size(book, &size); + if (error_code != EB_SUCCESS) + goto failed; + + character_index = ((character_number >> 8) - (start >> 8)) * 0xfe + + ((character_number & 0xff) - (start & 0xff)); + offset + = (character_index / (1024 / size)) * 1024 + + (character_index % (1024 / size)) * size; + + /* + * Read bitmap data. + */ + if (narrow_current->glyphs == NULL) { + zio = &narrow_current->zio; + + if (zio_lseek(zio, + (off_t) narrow_current->page * EB_SIZE_PAGE + offset, + SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_FONT; + goto failed; + } + if (zio_read(zio, bitmap, size) != size) { + error_code = EB_ERR_FAIL_READ_FONT; + goto failed; + } + } else { + memcpy(bitmap, narrow_current->glyphs + offset, size); + } + + LOG(("out: eb_narrow_font_character_bitmap_latin() = %s", + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *bitmap = '\0'; + LOG(("out: eb_narrow_font_character_bitmap_latin() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Return next `n'th character number from `character_number'. + */ +EB_Error_Code +eb_forward_narrow_font_character(EB_Book *book, int n, int *character_number) +{ + EB_Error_Code error_code; + int start; + int end; + int i; + + if (n < 0) + return eb_backward_narrow_font_character(book, -n, character_number); + + eb_lock(&book->lock); + LOG(("in: eb_forward_narrow_font_character(book=%d, n=%d, \ +character_number=%d)", + (int)book->code, n, *character_number)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (book->subbook_current->narrow_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + start = book->subbook_current->narrow_current->start; + end = book->subbook_current->narrow_current->end; + + if (book->character_code == EB_CHARCODE_ISO8859_1) { + /* + * Check for `*character_number'. (ISO 8859 1) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x01 + || 0xfe < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Get character number. (ISO 8859 1) + */ + for (i = 0; i < n; i++) { + if (0xfe <= (*character_number & 0xff)) + *character_number += 3; + else + *character_number += 1; + if (end < *character_number) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + } + } else { + /* + * Check for `*character_number'. (JIS X 0208) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x21 + || 0x7e < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Get character number. (JIS X 0208) + */ + for (i = 0; i < n; i++) { + if (0x7e <= (*character_number & 0xff)) + *character_number += 0xa3; + else + *character_number += 1; + if (end < *character_number) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + } + } + + LOG(("out: eb_forward_narrow_font_character(character_number=%d) = %s", + *character_number, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *character_number = -1; + LOG(("out: eb_forward_narrow_font_character() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return previous `n'th character number from `*character_number'. + */ +EB_Error_Code +eb_backward_narrow_font_character(EB_Book *book, int n, int *character_number) +{ + EB_Error_Code error_code; + int start; + int end; + int i; + + if (n < 0) + return eb_forward_narrow_font_character(book, -n, character_number); + + eb_lock(&book->lock); + LOG(("in: eb_backward_narrow_font_character(book=%d, n=%d, \ +character_number=%d)", + (int)book->code, n, *character_number)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The narrow font must exist in the current subbook. + */ + if (book->subbook_current->narrow_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + start = book->subbook_current->narrow_current->start; + end = book->subbook_current->narrow_current->end; + + if (book->character_code == EB_CHARCODE_ISO8859_1) { + /* + * Check for `*character_number'. (ISO 8859 1) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x01 + || 0xfe < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Get character number. (ISO 8859 1) + */ + for (i = 0; i < n; i++) { + if ((*character_number & 0xff) <= 0x01) + *character_number -= 3; + else + *character_number -= 1; + if (*character_number < start) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + } + } else { + /* + * Check for `*character_number'. (JIS X 0208) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x21 + || 0x7e < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Get character number. (JIS X 0208) + */ + for (i = 0; i < n; i++) { + if ((*character_number & 0xff) <= 0x21) + *character_number -= 0xa3; + else + *character_number -= 1; + if (*character_number < start) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + } + } + + LOG(("out: eb_backward_narrow_font_character(character_number=%d) = %s", + *character_number, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *character_number = -1; + LOG(("out: eb_backward_narrow_font_character() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/narwfont.lo b/lib/ebu/ebu/narwfont.lo new file mode 100644 index 0000000..11f767a --- /dev/null +++ b/lib/ebu/ebu/narwfont.lo @@ -0,0 +1,12 @@ +# narwfont.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/narwfont.o' + +# Name of the non-PIC object +non_pic_object='narwfont.o' + diff --git a/lib/ebu/ebu/readtext.c b/lib/ebu/ebu/readtext.c new file mode 100644 index 0000000..604478c --- /dev/null +++ b/lib/ebu/ebu/readtext.c @@ -0,0 +1,2288 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "text.h" +#include "build-post.h" + +/* + * The maximum number of arguments for an escape sequence. + */ +#define EB_MAX_ARGV 7 + +/* + * Read next when the length of cached data is shorter than this value. + */ +#define SIZE_FEW_REST 48 + +/* + * Special skip-code that represents `no skip-code is set'. + */ +#define SKIP_CODE_NONE -1 + +/* + * Cache data buffer. + */ +static char cache_buffer[EB_SIZE_PAGE]; + +/* + * Book code of which `cache_buffer' records data. + */ +static EB_Book_Code cache_book_code = EB_BOOK_NONE; + +/* + * Location of cache data loaded in `cache_buffer'. + */ +static off_t cache_location; + +/* + * Length of cache data loaded in `cache_buffer'. + */ +static size_t cache_length; + +/* + * Null hook. + */ +static const EB_Hook null_hook = {EB_HOOK_NULL, NULL}; + +/* + * Mutex for cache variables. + */ +#ifdef ENABLE_PTHREAD +static pthread_mutex_t cache_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif + +/* + * Unexported functions. + */ +static EB_Error_Code eb_read_text_internal(EB_Book *book, + EB_Appendix *appendix, EB_Hookset *hookset, void *container, + size_t text_max_length, char *text, ssize_t *text_length, + int forward_only); +static int eb_is_stop_code(EB_Book *book, EB_Appendix *appendix, + unsigned int code0, unsigned int code1); + + +/* + * Initialize text context of `book'. + */ +void +eb_initialize_text_context(EB_Book *book) +{ + LOG(("in: eb_initialize_text_context(book=%d)", (int)book->code)); + + book->text_context.code = EB_TEXT_INVALID; + book->text_context.location = -1; + book->text_context.out = NULL; + book->text_context.out_rest_length = 0; + book->text_context.unprocessed = NULL; + book->text_context.unprocessed_size = 0; + book->text_context.out_step = 0; + book->text_context.narrow_flag = 0; + book->text_context.printable_count = 0; + book->text_context.file_end_flag = 0; + book->text_context.text_status = EB_TEXT_STATUS_CONTINUED; + book->text_context.skip_code = SKIP_CODE_NONE; + book->text_context.auto_stop_code = -1; + book->text_context.candidate[0] = '\0'; + book->text_context.is_candidate = 0; + book->text_context.ebxac_gaiji_flag = 0; + + LOG(("out: eb_initialize_text_context()")); +} + + +/* + * Finalize text context of `book'. + */ +void +eb_finalize_text_context(EB_Book *book) +{ + LOG(("in: eb_finalize_text_context(book=%d)", (int)book->code)); + + if (book->text_context.unprocessed != NULL) + free(book->text_context.unprocessed); + + LOG(("out: eb_finalize_text_context()")); +} + + +/* + * Reset text context of `book'. + * Note that `contexxt_code' and `context_location' are unchanged. + */ +void +eb_reset_text_context(EB_Book *book) +{ + LOG(("in: eb_reset_text_context(book=%d)", (int)book->code)); + + eb_finalize_text_context(book); + + book->text_context.out = NULL; + book->text_context.out_rest_length = 0; + book->text_context.unprocessed = NULL; + book->text_context.unprocessed_size = 0; + book->text_context.out_step = 0; + book->text_context.narrow_flag = 0; + book->text_context.printable_count = 0; + book->text_context.file_end_flag = 0; + book->text_context.text_status = EB_TEXT_STATUS_CONTINUED; + book->text_context.skip_code = SKIP_CODE_NONE; + book->text_context.auto_stop_code = -1; + book->text_context.candidate[0] = '\0'; + book->text_context.is_candidate = 0; + book->text_context.ebxac_gaiji_flag = 0; + + LOG(("out: eb_reset_text_context()")); +} + + +/* + * Invalidate text context of `book'. + */ +void +eb_invalidate_text_context(EB_Book *book) +{ + LOG(("in: eb_invalidate_text_context(book=%d)", (int)book->code)); + + eb_finalize_text_context(book); + eb_initialize_text_context(book); + book->text_context.code = EB_TEXT_INVALID; + + LOG(("out: eb_invalidate_text_context()")); +} + + +/* + * Reposition the offset of the subbook file. + */ +EB_Error_Code +eb_seek_text(EB_Book *book, const EB_Position *position) +{ + EB_Error_Code error_code; + + pthread_mutex_lock(&cache_mutex); + eb_lock(&book->lock); + LOG(("in: eb_seek_text(book=%d, position={%d,%d})", (int)book->code, + position->page, position->offset)); + + /* + * Current subbook must have been set and START file must exist. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_TEXT; + goto failed; + } + + if (position->page <= 0 || position->offset < 0) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + + /* + * Set text-context variables. + */ + eb_reset_text_context(book); + book->text_context.code = EB_TEXT_SEEKED; + book->text_context.location = ((off_t) position->page - 1) * EB_SIZE_PAGE + + position->offset; + + /* + * Unlock cache data and the book. + */ + LOG(("out: eb_seek_text() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + pthread_mutex_unlock(&cache_mutex); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_invalidate_text_context(book); + LOG(("out: eb_seek_text() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + pthread_mutex_unlock(&cache_mutex); + return error_code; +} + + +/* + * Get the current text position of the subbook file. + */ +EB_Error_Code +eb_tell_text(EB_Book *book, EB_Position *position) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_tell_text(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set and START file must exist. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_TEXT; + goto failed; + } + + position->page = book->text_context.location / EB_SIZE_PAGE + 1; + position->offset = book->text_context.location % EB_SIZE_PAGE; + + LOG(("out: eb_seek_text(position={%d,%d}) = %s", + position->page, position->offset, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_invalidate_text_context(book); + LOG(("out: eb_seek_text() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get text in the current subbook in `book'. + */ +EB_Error_Code +eb_read_text(EB_Book *book, EB_Appendix *appendix, EB_Hookset *hookset, + void *container, size_t text_max_length, char *text, ssize_t *text_length) +{ + EB_Error_Code error_code; + const EB_Hook *hook; + EB_Position position; + + eb_lock(&book->lock); + if (appendix != NULL) + eb_lock(&appendix->lock); + if (hookset != NULL) + eb_lock(&hookset->lock); + LOG(("in: eb_read_text(book=%d, appendix=%d, text_max_length=%ld)", + (int)book->code, (appendix != NULL) ? (int)appendix->code : 0, + (long)text_max_length)); + + /* + * Current subbook must have been set and START file must exist. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_TEXT; + goto failed; + } + + /* + * Use `eb_default_hookset' when `hookset' is `NULL'. + */ + if (hookset == NULL) + hookset = &eb_default_hookset; + + /* + * Set text mode to `text'. + */ + if (book->text_context.code == EB_TEXT_INVALID) { + error_code = EB_ERR_NO_PREV_SEEK; + goto failed; + } else if (book->text_context.code == EB_TEXT_SEEKED) { + eb_tell_text(book, &position); + eb_reset_text_context(book); + + if (book->subbook_current->menu.start_page <= position.page + && position.page <= book->subbook_current->menu.end_page) + book->text_context.code = EB_TEXT_OPTIONAL_TEXT; + else if (book->subbook_current->image_menu.start_page <= position.page + && position.page <= book->subbook_current->image_menu.end_page) + book->text_context.code = EB_TEXT_OPTIONAL_TEXT; + else if (book->subbook_current->copyright.start_page <= position.page + && position.page <= book->subbook_current->copyright.end_page) + book->text_context.code = EB_TEXT_OPTIONAL_TEXT; + else + book->text_context.code = EB_TEXT_MAIN_TEXT; + + hook = hookset->hooks + EB_HOOK_INITIALIZE; + if (hook->function != NULL) { + error_code = hook->function(book, appendix, container, + EB_HOOK_INITIALIZE, 0, NULL); + if (error_code != EB_SUCCESS) + goto failed; + } + } else if (book->text_context.code != EB_TEXT_MAIN_TEXT + && book->text_context.code != EB_TEXT_OPTIONAL_TEXT) { + error_code = EB_ERR_DIFF_CONTENT; + goto failed; + } + + error_code = eb_read_text_internal(book, appendix, hookset, container, + text_max_length, text, text_length, 0); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_read_text(text_length=%ld) = %s", (long)*text_length, + eb_error_string(EB_SUCCESS))); + if (hookset != &eb_default_hookset) + eb_unlock(&hookset->lock); + if (appendix != NULL) + eb_unlock(&appendix->lock); + eb_unlock(&book->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_invalidate_text_context(book); + LOG(("out: eb_read_text() = %s", eb_error_string(error_code))); + if (hookset != &eb_default_hookset) + eb_unlock(&hookset->lock); + if (appendix != NULL) + eb_unlock(&appendix->lock); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get text in the current subbook in `book'. + */ +EB_Error_Code +eb_read_heading(EB_Book *book, EB_Appendix *appendix, EB_Hookset *hookset, + void *container, size_t text_max_length, char *text, ssize_t *text_length) +{ + EB_Error_Code error_code; + const EB_Hook *hook; + + eb_lock(&book->lock); + if (appendix != NULL) + eb_lock(&appendix->lock); + if (hookset != NULL) + eb_lock(&hookset->lock); + LOG(("in: eb_read_heading(book=%d, appendix=%d, text_max_length=%ld)", + (int)book->code, (appendix != NULL) ? (int)appendix->code : 0, + (long)text_max_length)); + + /* + * Current subbook must have been set and START file must exist. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_TEXT; + goto failed; + } + + /* + * Use `eb_default_hookset' when `hookset' is `NULL'. + */ + if (hookset == NULL) + hookset = &eb_default_hookset; + + /* + * Set text mode to `heading'. + */ + if (book->text_context.code == EB_TEXT_INVALID) { + error_code = EB_ERR_NO_PREV_SEEK; + goto failed; + } else if (book->text_context.code == EB_TEXT_SEEKED) { + eb_reset_text_context(book); + book->text_context.code = EB_TEXT_HEADING; + + hook = hookset->hooks + EB_HOOK_INITIALIZE; + if (hook->function != NULL) { + error_code = hook->function(book, appendix, container, + EB_HOOK_INITIALIZE, 0, NULL); + if (error_code != EB_SUCCESS) + goto failed; + } + } else if (book->text_context.code != EB_TEXT_HEADING) { + error_code = EB_ERR_DIFF_CONTENT; + goto failed; + } + + error_code = eb_read_text_internal(book, appendix, hookset, container, + text_max_length, text, text_length, 0); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_read_heading(text_length=%ld) = %s", (long)*text_length, + eb_error_string(EB_SUCCESS))); + if (hookset != &eb_default_hookset) + eb_unlock(&hookset->lock); + if (appendix != NULL) + eb_unlock(&appendix->lock); + eb_unlock(&book->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_invalidate_text_context(book); + LOG(("out: eb_read_heading() = %s", eb_error_string(error_code))); + if (hookset != &eb_default_hookset) + eb_unlock(&hookset->lock); + if (appendix != NULL) + eb_unlock(&appendix->lock); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Read data from the subbook file directly. + */ +EB_Error_Code +eb_read_rawtext(EB_Book *book, size_t text_max_length, char *text, + ssize_t *text_length) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_read_rawtext(book=%d, text_max_length=%ld)", + (int)book->code, (long)text_max_length)); + + /* + * Current subbook must have been set and START file must exist. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_TEXT; + goto failed; + } + + /* + * Set text mode to `rawtext'. + */ + if (book->text_context.code == EB_TEXT_INVALID) { + error_code = EB_ERR_NO_PREV_SEEK; + goto failed; + } else if (book->text_context.code == EB_TEXT_SEEKED) { + eb_reset_text_context(book); + book->text_context.code = EB_TEXT_RAWTEXT; + } else if (book->text_context.code != EB_TEXT_RAWTEXT) { + error_code = EB_ERR_DIFF_CONTENT; + goto failed; + } + + /* + * Seek START file and read data. + */ + if (zio_lseek(&book->subbook_current->text_zio, + book->text_context.location, SEEK_SET) == -1) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + *text_length = zio_read(&book->subbook_current->text_zio, text, + text_max_length); + book->text_context.location += *text_length; + if (*text_length < 0) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + LOG(("out: eb_read_rawtext(text_length=%ld) = %s", (long)*text_length, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *text_length = -1; + eb_invalidate_text_context(book); + LOG(("out: eb_read_rawtext() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get text or heading. + */ +static EB_Error_Code +eb_read_text_internal(EB_Book *book, EB_Appendix *appendix, + EB_Hookset *hookset, void *container, size_t text_max_length, char *text, + ssize_t *text_length, int forward_only) +{ + EB_Error_Code error_code; + EB_Text_Context *context; + unsigned char c1, c2; + char *cache_p; + const EB_Hook *hook; + unsigned char *candidate_p; + size_t candidate_length; + size_t cache_rest_length; + size_t in_step; + unsigned int argv[EB_MAX_ARGV]; + int argc; + + pthread_mutex_lock(&cache_mutex); + LOG(("in: eb_read_text_internal(book=%d, appendix=%d, \ +text_max_length=%ld, forward=%d)", + (int)book->code, (appendix != NULL) ? (int)appendix->code : 0, + (long)text_max_length, forward_only)); + + /* + * Initialize variables. + */ + context = &book->text_context; + context->out = text; + context->out_rest_length = text_max_length; + if (context->is_candidate) { + candidate_length = strlen(context->candidate); + candidate_p = (unsigned char *)context->candidate + candidate_length; + } else { + candidate_length = 0; + candidate_p = NULL; + } + + /* + * If unprocessed string are rest in `context->unprocessed', + * copy them to `context->out'. + */ + if (context->unprocessed != NULL) { + if (!forward_only) { + if (context->out_rest_length < context->unprocessed_size) + goto succeeded; + memcpy(context->out, context->unprocessed, + context->unprocessed_size); + context->out += context->unprocessed_size; + context->out_rest_length -= context->unprocessed_size; + } + free(context->unprocessed); + context->unprocessed = NULL; + context->unprocessed_size = 0; + } + + /* + * Return immediately if text-end-flag has been set. + */ + if (context->text_status != EB_TEXT_STATUS_CONTINUED) + goto succeeded; + + /* + * Check for cache data. + * If cache data is not what we need, discard it. + */ + if (book->code == cache_book_code + && cache_location <= context->location + && context->location < cache_location + cache_length) { + cache_p = cache_buffer + (context->location - cache_location); + cache_rest_length = cache_length + - (context->location - cache_location); + } else { + cache_book_code = EB_BOOK_NONE; + cache_p = cache_buffer; + cache_length = 0; + cache_rest_length = 0; + } + + for (;;) { + in_step = 0; + context->out_step = 0; + argc = 1; + + /* + * If it reaches to the near of the end of the cache buffer, + * then moves remaind cache text to the beginning of the cache + * buffer, and reads a next chunk from a file. + */ + if (cache_rest_length < SIZE_FEW_REST && !context->file_end_flag) { + ssize_t read_result; + + if (0 < cache_rest_length) + memmove(cache_buffer, cache_p, cache_rest_length); + if (zio_lseek(&book->subbook_current->text_zio, + context->location + cache_rest_length, SEEK_SET) == -1) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + + read_result = zio_read(&book->subbook_current->text_zio, + cache_buffer + cache_rest_length, + EB_SIZE_PAGE - cache_rest_length); + if (read_result < 0) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } else if (read_result != EB_SIZE_PAGE - cache_rest_length) + context->file_end_flag = 1; + + cache_book_code = book->code; + cache_location = context->location; + cache_length = cache_rest_length + read_result; + cache_p = cache_buffer; + cache_rest_length = cache_length; + } + + /* + * Get 1 byte from the buffer. + */ + if (cache_rest_length < 1) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + c1 = eb_uint1(cache_p); + + if (c1 == 0x1f) { + hook = &null_hook; + + /* + * This is escape sequences. + */ + if (cache_rest_length < 2) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argv[0] = eb_uint2(cache_p); + c2 = eb_uint1(cache_p + 1); + + switch (c2) { + case 0x02: + /* beginning of text */ + in_step = 2; + break; + + case 0x03: + /* end of text (don't set `in_step') */ + context->text_status = EB_TEXT_STATUS_HARD_STOP; + if (forward_only) { + error_code = EB_ERR_END_OF_CONTENT; + goto failed; + } + goto succeeded; + + case 0x04: + /* beginning of NARROW */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_BEGIN_NARROW; + context->narrow_flag = 1; + break; + + case 0x05: + /* end of NARROW */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_NARROW; + context->narrow_flag = 0; + break; + + case 0x06: + /* beginning of subscript */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_BEGIN_SUBSCRIPT; + break; + + case 0x07: + /* end of subscript */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_SUBSCRIPT; + break; + + case 0x09: + /* set indent */ + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 2; + argv[1] = eb_uint2(cache_p + 2); + + if (0 < context->printable_count + && context->code == EB_TEXT_MAIN_TEXT) { + if (eb_is_stop_code(book, appendix, argv[0], argv[1])) { + context->text_status = EB_TEXT_STATUS_SOFT_STOP; + goto succeeded; + } + } + + hook = hookset->hooks + EB_HOOK_SET_INDENT; + break; + + case 0x0a: + /* newline */ + in_step = 2; + if (context->code == EB_TEXT_HEADING) { + context->text_status = EB_TEXT_STATUS_SOFT_STOP; + context->location += in_step; + goto succeeded; + } + hook = hookset->hooks + EB_HOOK_NEWLINE; + break; + + case 0x0b: + /* beginning of unicode */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_BEGIN_UNICODE; + break; + + case 0x0c: + /* end of unicode */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_UNICODE; + break; + + case 0x0e: + /* beginning of superscript */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_BEGIN_SUPERSCRIPT; + break; + + case 0x0f: + /* end of superscript */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_SUPERSCRIPT; + break; + + case 0x10: + /* beginning of newline prohibition */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_BEGIN_NO_NEWLINE; + break; + + case 0x11: + /* end of newline prohibition */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_NO_NEWLINE; + break; + + case 0x12: + /* beginning of emphasis */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_BEGIN_EMPHASIS; + break; + + case 0x13: + /* end of emphasis */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_EMPHASIS; + break; + + case 0x14: + /* beginning of color chart */ + /* argv[1] is number of color (1-). */ + argc = 2; + if(eb_uint2(cache_p + 4) == 0x1f15) { + char in_buffer[2]; + if (eb_uint1(cache_p + 2) != 0x1e) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + in_buffer[0] = 0; + in_buffer[1] = *(cache_p + 3); + in_step = 4; + argv[1] = eb_bcd2(in_buffer); + } else if(eb_uint2(cache_p + 6) == 0x1f15) { + char in_buffer[2]; + if (eb_uint1(cache_p + 2) != 0x1e || + eb_uint1(cache_p + 4) != 0x1e) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + in_buffer[0] = *(cache_p + 3); + in_buffer[1] = *(cache_p + 5); + in_step = 6; + argv[1] = eb_bcd2(in_buffer); + } else { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + hook = hookset->hooks + EB_HOOK_BEGIN_COLOR_CHART; + break; + + case 0x15: + /* end of color chart */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_COLOR_CHART; + break; + + case 0x1a: case 0x1b: case 0x1e: case 0x1f: + /* emphasis; described in JIS X 4081-1996 */ + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + /* Some old EB books don't take an argument. */ + if (book->disc_code != EB_DISC_EPWING + && eb_uint1(cache_p + 2) >= 0x1f) + in_step = 2; + break; + + case 0x1c: + if (book->character_code == EB_CHARCODE_JISX0208_GB2312) { + /* beginning of EBXA-C gaiji */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_BEGIN_EBXAC_GAIJI; + context->ebxac_gaiji_flag = 1; + } else { + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + /* Some old EB books don't take an argument. */ + if (book->disc_code != EB_DISC_EPWING + && eb_uint1(cache_p + 2) >= 0x1f) + in_step = 2; + } + break; + + case 0x1d: + if (book->character_code == EB_CHARCODE_JISX0208_GB2312) { + /* end of EBXA-C gaiji */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_EBXAC_GAIJI; + context->ebxac_gaiji_flag = 0; + } else { + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + /* Some old EB books don't take an argument. */ + if (book->disc_code != EB_DISC_EPWING + && eb_uint1(cache_p + 2) >= 0x1f) + in_step = 2; + } + break; + + case 0x32: + /* beginning of reference to monochrome graphic */ + in_step = 2; + argc = 4; + argv[1] = 0; + argv[2] = 0; + argv[3] = 0; + hook = hookset->hooks + EB_HOOK_BEGIN_MONO_GRAPHIC; + break; + + case 0x39: + /* beginning of MPEG movie */ + in_step = 46; + argc = 6; + argv[1] = eb_uint4(cache_p + 2); + argv[2] = eb_uint4(cache_p + 22); + argv[3] = eb_uint4(cache_p + 26); + argv[4] = eb_uint4(cache_p + 30); + argv[5] = eb_uint4(cache_p + 34); + hook = hookset->hooks + EB_HOOK_BEGIN_MPEG; + break; + + case 0x3c: + /* beginning of inline color graphic */ + in_step = 20; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 4; + argv[1] = eb_uint2(cache_p + 2); + argv[2] = eb_bcd4(cache_p + 14); + argv[3] = eb_bcd2(cache_p + 18); + if (argv[1] >> 8 == 0x00) + hook = hookset->hooks + EB_HOOK_BEGIN_IN_COLOR_BMP; + else + hook = hookset->hooks + EB_HOOK_BEGIN_IN_COLOR_JPEG; + break; + + case 0x35: case 0x36: case 0x37: case 0x38: case 0x3a: + case 0x3b: case 0x3d: case 0x3e: case 0x3f: + in_step = 2; + context->skip_code = eb_uint1(cache_p + 1) + 0x20; + break; + + case 0x41: + /* beginning of keyword */ + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 2; + argv[1] = eb_uint2(cache_p + 2); + + if (0 < context->printable_count + && context->code == EB_TEXT_MAIN_TEXT) { + if (eb_is_stop_code(book, appendix, argv[0], argv[1])) { + context->text_status = EB_TEXT_STATUS_SOFT_STOP; + goto succeeded; + } + } + if (context->auto_stop_code < 0) + context->auto_stop_code = eb_uint2(cache_p + 2); + + hook = hookset->hooks + EB_HOOK_BEGIN_KEYWORD; + break; + + case 0x42: + /* beginning of reference */ + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + if (eb_uint1(cache_p + 2) != 0x00) + in_step -= 2; + hook = hookset->hooks + EB_HOOK_BEGIN_REFERENCE; + break; + + case 0x43: + /* beginning of an entry of a candidate */ + in_step = 2; + if (context->skip_code == SKIP_CODE_NONE) { + context->candidate[0] = '\0'; + context->is_candidate = 1; + candidate_length = 0; + candidate_p = (unsigned char *)context->candidate; + } + hook = hookset->hooks + EB_HOOK_BEGIN_CANDIDATE; + break; + + case 0x44: + /* beginning of monochrome graphic */ + in_step = 12; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 4; + argv[1] = eb_uint2(cache_p + 2); + argv[2] = eb_bcd4(cache_p + 4); + argv[3] = eb_bcd4(cache_p + 8); + if (0 < argv[2] && 0 < argv[3]) + hook = hookset->hooks + EB_HOOK_BEGIN_MONO_GRAPHIC; + break; + + case 0x45: + /* beginning of graphic block */ + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + if (eb_uint1(cache_p + 2) != 0x1f) { + argc = 2; + argv[1] = eb_bcd4(cache_p + 2); + } else { + in_step = 2; + } + break; + + case 0x4a: + /* beginning of WAVE sound */ + in_step = 18; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 6; + argv[1] = eb_uint4(cache_p + 2); + argv[2] = eb_bcd4(cache_p + 6); + argv[3] = eb_bcd2(cache_p + 10); + argv[4] = eb_bcd4(cache_p + 12); + argv[5] = eb_bcd2(cache_p + 16); + hook = hookset->hooks + EB_HOOK_BEGIN_WAVE; + break; + + case 0x4b: + /* beginning of paged reference */ + in_step = 8; + if (cache_rest_length < in_step + 2) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 3; + argv[1] = eb_bcd4(cache_p + 2); + argv[2] = eb_bcd2(cache_p + 6); + if (cache_p[8]==0x1f && cache_p[9]==0x6b) { + context->text_status = EB_TEXT_STATUS_SOFT_STOP; + hook = hookset->hooks + EB_HOOK_GRAPHIC_REFERENCE; + in_step = 10; + } else { + hook = hookset->hooks + EB_HOOK_BEGIN_GRAPHIC_REFERENCE; + } + break; + + case 0x4c: + /* beginning of image page */ + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + hook = hookset->hooks + EB_HOOK_BEGIN_IMAGE_PAGE; + break; + + case 0x4d: + /* beginning of color graphic (BMP or JPEG) */ + in_step = 20; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 4; + argv[1] = eb_uint2(cache_p + 2); + argv[2] = eb_bcd4(cache_p + 14); + argv[3] = eb_bcd2(cache_p + 18); + if (argv[1] >> 8 == 0x00) + hook = hookset->hooks + EB_HOOK_BEGIN_COLOR_BMP; + else + hook = hookset->hooks + EB_HOOK_BEGIN_COLOR_JPEG; + break; + + case 0x4f: + /* beginning of clickable area */ + in_step = 34; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 7; + argv[1] = eb_bcd2(cache_p + 8); + argv[2] = eb_bcd2(cache_p + 10); + argv[3] = eb_bcd2(cache_p + 12); + argv[4] = eb_bcd2(cache_p + 14); + argv[5] = eb_bcd4(cache_p + 28); + argv[6] = eb_bcd2(cache_p + 32); + hook = hookset->hooks + EB_HOOK_BEGIN_CLICKABLE_AREA; + break; + + case 0x49: case 0x4e: + + in_step = 2; + context->skip_code = eb_uint1(cache_p + 1) + 0x20; + break; + + case 0x52: + /* end of reference to monochrome graphic */ + in_step = 8; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 3; + argv[1] = eb_bcd4(cache_p + 2); + argv[2] = eb_bcd2(cache_p + 6); + hook = hookset->hooks + EB_HOOK_END_MONO_GRAPHIC; + break; + + case 0x53: + /* end of EB sound */ + in_step = 10; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + break; + + case 0x59: + /* end of MPEG movie */ + in_step = 2; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + hook = hookset->hooks + EB_HOOK_END_MPEG; + break; + + case 0x5c: + /* end of inline color graphic */ + in_step = 2; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + hook = hookset->hooks + EB_HOOK_END_IN_COLOR_GRAPHIC; + break; + + case 0x61: + /* end of keyword */ + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_KEYWORD; + break; + + case 0x62: + /* end of reference */ + in_step = 8; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 3; + argv[1] = eb_bcd4(cache_p + 2); + argv[2] = eb_bcd2(cache_p + 6); + hook = hookset->hooks + EB_HOOK_END_REFERENCE; + break; + + case 0x63: + /* end of an entry of a candidate */ + in_step = 8; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 3; + argv[1] = eb_bcd4(cache_p + 2); + argv[2] = eb_bcd2(cache_p + 6); + if (argv[1] == 0 && argv[2] == 0) + hook = hookset->hooks + EB_HOOK_END_CANDIDATE_LEAF; + else + hook = hookset->hooks + EB_HOOK_END_CANDIDATE_GROUP; + break; + + case 0x64: + /* end of monochrome graphic */ + in_step = 8; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 3; + argv[1] = eb_bcd4(cache_p + 2); + argv[2] = eb_bcd2(cache_p + 6); + hook = hookset->hooks + EB_HOOK_END_MONO_GRAPHIC; + break; + + case 0x6b: + /* end of paged reference */ + in_step = 2; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + hook = hookset->hooks + EB_HOOK_END_GRAPHIC_REFERENCE; + break; + + case 0x6a: + /* end of WAVE sound */ + in_step = 2; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + hook = hookset->hooks + EB_HOOK_END_WAVE; + break; + + case 0x6c: + /* end of image page */ + in_step = 2; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + context->text_status = EB_TEXT_STATUS_SOFT_STOP; + hook = hookset->hooks + EB_HOOK_END_IMAGE_PAGE; + break; + + case 0x6d: + /* end of color graphic (BMP or JPEG) */ + in_step = 2; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + hook = hookset->hooks + EB_HOOK_END_COLOR_GRAPHIC; + break; + + case 0x6f: + /* end of clickable area */ + in_step = 2; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + hook = hookset->hooks + EB_HOOK_END_CLICKABLE_AREA; + break; + + case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: + case 0x76: case 0x77: case 0x78: case 0x79: case 0x7a: case 0x7b: + case 0x7c: case 0x7d: case 0x7e: case 0x7f: + case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: + case 0x86: case 0x87: case 0x88: case 0x89: case 0x8a: case 0x8b: + case 0x8c: case 0x8d: case 0x8e: case 0x8f: + in_step = 2; + context->skip_code = eb_uint1(cache_p + 1) + 0x20; + break; + + case 0xd0: + /* halfwidth local character for UTF-8 text */ + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + argv[0] = eb_uint2(cache_p + 2) | 0x8080; + hook = hookset->hooks + EB_HOOK_NARROW_FONT; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + ; /* do nothing */ + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_NARROW_FONT, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + break; + case 0xd1: + /* fullwidth local character for UTF-8 text */ + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + argv[0] = eb_uint2(cache_p + 2) | 0x8080; + hook = hookset->hooks + EB_HOOK_WIDE_FONT; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + ; /* do nothing */ + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_WIDE_FONT, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + case 0xe0: + /* character modification */ + in_step = 4; + if (cache_rest_length < in_step) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + argc = 2; + argv[1] = eb_uint2(cache_p + 2); + hook = hookset->hooks + EB_HOOK_BEGIN_DECORATION; + + /* Some old EB books don't take an argument. */ + if (book->disc_code != EB_DISC_EPWING + && eb_uint1(cache_p + 2) >= 0x1f) { + in_step = 2; + hook = &null_hook; + } + break; + + case 0xe1: + in_step = 2; + hook = hookset->hooks + EB_HOOK_END_DECORATION; + break; + + case 0xe4: case 0xe6: case 0xe8: case 0xea: case 0xec: case 0xee: + case 0xf0: case 0xf2: case 0xf4: case 0xf6: case 0xf8: case 0xfa: + case 0xfc: case 0xfe: + in_step = 2; + context->skip_code = eb_uint1(cache_p + 1) + 0x01; + break; + + default: + in_step = 2; + if (context->skip_code == eb_uint1(cache_p + 1)) + context->skip_code = SKIP_CODE_NONE; + break; + } + + if (context->skip_code == SKIP_CODE_NONE + && hook->function != NULL + && !forward_only) { + error_code = hook->function(book, appendix, container, + hook->code, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + + /* + * Post process. Clean a candidate. + */ + if (c2 == 0x63) { + /* end of an entry of candidate */ + context->is_candidate = 0; + } + + } else if (book->character_code == EB_CHARCODE_ISO8859_1) { + /* + * The book is mainly written in ISO 8859 1. + */ + context->printable_count++; + + if ((0x20 <= c1 && c1 < 0x7f) || (0xa0 <= c1 && c1 <= 0xff)) { + /* + * This is an ISO 8859 1 character. + */ + in_step = 1; + argv[0] = eb_uint1(cache_p); + + if (context->skip_code == SKIP_CODE_NONE) { + if (context->is_candidate + && candidate_length < EB_MAX_WORD_LENGTH) { + *candidate_p++ = c1 | 0x80; + *candidate_p = '\0'; + candidate_length++; + } + + hook = hookset->hooks + EB_HOOK_ISO8859_1; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + error_code = eb_write_text_byte1(book, c1); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_ISO8859_1, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } + } else { + /* + * This is a local character. + */ + if (cache_rest_length < 2) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + in_step = 2; + argv[0] = eb_uint2(cache_p); + if (context->skip_code == SKIP_CODE_NONE) { + hook = hookset->hooks + EB_HOOK_NARROW_FONT; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + error_code = eb_write_text_byte1(book, c1); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_NARROW_FONT, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } + } + + } else if (book->character_code == EB_CHARCODE_UTF8) { + /* + * The book is mainly written in UTF-8. + */ + context->printable_count++; + + if (!(c1 & 0x80)) { + argv[0] = c1; + in_step = 1; + } else if ((cache_rest_length >= 2) && !(c1 & 0x20)) { + argv[0] = ((c1 & 0x1f) << 6) + + ((eb_uint1(cache_p + 1) & 0x3f)); + in_step = 2; + } else if ((cache_rest_length >= 3) && !(c1 & 0x10)) { + argv[0] = ((c1 & 0x0f) << 12) + + ((eb_uint1(cache_p + 1) & 0x3f) << 6) + + ((eb_uint1(cache_p + 2) & 0x3f) ); + in_step = 3; + } else if ((cache_rest_length >= 4) && !(c1 & 0x08)) { + argv[0] = ((c1 & 0x07) << 18) + + ((eb_uint1(cache_p + 1) & 0x3f) << 12) + + ((eb_uint1(cache_p + 2) & 0x3f) << 6) + + ((eb_uint1(cache_p + 3) & 0x3f) ); + in_step = 4; + } else { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + if (context->skip_code == SKIP_CODE_NONE) { + if (context->is_candidate + && candidate_length + in_step <= EB_MAX_WORD_LENGTH) { + memcpy(candidate_p, cache_p, in_step); + candidate_p += in_step; + *candidate_p = '\0'; + candidate_length += in_step; + } + + if (!forward_only) { + if (in_step == 1) { + hook = hookset->hooks + EB_HOOK_ISO8859_1; + if (hook->function == NULL) { + error_code = eb_write_text_byte1(book, c1); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, + container, EB_HOOK_ISO8859_1, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } else { + hook = hookset->hooks + EB_HOOK_UNICODE; + if (hook->function == NULL) { + error_code = eb_write_text(book, cache_p, in_step); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, + container, EB_HOOK_UNICODE, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } + } + } + } else { + /* + * The book is written in JIS X 0208 or JIS X 0208 + GB 2312. + */ + context->printable_count++; + in_step = 2; + + if (cache_rest_length < 2) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + c2 = eb_uint1(cache_p + 1); + + if (context->skip_code != SKIP_CODE_NONE) { + /* nothing to be done. */ + } else if (0x20 < c1 && c1 < 0x7f && 0x20 < c2 && c2 < 0x7f) { + /* + * This is a JIS X 0208 KANJI character. + */ + argv[0] = eb_uint2(cache_p) | 0x8080; + + if (context->is_candidate + && candidate_length < EB_MAX_WORD_LENGTH - 1) { + *candidate_p++ = c1 | 0x80; + *candidate_p++ = c2 | 0x80; + *candidate_p = '\0'; + candidate_length += 2; + } + + if (context->ebxac_gaiji_flag) { + hook = hookset->hooks + EB_HOOK_EBXAC_GAIJI; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + error_code = eb_write_text_byte2(book, c1 | 0x80, + c2 | 0x80); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_EBXAC_GAIJI, 0, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } else if (context->narrow_flag) { + hook = hookset->hooks + EB_HOOK_NARROW_JISX0208; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + error_code = eb_write_text_byte2(book, c1 | 0x80, + c2 | 0x80); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_NARROW_JISX0208, 0, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } else { + hook = hookset->hooks + EB_HOOK_WIDE_JISX0208; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + error_code = eb_write_text_byte2(book, c1 | 0x80, + c2 | 0x80); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_WIDE_JISX0208, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } + } else if (0x20 < c1 && c1 < 0x7f && 0xa0 < c2 && c2 < 0xff) { + /* + * This is a GB 2312 HANJI character. + */ + argv[0] = eb_uint2(cache_p) | 0x8000; + + if (context->is_candidate + && candidate_length < EB_MAX_WORD_LENGTH - 1) { + *candidate_p++ = c1 | 0x80; + *candidate_p++ = c2; + *candidate_p = '\0'; + candidate_length += 2; + } + + hook = hookset->hooks + EB_HOOK_GB2312; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + error_code = eb_write_text_byte2(book, c1 | 0x80, c2); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_GB2312, 0, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } else if (0xa0 < c1 && c1 < 0xff && 0x20 < c2 && c2 < 0x7f) { + /* + * This is a local character. + */ + argv[0] = eb_uint2(cache_p); + + if (context->narrow_flag) { + hook = hookset->hooks + EB_HOOK_NARROW_FONT; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + error_code = eb_write_text_byte2(book, c1, c2); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_NARROW_FONT, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } else { + hook = hookset->hooks + EB_HOOK_WIDE_FONT; + if (forward_only) { + ; /* do nothing */ + } else if (hook->function == NULL) { + error_code = eb_write_text_byte2(book, c1, c2); + if (error_code != EB_SUCCESS) + goto failed; + } else { + error_code = hook->function(book, appendix, container, + EB_HOOK_WIDE_FONT, argc, argv); + if (error_code != EB_SUCCESS) + goto failed; + } + } + } + } + + /* + * Update variables. + */ + cache_p += in_step; + cache_rest_length -= in_step; + context->location += in_step; + in_step = 0; + + /* + * Break if an unprocessed character is remained. + */ + if (context->unprocessed != NULL) + break; + /* + * Break if EB_TEXT_STATUS_SOFT_STOP is set. + */ + if (context->text_status == EB_TEXT_STATUS_SOFT_STOP) + break; + } + + succeeded: + if (!forward_only) { + *text_length = (context->out - text); + *(context->out) = '\0'; + } + + LOG(("out: eb_read_text_internal(text_length=%ld) = %s", + (text_length == NULL) ? 0L : (long)*text_length, + eb_error_string(EB_SUCCESS))); + pthread_mutex_unlock(&cache_mutex); + + return EB_SUCCESS; + + /* + * An error occurs... + * Discard cache if read error occurs. + */ + failed: + if (!forward_only) { + *text_length = -1; + *text = '\0'; + } + if (error_code == EB_ERR_FAIL_READ_TEXT) + cache_book_code = EB_BOOK_NONE; + LOG(("out: eb_read_text_internal() = %s", eb_error_string(error_code))); + pthread_mutex_unlock(&cache_mutex); + return error_code; +} + + +/* + * Check whether an escape sequence is stop-code or not. + */ +static int +eb_is_stop_code(EB_Book *book, EB_Appendix *appendix, unsigned int code0, + unsigned int code1) +{ + int result; + + if (appendix == NULL + || appendix->subbook_current == NULL + || appendix->subbook_current->stop_code0 == 0) { + result = (code0 == 0x1f41 + && code1 == book->text_context.auto_stop_code); + } else { + result = (code0 == appendix->subbook_current->stop_code0 + && code1 == appendix->subbook_current->stop_code1); + } + + return result; +} + + +/* + * Have the current text context reached the end of text? + */ +int +eb_is_text_stopped(EB_Book *book) +{ + int is_stopped = 0; + + eb_lock(book); + LOG(("in: eb_is_text_stopped(book=%d)", (int)book->code)); + + if (book->subbook_current != NULL) { + if (book->text_context.code == EB_TEXT_HEADING + || book->text_context.code == EB_TEXT_MAIN_TEXT + || book->text_context.code == EB_TEXT_OPTIONAL_TEXT) { + if (book->text_context.text_status != EB_TEXT_STATUS_CONTINUED + && book->text_context.unprocessed == NULL) { + is_stopped = 1; + } + } + } + + LOG(("out: eb_is_text_stopped() = %d", is_stopped)); + return is_stopped; +} + + +/* + * Write a byte to a text buffer. + */ +EB_Error_Code +eb_write_text_byte1(EB_Book *book, int byte1) +{ + EB_Error_Code error_code; + char stream[1]; + + LOG(("in: eb_write_text_byte1(book=%d, byte1=%d)", + (int)book->code, byte1)); + + /* + * If the text buffer has enough space to write `byte1', + * save the byte in `book->text_context.unprocessed'. + */ + if (book->text_context.unprocessed != NULL + || book->text_context.out_rest_length < 1) { + *(unsigned char *)stream = byte1; + error_code = eb_write_text(book, stream, 1); + if (error_code != EB_SUCCESS) + goto failed; + } else { + *(book->text_context.out) = byte1; + book->text_context.out++; + book->text_context.out_rest_length--; + book->text_context.out_step++; + } + + LOG(("out: eb_write_text_byte1() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_write_text_byte1() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Write two bytes to a text buffer for output. + */ +EB_Error_Code +eb_write_text_byte2(EB_Book *book, int byte1, int byte2) +{ + EB_Error_Code error_code; + char stream[2]; + + LOG(("in: eb_write_text_byte2(book=%d, byte1=%d, byte2=%d)", + (int)book->code, byte1, byte2)); + + /* + * If the text buffer has enough space to write `byte1' and `byte2', + * save the bytes in `book->text_context.unprocessed'. + */ + if (book->text_context.unprocessed != NULL + || book->text_context.out_rest_length < 2) { + *(unsigned char *)stream = byte1; + *(unsigned char *)(stream + 1) = byte2; + error_code = eb_write_text(book, stream, 2); + if (error_code != EB_SUCCESS) + goto failed; + } else { + *(book->text_context.out) = byte1; + book->text_context.out++; + *(book->text_context.out) = byte2; + book->text_context.out++; + book->text_context.out_rest_length -= 2; + book->text_context.out_step += 2; + } + + LOG(("out: eb_write_text_byte2() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_write_text_byte2() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Write a string to a text buffer. + */ +EB_Error_Code +eb_write_text_string(EB_Book *book, const char *string) +{ + EB_Error_Code error_code; + size_t string_length; + + LOG(("in: eb_write_text_string(book=%d, string=%s)", + (int)book->code, eb_quoted_string(string))); + + /* + * If the text buffer has enough space to write `sting', + * save the string in `book->text_context.unprocessed'. + */ + string_length = strlen(string); + + if (book->text_context.unprocessed != NULL + || book->text_context.out_rest_length < string_length) { + error_code = eb_write_text(book, string, string_length); + if (error_code != EB_SUCCESS) + goto failed; + } else { + memcpy(book->text_context.out, string, string_length); + book->text_context.out += string_length; + book->text_context.out_rest_length -= string_length; + book->text_context.out_step += string_length; + } + + LOG(("out: eb_write_text_string() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_write_text_string() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Write a stream with `length' bytes to a text buffer. + */ +EB_Error_Code +eb_write_text(EB_Book *book, const char *stream, size_t stream_length) +{ + EB_Error_Code error_code; + char *reallocated; + + LOG(("in: eb_write_text(book=%d, stream=%s)", + (int)book->code, eb_quoted_stream(stream, stream_length))); + + /* + * If the text buffer has enough space to write `stream', + * save the stream in `book->text_context.unprocessed'. + */ + if (book->text_context.unprocessed != NULL) { + reallocated = (char *)realloc(book->text_context.unprocessed, + book->text_context.unprocessed_size + stream_length); + if (reallocated == NULL) { + free(book->text_context.unprocessed); + book->text_context.unprocessed = NULL; + book->text_context.unprocessed_size = 0; + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + memcpy(reallocated + book->text_context.unprocessed_size, stream, + stream_length); + book->text_context.unprocessed = reallocated; + book->text_context.unprocessed_size += stream_length; + + } else if (book->text_context.out_rest_length < stream_length) { + book->text_context.unprocessed + = (char *)malloc(book->text_context.out_step + stream_length); + if (book->text_context.unprocessed == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + book->text_context.unprocessed_size + = book->text_context.out_step + stream_length; + memcpy(book->text_context.unprocessed, + book->text_context.out - book->text_context.out_step, + book->text_context.out_step); + memcpy(book->text_context.unprocessed + book->text_context.out_step, + stream, stream_length); + book->text_context.out -= book->text_context.out_step; + book->text_context.out_step = 0; + + } else { + memcpy(book->text_context.out, stream, stream_length); + book->text_context.out += stream_length; + book->text_context.out_rest_length -= stream_length; + book->text_context.out_step += stream_length; + } + + LOG(("out: eb_write_text() = %s", eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_write_text() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Get the current candidate word for multi search. + */ +const char * +eb_current_candidate(EB_Book *book) +{ + LOG(("in: eb_current_candidate(book=%d)", (int)book->code)); + + if (!book->text_context.is_candidate) + book->text_context.candidate[0] = '\0'; + + LOG(("out: eb_current_candidate() = %s", + eb_quoted_string(book->text_context.candidate))); + + return book->text_context.candidate; +} + + +/* + * Forward text position to the next paragraph. + */ +EB_Error_Code +eb_forward_text(EB_Book *book, EB_Appendix *appendix) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_forward_text(book=%d, appendix=%d)", (int)book->code, + (appendix != NULL) ? (int)appendix->code : 0)); + + /* + * Current subbook must have been set and START file must exist. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_TEXT; + goto failed; + } + + if (book->text_context.code == EB_TEXT_SEEKED) { + book->text_context.code = EB_TEXT_MAIN_TEXT; + } else if (book->text_context.code == EB_TEXT_INVALID) { + error_code = EB_ERR_NO_PREV_SEEK; + goto failed; + } else if (book->text_context.code != EB_TEXT_MAIN_TEXT + && book->text_context.code != EB_TEXT_OPTIONAL_TEXT) { + error_code = EB_ERR_DIFF_CONTENT; + goto failed; + } + + if (book->text_context.text_status == EB_TEXT_STATUS_SOFT_STOP) { + book->text_context.text_status = EB_TEXT_STATUS_CONTINUED; + goto succeeded; + } else if (book->text_context.text_status == EB_TEXT_STATUS_HARD_STOP) { + error_code = EB_ERR_END_OF_CONTENT; + goto failed; + } + + /* + * Forward text. + */ + error_code = eb_read_text_internal(book, appendix, &eb_default_hookset, + NULL, EB_SIZE_PAGE, NULL, NULL, 1); + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Unlock the book and hookset. + */ + succeeded: + eb_reset_text_context(book); + LOG(("out: eb_forward_text() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + if (error_code != EB_ERR_END_OF_CONTENT) + eb_invalidate_text_context(book); + LOG(("out: eb_forward_text() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Forward heading position to the next paragraph. + * (for keyword search.) + */ +EB_Error_Code +eb_forward_heading(EB_Book *book) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_forward_heading(book=%d)", (int)book->code)); + + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_TEXT; + goto failed; + } + + if (book->text_context.code == EB_TEXT_SEEKED) { + book->text_context.code = EB_TEXT_HEADING; + } else if (book->text_context.code == EB_TEXT_INVALID) { + error_code = EB_ERR_NO_PREV_SEEK; + goto failed; + } else if (book->text_context.code != EB_TEXT_HEADING) { + error_code = EB_ERR_DIFF_CONTENT; + goto failed; + } + + if (book->text_context.text_status == EB_TEXT_STATUS_SOFT_STOP) { + book->text_context.text_status = EB_TEXT_STATUS_CONTINUED; + goto succeeded; + } else if (book->text_context.text_status == EB_TEXT_STATUS_HARD_STOP) { + error_code = EB_ERR_END_OF_CONTENT; + goto failed; + } + + /* + * Forward text. + */ + error_code = eb_read_text_internal(book, NULL, &eb_default_hookset, + NULL, EB_SIZE_PAGE, NULL, NULL, 1); + if (error_code != EB_SUCCESS) + goto failed; + + eb_reset_text_context(book); + + /* + * Unlock cache data. + */ + succeeded: + LOG(("out: eb_forward_heading() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + if (error_code != EB_ERR_END_OF_CONTENT) + eb_invalidate_text_context(book); + LOG(("out: eb_forward_heading() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Backward text position to the previous paragraph. + */ +EB_Error_Code +eb_backward_text(EB_Book *book, EB_Appendix *appendix) +{ + EB_Error_Code error_code; + EB_Text_Context saved_context; + off_t current_location; + off_t forward_location; + off_t read_location; + off_t backward_location = -1; + char text_buffer[EB_SIZE_PAGE]; + char *text_buffer_p; + ssize_t read_result; + int stop_code0, stop_code1; + + eb_lock(&book->lock); + LOG(("in: eb_backward_text(book=%d, appendix=%d)", (int)book->code, + (appendix != NULL) ? (int)appendix->code : 0)); + + /* + * Current subbook must have been set and START file must exist. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + if (zio_file(&book->subbook_current->text_zio) < 0) { + error_code = EB_ERR_NO_TEXT; + goto failed; + } + + if (book->text_context.code == EB_TEXT_SEEKED) { + book->text_context.code = EB_TEXT_MAIN_TEXT; + } else if (book->text_context.code == EB_TEXT_INVALID) { + error_code = EB_ERR_NO_PREV_SEEK; + goto failed; + } else if (book->text_context.code != EB_TEXT_MAIN_TEXT + && book->text_context.code != EB_TEXT_OPTIONAL_TEXT) { + error_code = EB_ERR_DIFF_CONTENT; + goto failed; + } + + /* + * Forward text to get auto-stop-code and location where the current + * text stops. + */ + if (book->text_context.text_status != EB_TEXT_STATUS_CONTINUED) { + forward_location = book->text_context.location; + } else { + memcpy(&saved_context, &book->text_context, sizeof(EB_Text_Context)); + error_code = eb_read_text_internal(book, NULL, &eb_default_hookset, + NULL, EB_SIZE_PAGE, NULL, NULL, 1); + if (error_code != EB_SUCCESS && error_code != EB_ERR_END_OF_CONTENT) + goto failed; + forward_location = book->text_context.location; + saved_context.auto_stop_code = book->text_context.auto_stop_code; + memcpy(&book->text_context, &saved_context, sizeof(EB_Text_Context)); + } + + /* + * Determine stop-code. + */ + if (appendix == NULL + || appendix->subbook_current == NULL + || appendix->subbook_current->stop_code0 == 0) { + stop_code0 = 0x1f41; + stop_code1 = book->text_context.auto_stop_code; + } else { + stop_code0 = appendix->subbook_current->stop_code0; + stop_code1 = appendix->subbook_current->stop_code1; + } + + /* + * If the text locator has pointed to `0x1f02' (beginning of text), + * we cannot backward. + */ + if (zio_lseek(&book->subbook_current->text_zio, + book->text_context.location, SEEK_SET) == -1) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + if (zio_read(&book->subbook_current->text_zio, text_buffer, 2) != 2) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + if (eb_uint2(text_buffer) == 0x1f02) { + error_code = EB_ERR_END_OF_CONTENT; + goto failed; + } + + /* + * Backward text. + */ + current_location = book->text_context.location; + + while (0 < book->text_context.location) { + size_t backward_distance; + int i; + + /* + * Seek and read text. + * + * Since a stop code occupies 4 bytes and we start scanning + * stop-code at preceding byte of the current location, we read + * text in front of the current location and following 3 bytes. + * + * start scanning + * | current location + * | | + * [..] [..] [..] [1F] [41] [00] [01] + * =================== + * may be stop-code + */ + if (book->text_context.location < EB_SIZE_PAGE + 3) + read_location = 0; + else + read_location = book->text_context.location - EB_SIZE_PAGE + 3; + backward_distance = book->text_context.location - read_location; + + if (zio_lseek(&book->subbook_current->text_zio, read_location, + SEEK_SET) == -1) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + + memset(text_buffer, 0x00, EB_SIZE_PAGE); + read_result = zio_read(&book->subbook_current->text_zio, text_buffer, + EB_SIZE_PAGE); + if (read_result < 0 || read_result < backward_distance) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + /* + * Scan stop-code. + */ + text_buffer_p = text_buffer + backward_distance - 1; + i = backward_distance - 1; + + while (0 <= i) { + if (eb_uint2(text_buffer_p) == 0x1f02) { + book->text_context.location = read_location + i; + if (current_location <= book->text_context.location + 2) { + error_code = EB_ERR_END_OF_CONTENT; + goto failed; + } + backward_location = book->text_context.location; + goto loop_end; + } + if (book->text_context.code != EB_TEXT_MAIN_TEXT + || eb_uint2(text_buffer_p) != stop_code0 + || eb_uint2(text_buffer_p + 2) != stop_code1) { + text_buffer_p--; + i--; + continue; + } + + eb_reset_text_context(book); + book->text_context.location = read_location + i; + error_code = eb_read_text_internal(book, appendix, + &eb_default_hookset, NULL, EB_SIZE_PAGE, NULL, NULL, 1); + if (error_code != EB_SUCCESS + && error_code != EB_ERR_END_OF_CONTENT) + goto failed; + + if (book->text_context.location >= current_location - 4 + && book->text_context.location <= current_location + 4 + && backward_location < 0) + forward_location = current_location; + if (book->text_context.location >= forward_location - 4 + && book->text_context.location <= forward_location + 4) + backward_location = read_location + i; + else if (book->text_context.location < forward_location) + goto loop_end; + + text_buffer_p--; + i--; + } + + book->text_context.location = read_location - 1; + } + + loop_end: + if (backward_location < 0) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + eb_reset_text_context(book); + + /* + * Unlock the book and hookset. + */ + LOG(("out: eb_forward_text() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_invalidate_text_context(book); + LOG(("out: eb_backward_text() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/readtext.lo b/lib/ebu/ebu/readtext.lo new file mode 100644 index 0000000..c68a57f --- /dev/null +++ b/lib/ebu/ebu/readtext.lo @@ -0,0 +1,12 @@ +# readtext.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/readtext.o' + +# Name of the non-PIC object +non_pic_object='readtext.o' + diff --git a/lib/ebu/ebu/search.c b/lib/ebu/ebu/search.c new file mode 100644 index 0000000..2155d4b --- /dev/null +++ b/lib/ebu/ebu/search.c @@ -0,0 +1,1656 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "text.h" +#include "build-post.h" + +/* + * Page-ID macros. + */ +#define PAGE_ID_IS_LEAF_LAYER(page_id) (((page_id) & 0x80) == 0x80) +#define PAGE_ID_IS_LAYER_START(page_id) (((page_id) & 0x40) == 0x40) +#define PAGE_ID_IS_LAYER_END(page_id) (((page_id) & 0x20) == 0x20) +#define PAGE_ID_HAVE_GROUP_ENTRY(page_id) (((page_id) & 0x10) == 0x10) + +/* + * The maximum number of hit entries for tomporary hit lists. + * This is used in eb_hit_list(). + */ +#define EB_TMP_MAX_HITS 64 + +/* + * Book-code of the book in which you want to search a word. + */ +static EB_Book_Code cache_book_code = EB_BOOK_NONE; + +/* + * Cache buffer for the current page. + */ +static char cache_buffer[EB_SIZE_PAGE]; + +/* + * Cache buffer for the current page. + */ +static int cache_page; + +/* + * Mutex for cache variables. + */ +#ifdef ENABLE_PTHREAD +static pthread_mutex_t cache_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif + +/* + * Unexported functions. + */ +static EB_Error_Code eb_hit_list_word(EB_Book *book, + EB_Search_Context *context, int max_hit_count, EB_Hit *hit_list, + int *hit_count); +static EB_Error_Code eb_hit_list_keyword(EB_Book *book, + EB_Search_Context *context, int max_hit_count, EB_Hit *hit_list, + int *hit_count); +static EB_Error_Code eb_hit_list_multi(EB_Book *book, + EB_Search_Context *context, int max_hit_count, EB_Hit *hit_list, + int *hit_count); +static void eb_and_hit_lists(EB_Hit and_list[EB_TMP_MAX_HITS], + int *and_count, int max_and_count, int hit_list_count, + EB_Hit hit_lists[EB_NUMBER_OF_SEARCH_CONTEXTS][EB_TMP_MAX_HITS], + int hit_counts[EB_NUMBER_OF_SEARCH_CONTEXTS]); + + +/* + * Intialize search contexts of `book'. + */ +void +eb_initialize_search_contexts(EB_Book *book) +{ + EB_Search_Context *context; + int i; + + LOG(("in: eb_initialize_search_context(book=%d)", (int)book->code)); + + for (i = 0, context = book->search_contexts; + i < EB_NUMBER_OF_SEARCH_CONTEXTS; i++, context++) { + context->code = EB_SEARCH_NONE; + context->compare_pre = NULL; + context->compare_single = NULL; + context->compare_group = NULL; + context->comparison_result = -1; + context->word[0] = '\0'; + context->canonicalized_word[0] = '\0'; + context->page = 0; + context->offset = 0; + context->page_id = 0; + context->entry_count = 0; + context->entry_index = 0; + context->entry_length = 0; + context->entry_arrangement = EB_ARRANGE_INVALID; + context->in_group_entry = 0; + context->keyword_heading.page = 0; + context->keyword_heading.offset = 0; + } + + LOG(("out: eb_initialize_search_context()")); +} + + +/* + * Finalize search contexts of `book'. + */ +void +eb_finalize_search_contexts(EB_Book *book) +{ + LOG(("in+out: eb_finalize_search_context(book=%d)", (int)book->code)); + + /* nothing to be done */ +} + + +/* + * Reset search context of `book'. + */ +void +eb_reset_search_contexts(EB_Book *book) +{ + LOG(("in: eb_reset_search_context(book=%d)", (int)book->code)); + + eb_initialize_search_contexts(book); + + LOG(("out: eb_reset_search_context()")); +} + + +/* + * Intialize a search element. + */ +void +eb_initialize_search(EB_Search *search) +{ + search->index_id = 0; + search->start_page = 0; + search->end_page = 0; + search->candidates_page = 0; + search->katakana = EB_INDEX_STYLE_CONVERT; + search->lower = EB_INDEX_STYLE_CONVERT; + search->mark = EB_INDEX_STYLE_DELETE; + search->long_vowel = EB_INDEX_STYLE_CONVERT; + search->double_consonant = EB_INDEX_STYLE_CONVERT; + search->contracted_sound = EB_INDEX_STYLE_CONVERT; + search->voiced_consonant = EB_INDEX_STYLE_CONVERT; + search->small_vowel = EB_INDEX_STYLE_CONVERT; + search->p_sound = EB_INDEX_STYLE_CONVERT; + search->space = EB_INDEX_STYLE_DELETE; + search->label[0] = '\0'; +} + + +/* + * Finalize a search element. + */ +void +eb_finalize_search(EB_Search *search) +{ + /* nothing to be done */ +} + + +/* + * Initialize all search elements in the current subbook. + */ +void +eb_initialize_searches(EB_Book *book) +{ + EB_Subbook *subbook; + EB_Multi_Search *multi; + EB_Search *entry; + int i, j; + + LOG(("in: eb_initialize_searches(book=%d)", (int)book->code)); + + subbook = book->subbook_current; + + eb_initialize_search(&subbook->word_alphabet); + eb_initialize_search(&subbook->word_asis); + eb_initialize_search(&subbook->word_kana); + eb_initialize_search(&subbook->endword_alphabet); + eb_initialize_search(&subbook->endword_asis); + eb_initialize_search(&subbook->endword_kana); + eb_initialize_search(&subbook->keyword); + eb_initialize_search(&subbook->cross); + eb_initialize_search(&subbook->menu); + eb_initialize_search(&subbook->image_menu); + eb_initialize_search(&subbook->copyright); + eb_initialize_search(&subbook->text); + eb_initialize_search(&subbook->sound); + + for (i = 0, multi = subbook->multis; i < EB_MAX_MULTI_SEARCHES; + i++, multi++) { + eb_initialize_search(&multi->search); + multi->title[0] = '\0'; + multi->entry_count = 0; + for (j = 0, entry = multi->entries; + j < EB_MAX_MULTI_ENTRIES; j++, entry++) { + eb_initialize_search(entry); + } + } + + LOG(("out: eb_initialize_searches(book=%d)", (int)book->code)); +} + + +/* + * Finalize all search elements in the current subbook. + */ +void +eb_finalize_searches(EB_Book *book) +{ + EB_Subbook *subbook; + EB_Multi_Search *multi; + EB_Search *entry; + int i, j; + + LOG(("in: eb_finalize_searches(book=%d)", (int)book->code)); + + subbook = book->subbook_current; + + eb_finalize_search(&subbook->word_alphabet); + eb_finalize_search(&subbook->word_asis); + eb_finalize_search(&subbook->word_kana); + eb_finalize_search(&subbook->endword_alphabet); + eb_finalize_search(&subbook->endword_asis); + eb_finalize_search(&subbook->endword_kana); + eb_finalize_search(&subbook->keyword); + eb_finalize_search(&subbook->menu); + eb_finalize_search(&subbook->image_menu); + eb_finalize_search(&subbook->copyright); + eb_finalize_search(&subbook->text); + eb_finalize_search(&subbook->sound); + + for (i = 0, multi = subbook->multis; i < EB_MAX_KEYWORDS; + i++, multi++) { + eb_finalize_search(&multi->search); + multi->entry_count = 0; + for (j = 0, entry = multi->entries; + j < multi->entry_count; j++, entry++) { + eb_finalize_search(entry); + } + } + + LOG(("out: eb_finalize_searches()")); +} + + +/* + * Pre-search for a word described in the current search context. + * It descends intermediate indexes and reached to a leaf page that + * may have the word. + * If succeeded, 0 is returned. Otherwise -1 is returned. + */ +EB_Error_Code +eb_presearch_word(EB_Book *book, EB_Search_Context *context) +{ + EB_Error_Code error_code; + int next_page; + int index_depth; + char *cache_p; + + pthread_mutex_lock(&cache_mutex); + LOG(("in: eb_presearch_word(book=%d)", (int)book->code)); + + /* + * Discard cache data. + */ + cache_book_code = EB_BOOK_NONE; + + /* + * Search the word in intermediate indexes. + * Find a page number of the leaf index page. + */ + for (index_depth = 0; index_depth < EB_MAX_INDEX_DEPTH; index_depth++) { + next_page = context->page; + + /* + * Seek and read a page. + */ + if (zio_lseek(&book->subbook_current->text_zio, + ((off_t) context->page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + cache_book_code = EB_BOOK_NONE; + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + if (zio_read(&book->subbook_current->text_zio, cache_buffer, + EB_SIZE_PAGE) != EB_SIZE_PAGE) { + cache_book_code = EB_BOOK_NONE; + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + /* + * Get some data from the read page. + */ + context->page_id = eb_uint1(cache_buffer); + context->entry_length = eb_uint1(cache_buffer + 1); + if (context->entry_length == 0) + context->entry_arrangement = EB_ARRANGE_VARIABLE; + else + context->entry_arrangement = EB_ARRANGE_FIXED; + context->entry_count = eb_uint2(cache_buffer + 2); + context->offset = 4; + cache_p = cache_buffer + 4; + + LOG(("aux: eb_presearch_word(page=%d, page_id=0x%02x, \ +entry_length=%d, entry_arrangement=%d, entry_count=%d)", + context->page, context->page_id, context->entry_length, + context->entry_arrangement, context->entry_count)); + + /* + * Exit the loop if it reached to the leaf index. + */ + if (PAGE_ID_IS_LEAF_LAYER(context->page_id)) + break; + + /* + * Search a page of next level index. + */ + for (context->entry_index = 0; + context->entry_index < context->entry_count; + context->entry_index++) { + if (EB_SIZE_PAGE < context->offset + context->entry_length + 4) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + if (context->compare_pre(context->canonicalized_word, cache_p, + context->entry_length) <= 0) { + next_page = eb_uint4(cache_p + context->entry_length); + break; + } + cache_p += context->entry_length + 4; + context->offset += context->entry_length + 4; + } + if (context->entry_count <= context->entry_index + || context->page == next_page) { + context->comparison_result = -1; + goto succeeded; + } + context->page = next_page; + } + + /* + * Check for the index depth. + */ + if (index_depth == EB_MAX_INDEX_DEPTH) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Update search context and cache information. + */ + context->entry_index = 0; + context->comparison_result = 1; + context->in_group_entry = 0; + cache_book_code = book->code; + cache_page = context->page; + + succeeded: + LOG(("out: eb_presearch_word() = %s", eb_error_string(EB_SUCCESS))); + pthread_mutex_unlock(&cache_mutex); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_presearch_word() = %s", eb_error_string(error_code))); + pthread_mutex_unlock(&cache_mutex); + return error_code; +} + +/* + * Get hit entries of a submitted search request. + */ +EB_Error_Code +eb_hit_list(EB_Book *book, int max_hit_count, EB_Hit *hit_list, int *hit_count) +{ + EB_Error_Code error_code; + EB_Search_Context temporary_context; + EB_Hit temporary_hit_lists[EB_NUMBER_OF_SEARCH_CONTEXTS][EB_TMP_MAX_HITS]; + int temporary_hit_counts[EB_NUMBER_OF_SEARCH_CONTEXTS]; + int more_hit_count; + int i; + + /* + * Lock cache data and the book. + */ + pthread_mutex_lock(&cache_mutex); + eb_lock(&book->lock); + LOG(("in: eb_hit_list(book=%d, max_hit_count=%d)", (int)book->code, + max_hit_count)); + + if (max_hit_count == 0) + goto succeeded; + + *hit_count = 0; + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Get a list of hit entries. + */ + switch (book->search_contexts->code) { + case EB_SEARCH_EXACTWORD: + case EB_SEARCH_WORD: + case EB_SEARCH_ENDWORD: + /* + * In case of exactword, word of endword search. + */ + error_code = eb_hit_list_word(book, book->search_contexts, + max_hit_count, hit_list, hit_count); + if (error_code != EB_SUCCESS) + goto failed; + break; + + case EB_SEARCH_KEYWORD: + case EB_SEARCH_CROSS: + /* + * In case of keyword or cross search. + */ + for (;;) { + int search_is_over = 0; + + for (i = 0; i < EB_MAX_KEYWORDS; i++) { + if (book->search_contexts[i].code != EB_SEARCH_KEYWORD + && book->search_contexts[i].code != EB_SEARCH_CROSS) + break; + memcpy(&temporary_context, book->search_contexts + i, + sizeof(EB_Search_Context)); + error_code = eb_hit_list_keyword(book, &temporary_context, + EB_TMP_MAX_HITS, temporary_hit_lists[i], + temporary_hit_counts + i); + if (error_code != EB_SUCCESS) + goto failed; + if (temporary_hit_counts[i] == 0) { + search_is_over = 1; + break; + } + } + if (search_is_over) + break; + + eb_and_hit_lists(hit_list + *hit_count, &more_hit_count, + max_hit_count - *hit_count, i, temporary_hit_lists, + temporary_hit_counts); + + for (i = 0; i < EB_MAX_MULTI_ENTRIES; i++) { + if (book->search_contexts[i].code != EB_SEARCH_KEYWORD + && book->search_contexts[i].code != EB_SEARCH_CROSS) + break; + error_code = eb_hit_list_keyword(book, + book->search_contexts + i, temporary_hit_counts[i], + temporary_hit_lists[i], temporary_hit_counts + i); + if (error_code != EB_SUCCESS) + goto failed; + } + + *hit_count += more_hit_count; + if (max_hit_count <= *hit_count) + break; + } + break; + + case EB_SEARCH_MULTI: + /* + * In case of multi search. + */ + for (;;) { + int search_is_over = 0; + + for (i = 0; i < EB_MAX_MULTI_ENTRIES; i++) { + if (book->search_contexts[i].code != EB_SEARCH_MULTI) + break; + memcpy(&temporary_context, book->search_contexts + i, + sizeof(EB_Search_Context)); + error_code = eb_hit_list_multi(book, &temporary_context, + EB_TMP_MAX_HITS, temporary_hit_lists[i], + temporary_hit_counts + i); + if (error_code != EB_SUCCESS) + goto failed; + if (temporary_hit_counts[i] == 0) { + search_is_over = 1; + break; + } + } + if (search_is_over) + break; + + eb_and_hit_lists(hit_list + *hit_count, &more_hit_count, + max_hit_count - *hit_count, i, temporary_hit_lists, + temporary_hit_counts); + + for (i = 0; i < EB_MAX_MULTI_ENTRIES; i++) { + if (book->search_contexts[i].code != EB_SEARCH_MULTI) + break; + error_code = eb_hit_list_multi(book, + book->search_contexts + i, temporary_hit_counts[i], + temporary_hit_lists[i], temporary_hit_counts + i); + if (error_code != EB_SUCCESS) + goto failed; + } + + *hit_count += more_hit_count; + if (max_hit_count <= *hit_count) + break; + } + break; + + default: + /* not reached */ + error_code = EB_ERR_NO_PREV_SEARCH; + goto failed; + } + + /* + * Unlock cache data and the book. + */ + succeeded: + LOG(("out: eb_hit_list(hit_count=%d) = %s", + *hit_count, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + pthread_mutex_unlock(&cache_mutex); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *hit_count = 0; + LOG(("out: eb_hit_list() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + pthread_mutex_unlock(&cache_mutex); + return error_code; +} + + +/* + * Get hit entries of a submitted exactword/word/endword search request. + */ +static EB_Error_Code +eb_hit_list_word(EB_Book *book, EB_Search_Context *context, int max_hit_count, + EB_Hit *hit_list, int *hit_count) +{ + EB_Error_Code error_code; + EB_Hit *hit; + int group_id; + char *cache_p; + + LOG(("in: eb_hit_list_word(book=%d, max_hit_count=%d)", (int)book->code, + max_hit_count)); + + hit = hit_list; + *hit_count = 0; + + /* + * If the result of previous comparison is negative value, all + * matched entries have been found. + */ + if (context->comparison_result < 0 || max_hit_count <= 0) + goto succeeded; + + for (;;) { + /* + * Read a page to search, if the page is not on the cache buffer. + * + * Cache may be missed by the two reasons: + * 1. the search process reaches to the end of an index page, + * and tries to read the next page. + * 2. Someone else used the cache buffer. + * + * At the case of 1, the search process reads the page and update + * the search context. At the case of 2. it reads the page but + * must not update the context! + */ + if (cache_book_code != book->code || cache_page != context->page) { + if (zio_lseek(&book->subbook_current->text_zio, + ((off_t) context->page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + if (zio_read(&book->subbook_current->text_zio, + cache_buffer, EB_SIZE_PAGE) != EB_SIZE_PAGE) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + /* + * Update search context. + */ + if (context->entry_index == 0) { + context->page_id = eb_uint1(cache_buffer); + context->entry_length = eb_uint1(cache_buffer + 1); + if (context->entry_length == 0) + context->entry_arrangement = EB_ARRANGE_VARIABLE; + else + context->entry_arrangement = EB_ARRANGE_FIXED; + context->entry_count = eb_uint2(cache_buffer + 2); + context->entry_index = 0; + context->offset = 4; + } + + cache_book_code = book->code; + cache_page = context->page; + } + + cache_p = cache_buffer + context->offset; + + LOG(("aux: eb_hit_list_word(page=%d, page_id=0x%02x, \ +entry_length=%d, entry_arrangement=%d, entry_count=%d)", + context->page, context->page_id, context->entry_length, + context->entry_arrangement, context->entry_count)); + + if (!PAGE_ID_IS_LEAF_LAYER(context->page_id)) { + /* + * Not a leaf index. It is an error. + */ + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + if (!PAGE_ID_HAVE_GROUP_ENTRY(context->page_id) + && context->entry_arrangement == EB_ARRANGE_FIXED) { + /* + * The leaf index doesn't have a group entry. + * Find text and heading locations. + */ + while (context->entry_index < context->entry_count) { + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 12) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + context->comparison_result + = context->compare_single(context->word, cache_p, + context->entry_length); + if (context->comparison_result == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 6); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 10); + hit->text.page + = eb_uint4(cache_p + context->entry_length); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 4); + hit++; + *hit_count += 1; + } + context->entry_index++; + context->offset += context->entry_length + 12; + cache_p += context->entry_length + 12; + + if (context->comparison_result < 0 + || max_hit_count <= *hit_count) + goto succeeded; + } + + } else if (!PAGE_ID_HAVE_GROUP_ENTRY(context->page_id) + && context->entry_arrangement == EB_ARRANGE_VARIABLE) { + + /* + * The leaf index doesn't have a group entry. + * Find text and heading locations. + */ + while (context->entry_index < context->entry_count) { + if (EB_SIZE_PAGE < context->offset + 1) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + context->entry_length = eb_uint1(cache_p); + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 13) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + context->comparison_result + = context->compare_single(context->word, cache_p + 1, + context->entry_length); + if (context->comparison_result == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 7); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 11); + hit->text.page + = eb_uint4(cache_p + context->entry_length + 1); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 5); + hit++; + *hit_count += 1; + } + context->entry_index++; + context->offset += context->entry_length + 13; + cache_p += context->entry_length + 13; + + if (context->comparison_result < 0 + || max_hit_count <= *hit_count) + goto succeeded; + } + + } else { + /* + * The leaf index have a group entry. + * Find text and heading locations. + */ + while (context->entry_index < context->entry_count) { + if (EB_SIZE_PAGE < context->offset + 2) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + group_id = eb_uint1(cache_p); + + if (group_id == 0x00) { + /* + * 0x00 -- Single entry. + */ + context->entry_length = eb_uint1(cache_p + 1); + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 14) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + context->comparison_result + = context->compare_single(context->canonicalized_word, + cache_p + 2, context->entry_length); + if (context->comparison_result == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 8); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 12); + hit->text.page + = eb_uint4(cache_p + context->entry_length + 2); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 6); + hit++; + *hit_count += 1; + } + context->in_group_entry = 0; + context->offset += context->entry_length + 14; + cache_p += context->entry_length + 14; + + } else if (group_id == 0x80) { + /* + * 0x80 -- Start of group entry. + */ + context->entry_length = eb_uint1(cache_p + 1); + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 4) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + context->comparison_result + = context->compare_single(context->canonicalized_word, + cache_p + 4, context->entry_length); + context->in_group_entry = 1; + cache_p += context->entry_length + 4; + context->offset += context->entry_length + 4; + + } else if (group_id == 0xc0) { + /* + * Element of the group entry + */ + context->entry_length = eb_uint1(cache_p + 1); + if (EB_SIZE_PAGE < context->offset + 14) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + if (context->comparison_result == 0 + && context->in_group_entry + && context->compare_group(context->word, cache_p + 2, + context->entry_length) == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 8); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 12); + hit->text.page + = eb_uint4(cache_p + context->entry_length + 2); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 6); + hit++; + *hit_count += 1; + } + context->offset += context->entry_length + 14; + cache_p += context->entry_length + 14; + + } else { + /* + * Unknown group ID. + */ + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + context->entry_index++; + if (context->comparison_result < 0 + || max_hit_count <= *hit_count) + goto succeeded; + } + } + + /* + * Go to a next page if available. + */ + if (PAGE_ID_IS_LAYER_END(context->page_id)) { + context->comparison_result = -1; + goto succeeded; + } + context->page++; + context->entry_index = 0; + } + + succeeded: + LOG(("out: eb_hit_list_word(hit_count=%d) = %s", + *hit_count, eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + * Discard cache if read error occurs. + */ + failed: + if (error_code == EB_ERR_FAIL_READ_TEXT) + cache_book_code = EB_BOOK_NONE; + *hit_count = 0; + LOG(("out: eb_hit_list_word() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Get hit entries of a submitted keyword search request. + */ +static EB_Error_Code +eb_hit_list_keyword(EB_Book *book, EB_Search_Context *context, + int max_hit_count, EB_Hit *hit_list, int *hit_count) +{ + EB_Error_Code error_code; + EB_Text_Context text_context; + EB_Hit *hit; + int group_id; + char *cache_p; + + LOG(("in: eb_hit_list_keyword(book=%d, max_hit_count=%d)", + (int)book->code, max_hit_count)); + + hit = hit_list; + *hit_count = 0; + + /* + * Backup the text context in `book'. + */ + memcpy(&text_context, &book->text_context, sizeof(EB_Text_Context)); + + /* + * Seek text file. + */ + if (context->in_group_entry && context->comparison_result == 0) { + error_code = eb_seek_text(book, &context->keyword_heading); + if (error_code != EB_SUCCESS) + goto failed; + } + + /* + * If the result of previous comparison is negative value, all + * matched entries have been found. + */ + if (context->comparison_result < 0 || max_hit_count <= 0) + goto succeeded; + + for (;;) { + /* + * Read a page to search, if the page is not on the cache buffer. + * + * Cache may be missed by the two reasons: + * 1. the search process reaches to the end of an index page, + * and tries to read the next page. + * 2. Someone else used the cache buffer. + * + * At the case of 1, the search process reads the page and update + * the search context. At the case of 2. it reads the page but + * must not update the context! + */ + if (cache_book_code != book->code || cache_page != context->page) { + if (zio_lseek(&book->subbook_current->text_zio, + ((off_t) context->page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + if (zio_read(&book->subbook_current->text_zio, cache_buffer, + EB_SIZE_PAGE) != EB_SIZE_PAGE) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + /* + * Update search context. + */ + if (context->entry_index == 0) { + context->page_id = eb_uint1(cache_buffer); + context->entry_length = eb_uint1(cache_buffer + 1); + if (context->entry_length == 0) + context->entry_arrangement = EB_ARRANGE_VARIABLE; + else + context->entry_arrangement = EB_ARRANGE_FIXED; + context->entry_count = eb_uint2(cache_buffer + 2); + context->entry_index = 0; + context->offset = 4; + } + + cache_book_code = book->code; + cache_page = context->page; + } + + cache_p = cache_buffer + context->offset; + + LOG(("aux: eb_hit_list_keyword(page=%d, page_id=0x%02x, \ +entry_length=%d, entry_arrangement=%d, entry_count=%d)", + context->page, context->page_id, context->entry_length, + context->entry_arrangement, context->entry_count)); + + if (!PAGE_ID_IS_LEAF_LAYER(context->page_id)) { + /* + * Not a leaf index. It is an error. + */ + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + if (!PAGE_ID_HAVE_GROUP_ENTRY(context->page_id) + && context->entry_arrangement == EB_ARRANGE_FIXED) { + /* + * The leaf index doesn't have a group entry. + * Find text and heading locations. + */ + while (context->entry_index < context->entry_count) { + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 12) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + context->comparison_result + = context->compare_single(context->word, cache_p, + context->entry_length); + if (context->comparison_result == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 6); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 10); + hit->text.page + = eb_uint4(cache_p + context->entry_length); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 4); + hit++; + *hit_count += 1; + } + context->entry_index++; + context->offset += context->entry_length + 12; + cache_p += context->entry_length + 12; + + if (context->comparison_result < 0 + || max_hit_count <= *hit_count) + goto succeeded; + } + + } else if (!PAGE_ID_HAVE_GROUP_ENTRY(context->page_id) + && context->entry_arrangement == EB_ARRANGE_VARIABLE) { + /* + * The leaf index doesn't have a group entry. + * Find text and heading locations. + */ + while (context->entry_index < context->entry_count) { + if (EB_SIZE_PAGE < context->offset + 1) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + context->entry_length = eb_uint1(cache_p); + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 13) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + context->comparison_result + = context->compare_single(context->word, cache_p + 1, + context->entry_length); + if (context->comparison_result == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 7); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 11); + hit->text.page + = eb_uint4(cache_p + context->entry_length + 1); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 5); + hit++; + *hit_count += 1; + } + context->entry_index++; + context->offset += context->entry_length + 13; + cache_p += context->entry_length + 13; + + if (context->comparison_result < 0 + || max_hit_count <= *hit_count) + goto succeeded; + } + + } else { + /* + * The leaf index have a group entry. + * Find text and heading locations. + */ + while (context->entry_index < context->entry_count) { + if (EB_SIZE_PAGE < context->offset + 2) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + group_id = eb_uint1(cache_p); + + if (group_id == 0x00) { + /* + * 0x00 -- Single entry. + */ + context->entry_length = eb_uint1(cache_p + 1); + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 14) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + context->comparison_result + = context->compare_single(context->canonicalized_word, + cache_p + 2, context->entry_length); + if (context->comparison_result == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 8); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 12); + hit->text.page + = eb_uint4(cache_p + context->entry_length + 2); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 6); + hit++; + *hit_count += 1; + } + context->in_group_entry = 0; + context->offset += context->entry_length + 14; + cache_p += context->entry_length + 14; + + } else if (group_id == 0x80) { + /* + * 0x80 -- Start of group entry. + */ + context->entry_length = eb_uint1(cache_p + 1); + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 12) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + context->comparison_result + = context->compare_single(context->word, cache_p + 6, + context->entry_length); + context->keyword_heading.page + = eb_uint4(cache_p + context->entry_length + 6); + context->keyword_heading.offset + = eb_uint2(cache_p + context->entry_length + 10); + context->in_group_entry = 1; + cache_p += context->entry_length + 12; + context->offset += context->entry_length + 12; + + if (context->comparison_result == 0) { + error_code + = eb_seek_text(book, &context->keyword_heading); + if (error_code != EB_SUCCESS) + goto failed; + } + + } else if (group_id == 0xc0) { + /* + * Element of the group entry. + */ + if (EB_SIZE_PAGE < context->offset + 7) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + if (context->in_group_entry + && context->comparison_result == 0) { + error_code + = eb_tell_text(book, &context->keyword_heading); + if (error_code != EB_SUCCESS) + goto failed; + hit->heading.page = context->keyword_heading.page; + hit->heading.offset = context->keyword_heading.offset; + hit->text.page = eb_uint4(cache_p + 1); + hit->text.offset = eb_uint2(cache_p + 5); + hit++; + *hit_count += 1; + error_code = eb_forward_heading(book); + if (error_code != EB_SUCCESS) + goto failed; + } + context->offset += 7; + cache_p += 7; + + } else { + /* + * Unknown group ID. + */ + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + context->entry_index++; + if (context->comparison_result < 0 + || max_hit_count <= *hit_count) + goto succeeded; + } + } + + /* + * Go to a next page if available. + */ + if (PAGE_ID_IS_LAYER_END(context->page_id)) { + context->comparison_result = -1; + goto succeeded; + } + context->page++; + context->entry_index = 0; + } + + succeeded: + if (context->in_group_entry && context->comparison_result == 0) { + error_code = eb_tell_text(book, &context->keyword_heading); + if (error_code != EB_SUCCESS) + goto failed; + } + + /* + * Restore the text context in `book'. + */ + memcpy(&book->text_context, &text_context, sizeof(EB_Text_Context)); + LOG(("out: eb_hit_list_keyword(hit_count=%d) = %s", + *hit_count, eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + * Discard cache if read error occurs. + */ + failed: + if (error_code == EB_ERR_FAIL_READ_TEXT) + cache_book_code = EB_BOOK_NONE; + *hit_count = 0; + memcpy(&book->text_context, &text_context, sizeof(EB_Text_Context)); + LOG(("out: eb_hit_list_keyword() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Get hit entries of a submitted multi search request. + */ +static EB_Error_Code +eb_hit_list_multi(EB_Book *book, EB_Search_Context *context, int max_hit_count, + EB_Hit *hit_list, int *hit_count) +{ + EB_Error_Code error_code; + EB_Hit *hit; + int group_id; + char *cache_p; + + LOG(("in: eb_hit_list_multi(book=%d, max_hit_count=%d)", (int)book->code, + max_hit_count)); + + hit = hit_list; + *hit_count = 0; + + /* + * If the result of previous comparison is negative value, all + * matched entries have been found. + */ + if (context->comparison_result < 0 || max_hit_count <= 0) + goto succeeded; + + for (;;) { + /* + * Read a page to search, if the page is not on the cache buffer. + * + * Cache may be missed by the two reasons: + * 1. the search process reaches to the end of an index page, + * and tries to read the next page. + * 2. Someone else used the cache buffer. + * + * At the case of 1, the search process reads the page and update + * the search context. At the case of 2. it reads the page but + * must not update the context! + */ + if (cache_book_code != book->code || cache_page != context->page) { + if (zio_lseek(&book->subbook_current->text_zio, + ((off_t) context->page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + if (zio_read(&book->subbook_current->text_zio, cache_buffer, + EB_SIZE_PAGE) != EB_SIZE_PAGE) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + /* + * Update search context. + */ + if (context->entry_index == 0) { + context->page_id = eb_uint1(cache_buffer); + context->entry_length = eb_uint1(cache_buffer + 1); + if (context->entry_length == 0) + context->entry_arrangement = EB_ARRANGE_VARIABLE; + else + context->entry_arrangement = EB_ARRANGE_FIXED; + context->entry_count = eb_uint2(cache_buffer + 2); + context->entry_index = 0; + context->offset = 4; + } + + cache_book_code = book->code; + cache_page = context->page; + } + + cache_p = cache_buffer + context->offset; + + LOG(("aux: eb_hit_list_multi(page=%d, page_id=0x%02x, \ +entry_length=%d, entry_arrangement=%d, entry_count=%d)", + context->page, context->page_id, context->entry_length, + context->entry_arrangement, context->entry_count)); + + if (!PAGE_ID_IS_LEAF_LAYER(context->page_id)) { + /* + * Not a leaf index. It is an error. + */ + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + if (!PAGE_ID_HAVE_GROUP_ENTRY(context->page_id) + && context->entry_arrangement == EB_ARRANGE_FIXED) { + /* + * The leaf index doesn't have a group entry. + * Find text and heading locations. + */ + while (context->entry_index < context->entry_count) { + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 13) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + context->comparison_result + = context->compare_single(context->word, cache_p, + context->entry_length); + if (context->comparison_result == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 6); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 10); + hit->text.page + = eb_uint4(cache_p + context->entry_length); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 4); + hit++; + *hit_count += 1; + } + context->entry_index++; + context->offset += context->entry_length + 12; + cache_p += context->entry_length + 12; + + if (context->comparison_result < 0 + || max_hit_count <= *hit_count) + goto succeeded; + } + + } else if (!PAGE_ID_HAVE_GROUP_ENTRY(context->page_id) + && context->entry_arrangement == EB_ARRANGE_VARIABLE) { + /* + * The leaf index doesn't have a group entry. + * Find text and heading locations. + */ + while (context->entry_index < context->entry_count) { + if (EB_SIZE_PAGE < context->offset + 1) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + context->entry_length = eb_uint1(cache_p); + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 13) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + context->comparison_result + = context->compare_single(context->word, cache_p + 1, + context->entry_length); + if (context->comparison_result == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 7); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 11); + hit->text.page + = eb_uint4(cache_p + context->entry_length + 1); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 5); + hit++; + *hit_count += 1; + } + context->entry_index++; + context->offset += context->entry_length + 13; + cache_p += context->entry_length + 13; + + if (context->comparison_result < 0 + || max_hit_count <= *hit_count) + goto succeeded; + } + + } else { + /* + * The leaf index have a group entry. + * Find text and heading locations. + */ + while (context->entry_index < context->entry_count) { + if (EB_SIZE_PAGE < context->offset + 2) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + group_id = eb_uint1(cache_p); + + if (group_id == 0x00) { + /* + * 0x00 -- Single entry. + */ + context->entry_length = eb_uint1(cache_p + 1); + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 14) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + context->comparison_result + = context->compare_single(context->canonicalized_word, + cache_p + 2, context->entry_length); + if (context->comparison_result == 0) { + hit->heading.page + = eb_uint4(cache_p + context->entry_length + 8); + hit->heading.offset + = eb_uint2(cache_p + context->entry_length + 12); + hit->text.page + = eb_uint4(cache_p + context->entry_length + 2); + hit->text.offset + = eb_uint2(cache_p + context->entry_length + 6); + hit++; + *hit_count += 1; + } + context->in_group_entry = 0; + context->offset += context->entry_length + 14; + cache_p += context->entry_length + 14; + + } else if (group_id == 0x80) { + /* + * 0x80 -- Start of group entry. + */ + context->entry_length = eb_uint1(cache_p + 1); + if (EB_SIZE_PAGE + < context->offset + context->entry_length + 6) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + context->comparison_result + = context->compare_single(context->word, cache_p + 6, + context->entry_length); + context->in_group_entry = 1; + cache_p += context->entry_length + 6; + context->offset += context->entry_length + 6; + + } else if (group_id == 0xc0) { + /* + * Element of the group entry. + */ + if (EB_SIZE_PAGE < context->offset + 13) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Compare word and pattern. + * If matched, add it to a hit list. + */ + if (context->in_group_entry + && context->comparison_result == 0) { + hit->heading.page = eb_uint4(cache_p + 7); + hit->heading.offset = eb_uint2(cache_p + 11); + hit->text.page = eb_uint4(cache_p + 1); + hit->text.offset = eb_uint2(cache_p + 5); + hit++; + *hit_count += 1; + } + context->offset += 13; + cache_p += 13; + + } else { + /* + * Unknown group ID. + */ + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + context->entry_index++; + if (context->comparison_result < 0 + || max_hit_count <= *hit_count) + goto succeeded; + } + } + + /* + * Go to a next page if available. + */ + if (PAGE_ID_IS_LAYER_END(context->page_id)) { + context->comparison_result = -1; + goto succeeded; + } + context->page++; + context->entry_index = 0; + } + + succeeded: + LOG(("out: eb_hit_list_multi(hit_count=%d) = %s", + *hit_count, eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + * Discard cache if read error occurs. + */ + failed: + if (error_code == EB_ERR_FAIL_READ_TEXT) + cache_book_code = EB_BOOK_NONE; + *hit_count = 0; + LOG(("out: eb_hit_list_multi() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Do AND operation of hit lists. + * and_list = hit_lists[0] AND hit_lists[1] AND ... + */ +static void +eb_and_hit_lists(EB_Hit and_list[EB_TMP_MAX_HITS], int *and_count, + int max_and_count, int hit_list_count, + EB_Hit hit_lists[EB_NUMBER_OF_SEARCH_CONTEXTS][EB_TMP_MAX_HITS], + int hit_counts[EB_NUMBER_OF_SEARCH_CONTEXTS]) +{ + int hit_indexes[EB_NUMBER_OF_SEARCH_CONTEXTS]; + int greatest_list; + int greatest_page; + int greatest_offset; + int current_page; + int current_offset; + int equal_count; + int increment_count; + int i; + + LOG(("in: eb_and_hit_lists(max_and_count=%d, hit_list_count=%d)", + max_and_count, hit_list_count)); + + /* + * Initialize indexes for the hit_lists[]. + */ + for (i = 0; i < hit_list_count; i++) + hit_indexes[i] = 0; + + /* + * Generate the new list `and_list'. + */ + *and_count = 0; + while (*and_count < max_and_count) { + /* + * Initialize variables. + */ + greatest_list = -1; + greatest_page = 0; + greatest_offset = 0; + current_page = 0; + current_offset = 0; + equal_count = 0; + + /* + * Compare the current elements of the lists. + */ + for (i = 0; i < hit_list_count; i++) { + /* + * If we have been reached to the tail of the hit_lists[i], + * skip the list. + */ + if (hit_counts[i] <= hit_indexes[i]) + continue; + + /* + * Compare {current_page, current_offset} and {greatest_page, + * greatest_offset}. + */ + current_page = hit_lists[i][hit_indexes[i]].text.page; + current_offset = hit_lists[i][hit_indexes[i]].text.offset; + + if (greatest_list == -1) { + greatest_page = current_page; + greatest_offset = current_offset; + greatest_list = i; + equal_count++; + } else if (greatest_page < current_page) { + greatest_page = current_page; + greatest_offset = current_offset; + greatest_list = i; + } else if (current_page == greatest_page + && greatest_offset < current_offset) { + greatest_page = current_page; + greatest_offset = current_offset; + greatest_list = i; + } else if (current_page == greatest_page + && current_offset == greatest_offset) { + equal_count++; + } + } + + if (equal_count == hit_list_count) { + /* + * All the current elements of the lists point to the same + * position. This is hit element. Increase indexes of all + * lists. + */ + memcpy(and_list + *and_count, hit_lists[0] + hit_indexes[0], + sizeof(EB_Hit)); + *and_count += 1; + for (i = 0; i < hit_list_count; i++) { + if (hit_counts[i] <= hit_indexes[i]) + continue; + hit_indexes[i]++; + } + } else { + /* + * This is not hit element. Increase indexes of all lists + * except for greatest element(s). If there is no list + * whose index is incremented, our job has been completed. + */ + increment_count = 0; + for (i = 0; i < hit_list_count; i++) { + if (hit_counts[i] <= hit_indexes[i]) + continue; + current_page = hit_lists[i][hit_indexes[i]].text.page; + current_offset = hit_lists[i][hit_indexes[i]].text.offset; + if (current_page != greatest_page + || current_offset != greatest_offset) { + hit_indexes[i]++; + increment_count++; + } + } + if (increment_count == 0) + break; + } + } + + /* + * Update hit_counts[]. + * The hit counts of the lists are set to the current indexes. + */ + for (i = 0; i < hit_list_count; i++) + hit_counts[i] = hit_indexes[i]; + + LOG(("out: eb_and_hit_lists(and_count=%d)", *and_count)); +} diff --git a/lib/ebu/ebu/search.lo b/lib/ebu/ebu/search.lo new file mode 100644 index 0000000..37a4d7d --- /dev/null +++ b/lib/ebu/ebu/search.lo @@ -0,0 +1,12 @@ +# search.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/search.o' + +# Name of the non-PIC object +non_pic_object='search.o' + diff --git a/lib/ebu/ebu/setword.c b/lib/ebu/ebu/setword.c new file mode 100644 index 0000000..08082ec --- /dev/null +++ b/lib/ebu/ebu/setword.c @@ -0,0 +1,1495 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Unexported functions. + */ +static void eb_fix_word(EB_Book *book, const EB_Search *search, char *word, + char *canonicalized_word); +static EB_Error_Code eb_convert_latin(EB_Book *book, const char *input_word, + char *word, EB_Word_Code *word_code); +static EB_Error_Code eb_convert_utf8(EB_Book *book, const char *input_word, + char *word, EB_Word_Code *word_code); +static EB_Error_Code eb_convert_euc_jp(EB_Book *book, const char *input_word, + char *word, EB_Word_Code *word_code); +static void eb_convert_katakana_jis(char *word); +static void eb_convert_hiragana_jis(char *word); +static void eb_convert_lower_latin(char *word); +static void eb_convert_lower_jis(char *word); +static void eb_delete_marks_jis(char *word); +static void eb_convert_long_vowels_jis(char *word); +static void eb_delete_long_vowels_jis(char *word); +static void eb_convert_double_consonants_jis(char *word); +static void eb_convert_contracted_sounds_jis(char *word); +static void eb_convert_small_vowels_jis(char *word); +static void eb_convert_voiced_consonants_jis(char *word); +static void eb_convert_p_sounds_jis(char *word); +static void eb_delete_spaces_latin(char *word); +static void eb_delete_spaces_jis(char *word); +static void eb_reverse_word_latin(char *word); +static void eb_reverse_word_utf8(char *word); +static void eb_reverse_word_jis(char *word); + + +/* + * Make a fixed word and a cannonicalized word for `WORD SEARCH'. + * + * If `inputword' is a KANA word, EB_WORD_KANA is returned. + * If `inputword' is a alphabetic word, EB_WORD_ALPHABET is returned. + * Otherwise, -1 is returned. It means that an error occurs. + */ +EB_Error_Code +eb_set_word(EB_Book *book, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code) +{ + EB_Error_Code error_code; + const EB_Search *search; + + LOG(("in: eb_set_word(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + /* + * Make a fixed word and a canonicalized word from `input_word'. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1) + error_code = eb_convert_latin(book, input_word, word, word_code); + else if (book->character_code == EB_CHARCODE_UTF8) + error_code = eb_convert_utf8(book, input_word, word, word_code); + else + error_code = eb_convert_euc_jp(book, input_word, word, word_code); + if (error_code != EB_SUCCESS) + goto failed; + strcpy(canonicalized_word, word); + + /* + * Determine search method. + */ + switch (*word_code) { + case EB_WORD_ALPHABET: + if (book->subbook_current->word_alphabet.start_page != 0) + search = &book->subbook_current->word_alphabet; + else if (book->subbook_current->word_asis.start_page != 0) + search = &book->subbook_current->word_asis; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_KANA: + if (book->subbook_current->word_kana.start_page != 0) + search = &book->subbook_current->word_kana; + else if (book->subbook_current->word_asis.start_page != 0) + search = &book->subbook_current->word_asis; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_OTHER: + if (book->subbook_current->word_asis.start_page != 0) + search = &book->subbook_current->word_asis; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + default: + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Fix the word. + */ + eb_fix_word(book, search, word, canonicalized_word); + + LOG(("out: eb_set_word(word=%s, canonicalized_word=%s, word_code=%d) = %s", + eb_quoted_string(word), eb_quoted_string(canonicalized_word), + (int)*word_code, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *word = '\0'; + *canonicalized_word = '\0'; + *word_code = EB_WORD_INVALID; + LOG(("out: eb_set_word() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Make a fixed word and a cannonicalized word for `ENDWORD SEARCH'. + * + * If `input_word' is a KANA word, EB_WORD_KANA is retuend. + * If `input_word' is a alphabetic word, EB_WORD_ALPHABET is retuend. + * Otherwise, -1 is returned. It means that an error occurs. + */ +EB_Error_Code +eb_set_endword(EB_Book *book, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code) +{ + EB_Error_Code error_code; + const EB_Search *search; + + LOG(("in: eb_set_endword(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + /* + * Make a fixed word and a canonicalized word from `input_word'. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1) + error_code = eb_convert_latin(book, input_word, word, word_code); + else if (book->character_code == EB_CHARCODE_UTF8) + error_code = eb_convert_utf8(book, input_word, word, word_code); + else + error_code = eb_convert_euc_jp(book, input_word, word, word_code); + if (error_code != EB_SUCCESS) + goto failed; + strcpy(canonicalized_word, word); + + /* + * Determine search method. + */ + switch (*word_code) { + case EB_WORD_ALPHABET: + if (book->subbook_current->endword_alphabet.start_page != 0) + search = &book->subbook_current->endword_alphabet; + else if (book->subbook_current->endword_asis.start_page != 0) + search = &book->subbook_current->endword_asis; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_KANA: + if (book->subbook_current->endword_kana.start_page != 0) + search = &book->subbook_current->endword_kana; + else if (book->subbook_current->endword_asis.start_page != 0) + search = &book->subbook_current->endword_asis; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_OTHER: + if (book->subbook_current->endword_asis.start_page != 0) + search = &book->subbook_current->endword_asis; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + default: + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Fix the word. + */ + eb_fix_word(book, search, word, canonicalized_word); + + /* + * Reverse the word. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1) { + eb_reverse_word_latin(word); + eb_reverse_word_latin(canonicalized_word); + } else if (book->character_code == EB_CHARCODE_UTF8) { + eb_reverse_word_utf8(word); + eb_reverse_word_utf8(canonicalized_word); + } else { + eb_reverse_word_jis(word); + eb_reverse_word_jis(canonicalized_word); + } + + LOG(("out: eb_set_endword(word=%s, canonicalized_word=%s, word_code=%d) \ += %s", + eb_quoted_string(word), eb_quoted_string(canonicalized_word), + (int)*word_code, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *word = '\0'; + *canonicalized_word = '\0'; + *word_code = EB_WORD_INVALID; + LOG(("out: eb_set_endword() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Make a fixed word and a cannonicalized word for `KEYWORD SEARCH' + * or `CROSS SEARCH'. + * + * If `inputword' is a KANA word, EB_WORD_KANA is returned. + * If `inputword' is a alphabetic word, EB_WORD_ALPHABET is returned. + * Otherwise, -1 is returned. It means that an error occurs. + */ +EB_Error_Code +eb_set_keyword(EB_Book *book, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code) +{ + EB_Error_Code error_code; + + LOG(("in: eb_set_keyword(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + /* + * Make a fixed word and a canonicalized word from `input_word'. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1) + error_code = eb_convert_latin(book, input_word, word, word_code); + else if (book->character_code == EB_CHARCODE_UTF8) + error_code = eb_convert_utf8(book, input_word, word, word_code); + else + error_code = eb_convert_euc_jp(book, input_word, word, word_code); + if (error_code != EB_SUCCESS) + goto failed; + strcpy(canonicalized_word, word); + + /* + * Fix the word. + */ + eb_fix_word(book, &book->subbook_current->keyword, word, + canonicalized_word); + + LOG(("out: eb_set_keyword(word=%s, canonicalized_word=%s, word_code=%d) \ += %s", + eb_quoted_string(word), eb_quoted_string(canonicalized_word), + (int)*word_code, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *word = '\0'; + *canonicalized_word = '\0'; + *word_code = EB_WORD_INVALID; + LOG(("out: eb_set_keyword() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Make a fixed word and a cannonicalized word for `MULTI SEARCH'. + * + * If `inputword' is a KANA word, EB_WORD_KANA is returned. + * If `inputword' is a alphabetic word, EB_WORD_ALPHABET is returned. + * Otherwise, -1 is returned. It means that an error occurs. + */ +EB_Error_Code +eb_set_multiword(EB_Book *book, EB_Multi_Search_Code multi_id, + EB_Multi_Entry_Code entry_id, const char *input_word, char *word, + char *canonicalized_word, EB_Word_Code *word_code) +{ + EB_Error_Code error_code; + EB_Search *search; + + LOG(("in: eb_set_multiword(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + /* + * Make a fixed word and a canonicalized word from `input_word'. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1) + error_code = eb_convert_latin(book, input_word, word, word_code); + else if (book->character_code == EB_CHARCODE_UTF8) + error_code = eb_convert_utf8(book, input_word, word, word_code); + else + error_code = eb_convert_euc_jp(book, input_word, word, word_code); + if (error_code != EB_SUCCESS) + goto failed; + strcpy(canonicalized_word, word); + + /* + * Fix the word. + */ + search = &book->subbook_current->multis[multi_id].entries[entry_id]; + eb_fix_word(book, search, word, canonicalized_word); + + LOG(("out: eb_set_multiword(word=%s, canonicalized_word=%s, word_code=%d) \ += %s", + eb_quoted_string(word), eb_quoted_string(canonicalized_word), + (int)*word_code, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *word = '\0'; + *canonicalized_word = '\0'; + *word_code = EB_WORD_INVALID; + LOG(("out: eb_set_multiword() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Fix `canonicalized_word' and `word' according with `book->character_code' + * and `search'. + */ +static void +eb_fix_word(EB_Book *book, const EB_Search *search, char *word, + char *canonicalized_word) +{ + LOG(("in: eb_fix_word(book=%d, word=%s, canonicalized_word=%s)", + (int)book->code, eb_quoted_string(word), + eb_quoted_string(canonicalized_word))); + + if (search->index_id == 0xa1 && search->candidates_page != 0) + return; + + if (book->character_code == EB_CHARCODE_UTF8) { + return; + + } else if (book->character_code == EB_CHARCODE_ISO8859_1) { + if (search->space == EB_INDEX_STYLE_DELETE) + eb_delete_spaces_latin(canonicalized_word); + + if (search->lower == EB_INDEX_STYLE_CONVERT) + eb_convert_lower_latin(canonicalized_word); + + } else { + if (search->space == EB_INDEX_STYLE_DELETE) + eb_delete_spaces_jis(canonicalized_word); + + if (search->katakana == EB_INDEX_STYLE_CONVERT) + eb_convert_katakana_jis(canonicalized_word); + else if (search->katakana == EB_INDEX_STYLE_REVERSED_CONVERT) + eb_convert_hiragana_jis(canonicalized_word); + + if (search->lower == EB_INDEX_STYLE_CONVERT) + eb_convert_lower_jis(canonicalized_word); + + if (search->mark == EB_INDEX_STYLE_DELETE) + eb_delete_marks_jis(canonicalized_word); + + if (search->long_vowel == EB_INDEX_STYLE_CONVERT) + eb_convert_long_vowels_jis(canonicalized_word); + else if (search->long_vowel == EB_INDEX_STYLE_DELETE) + eb_delete_long_vowels_jis(canonicalized_word); + + if (search->double_consonant == EB_INDEX_STYLE_CONVERT) + eb_convert_double_consonants_jis(canonicalized_word); + + if (search->contracted_sound == EB_INDEX_STYLE_CONVERT) + eb_convert_contracted_sounds_jis(canonicalized_word); + + if (search->small_vowel == EB_INDEX_STYLE_CONVERT) + eb_convert_small_vowels_jis(canonicalized_word); + + if (search->voiced_consonant == EB_INDEX_STYLE_CONVERT) + eb_convert_voiced_consonants_jis(canonicalized_word); + + if (search->p_sound == EB_INDEX_STYLE_CONVERT) + eb_convert_p_sounds_jis(canonicalized_word); + } + + if (search->index_id != 0x70 && search->index_id != 0x90) + strcpy(word, canonicalized_word); + + LOG(("out: eb_fix_word(word=%s, canonicalized_word=%s)", + eb_quoted_string(word), eb_quoted_string(canonicalized_word))); +} + + +/* + * Convert `input_word' to ISO 8859 1 and put it into `word'. + * + * If `input_word' is a valid string to search, EB_WORD_ALPHABET is returned. + * Otherwise, -1 is returned. + */ +static EB_Error_Code +eb_convert_latin(EB_Book *book, const char *input_word, char *word, + EB_Word_Code *word_code) +{ + EB_Error_Code error_code; + unsigned char *wp = (unsigned char *) word; + const unsigned char *inp = (const unsigned char *) input_word; + const unsigned char *tail; + unsigned char c1; + int word_length = 0; + + LOG(("in: eb_convert_latin(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + /* + * Find the tail of `input_word'. + */ + tail = (const unsigned char *) input_word + strlen(input_word) - 1; + while ((const unsigned char *)input_word <= tail + && (*tail == ' ' || *tail == '\t')) + tail--; + tail++; + + /* + * Ignore spaces and tabs in the beginning of `input_word'. + */ + while (*inp == ' ' || *inp == '\t') + inp++; + + while (inp < tail) { + /* + * Check for the length of the word. + * If exceeds, return with an error code. + */ + if (EB_MAX_WORD_LENGTH < word_length + 1) { + error_code = EB_ERR_TOO_LONG_WORD; + goto failed; + } + + c1 = *inp++; + + /* + * Tabs are translated to spaces. + */ + if (c1 == '\t') + c1 = ' '; + + *wp++ = c1; + + /* + * Skip successive spaces and tabs. + */ + if (c1 == ' ') { + while (*inp == '\t' || *inp == ' ') + inp++; + } + + word_length++; + } + *wp = '\0'; + + if (word_length == 0) { + error_code = EB_ERR_EMPTY_WORD; + goto failed; + } + *word_code = EB_WORD_ALPHABET; + + LOG(("out: eb_convert_latin(word=%s, word_code=%d) = %s", + eb_quoted_string(word), (int)*word_code, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *word = '\0'; + *word_code = EB_WORD_INVALID; + LOG(("out: eb_convert_latin() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Table used to convert JIS X 0208 to ASCII. + */ +static const unsigned int jisx0208_table[] = { + /* 0x20 -- 0x2f */ + 0x2121, 0x212a, 0x2149, 0x2174, 0x2170, 0x2173, 0x2175, 0x2147, + 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x215d, 0x2125, 0x213f, + /* 0x30 -- 0x3f */ + 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, + 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129, + /* 0x40 -- 0x4f */ + 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, + 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, + /* 0x50 -- 0x5f */ + 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, + 0x2358, 0x2359, 0x235a, 0x214e, 0x2140, 0x214f, 0x2130, 0x2132, + /* 0x60 -- 0x6f */ + 0x2146, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, + 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, + /* 0x70 -- 0x7e */ + 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, + 0x2378, 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2141 +}; + +/* + * Table used to convert JIS X 0201 KATAKANA to JIS X 0208. + */ +static const unsigned int jisx0201_table[] = { + /* 0xa0 -- 0xaf */ + 0x0000, 0x2123, 0x2156, 0x2157, 0x2122, 0x2126, 0x2572, 0x2521, + 0x2523, 0x2525, 0x2527, 0x2529, 0x2563, 0x2565, 0x2567, 0x2543, + /* 0xb0 -- 0xbf */ + 0x213c, 0x2522, 0x2524, 0x2526, 0x2528, 0x252a, 0x252b, 0x252d, + 0x252f, 0x2531, 0x2533, 0x2535, 0x2537, 0x2539, 0x253b, 0x253d, + /* 0xc0 -- 0xcf */ + 0x253f, 0x2541, 0x2544, 0x2546, 0x2548, 0x254a, 0x254b, 0x254c, + 0x254d, 0x254e, 0x254f, 0x2552, 0x2555, 0x2558, 0x255b, 0x255e, + /* 0xd0 -- 0xdf */ + 0x255f, 0x2560, 0x2561, 0x2562, 0x2564, 0x2566, 0x2568, 0x2569, + 0x256a, 0x256b, 0x256c, 0x256d, 0x256f, 0x2573, 0x212b, 0x212c +}; + +/* + * Convert `input_word' to JIS X0208 and put it into `word'. + * + * If `input_word' is a valid string to search, EB_WORD_ALPHABET or + * EB_WORD_KANA is returned. + * Otherwise, -1 is returned. + */ +static EB_Error_Code +eb_convert_euc_jp(EB_Book *book, const char *input_word, char *word, + EB_Word_Code *word_code) +{ + EB_Error_Code error_code; + unsigned char *wp = (unsigned char *) word; + const unsigned char *inp = (const unsigned char *) input_word; + const unsigned char *tail; + unsigned char c1 = 0, c2 = 0; + int kana_count = 0; + int alphabet_count = 0; + int kanji_count = 0; + int word_length = 0; + + LOG(("in: eb_convert_euc_jp(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + /* + * Find the tail of `input_word'. + */ + tail = (const unsigned char *) input_word + strlen(input_word) - 1; + for (;;) { + if (inp < tail && (*tail == ' ' || *tail == '\t')) + tail--; + else if (inp < tail - 1 && *tail == 0xa1 && *(tail - 1) == 0xa1) + tail -= 2; + else + break; + } + tail++; + + /* + * Ignore spaces and tabs in the beginning of `input_word'. + */ + for (;;) { + if (*inp == ' ' || *inp == '\t') + inp++; + else if (*inp == 0xa1 && *(inp + 1) == 0xa1) + inp += 2; + else + break; + } + + while (inp < tail) { + /* + * Check for the length of the word. + * If exceeds, return with an error code. + */ + if (EB_MAX_WORD_LENGTH < word_length + 2) { + error_code = EB_ERR_TOO_LONG_WORD; + goto failed; + } + + /* + * Tabs are translated to spaces. + */ + c1 = *inp++; + if (c1 == '\t') + c1 = ' '; + + if (0x20 <= c1 && c1 <= 0x7e) { + /* + * `c1' is a character in ASCII. + */ + unsigned int c = jisx0208_table[c1 - 0x20]; + c1 = c >> 8; + c2 = c & 0xff; + } else if (0xa1 <= c1 && c1 <= 0xfe) { + /* + * `c1' is a character in JIS X 0208, or local character. + */ + c2 = *inp++; + + if (0xa1 <= c2 && c2 <= 0xfe) { + c1 &= 0x7f; + c2 &= 0x7f; + } else if (c2 < 0x20 || 0x7e < c2) { + error_code = EB_ERR_BAD_WORD; + goto failed; + } + } else if (c1 == 0x8e) { + /* + * `c1' is SS2. + */ + if (c2 < 0xa1 || 0xdf < c2) { + error_code = EB_ERR_BAD_WORD; + goto failed; + } + c2 = jisx0201_table[c2 - 0xa0]; + c1 = 0x25; + } else { + error_code = EB_ERR_BAD_WORD; + goto failed; + } + + /* + * The following characters are recognized as alphabet. + * 2330 - 2339: `0' .. `9' + * 2341 - 235a: `A' .. `Z' + * 2361 - 237a: `a' .. `z' (convert to upper cases) + */ + *wp++ = c1; + *wp++ = c2; + + if (c1 == 0x23) + alphabet_count++; + else if (c1 == 0x24 || c1 == 0x25) + kana_count++; + else if (c1 != 0x21) + kanji_count++; + + word_length += 2; + } + *wp = '\0'; + + if (word_length == 0) { + error_code = EB_ERR_EMPTY_WORD; + goto failed; + } + if (alphabet_count == 0 && kana_count != 0 && kanji_count == 0) + *word_code = EB_WORD_KANA; + else if (alphabet_count != 0 && kana_count == 0 && kanji_count == 0) + *word_code = EB_WORD_ALPHABET; + else + *word_code = EB_WORD_OTHER; + + LOG(("out: eb_convert_euc_jp(word=%s, word_code=%d) = %s", + eb_quoted_string(word), (int)*word_code, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *word = '\0'; + *word_code = EB_WORD_INVALID; + LOG(("out: eb_convert_euc_jp() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Convert KATAKANA to HIRAGANA in `word'. + */ +static void +eb_convert_katakana_jis(char *word) +{ + unsigned char *wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_convert_katakana_jis(word=%s)", eb_quoted_string(word))); + + while (*wp != '\0' && *(wp + 1) != '\0') { + c1 = *wp; + c2 = *(wp + 1); + + if (c1 == 0x25 && 0x21 <= c2 && c2 <= 0x76) { + /* + * This is a KATAKANA. Convert to corresponding HIRAGANA. + */ + *wp = 0x24; + } + wp += 2; + } + *wp = '\0'; + + LOG(("out: eb_convert_katakana_jis()")); +} + + +/* + * Convert HIRAGANA to KATAKANA in `word'. + */ +static void +eb_convert_hiragana_jis(char *word) +{ + unsigned char *wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_convert_hiragana_jis(word=%s)", eb_quoted_string(word))); + + while (*wp != '\0' && *(wp + 1) != '\0') { + c1 = *wp; + c2 = *(wp + 1); + + if (c1 == 0x24 && 0x21 <= c2 && c2 <= 0x76) { + /* + * This is a HIRAGANA. Convert to corresponding KATAKANA. + */ + *wp = 0x25; + } + wp += 2; + } + *wp = '\0'; + + LOG(("out: eb_convert_hiragana_jis()")); +} + + +/* + * Convert lower case to upper case in `word'. + */ +static void +eb_convert_lower_latin(char *word) +{ + unsigned char *wp = (unsigned char *) word; + + LOG(("in: eb_convert_lower_latin(word=%s)", eb_quoted_string(word))); + + while (*wp != '\0') { + if (('a' <= *wp && *wp <= 'z') + || (0xe0 <= *wp && *wp <= 0xf6) || (0xf8 <= *wp && *wp <= 0xfe)) { + /* + * This is a lower case letter. Convert to upper case. + */ + *wp -= 0x20; + } + wp++; + } + *wp = '\0'; + + LOG(("out: eb_convert_lower_latin()")); +} + + +/* + * Convert lower case to upper case in `word'. + */ +static void +eb_convert_lower_jis(char *word) +{ + unsigned char *wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_convert_lower_jis(word=%s)", eb_quoted_string(word))); + + while (*wp != '\0' && *(wp + 1) != '\0') { + c1 = *wp; + c2 = *(wp + 1); + + if (c1 == 0x23 && 0x61 <= c2 && c2 <= 0x7a) { + /* + * This is a lower case letter. Convert to upper case. + */ + *(wp + 1) = c2 - 0x20; + } + wp += 2; + } + *wp = '\0'; + + LOG(("out: eb_convert_lower_jis()")); +} + + +/* + * Delete some marks in `word'. + */ +static void +eb_delete_marks_jis(char *word) +{ + unsigned char *in_wp = (unsigned char *) word; + unsigned char *out_wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_delete_marks_jis(word=%s)", eb_quoted_string(word))); + + while (*in_wp != '\0' && *(in_wp + 1) != '\0') { + c1 = *in_wp; + c2 = *(in_wp + 1); + + if (c1 != 0x21 + || (c2 != 0x26 && c2 != 0x3e && c2 != 0x47 && c2 != 0x5d)) { + /* + * This is not a character to be deleted. + */ + *out_wp = c1; + *(out_wp + 1) = c2; + out_wp += 2; + } + in_wp += 2; + } + *out_wp = '\0'; + + LOG(("out: eb_delete_marks_jis()")); +} + + +/* + * The table is used to convert long vowel marks. + */ +static const char long_vowel_table[] = { + 0x22, /* a(21) -> A(22) */ 0x22, /* A(22) -> A(22) */ + 0x24, /* i(23) -> I(24) */ 0x24, /* I(24) -> I(24) */ + 0x26, /* u(25) -> U(26) */ 0x26, /* U(26) -> U(26) */ + 0x28, /* e(27) -> E(28) */ 0x28, /* E(28) -> E(28) */ + 0x2a, /* o(29) -> O(2a) */ 0x2a, /* O(2a) -> O(2a) */ + 0x22, /* KA(2b) -> A(22) */ 0x22, /* GA(2c) -> A(22) */ + 0x24, /* KI(2d) -> I(24) */ 0x24, /* GI(2e) -> I(24) */ + 0x26, /* KU(2f) -> U(26) */ 0x26, /* GU(30) -> U(26) */ + 0x28, /* KE(31) -> E(28) */ 0x28, /* GE(32) -> E(28) */ + 0x2a, /* KO(33) -> O(2a) */ 0x2a, /* GO(34) -> O(2a) */ + 0x22, /* SA(35) -> A(22) */ 0x22, /* ZA(36) -> A(22) */ + 0x24, /* SI(37) -> I(24) */ 0x24, /* ZI(38) -> I(24) */ + 0x26, /* SU(39) -> U(26) */ 0x26, /* ZU(3a) -> U(26) */ + 0x28, /* SE(3b) -> E(28) */ 0x28, /* ZE(3c) -> E(28) */ + 0x2a, /* SO(3d) -> O(2a) */ 0x2a, /* ZO(3e) -> O(2a) */ + 0x22, /* TA(3f) -> A(22) */ 0x22, /* DA(40) -> A(22) */ + 0x24, /* TI(41) -> I(24) */ 0x24, /* DI(42) -> I(24) */ + 0x26, /* tu(43) -> U(26) */ 0x26, /* TU(44) -> U(26) */ + 0x26, /* DU(45) -> U(26) */ 0x28, /* TE(46) -> E(28) */ + 0x28, /* DE(47) -> E(28) */ 0x2a, /* TO(48) -> O(2a) */ + 0x2a, /* DO(49) -> O(2a) */ 0x22, /* NA(4a) -> A(22) */ + 0x24, /* NI(4b) -> I(24) */ 0x26, /* NU(4c) -> U(26) */ + 0x28, /* NE(4d) -> E(28) */ 0x2a, /* NO(4e) -> O(2a) */ + 0x22, /* HA(4f) -> A(22) */ 0x22, /* BA(50) -> A(22) */ + 0x22, /* PA(51) -> A(22) */ 0x24, /* HI(52) -> I(24) */ + 0x24, /* BI(53) -> I(24) */ 0x24, /* PI(54) -> I(24) */ + 0x26, /* HU(55) -> U(26) */ 0x26, /* BU(56) -> U(26) */ + 0x26, /* PU(57) -> U(26) */ 0x28, /* HE(58) -> E(28) */ + 0x28, /* BE(59) -> E(28) */ 0x28, /* PE(5a) -> E(28) */ + 0x2a, /* HO(5b) -> O(2a) */ 0x2a, /* BO(5c) -> O(2a) */ + 0x2a, /* PO(5d) -> O(2a) */ 0x22, /* MA(5e) -> A(22) */ + 0x24, /* MI(5f) -> I(24) */ 0x26, /* MU(60) -> U(26) */ + 0x28, /* ME(61) -> E(28) */ 0x2a, /* MO(62) -> O(2a) */ + 0x22, /* ya(63) -> A(22) */ 0x22, /* YA(64) -> A(22) */ + 0x26, /* yu(65) -> U(26) */ 0x26, /* YU(66) -> U(26) */ + 0x2a, /* yo(67) -> O(2a) */ 0x2a, /* YO(68) -> O(2a) */ + 0x22, /* RA(69) -> A(22) */ 0x24, /* RI(6a) -> I(24) */ + 0x26, /* RU(6b) -> U(26) */ 0x28, /* RE(6c) -> E(28) */ + 0x2a, /* RO(6d) -> O(2a) */ 0x22, /* wa(6e) -> A(22) */ + 0x22, /* WA(6f) -> A(22) */ 0x24, /* WI(70) -> I(24) */ + 0x28, /* WE(71) -> E(28) */ 0x2a, /* WO(72) -> O(2a) */ + 0x73, /* N (73) -> N(73) */ 0x26, /* VU(74) -> U(26) */ + 0x22, /* ka(75) -> A(22) */ 0x28 /* ke(76) -> E(28) */ +}; + + +/* + * Convert long vowel marks in `word' to the previous vowels. + */ +static void +eb_convert_long_vowels_jis(char *word) +{ + unsigned char *wp = (unsigned char *) word; + unsigned char c1, c2; + unsigned char previous_c1 = '\0', previous_c2 = '\0'; + + LOG(("in: eb_convert_long_vowels_jis(word=%s)", eb_quoted_string(word))); + + while (*wp != '\0' && *(wp + 1) != '\0') { + c1 = *wp; + c2 = *(wp + 1); + + if (c1 == 0x21 && c2 == 0x3c) { + /* + * The is a long vowel mark. + * Convert to a vowel of the prev_ KANA character. + * If prev_ character is not KANA, the conversion is + * not done. + */ + if ((previous_c1 == 0x24 || previous_c1 == 0x25) + && 0x21 <= previous_c2 && previous_c2 <= 0x76) { + *wp = previous_c1; + *(wp + 1) = long_vowel_table[previous_c2 - 0x21]; + } + } + previous_c1 = c1; + previous_c2 = c2; + wp += 2; + } + *wp = '\0'; + + LOG(("out: eb_convert_long_vowels_jis()")); +} + + +/* + * Delete long vowel marks in `word'. + */ +static void +eb_delete_long_vowels_jis(char *word) +{ + unsigned char *in_wp = (unsigned char *) word; + unsigned char *out_wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_delete_long_vowels_jis(word=%s)", eb_quoted_string(word))); + + while (*in_wp != '\0' && *(in_wp + 1) != '\0') { + c1 = *in_wp; + c2 = *(in_wp + 1); + + if (c1 != 0x21 || c2 != 0x3c) { + /* + * The is not a long vowel mark. + */ + *out_wp = c1; + *(out_wp + 1) = c2; + out_wp += 2; + } + in_wp += 2; + } + *out_wp = '\0'; + + LOG(("out: eb_delete_long_vowels_jis()")); +} + + +/* + * Convert the double consonant mark `tu' to `TU'. + */ +static void +eb_convert_double_consonants_jis(char *word) +{ + unsigned char *wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_convert_double_consonants_jis(word=%s)", + eb_quoted_string(word))); + + while (*wp != '\0' && *(wp + 1) != '\0') { + c1 = *wp; + c2 = *(wp + 1); + + if ((c1 == 0x24 || c1 == 0x25) && c2 == 0x43) { + /* + * This is a double sound mark. Convert to the corresponding + * sound mark. + */ + *(wp + 1) = c2 + 1; + } + wp += 2; + } + *wp = '\0'; + + LOG(("out: eb_convert_double_consonants_jis()")); +} + + +/* + * Convert the contracted sound marks to the corresponding + * non-contracted sound marks. + * (`ya', `yu', `yo', `wa', `ka', `ke' -> `YA', `YU', `YO', `WA', `KA', `KE') + */ +static void +eb_convert_contracted_sounds_jis(char *word) +{ + unsigned char *wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_convert_contracted_sounds_jis(word=%s)", + eb_quoted_string(word))); + + while (*wp != '\0' && *(wp + 1) != '\0') { + c1 = *wp; + c2 = *(wp + 1); + + if (c1 == 0x24 || c1 == 0x25) { + /* + * This is HIRAGANA or KANAKANA. + * If this is a contracted sound mark, convert to the + * corresponding uncontracted sound mark. + */ + if (c2 == 0x63 || c2 == 0x65 || c2 == 0x67 || c2 == 0x6e) + *(wp + 1) = c2 + 1; + else if (c2 == 0x75) + *(wp + 1) = 0x2b; + else if (c2 == 0x76) + *(wp + 1) = 0x31; + } + wp += 2; + } + *wp = '\0'; + + LOG(("in: eb_convert_contracted_sounds_jis()")); +} + + +/* + * Convert the small vowels to the normal vowels. + * (`a', `i', `u', `e', `o' -> `A', `I', `U', `E', `O') + */ +static void +eb_convert_small_vowels_jis(char *word) +{ + unsigned char *wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_convert_small_vowels_jis(word=%s)", eb_quoted_string(word))); + + while (*wp != '\0' && *(wp + 1) != '\0') { + c1 = *wp; + c2 = *(wp + 1); + + if (c1 == 0x24 || c1 == 0x25) { + /* + * This is HIRAGANA or KANAKANA. + * If this is a small vowel mark, convert to a normal vowel. + */ + if (c2 == 0x21 || c2 == 0x23 || c2 == 0x25 || c2 == 0x27 + || c2 == 0x29) + *(wp + 1) = c2 + 1; + } + wp += 2; + } + *wp = '\0'; + + LOG(("out: eb_convert_small_vowels_jis()")); +} + + +/* + * The table is used to convert voiced consonant marks. + */ +static const char voiced_consonant_table[] = { + 0x21, /* a(21) -> a(22) */ 0x22, /* A(22) -> A(22) */ + 0x23, /* i(23) -> i(24) */ 0x24, /* I(24) -> I(24) */ + 0x25, /* u(25) -> u(26) */ 0x26, /* U(26) -> U(26) */ + 0x27, /* e(27) -> e(28) */ 0x28, /* E(28) -> E(28) */ + 0x29, /* o(29) -> o(2a) */ 0x2a, /* O(2a) -> O(2a) */ + 0x2b, /* KA(2b) -> KA(2b) */ 0x2b, /* GA(2c) -> KA(2b) */ + 0x2d, /* KI(2d) -> KI(2d) */ 0x2d, /* GI(2e) -> KI(2d) */ + 0x2f, /* KU(2f) -> KU(2f) */ 0x2f, /* GU(30) -> KU(2f) */ + 0x31, /* KE(31) -> KE(31) */ 0x31, /* GE(32) -> KE(31) */ + 0x33, /* KO(33) -> KO(33) */ 0x33, /* GO(34) -> KO(33) */ + 0x35, /* SA(35) -> SA(35) */ 0x35, /* ZA(36) -> SA(35) */ + 0x37, /* SI(37) -> SI(37) */ 0x37, /* ZI(38) -> SI(37) */ + 0x39, /* SU(39) -> SU(39) */ 0x39, /* ZU(3a) -> SU(39) */ + 0x3b, /* SE(3b) -> SE(3b) */ 0x3b, /* ZE(3c) -> SE(3b) */ + 0x3d, /* SO(3d) -> SO(3d) */ 0x3d, /* ZO(3e) -> SO(3d) */ + 0x3f, /* TA(3f) -> TA(3f) */ 0x3f, /* DA(40) -> TA(3f) */ + 0x41, /* TI(41) -> TI(41) */ 0x41, /* DI(42) -> TI(41) */ + 0x43, /* tu(43) -> TU(43) */ 0x44, /* TU(44) -> TU(44) */ + 0x44, /* DU(45) -> TU(44) */ 0x46, /* TE(46) -> TE(46) */ + 0x46, /* DE(47) -> TE(46) */ 0x48, /* TO(48) -> TO(48) */ + 0x48, /* DO(49) -> TO(48) */ 0x4a, /* NA(4a) -> NA(4a) */ + 0x4b, /* NI(4b) -> NI(4b) */ 0x4c, /* NU(4c) -> NU(4c) */ + 0x4d, /* NE(4d) -> NE(4d) */ 0x4e, /* NO(4e) -> NO(4e) */ + 0x4f, /* HA(4f) -> HA(4f) */ 0x4f, /* BA(50) -> HA(4f) */ + 0x51, /* PA(51) -> PA(51) */ 0x52, /* HI(52) -> HI(52) */ + 0x52, /* BI(53) -> HI(52) */ 0x54, /* PI(54) -> PU(54) */ + 0x55, /* HU(55) -> HU(55) */ 0x55, /* BU(56) -> HU(55) */ + 0x57, /* PU(57) -> PU(57) */ 0x58, /* HE(58) -> HE(58) */ + 0x58, /* BE(59) -> HE(58) */ 0x5a, /* PE(5a) -> PE(5a) */ + 0x5b, /* HO(5b) -> HO(5b) */ 0x5b, /* BO(5c) -> HO(5b) */ + 0x5d, /* PO(5d) -> PO(5d) */ 0x5e, /* MA(5e) -> MA(5e) */ + 0x5f, /* MI(5f) -> MI(5f) */ 0x60, /* MU(60) -> MU(60) */ + 0x61, /* ME(61) -> ME(61) */ 0x62, /* MO(62) -> MO(62) */ + 0x64, /* ya(63) -> ya(63) */ 0x64, /* YA(64) -> YA(64) */ + 0x66, /* yu(65) -> yu(65) */ 0x66, /* YU(66) -> YU(66) */ + 0x68, /* yo(67) -> yo(67) */ 0x68, /* YO(68) -> YO(68) */ + 0x69, /* RA(69) -> TA(69) */ 0x6a, /* RI(6a) -> RI(6a) */ + 0x6b, /* RU(6b) -> RU(6b) */ 0x6c, /* RE(6c) -> RE(6c) */ + 0x6d, /* RO(6d) -> RO(6d) */ 0x6e, /* wa(6e) -> wa(6e) */ + 0x6f, /* WA(6f) -> WA(6f) */ 0x70, /* WI(70) -> WI(70) */ + 0x71, /* WE(71) -> WE(71) */ 0x72, /* WO(72) -> WO(72) */ + 0x73, /* N(73) -> N(73) */ 0x26, /* VU(74) -> U(26) */ + 0x75, /* ka(75) -> ka(75) */ 0x76 /* ke(76) -> ke(76) */ +}; + +/* + * Convert the contracted sound marks to the corresponding + * non-contracted sound marks (e.g. `GA' to `KA'). + */ +static void +eb_convert_voiced_consonants_jis(char *word) +{ + unsigned char *wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_convert_voiced_consonants_jis(word=%s)", + eb_quoted_string(word))); + + while (*wp != '\0' && *(wp + 1) != '\0') { + c1 = *wp; + c2 = *(wp + 1); + + if ((c1 == 0x24 || c1 == 0x25) && 0x21 <= c2 && c2 <= 0x76) { + /* + * This is a voiced constonat mark. Convert to the + * corresponding unvoiced constonant mark. + */ + *(wp + 1) = voiced_consonant_table[c2 - 0x21]; + } + wp += 2; + } + *wp = '\0'; + + LOG(("out: eb_convert_voiced_consonants_jis()")); +} + + +/* + * Convert the p sound marks + * (`PA', `PI', `PU', `PE', `PO' -> `HA', `HI', `HU', `HE', `HO') + */ +static void +eb_convert_p_sounds_jis(char *word) +{ + unsigned char *wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_convert_p_sounds_jis(word=%s)", eb_quoted_string(word))); + + while (*wp != '\0' && *(wp + 1) != '\0') { + c1 = *wp; + c2 = *(wp + 1); + + if (c1 == 0x24 || c1 == 0x25) { + /* + * This is HIRAGANA or KANAKANA. + * If this is a p-sound mark, convert to the corresponding + * unvoiced consonant mark. + */ + if (c2 == 0x51 || c2 == 0x54 || c2 == 0x57 || c2 == 0x5a + || c2 == 0x5d) + *(wp + 1) = c2 - 2; + } + wp += 2; + } + *wp = '\0'; + + LOG(("out: eb_convert_p_sounds_jis()")); +} + + +/* + * Delete spaces in `word'. + */ +static void +eb_delete_spaces_latin(char *word) +{ + unsigned char *in_wp = (unsigned char *) word; + unsigned char *out_wp = (unsigned char *) word; + + LOG(("in: eb_delete_space_latin(word=%s)", eb_quoted_string(word))); + + while (*in_wp != '\0') { + if (*in_wp != ' ') { + /* + * This is not a space character of ISO 8859 1. + */ + *out_wp = *in_wp; + out_wp++; + } + in_wp++; + } + *out_wp = '\0'; + + LOG(("out: eb_delete_space_latin()")); +} + + +/* + * Delete spaces in `word'. + */ +static void +eb_delete_spaces_jis(char *word) +{ + unsigned char *in_wp = (unsigned char *) word; + unsigned char *out_wp = (unsigned char *) word; + unsigned char c1, c2; + + LOG(("in: eb_delete_space_jis(word=%s)", eb_quoted_string(word))); + + while (*in_wp != '\0' && *(in_wp + 1) != '\0') { + c1 = *in_wp; + c2 = *(in_wp + 1); + + if (c1 != 0x21 || c2 != 0x21) { + /* + * This is not a space character of JIS X 0208. + */ + *out_wp = c1; + *(out_wp + 1) = c2; + out_wp += 2; + } + in_wp += 2; + } + *out_wp = '\0'; + + LOG(("out: eb_delete_space_jis()")); +} + + +/* + * Reverse a word for ENDWORD SEARCH. + * + * `word' is a word to reverse. It must be an alphabetic word. + * The reversed word is also put into `word'. + */ +static void +eb_reverse_word_latin(char *word) +{ + char *p1, *p2; + int word_length; + char c; + + LOG(("in: eb_reverse_word_latin(word=%s)", eb_quoted_string(word))); + + word_length = strlen(word); + if (word_length == 0) + return; + for (p1 = word, p2 = word + word_length - 1; p1 < p2; p1++, p2--) { + c = *p1; + *p1 = *p2; + *p2 = c; + } + + LOG(("out: eb_reverse_word_latin()")); +} + + +/* + * Reverse a word for ENDWORD SEARCH. + * + * `word' is a word to reverse. It must be a KANA word. + * The reversed word is also put into `word'. + */ +static void +eb_reverse_word_jis(char *word) +{ + char *p1, *p2; + int word_length; + char c; + + LOG(("in: eb_reverse_word_jis(word=%s)", eb_quoted_string(word))); + + word_length = strlen(word); + if (word_length % 2 == 1) { + *(word + word_length - 1) = '\0'; + word_length--; + } + for (p1 = word, p2 = word + word_length - 2; p1 < p2; p1 += 2, p2 -= 2) { + c = *p1; + *p1 = *p2; + *p2 = c; + c = *(p1 + 1); + *(p1 + 1) = *(p2 + 1); + *(p2 + 1) = c; + } + + LOG(("out: eb_reverse_word_jis()")); +} + + +/* + * Convert `input_word' to UTF 8 and put it into `word'. + * + * If `input_word' is a valid string to search, EB_WORD_OTHER is returned. + * Otherwise, -1 is returned. + */ +static EB_Error_Code +eb_convert_utf8(EB_Book *book, const char *input_word, char *word, + EB_Word_Code *word_code) +{ + EB_Error_Code error_code; + unsigned char *wp = (unsigned char *) word; + const unsigned char *inp = (const unsigned char *) input_word; + const unsigned char *tail; + int word_length = 0; + int count = 0, chr; + char *result; + + LOG(("in: eb_convert_utf8(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + tail = (const unsigned char *) input_word + strlen(input_word); + + while (inp < tail) { + if (*inp < 0x20) { + inp++; + continue; + } + + count = eb_read_utf8 ((const char *)inp, &chr); + if (!count) { + error_code = EB_ERR_BAD_WORD; + goto failed; + } + +/* + if (*inp < 0x80) { + count = 1; + chr = *inp; + } else if (0xc0 <= *inp && *inp <= 0xdf && + 0x80 <= *(inp + 1) && *(inp + 1) <= 0xbf) { + count = 2; + chr = ((*(inp + 0) & 0x1f) << 6) + + (*(inp + 1) & 0x3f); + } else if (0xe0 <= *inp && *inp <= 0xef && + 0x80 <= *(inp + 1) && *(inp + 1) <= 0xbf && + 0x80 <= *(inp + 2) && *(inp + 2) <= 0xbf) { + count = 3; + chr = ((*(inp + 0) & 0x0f) << 12) + + ((*(inp + 1) & 0x3f) << 6) + + (*(inp + 2) & 0x3f); + } else if (0xf0 <= *inp && *inp <= 0xf7 && + 0x80 <= *(inp + 1) && *(inp + 1) <= 0xbf && + 0x80 <= *(inp + 2) && *(inp + 2) <= 0xbf && + 0x80 <= *(inp + 3) && *(inp + 3) <= 0xbf) { + count = 4; + chr = ((*(inp + 0) & 0x07) << 18) + + ((*(inp + 1) & 0x3f) << 12) + + ((*(inp + 2) & 0x3f) << 6) + + (*(inp + 2) & 0x3f); + } else { + error_code = EB_ERR_BAD_WORD; + goto failed; + } +*/ + result = eb_normalize_utf8(book, chr); + + if (result == NULL) { + if (EB_MAX_WORD_LENGTH < word_length + count) { + error_code = EB_ERR_TOO_LONG_WORD; + goto failed; + } + memcpy (wp, inp, count); + wp += count; + word_length += count; + } else if (strlen(result)) { + if (EB_MAX_WORD_LENGTH < word_length + strlen(result)) { + error_code = EB_ERR_TOO_LONG_WORD; + goto failed; + } + memcpy (wp, result, strlen(result)); + wp += strlen(result); + word_length += strlen(result); + } + inp += count; + } + + if (word_length == 0) { + wp = (unsigned char *) word; + inp = (const unsigned char *) input_word; + while (inp < tail) { + if (*inp <= 0x20) { + inp++; + continue; + } + *wp = *inp; + wp++; + inp++; + word_length++; + } + } + + if (word_length == 0) { + error_code = EB_ERR_EMPTY_WORD; + goto failed; + } + + *wp = '\0'; + *word_code = EB_WORD_OTHER; + + LOG(("out: eb_convert_utf8(word=%s, word_code=%d) = %s", + eb_quoted_string(word), (int)*word_code, eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *word = '\0'; + *word_code = EB_WORD_INVALID; + LOG(("out: eb_convert_utf8() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Reverse a word for ENDWORD SEARCH. + * + * `word' is a word to reverse. It must be an alphabetic word. + * The reversed word is also put into `word'. + */ +static void +eb_reverse_word_utf8(char *word) +{ + char *p1, *p2, *p3; + int word_length; + char tmp[EB_MAX_WORD_LENGTH]; + + LOG(("in: eb_reverse_word_utf8(word=%s)", eb_quoted_string(word))); + + word_length = strlen(word); + if (word_length == 0) + return; + + p1 = word + word_length - 1; + p2 = tmp; + p3 = p1; + + while (p1 >= word) { + while (!((unsigned char) *p1 <= 0x7f + || (*p1 >= (char) 0xc0 && *p1 <= (char) 0xdf) + || (*p1 >= (char) 0xe0 && *p1 <= (char) 0xef) + || (*p1 >= (char) 0xf0 && *p1 <= (char) 0xf7))) + p1--; + if (p1 < word) p1 = word; + memcpy(p2, p1, p3 - p1 + 1); + p2 += p3 - p1 + 1; + p1--; + p3 = p1; + } + + memcpy(word, tmp, word_length); + + LOG(("out: eb_reverse_word_utf8(word=%s)", eb_quoted_string(word))); +} diff --git a/lib/ebu/ebu/setword.lo b/lib/ebu/ebu/setword.lo new file mode 100644 index 0000000..26b1559 --- /dev/null +++ b/lib/ebu/ebu/setword.lo @@ -0,0 +1,12 @@ +# setword.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/setword.o' + +# Name of the non-PIC object +non_pic_object='setword.o' + diff --git a/lib/ebu/ebu/stamp-build-post-h b/lib/ebu/ebu/stamp-build-post-h new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/lib/ebu/ebu/stamp-build-post-h @@ -0,0 +1 @@ +timestamp diff --git a/lib/ebu/ebu/stamp-sysdefs-h b/lib/ebu/ebu/stamp-sysdefs-h new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/lib/ebu/ebu/stamp-sysdefs-h @@ -0,0 +1 @@ +timestamp diff --git a/lib/ebu/ebu/stamp-widealt-h b/lib/ebu/ebu/stamp-widealt-h new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/lib/ebu/ebu/stamp-widealt-h @@ -0,0 +1 @@ +timestamp diff --git a/lib/ebu/ebu/stamp-widefont-h b/lib/ebu/ebu/stamp-widefont-h new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/lib/ebu/ebu/stamp-widefont-h @@ -0,0 +1 @@ +timestamp diff --git a/lib/ebu/ebu/stopcode.c b/lib/ebu/ebu/stopcode.c new file mode 100644 index 0000000..ba71452 --- /dev/null +++ b/lib/ebu/ebu/stopcode.c @@ -0,0 +1,113 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "appendix.h" +#include "text.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `appendix' has a stop-code. + */ +int +eb_have_stop_code(EB_Appendix *appendix) +{ + eb_lock(&appendix->lock); + LOG(("in: eb_have_stop_code(appendix=%d)", (int)appendix->code)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) + goto failed; + + if (appendix->subbook_current->stop_code0 == 0) + goto failed; + + LOG(("out: eb_have_stop_code() = %d", 1)); + eb_unlock(&appendix->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_stop_code() = %d", 0)); + eb_unlock(&appendix->lock); + return 0; +} + + +/* + * Return the stop-code of the current subbook in `appendix'. + */ +EB_Error_Code +eb_stop_code(EB_Appendix *appendix, int *stop_code) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_stop_code(appendix=%d)", (int)appendix->code)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + if (appendix->subbook_current->stop_code0 == 0) { + error_code = EB_ERR_NO_STOPCODE; + goto failed; + } + + stop_code[0] = appendix->subbook_current->stop_code0; + stop_code[1] = appendix->subbook_current->stop_code1; + + LOG(("out: eb_stop_code(stop_code=%d,%d) = %s", + stop_code[0], stop_code[1], eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + stop_code[0] = -1; + stop_code[1] = -1; + LOG(("out: eb_stop_code() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/stopcode.lo b/lib/ebu/ebu/stopcode.lo new file mode 100644 index 0000000..3a72113 --- /dev/null +++ b/lib/ebu/ebu/stopcode.lo @@ -0,0 +1,12 @@ +# stopcode.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/stopcode.o' + +# Name of the non-PIC object +non_pic_object='stopcode.o' + diff --git a/lib/ebu/ebu/strcasecmp.c b/lib/ebu/ebu/strcasecmp.c new file mode 100644 index 0000000..469f071 --- /dev/null +++ b/lib/ebu/ebu/strcasecmp.c @@ -0,0 +1,117 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * This program requires the following Autoconf macros: + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#else + +/* Define to empty if the keyword `const' does not work. */ +/* #define const */ + +/* Define if `size_t' is not defined. */ +/* #define size_t unsigned */ + +#endif /* not HAVE_CONFIG_H */ + +#include + +/* + * Compare strings. + * Cases in the strings are insensitive. + */ +int +eb_strcasecmp(const char *string1, const char *string2) +{ + const unsigned char *string1_p = (const unsigned char *)string1; + const unsigned char *string2_p = (const unsigned char *)string2; + int c1, c2; + + while (*string1_p != '\0') { + if ('a' <= *string1_p && *string1_p <= 'z') + c1 = *string1_p - ('a' - 'A'); + else + c1 = *string1_p; + + if ('a' <= *string2_p && *string2_p <= 'z') + c2 = *string2_p - ('a' - 'A'); + else + c2 = *string2_p; + + if (c1 != c2) + return c1 - c2; + + string1_p++; + string2_p++; + } + + return -(*string2_p); +} + + +/* + * Compare strings within `n' characters. + * Cases in the strings are insensitive. + */ +int +eb_strncasecmp(const char *string1, const char *string2, size_t n) +{ + const unsigned char *string1_p = (const unsigned char *)string1; + const unsigned char *string2_p = (const unsigned char *)string2; + size_t i = n; + int c1, c2; + + if (i <= 0) + return 0; + + while (*string1_p != '\0') { + if ('a' <= *string1_p && *string1_p <= 'z') + c1 = *string1_p - ('a' - 'A'); + else + c1 = *string1_p; + + if ('a' <= *string2_p && *string2_p <= 'z') + c2 = *string2_p - ('a' - 'A'); + else + c2 = *string2_p; + + if (c1 != c2) + return c1 - c2; + + string1_p++; + string2_p++; + i--; + if (i <= 0) + return 0; + } + + return -(*string2_p); +} diff --git a/lib/ebu/ebu/strcasecmp.lo b/lib/ebu/ebu/strcasecmp.lo new file mode 100644 index 0000000..3da9263 --- /dev/null +++ b/lib/ebu/ebu/strcasecmp.lo @@ -0,0 +1,12 @@ +# strcasecmp.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/strcasecmp.o' + +# Name of the non-PIC object +non_pic_object='strcasecmp.o' + diff --git a/lib/ebu/ebu/subbook.c b/lib/ebu/ebu/subbook.c new file mode 100644 index 0000000..bd912a6 --- /dev/null +++ b/lib/ebu/ebu/subbook.c @@ -0,0 +1,1235 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "binary.h" +#include "font.h" +#include "build-post.h" + +/* + * Unexported functions. + */ +static EB_Error_Code eb_load_subbook(EB_Book *book); +static EB_Error_Code eb_load_subbook_indexes(EB_Book *book); +static EB_Error_Code eb_set_subbook_eb(EB_Book *book, + EB_Subbook_Code subbook_code); +static EB_Error_Code eb_set_subbook_epwing(EB_Book *book, + EB_Subbook_Code subbook_code); + + +/* + * Initialize all subbooks in `book'. + */ +void +eb_initialize_subbooks(EB_Book *book) +{ + EB_Subbook *subbook; + EB_Subbook *saved_subbook_current; + int i; + + LOG(("in: eb_initialize_subbooks(book=%d)", (int)book->code)); + + saved_subbook_current = book->subbook_current; + + for (i = 0, subbook = book->subbooks; i < book->subbook_count; + i++, subbook++) { + book->subbook_current = subbook; + + subbook->initialized = 0; + subbook->index_page = 1; + subbook->code = i; + zio_initialize(&subbook->text_zio); + zio_initialize(&subbook->graphic_zio); + zio_initialize(&subbook->sound_zio); + zio_initialize(&subbook->movie_zio); + subbook->title[0] = '\0'; + subbook->directory_name[0] = '\0'; + subbook->data_directory_name[0] = '\0'; + subbook->gaiji_directory_name[0] = '\0'; + subbook->movie_directory_name[0] = '\0'; + + subbook->text_file_name[0] = '\0'; + subbook->graphic_file_name[0] = '\0'; + subbook->sound_file_name[0] = '\0'; + + subbook->text_hint_zio_code = ZIO_PLAIN; + subbook->graphic_hint_zio_code = ZIO_PLAIN; + subbook->sound_hint_zio_code = ZIO_PLAIN; + + subbook->search_title_page = 0; + eb_initialize_searches(book); + subbook->multi_count = 0; + + eb_initialize_fonts(book); + subbook->narrow_current = NULL; + subbook->wide_current = NULL; + + eb_initialize_utf8_table(book); + } + + book->subbook_current = saved_subbook_current; + + LOG(("out: eb_initialize_subbooks()")); +} + + +/* + * Finalize all subbooks in `book'. + */ +void +eb_finalize_subbooks(EB_Book *book) +{ + EB_Subbook *subbook; + EB_Subbook *saved_subbook_current; + int i; + + LOG(("in: eb_finalize_subbooks(book=%d)", (int)book->code)); + + saved_subbook_current = book->subbook_current; + + for (i = 0, subbook = book->subbooks; i < book->subbook_count; + i++, subbook++) { + book->subbook_current = subbook; + + zio_finalize(&subbook->text_zio); + zio_finalize(&subbook->graphic_zio); + zio_finalize(&subbook->sound_zio); + zio_finalize(&subbook->movie_zio); + + eb_finalize_searches(book); + eb_finalize_fonts(book); + eb_finalize_utf8_table(book); + + subbook->narrow_current = NULL; + subbook->wide_current = NULL; + } + + book->subbook_current = saved_subbook_current; + + LOG(("out: eb_finalize_subbooks()")); +} + + +/* + * Get information about the current subbook. + */ +static EB_Error_Code +eb_load_subbook(EB_Book *book) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + + LOG(("in: eb_load_subbook(book=%d)", (int)book->code)); + + subbook = book->subbook_current; + + /* + * Current subbook must have been set. + */ + if (subbook == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Reset contexts. + */ + eb_reset_search_contexts(book); + eb_reset_text_context(book); + eb_reset_binary_context(book); + + /* + * If the subbook has already initialized, return immediately. + */ + if (subbook->initialized) + goto succeeded; + + if (0 <= zio_file(&subbook->text_zio)) { + /* + * Read index information. + */ + error_code = eb_load_subbook_indexes(book); + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Read mutli search information. + */ + error_code = eb_load_multi_searches(book); + if (error_code != EB_SUCCESS) + goto failed; + error_code = eb_load_multi_titles(book); + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Rewind the file descriptor of the start file. + */ + if (zio_lseek(&subbook->text_zio, + ((off_t) subbook->index_page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + } + + succeeded: + LOG(("out: eb_load_subbook() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_load_subbook() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Get information about all subbooks in the book. + */ +EB_Error_Code +eb_load_all_subbooks(EB_Book *book) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + int i; + + eb_lock(&book->lock); + LOG(("in: eb_load_all_subbooks(book=%d)", (int)book->code)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Initialize each subbook. + */ + for (i = 0, subbook = book->subbooks; i < book->subbook_count; + i++, subbook++) { + error_code = eb_set_subbook(book, subbook->code); + if (error_code != EB_SUCCESS) + goto failed; + } + eb_unset_subbook(book); + + LOG(("out: eb_load_all_subbooks() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_unset_subbook(book); + LOG(("out: eb_load_all_subbooks() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get index information in the current subbook. + * + * If succeeds, the number of indexes is returned. + * Otherwise, -1 is returned. + */ +static EB_Error_Code +eb_load_subbook_indexes(EB_Book *book) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Search search; + char buffer[EB_SIZE_PAGE]; + char *buffer_p; + int index_count; + int availability; + int global_availability; + EB_Search sebxa_zip_index; + EB_Search sebxa_zip_text; + int i; + + LOG(("in: eb_load_subbook_indexes(book=%d)", (int)book->code)); + + eb_initialize_search(&sebxa_zip_index); + eb_initialize_search(&sebxa_zip_text); + + subbook = book->subbook_current; + + /* + * Read the index table in the subbook. + */ + if (zio_lseek(&subbook->text_zio, + ((off_t) subbook->index_page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + if (zio_read(&subbook->text_zio, buffer, EB_SIZE_PAGE) != EB_SIZE_PAGE) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + /* + * Get start page numbers of the indexes in the subbook. + */ + index_count = eb_uint1(buffer + 1); + if (EB_SIZE_PAGE / 16 - 1 <= index_count) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Get availavility flag of the index information. + */ + global_availability = eb_uint1(buffer + 4); + if (0x02 < global_availability) + global_availability = 0; + + /* + * Set each search method information. + */ + for (i = 0, buffer_p = buffer + 16; i < index_count; i++, buffer_p += 16) { + /* + * Set index style. + */ + eb_initialize_search(&search); + + search.index_id = eb_uint1(buffer_p); + search.start_page = eb_uint4(buffer_p + 2); + search.end_page = search.start_page + eb_uint4(buffer_p + 6) - 1; + + /* + * Set canonicalization flags. + */ + availability = eb_uint1(buffer_p + 10); + if ((global_availability == 0x00 && availability == 0x02) + || global_availability == 0x02) { + unsigned int flags; + + flags = eb_uint3(buffer_p + 11); + search.katakana = (flags & 0xc00000) >> 22; + search.lower = (flags & 0x300000) >> 20; + if ((flags & 0x0c0000) >> 18 == 0) + search.mark = EB_INDEX_STYLE_DELETE; + else + search.mark = EB_INDEX_STYLE_ASIS; + search.long_vowel = (flags & 0x030000) >> 16; + search.double_consonant = (flags & 0x00c000) >> 14; + search.contracted_sound = (flags & 0x003000) >> 12; + search.small_vowel = (flags & 0x000c00) >> 10; + search.voiced_consonant = (flags & 0x000300) >> 8; + search.p_sound = (flags & 0x0000c0) >> 6; + + } else if (search.index_id == 0x70 || search.index_id == 0x90) { + search.katakana = EB_INDEX_STYLE_CONVERT; + search.lower = EB_INDEX_STYLE_CONVERT; + search.mark = EB_INDEX_STYLE_DELETE; + search.long_vowel = EB_INDEX_STYLE_CONVERT; + search.double_consonant = EB_INDEX_STYLE_CONVERT; + search.contracted_sound = EB_INDEX_STYLE_CONVERT; + search.small_vowel = EB_INDEX_STYLE_CONVERT; + search.voiced_consonant = EB_INDEX_STYLE_CONVERT; + search.p_sound = EB_INDEX_STYLE_CONVERT; + + } else { + search.katakana = EB_INDEX_STYLE_ASIS; + search.lower = EB_INDEX_STYLE_CONVERT; + search.mark = EB_INDEX_STYLE_ASIS; + search.long_vowel = EB_INDEX_STYLE_ASIS; + search.double_consonant = EB_INDEX_STYLE_ASIS; + search.contracted_sound = EB_INDEX_STYLE_ASIS; + search.small_vowel = EB_INDEX_STYLE_ASIS; + search.voiced_consonant = EB_INDEX_STYLE_ASIS; + search.p_sound = EB_INDEX_STYLE_ASIS; + } + + if (book->character_code == EB_CHARCODE_ISO8859_1 + || search.index_id == 0x72 + || search.index_id == 0x92) { + search.space = EB_INDEX_STYLE_ASIS; + } else { + search.space = EB_INDEX_STYLE_DELETE; + } + + /* + * Identify search method. + */ + switch (search.index_id) { + case 0x00: + if (book->disc_code != EB_DISC_EPWING + || book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->text, &search, sizeof(EB_Search)); + } + break; + case 0x01: + if (book->disc_code != EB_DISC_EPWING + || book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->menu, &search, sizeof(EB_Search)); + } + break; + case 0x02: + if (book->disc_code != EB_DISC_EPWING + || book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->copyright, &search, sizeof(EB_Search)); + } + break; + case 0x10: + memcpy(&subbook->image_menu, &search, sizeof(EB_Search)); + break; + case 0x16: + if (book->disc_code == EB_DISC_EPWING) + subbook->search_title_page = search.start_page; + break; + case 0x21: + if (book->disc_code == EB_DISC_EB + && zio_mode(&subbook->text_zio) == ZIO_PLAIN) + memcpy(&sebxa_zip_text, &search, sizeof(EB_Search)); + break; + case 0x22: + if (book->disc_code == EB_DISC_EB + && zio_mode(&subbook->text_zio) == ZIO_PLAIN) + memcpy(&sebxa_zip_index, &search, sizeof(EB_Search)); + break; + case 0x70: + if (book->disc_code != EB_DISC_EPWING + || book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->endword_kana, &search, sizeof(EB_Search)); + } + break; + case 0x71: + if (book->disc_code != EB_DISC_EPWING + || book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->endword_asis, &search, sizeof(EB_Search)); + } + break; + case 0x72: + memcpy(&subbook->endword_alphabet, &search, sizeof(EB_Search)); + break; + case 0x80: + if (book->disc_code != EB_DISC_EPWING + || book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->keyword, &search, sizeof(EB_Search)); + } + break; + case 0x81: + if (book->disc_code != EB_DISC_EPWING + || book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->cross, &search, sizeof(EB_Search)); + } + break; + case 0x90: + if (book->disc_code != EB_DISC_EPWING + || book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->word_kana, &search, sizeof(EB_Search)); + } + break; + case 0x91: + if (book->disc_code != EB_DISC_EPWING + || book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->word_asis, &search, sizeof(EB_Search)); + } + break; + case 0x92: + memcpy(&subbook->word_alphabet, &search, sizeof(EB_Search)); + break; + case 0xc0: + if (book->disc_code == EB_DISC_EPWING + && book->character_code == EB_CHARCODE_UTF8) { + memcpy(&subbook->text, &search, sizeof(EB_Search)); + } + break; + case 0xc1: + if (book->disc_code == EB_DISC_EPWING + && book->character_code == EB_CHARCODE_UTF8) { + memcpy(&subbook->menu, &search, sizeof(EB_Search)); + } + break; + case 0xc2: + if (book->disc_code == EB_DISC_EPWING + && book->character_code == EB_CHARCODE_UTF8) { + memcpy(&subbook->copyright, &search, sizeof(EB_Search)); + } + break; + case 0xc6: + if (book->disc_code == EB_DISC_EPWING + && book->character_code == EB_CHARCODE_UTF8) { + memcpy(&subbook->word_asis, &search, sizeof(EB_Search)); + } + break; + case 0xc7: + if (book->disc_code == EB_DISC_EPWING + && book->character_code == EB_CHARCODE_UTF8) { + memcpy(&subbook->endword_asis, &search, sizeof(EB_Search)); + } + break; + case 0xc8: + if (book->disc_code == EB_DISC_EPWING + && book->character_code == EB_CHARCODE_UTF8) { + memcpy(&subbook->keyword, &search, sizeof(EB_Search)); + } + break; + case 0xc9: + if (book->disc_code == EB_DISC_EPWING + && book->character_code == EB_CHARCODE_UTF8) { + memcpy(&subbook->cross, &search, sizeof(EB_Search)); + } + break; + case 0xca: + if (subbook->multi_count < EB_MAX_MULTI_SEARCHES + && book->character_code == EB_CHARCODE_UTF8) { + memcpy(&subbook->multis[subbook->multi_count].search, &search, + sizeof(EB_Search)); + subbook->multi_count++; + } + break; + case 0xcb: + if (book->disc_code == EB_DISC_EPWING + && book->character_code == EB_CHARCODE_UTF8) { + subbook->table_page = search.start_page; + subbook->table_size = search.end_page - search.start_page + 1; + error_code = eb_load_utf8_table(book); + if (error_code != EB_SUCCESS) goto failed; + } + break; + case 0xd8: + memcpy(&subbook->sound, &search, sizeof(EB_Search)); + break; + case 0xe0: + memcpy(&subbook->color_chart, &search, sizeof(EB_Search)); + break; + case 0xf1: + if (book->disc_code == EB_DISC_EB) { + subbook->wide_fonts[EB_FONT_16].page = search.start_page; + subbook->wide_fonts[EB_FONT_16].font_code = EB_FONT_16; + } + break; + case 0xf2: + if (book->disc_code == EB_DISC_EB) { + subbook->narrow_fonts[EB_FONT_16].page = search.start_page; + subbook->narrow_fonts[EB_FONT_16].font_code = EB_FONT_16; + } + break; + case 0xf3: + if (book->disc_code == EB_DISC_EB) { + subbook->wide_fonts[EB_FONT_24].page = search.start_page; + subbook->wide_fonts[EB_FONT_24].font_code = EB_FONT_24; + } + break; + case 0xf4: + if (book->disc_code == EB_DISC_EB) { + subbook->narrow_fonts[EB_FONT_24].page = search.start_page; + subbook->narrow_fonts[EB_FONT_24].font_code = EB_FONT_24; + } + break; + case 0xf5: + if (book->disc_code == EB_DISC_EB) { + subbook->wide_fonts[EB_FONT_30].page = search.start_page; + subbook->wide_fonts[EB_FONT_30].font_code = EB_FONT_30; + } + break; + case 0xf6: + if (book->disc_code == EB_DISC_EB) { + subbook->narrow_fonts[EB_FONT_30].page = search.start_page; + subbook->narrow_fonts[EB_FONT_30].font_code = EB_FONT_30; + } + break; + case 0xf7: + if (book->disc_code == EB_DISC_EB) { + subbook->wide_fonts[EB_FONT_48].page = search.start_page; + subbook->wide_fonts[EB_FONT_48].font_code = EB_FONT_48; + } + break; + case 0xf8: + if (book->disc_code == EB_DISC_EB) { + subbook->narrow_fonts[EB_FONT_48].page = search.start_page; + subbook->narrow_fonts[EB_FONT_48].font_code = EB_FONT_48; + } + break; + case 0xff: + if (subbook->multi_count < EB_MAX_MULTI_SEARCHES + && book->character_code != EB_CHARCODE_UTF8) { + memcpy(&subbook->multis[subbook->multi_count].search, &search, + sizeof(EB_Search)); + subbook->multi_count++; + } + break; + } + + eb_finalize_search(&sebxa_zip_text); + } + + /* + * Set S-EBXA compression flag. + */ + if (book->disc_code == EB_DISC_EB + && zio_mode(&subbook->text_zio) == ZIO_PLAIN + && subbook->text.start_page != 0 + && sebxa_zip_index.start_page != 0 + && sebxa_zip_text.start_page != 0) { + zio_set_sebxa_mode(&subbook->text_zio, + (sebxa_zip_index.start_page - 1) * EB_SIZE_PAGE, + (sebxa_zip_text.start_page - 1) * EB_SIZE_PAGE, + (subbook->text.start_page - 1) * EB_SIZE_PAGE, + subbook->text.end_page * EB_SIZE_PAGE - 1); + } + + eb_finalize_search(&sebxa_zip_index); + eb_finalize_search(&sebxa_zip_text); + + LOG(("out: eb_load_subbook_indexes() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_finalize_search(&sebxa_zip_index); + eb_finalize_search(&sebxa_zip_text); + LOG(("out: eb_load_subbook_indexes() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Make a subbook list in the book. + */ +EB_Error_Code +eb_subbook_list(EB_Book *book, EB_Subbook_Code *subbook_list, + int *subbook_count) +{ + EB_Error_Code error_code; + EB_Subbook_Code *list_p; + int i; + + eb_lock(&book->lock); + LOG(("in: eb_subbook_list(book=%d)", (int)book->code)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + for (i = 0, list_p = subbook_list; i < book->subbook_count; i++, list_p++) + *list_p = i; + *subbook_count = book->subbook_count; + + LOG(("out: eb_subbook_list(subbook_count=%d) = %s", *subbook_count, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *subbook_count = 0; + LOG(("out: eb_subbook_list() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return a subbook-code of the current subbook. + */ +EB_Error_Code +eb_subbook(EB_Book *book, EB_Subbook_Code *subbook_code) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_subbook(book=%d)", (int)book->code)); + + /* + * The current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + *subbook_code = book->subbook_current->code; + + LOG(("out: eb_subbook(subbook_code=%d) = %s", *subbook_code, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *subbook_code = EB_SUBBOOK_INVALID; + LOG(("out: eb_subbook() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return a title of the current subbook. + */ +EB_Error_Code +eb_subbook_title(EB_Book *book, char *title) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_subbook_title(book=%d)", (int)book->code)); + + /* + * The current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + strcpy(title, book->subbook_current->title); + + LOG(("out: eb_subbook_title(title=%s) = %s", title, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *title = '\0'; + LOG(("out: eb_subbook_title() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return a title of the specified subbook `subbook_code'. + */ +EB_Error_Code +eb_subbook_title2(EB_Book *book, EB_Subbook_Code subbook_code, char *title) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_subbook_title2(book=%d, subbook_code=%d)", + (int)book->code, (int)subbook_code)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Check for the subbook-code. + */ + if (subbook_code < 0 || book->subbook_count <= subbook_code) { + error_code = EB_ERR_NO_SUCH_SUB; + goto failed; + } + + strcpy(title, (book->subbooks + subbook_code)->title); + + LOG(("out: eb_subbook_title2(title=%s) = %s", title, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *title = '\0'; + LOG(("out: eb_subbook_title2() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return a directory name of the current subbook. + */ +EB_Error_Code +eb_subbook_directory(EB_Book *book, char *directory) +{ + EB_Error_Code error_code; + char *p; + + eb_lock(&book->lock); + LOG(("in: eb_subbook_directory(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Copy directory name. + * Upper letters are converted to lower letters. + */ + strcpy(directory, book->subbook_current->directory_name); + for (p = directory; *p != '\0'; p++) { + if ('A' <= *p && *p <= 'Z') + *p = ASCII_TOLOWER(*p); + } + + LOG(("out: eb_subbook_directory(directory=%s) = %s", directory, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *directory = '\0'; + LOG(("out: eb_subbook_directory() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return a directory name of the specified subbook `subbook_code'. + */ +EB_Error_Code +eb_subbook_directory2(EB_Book *book, EB_Subbook_Code subbook_code, + char *directory) +{ + EB_Error_Code error_code; + char *p; + + eb_lock(&book->lock); + LOG(("in: eb_subbook_directory2(book=%d, subbook_code=%d)", + (int)book->code, (int)subbook_code)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Check for the subbook-code. + */ + if (subbook_code < 0 || book->subbook_count <= subbook_code) { + error_code = EB_ERR_NO_SUCH_SUB; + goto failed; + } + + /* + * Copy directory name. + * Upper letters are converted to lower letters. + */ + strcpy(directory, (book->subbooks + subbook_code)->directory_name); + for (p = directory; *p != '\0'; p++) { + if ('A' <= *p && *p <= 'Z') + *p = ASCII_TOLOWER(*p); + } + + LOG(("out: eb_subbook_directory2(directory=%s) = %s", directory, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *directory = '\0'; + LOG(("out: eb_subbook_directory2() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Set the subbook `subbook_code' as the current subbook. + */ +EB_Error_Code +eb_set_subbook(EB_Book *book, EB_Subbook_Code subbook_code) +{ + EB_Error_Code error_code = EB_SUCCESS; + + eb_lock(&book->lock); + LOG(("in: eb_set_subbook(book=%d, subbook_code=%d)", + (int)book->code, (int)subbook_code)); + + /* + * The book must have been bound. + */ + if (book->path == NULL) { + error_code = EB_ERR_UNBOUND_BOOK; + goto failed; + } + + /* + * Check for the subbook-code. + */ + if (subbook_code < 0 || book->subbook_count <= subbook_code) { + error_code = EB_ERR_NO_SUCH_SUB; + goto failed; + } + + /* + * If the subbook has already been set as the current subbook, + * there is nothing to be done. + * Otherwise close the previous subbook. + */ + if (book->subbook_current != NULL) { + if (book->subbook_current->code == subbook_code) + goto succeeded; + eb_unset_subbook(book); + } + + /* + * Set the current subbook. + */ + book->subbook_current = book->subbooks + subbook_code; + + /* + * Dispatch. + */ + if (book->disc_code == EB_DISC_EB) + error_code = eb_set_subbook_eb(book, subbook_code); + else + error_code = eb_set_subbook_epwing(book, subbook_code); + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Load the subbook. + */ + error_code = eb_load_subbook(book); + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Load font files. + */ + eb_load_font_headers(book); + + succeeded: + book->subbook_current->initialized = 1; + LOG(("out: eb_set_subbook() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return error_code; + + /* + * An error occurs... + */ + failed: + if (book->subbook_current != NULL) { + zio_close(&book->subbook_current->text_zio); + zio_close(&book->subbook_current->graphic_zio); + zio_close(&book->subbook_current->sound_zio); + zio_close(&book->subbook_current->movie_zio); + } + book->subbook_current = NULL; + LOG(("out: eb_set_subbook() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Set the subbook `subbook_code' as the current subbook. + */ +static EB_Error_Code +eb_set_subbook_eb(EB_Book *book, EB_Subbook_Code subbook_code) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + char text_path_name[EB_MAX_PATH_LENGTH + 1]; + char graphic_path_name[EB_MAX_PATH_LENGTH + 1]; + Zio_Code text_zio_code; + Zio_Code graphic_zio_code; + + LOG(("in: eb_set_subbook_eb(book=%d, subbook_code=%d)", + (int)book->code, (int)subbook_code)); + + subbook = book->subbook_current; + + /* + * Open a text file if exists. + */ + text_zio_code = ZIO_INVALID; + + if (subbook->initialized) { + if (zio_mode(&subbook->text_zio) != ZIO_INVALID) + text_zio_code = ZIO_REOPEN; + } else { + eb_canonicalize_file_name(subbook->text_file_name); + if (eb_find_file_name2(book->path, subbook->directory_name, + EB_FILE_NAME_START, subbook->text_file_name) == EB_SUCCESS) { + eb_path_name_zio_code(subbook->text_file_name, ZIO_PLAIN, + &text_zio_code); + } + } + + if (text_zio_code != ZIO_INVALID) { + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->text_file_name, text_path_name); + if (zio_open(&subbook->text_zio, text_path_name, text_zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_TEXT; + goto failed; + } + text_zio_code = zio_mode(&subbook->text_zio); + } + + /* + * Open a graphic file if exists. + */ + graphic_zio_code = ZIO_INVALID; + + if (subbook->initialized) { + if (zio_mode(&subbook->graphic_zio) != ZIO_INVALID) + graphic_zio_code = ZIO_REOPEN; + } else if (text_zio_code != ZIO_INVALID) { + strcpy(subbook->graphic_file_name, subbook->text_file_name); + graphic_zio_code = text_zio_code; + } + + if (graphic_zio_code != ZIO_INVALID) { + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->graphic_file_name, graphic_path_name); + if (zio_open(&subbook->graphic_zio, graphic_path_name, + graphic_zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_BINARY; + goto failed; + } + graphic_zio_code = zio_mode(&subbook->graphic_zio); + } + + LOG(("out: eb_set_subbook_eb() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_set_subbook_eb() = %s", eb_error_string(error_code))); + return error_code; +} + +/* + * Set the subbook `subbook_code' as the current subbook. + */ +static EB_Error_Code +eb_set_subbook_epwing(EB_Book *book, EB_Subbook_Code subbook_code) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + char text_path_name[EB_MAX_PATH_LENGTH + 1]; + char graphic_path_name[EB_MAX_PATH_LENGTH + 1]; + char sound_path_name[EB_MAX_PATH_LENGTH + 1]; + Zio_Code text_zio_code; + Zio_Code graphic_zio_code; + Zio_Code sound_zio_code; + + LOG(("in: eb_set_subbook_epwing(book=%d, subbook_code=%d)", + (int)book->code, (int)subbook_code)); + + subbook = book->subbook_current; + + if (!subbook->initialized) { + /* + * Adjust directory names. + */ + strcpy(subbook->data_directory_name, EB_DIRECTORY_NAME_DATA); + eb_fix_directory_name2(book->path, subbook->directory_name, + subbook->data_directory_name); + + strcpy(subbook->gaiji_directory_name, EB_DIRECTORY_NAME_GAIJI); + eb_fix_directory_name2(book->path, subbook->directory_name, + subbook->gaiji_directory_name); + + strcpy(subbook->movie_directory_name, EB_DIRECTORY_NAME_MOVIE); + eb_fix_directory_name2(book->path, subbook->directory_name, + subbook->movie_directory_name); + } + + /* + * Open a text file if exists. + * + * If a subbook has stream data only, its index_page has been set + * to 0. In this case, we must not try to open a text file of + * the subbook, since the text file may be for another subbook. + * Remember that subbooks can share a `data' sub-directory. + */ + text_zio_code = ZIO_INVALID; + + if (subbook->initialized) { + if (zio_mode(&subbook->text_zio) != ZIO_INVALID) + text_zio_code = ZIO_REOPEN; + } else if (subbook->index_page > 0) { + eb_canonicalize_file_name(subbook->text_file_name); + if (eb_find_file_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->text_file_name, + subbook->text_file_name) == EB_SUCCESS) { + eb_path_name_zio_code(subbook->text_file_name, + subbook->text_hint_zio_code, &text_zio_code); + } + } + + if (text_zio_code != ZIO_INVALID) { + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->text_file_name, + text_path_name); + if (zio_open(&subbook->text_zio, text_path_name, text_zio_code) < 0) { + subbook = NULL; + error_code = EB_ERR_FAIL_OPEN_TEXT; + goto failed; + } + text_zio_code = zio_mode(&subbook->text_zio); + } + + /* + * Open a graphic file if exists. + */ + graphic_zio_code = ZIO_INVALID; + + if (subbook->initialized) { + if (zio_mode(&subbook->graphic_zio) != ZIO_INVALID) + graphic_zio_code = ZIO_REOPEN; + } else if (text_zio_code != ZIO_INVALID) { + eb_canonicalize_file_name(subbook->graphic_file_name); + if (eb_find_file_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->graphic_file_name, + subbook->graphic_file_name) == EB_SUCCESS) { + eb_path_name_zio_code(subbook->graphic_file_name, + subbook->graphic_hint_zio_code, &graphic_zio_code); + } + } + + if (graphic_zio_code != ZIO_INVALID) { + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->graphic_file_name, + graphic_path_name); + if (zio_open(&subbook->graphic_zio, graphic_path_name, + graphic_zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_BINARY; + goto failed; + } + graphic_zio_code = zio_mode(&subbook->graphic_zio); + } + + /* + * Open a sound file if exists. + */ + sound_zio_code = ZIO_INVALID; + + if (subbook->initialized) { + if (zio_mode(&subbook->sound_zio) != ZIO_INVALID) + sound_zio_code = ZIO_REOPEN; + } else if (text_zio_code != ZIO_INVALID) { + eb_canonicalize_file_name(subbook->sound_file_name); + if (eb_find_file_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->sound_file_name, + subbook->sound_file_name) == EB_SUCCESS) { + eb_path_name_zio_code(subbook->sound_file_name, + subbook->sound_hint_zio_code, &sound_zio_code); + } + } + + if (sound_zio_code != ZIO_INVALID) { + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->sound_file_name, + sound_path_name); + if (zio_open(&subbook->sound_zio, sound_path_name, + sound_zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_BINARY; + goto failed; + } + sound_zio_code = zio_mode(&subbook->sound_zio); + } + + LOG(("out: eb_set_subbook_epwing() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_set_subbook_epwing() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Unset the current subbook. + */ +void +eb_unset_subbook(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_unset_subbook(book=%d)", (int)book->code)); + + /* + * Close the file of the current subbook. + */ + if (book->subbook_current != NULL) { + eb_unset_font(book); + eb_unset_binary(book); + zio_close(&book->subbook_current->text_zio); + zio_close(&book->subbook_current->graphic_zio); + zio_close(&book->subbook_current->sound_zio); + zio_close(&book->subbook_current->movie_zio); + book->subbook_current = NULL; + } + + LOG(("out: eb_unset_subbook()")); + eb_unlock(&book->lock); +} + + diff --git a/lib/ebu/ebu/subbook.lo b/lib/ebu/ebu/subbook.lo new file mode 100644 index 0000000..a6f6bd9 --- /dev/null +++ b/lib/ebu/ebu/subbook.lo @@ -0,0 +1,12 @@ +# subbook.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/subbook.o' + +# Name of the non-PIC object +non_pic_object='subbook.o' + diff --git a/lib/ebu/ebu/sysdefs.h b/lib/ebu/ebu/sysdefs.h new file mode 100644 index 0000000..b7f9bd4 --- /dev/null +++ b/lib/ebu/ebu/sysdefs.h @@ -0,0 +1,5 @@ +/* automatically generated by Makefile. */ +#define EB_VERSION_STRING "4.5-20200413" +#define EB_VERSION_MAJOR 4 +#define EB_VERSION_MINOR 5 +#define EB_ENABLE_EBNET 1 diff --git a/lib/ebu/ebu/text.c b/lib/ebu/ebu/text.c new file mode 100644 index 0000000..97f7e3b --- /dev/null +++ b/lib/ebu/ebu/text.c @@ -0,0 +1,121 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `book' has text body. + * or not. + */ +int +eb_have_text(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_text(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * Check for the index page of text. + */ + if (book->subbook_current->text.start_page == 0) + goto failed; + + LOG(("out: eb_have_text() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_text() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Menu. + */ +EB_Error_Code +eb_text(EB_Book *book, EB_Position *position) +{ + EB_Error_Code error_code; + int page; + + eb_lock(&book->lock); + LOG(("in: eb_text(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Check for the page number of text. + */ + page = book->subbook_current->text.start_page; + if (page == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Copy the position to `position'. + */ + position->page = page; + position->offset = 0; + + LOG(("out: eb_text(position={%d,%d}) = %s", + position->page, position->offset, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_text() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/text.h b/lib/ebu/ebu/text.h new file mode 100644 index 0000000..2dcd0a0 --- /dev/null +++ b/lib/ebu/ebu/text.h @@ -0,0 +1,170 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EB_TEXT_H +#define EB_TEXT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#ifdef EB_BUILD_LIBRARY +#include "defs.h" +#else +#include +#endif + +/* + * Hook codes. + * (When you add or remove a hook, update EB_NUMER_OF_HOOKS in defs.h.) + */ +#define EB_HOOK_NULL -1 +#define EB_HOOK_INITIALIZE 0 +#define EB_HOOK_BEGIN_NARROW 1 +#define EB_HOOK_END_NARROW 2 +#define EB_HOOK_BEGIN_SUBSCRIPT 3 +#define EB_HOOK_END_SUBSCRIPT 4 + +#define EB_HOOK_SET_INDENT 5 +#define EB_HOOK_NEWLINE 6 +#define EB_HOOK_BEGIN_SUPERSCRIPT 7 +#define EB_HOOK_END_SUPERSCRIPT 8 +#define EB_HOOK_BEGIN_NO_NEWLINE 9 + +#define EB_HOOK_END_NO_NEWLINE 10 +#define EB_HOOK_BEGIN_EMPHASIS 11 +#define EB_HOOK_END_EMPHASIS 12 +#define EB_HOOK_BEGIN_CANDIDATE 13 +#define EB_HOOK_END_CANDIDATE_GROUP 14 + +#define EB_HOOK_END_CANDIDATE_LEAF 15 +#define EB_HOOK_BEGIN_REFERENCE 16 +#define EB_HOOK_END_REFERENCE 17 +#define EB_HOOK_BEGIN_KEYWORD 18 +#define EB_HOOK_END_KEYWORD 19 + +#define EB_HOOK_NARROW_FONT 20 +#define EB_HOOK_WIDE_FONT 21 +#define EB_HOOK_ISO8859_1 22 +#define EB_HOOK_NARROW_JISX0208 23 +#define EB_HOOK_WIDE_JISX0208 24 + +#define EB_HOOK_GB2312 25 +#define EB_HOOK_BEGIN_MONO_GRAPHIC 26 +#define EB_HOOK_END_MONO_GRAPHIC 27 +#define EB_HOOK_BEGIN_GRAY_GRAPHIC 28 +#define EB_HOOK_END_GRAY_GRAPHIC 29 + +#define EB_HOOK_BEGIN_COLOR_BMP 30 +#define EB_HOOK_BEGIN_COLOR_JPEG 31 +#define EB_HOOK_BEGIN_IN_COLOR_BMP 32 +#define EB_HOOK_BEGIN_IN_COLOR_JPEG 33 +#define EB_HOOK_END_COLOR_GRAPHIC 34 + +#define EB_HOOK_END_IN_COLOR_GRAPHIC 35 +#define EB_HOOK_BEGIN_WAVE 36 +#define EB_HOOK_END_WAVE 37 +#define EB_HOOK_BEGIN_MPEG 38 +#define EB_HOOK_END_MPEG 39 + +#define EB_HOOK_BEGIN_GRAPHIC_REFERENCE 40 +#define EB_HOOK_END_GRAPHIC_REFERENCE 41 +#define EB_HOOK_GRAPHIC_REFERENCE 42 +#define EB_HOOK_BEGIN_DECORATION 43 +#define EB_HOOK_END_DECORATION 44 + +#define EB_HOOK_BEGIN_IMAGE_PAGE 45 +#define EB_HOOK_END_IMAGE_PAGE 46 +#define EB_HOOK_BEGIN_CLICKABLE_AREA 47 +#define EB_HOOK_END_CLICKABLE_AREA 48 + +#define EB_HOOK_BEGIN_UNICODE 49 +#define EB_HOOK_END_UNICODE 50 +#define EB_HOOK_BEGIN_EBXAC_GAIJI 51 +#define EB_HOOK_END_EBXAC_GAIJI 52 +#define EB_HOOK_EBXAC_GAIJI 53 +#define EB_HOOK_UNICODE 54 + +#define EB_HOOK_BEGIN_COLOR_CHART 55 +#define EB_HOOK_END_COLOR_CHART 56 + +/* + * Function declarations. + */ +/* hook.c */ +void eb_initialize_hookset(EB_Hookset *hookset); +void eb_finalize_hookset(EB_Hookset *hookset); +EB_Error_Code eb_set_hook(EB_Hookset *hookset, const EB_Hook *hook); +EB_Error_Code eb_set_hooks(EB_Hookset *hookset, const EB_Hook *hook); +EB_Error_Code eb_hook_euc_to_ascii(EB_Book *book, EB_Appendix *appendix, + void *container, EB_Hook_Code hook_code, int argc, + const unsigned int *argv); +EB_Error_Code eb_hook_stop_code(EB_Book *book, EB_Appendix *appendix, + void *container, EB_Hook_Code hook_code, int argc, + const unsigned int *argv); +EB_Error_Code eb_hook_narrow_character_text(EB_Book *book, + EB_Appendix *appendix, void *container, EB_Hook_Code hook_code, int argc, + const unsigned int *argv); +EB_Error_Code eb_hook_wide_character_text(EB_Book *book, + EB_Appendix *appendix, void *container, EB_Hook_Code hook_code, int argc, + const unsigned int *argv); +EB_Error_Code eb_hook_newline(EB_Book *book, EB_Appendix *appendix, + void *container, EB_Hook_Code hook_code, int argc, + const unsigned int *argv); +EB_Error_Code eb_hook_empty(EB_Book *book, EB_Appendix *appendix, + void *container, EB_Hook_Code hook_code, int argc, + const unsigned int *argv); + +/* readtext.c */ +EB_Error_Code eb_seek_text(EB_Book *book, const EB_Position *position); +EB_Error_Code eb_tell_text(EB_Book *book, EB_Position *position); +EB_Error_Code eb_read_text(EB_Book *book, EB_Appendix *appendix, + EB_Hookset *hookset, void *container, size_t text_max_length, char *text, + ssize_t *text_length); +EB_Error_Code eb_read_heading(EB_Book *book, EB_Appendix *appendix, + EB_Hookset *hookset, void *container, size_t text_max_length, char *text, + ssize_t *text_length); +EB_Error_Code eb_read_rawtext(EB_Book *book, size_t text_max_length, + char *text, ssize_t *text_length); +int eb_is_text_stopped(EB_Book *book); +EB_Error_Code eb_write_text_byte1(EB_Book *book, int byte1); +EB_Error_Code eb_write_text_byte2(EB_Book *book, int byte1, int byte2); +EB_Error_Code eb_write_text_string(EB_Book *book, const char *string); +EB_Error_Code eb_write_text(EB_Book *book, const char * stream, + size_t stream_length); +const char *eb_current_candidate(EB_Book *book); +EB_Error_Code eb_forward_text(EB_Book *book, EB_Appendix *appendix); +EB_Error_Code eb_backward_text(EB_Book *book, EB_Appendix *appendix); + +#ifdef __cplusplus +} +#endif + +#endif /* not EB_TEXT_H */ diff --git a/lib/ebu/ebu/text.lo b/lib/ebu/ebu/text.lo new file mode 100644 index 0000000..04d238e --- /dev/null +++ b/lib/ebu/ebu/text.lo @@ -0,0 +1,12 @@ +# text.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/text.o' + +# Name of the non-PIC object +non_pic_object='text.o' + diff --git a/lib/ebu/ebu/urlparts.c b/lib/ebu/ebu/urlparts.c new file mode 100644 index 0000000..e3d67d9 --- /dev/null +++ b/lib/ebu/ebu/urlparts.c @@ -0,0 +1,716 @@ +/* + * Copyright (c) 2000-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include + +/* + * Character type tests and conversions. + */ +#define ASCII_ISDIGIT(c) ('0' <= (c) && (c) <= '9') +#define ASCII_ISUPPER(c) ('A' <= (c) && (c) <= 'Z') +#define ASCII_ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define ASCII_ISALPHA(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c)) +#define ASCII_ISALNUM(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c) || ASCII_ISDIGIT(c)) +#define ASCII_ISXDIGIT(c) \ + (ASCII_ISDIGIT(c) || ('A' <= (c) && (c) <= 'F') || ('a' <= (c) && (c) <= 'f')) +#define ASCII_TOUPPER(c) (('a' <= (c) && (c) <= 'z') ? (c) - 0x20 : (c)) +#define ASCII_TOLOWER(c) (('A' <= (c) && (c) <= 'Z') ? (c) + 0x20 : (c)) + +#include "urlparts.h" + +/* + * Unexported functions. + */ +static void url_parts_canonicalize_path(char *path); +static void url_parts_expand_hex(char *string); +static void url_parts_convert_to_lower(char *string); + + +/* + * Initialize a query. + */ +void +url_parts_initialize(URL_Parts *parts) +{ + /* + * Set all URL parts and whole URL to NULL. + */ + parts->url = NULL; + parts->scheme = NULL; + parts->user = NULL; + parts->password = NULL; + parts->host = NULL; + parts->port = NULL; + parts->path = NULL; + parts->params = NULL; + parts->query = NULL; + parts->fragment = NULL; + + parts->buffer = NULL; +} + + +/* + * Finalize a query. + * All allocated memories in `queue' are also disposed. + */ +void +url_parts_finalize(URL_Parts *parts) +{ + /* + * Set all URL parts and whole URL to NULL. + */ + parts->scheme = NULL; + parts->user = NULL; + parts->password = NULL; + parts->host = NULL; + parts->port = NULL; + parts->path = NULL; + parts->params = NULL; + parts->query = NULL; + parts->fragment = NULL; + + /* + * Dispose memories assigned to `parts->url' and `parts->buffer'. + */ + if (parts->url != NULL) { + free(parts->url); + parts->url = NULL; + } + + if (parts->buffer != NULL) { + free(parts->buffer); + parts->buffer = NULL; + } +} + + +/* + * Return whole URL of a parsed URL. + */ +const char * +url_parts_url(URL_Parts *parts) +{ + return parts->url; +} + + +/* + * Return scheme part of a parsed URL. + */ +const char * +url_parts_scheme(URL_Parts *parts) +{ + return parts->scheme; +} + + +/* + * Return user part of a parsed URL. + */ +const char * +url_parts_user(URL_Parts *parts) +{ + return parts->user; +} + + +/* + * Return password part of a parsed URL. + */ +const char * +url_parts_password(URL_Parts *parts) +{ + return parts->password; +} + + +/* + * Return host part of a parsed URL. + */ +const char * +url_parts_host(URL_Parts *parts) +{ + return parts->host; +} + + +/* + * Return port part of a parsed URL. + */ +const char * +url_parts_port(URL_Parts *parts) +{ + return parts->port; +} + + +/* + * Return path part of a parsed URL. + */ +const char * +url_parts_path(URL_Parts *parts) +{ + return parts->path; +} + + +/* + * Return params part of a parsed URL. + */ +const char * +url_parts_params(URL_Parts *parts) +{ + return parts->params; +} + + +/* + * Return query part of a parsed URL. + */ +const char * +url_parts_query(URL_Parts *parts) +{ + return parts->query; +} + + +/* + * Return fragment part of a parsed URL. + */ +const char * +url_parts_fragment(URL_Parts *parts) +{ + return parts->fragment; +} + + +/* + * Parse an URL and fragment. + * + * `url' is an absolute or relative URL and optional fragment. + * The function resolves the `url' into 9 parts; scheme, user, password, + * host, port, path, params, query and fragment. + * + * [scheme ":"] ["//" [][":" password] "@"]["host" [":" port]] + * ["/" path] [";" params] ["?" query] ["#" fragment] + * + * The result is put into `parts'. This functions fails only when + * memory is exhausted. The function returns -1 in this case. + * It returns 0, upon successful. + */ +int +url_parts_parse(URL_Parts *parts, const char *url) +{ + char *separator; + char *url_p; + size_t url_length; + char *right_bracket; + + /* + * Re-initialize if `url' has already been used. + */ + if (parts->buffer != NULL) { + url_parts_finalize(parts); + url_parts_initialize(parts); + } + + /* + * Copy `url' to `parts->url' and `parts->buffer'. + */ + url_length = strlen(url); + parts->url = (char *)malloc(url_length + 1); + if (parts->url == NULL) + goto failed; + memcpy(parts->url, url, url_length + 1); + + parts->buffer = (char *)malloc(url_length + 1); + if (parts->buffer == NULL) + goto failed; + memcpy(parts->buffer, url, url_length + 1); + + /* + * Get a fragment. + */ + url_p = parts->buffer; + separator = strchr(url_p, '#'); + if (separator != NULL) { + if (*(separator + 1) != '\0') + parts->fragment = separator + 1; + *separator = '\0'; + } + + /* + * Get a scheme name. + */ + separator = strchr(url_p, ':'); + if (separator != NULL) { + char *p; + + for (p = url_p; *p != ':'; p++) { + if (!ASCII_ISALNUM(*p) && *p != '+' && *p != '.' && *p != '-') + break; + } + if (*p == ':') { + parts->scheme = url_p; + *p = '\0'; + url_p = p + 1; + } + } + + /* + * Get a network location. + */ + if (*url_p == '/' && *(url_p + 1) == '/') { + char *netloc = NULL; + char *hostport = NULL; + char *userpass = NULL; + char *p1, *p2; + + /* + * Shift left 2 characters to insert a terminator ('\0') for + * the network location, and a missed slash (`/'). + * + * "//www.foo.co.jp/path..." --> "www.foo.co.jp\0\0/path..." + * "//www.foo.co.jp\0" --> "www.foo.co.jp\0/\0" + */ + netloc = url_p; + for (p1 = url_p + 2, p2 = url_p; + *p1 != '/' && *p1 != '\0'; p1++, p2++) + *p2 = *p1; + *p2++ = '\0'; + if (*p1 != '\0') + url_p = p1; + else { + *p2 = '/'; + url_p = p2; + } + + /* + * Separate `netloc' into ":" and ":". + */ + separator = strchr(netloc, '@'); + if (separator != NULL) { + if (separator != netloc) + userpass = netloc; + if (*(separator + 1) != '\0') + hostport = separator + 1; + *separator = '\0'; + } else { + hostport = netloc; + userpass = NULL; + } + + /* + * Get user and password. + */ + if (userpass != NULL) { + separator = strchr(userpass, ':'); + if (separator != NULL) { + if (separator != userpass) + parts->user = userpass; + if (*(separator + 1) != '\0') + parts->password = separator + 1; + *separator = '\0'; + } else { + parts->user = userpass; + } + } + + /* + * Get host and port. + * IPv6 address is enclosed in `[' and `]'. + */ + if (hostport != NULL) { + if (*hostport == '[') { + right_bracket = strchr(hostport + 1, ']'); + if (right_bracket == NULL) + separator = NULL; + else { + if (*(right_bracket + 1) == ':' + || *(right_bracket + 1) == '\0') { + hostport++; + *right_bracket = '\0'; + } + separator = strchr(right_bracket + 1, ':'); + } + } else { + separator = strchr(hostport, ':'); + } + } + + if (separator != NULL) { + if (separator != hostport) + parts->host = hostport; + if (*(separator + 1) != '\0') + parts->port = separator + 1; + *separator = '\0'; + } else { + parts->host = hostport; + } + } + + /* + * Parse query. + */ + separator = strchr(url_p, '?'); + if (separator != NULL) { + if (*(separator + 1) != '\0') + parts->query = separator + 1; + *separator = '\0'; + } + + /* + * Parse parameters. + * The part is deleted if present. + */ + separator = strchr(url_p, ';'); + if (separator != NULL) { + if (*(separator + 1) != '\0') + parts->params = separator + 1; + *separator = '\0'; + } + + /* + * Parse path. + */ + if (*url_p != '\0') + parts->path = url_p; + + /* + * Normalize parts. + */ + if (parts->scheme != NULL) { + url_parts_expand_hex(parts->scheme); + url_parts_convert_to_lower(parts->scheme); + } + if (parts->user != NULL) { + url_parts_expand_hex(parts->user); + } + if (parts->password != NULL) { + url_parts_expand_hex(parts->password); + } + if (parts->host != NULL) { + url_parts_expand_hex(parts->host); + url_parts_convert_to_lower(parts->host); + } + if (parts->port != NULL) { + url_parts_expand_hex(parts->port); + } + if (parts->path != NULL) { + url_parts_expand_hex(parts->path); + url_parts_canonicalize_path(parts->path); + } + if (parts->params != NULL) { + url_parts_expand_hex(parts->params); + } + if (parts->query != NULL) { + url_parts_expand_hex(parts->query); + } + if (parts->fragment != NULL) { + url_parts_expand_hex(parts->fragment); + } + + return 0; + + /* + * An error occurs... + */ + failed: + url_parts_finalize(parts); + return -1; +} + + +/* + * Canonicalize the path in URL. + * + * Replace "." and ".." segments in the path. + * All occurrences of "." segment are removed. + * All occurrences of "/.." segments where is not + * equal to "..", are removed. This process is repeated until no + * match pattern remains. + * + * For example: + * "/A/./a.html" ---> "/A/a.html" + * "/A/../a.html" ---> "/a.html" + * "/A/B/C/../../a.html" ---> "/A/a.html" + * "/../a.html" ---> "/../a.html" (*1) + * + * (*1) If a correspondig parent segment is not exist in the path, + * we don't remove "/..". + */ +static void +url_parts_canonicalize_path(char *path) +{ + char *source = path; + char *destination = path; + char *unfixed_root = path; + char *slash; + + while (*source != '\0') { + if (*source != '/') { + *destination++ = *source++; + continue; + } + + /* + * `*source' is slash (`/'). + */ + if (*(source + 1) == '/') { + /* + * "//" -- Ignore 2nd slash ("/"). + */ + source++; + } else if (*(source + 1) == '.' + && *(source + 2) == '/') { + /* + * "/./" -- Current segment itself. Removed. + */ + if (unfixed_root != destination) { + source += 2; + } else { + *destination++ = *source++; + *destination++ = *source++; + unfixed_root += 2; + } + } else if (*(source + 1) == '.' && *(source + 2) == '.' + && *(source + 3) == '/') { + /* + * "/../" -- Back to the parent segment. + */ + if (unfixed_root != destination) { + source += 3; + *destination = '\0'; + slash = strrchr(unfixed_root, '/'); + if (slash != NULL) + destination = slash; + else + destination = path; + } else { + *destination++ = *source++; + *destination++ = *source++; + *destination++ = *source++; + unfixed_root += 3; + } + } else { + /* + * "/" -- Single "/". + */ + *destination++ = *source++; + } + } + *destination = '\0'; + + slash = strrchr(unfixed_root, '/'); + if (slash != NULL + && slash != unfixed_root + && *(slash + 1) == '.' && *(slash + 2) == '\0') { + /* + * The path is end with "/.", Remove ".". + * After the canonicalization, the path is end with "/". + */ + *(slash + 1) = '\0'; + } else if (slash != NULL + && slash != unfixed_root + && *(slash + 1) == '.' && *(slash + 2) == '.' + && *(slash + 3) == '\0') { + /* + * The path is end with "/..", Back to the parent segment. + * After the canonicalization, the path is end with "/". + */ + *slash = '\0'; + slash = strrchr(unfixed_root, '/'); + if (slash == NULL) { + *path = '/'; + *(path + 1) = '\0'; + } else + *(slash + 1) = '\0'; + } +} + +/* + * All characters except for the followings are expandable characters. + * Converting "%" to that character doesn't affect URL parsing. + * + * unsafe ::= CTL | SP | <"> | "#" | "%" | "<" | ">" + * reserved ::= ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" + * + * `expandable_hex_table[]' is used to examine whether a character is + * expandable or not. + */ +static const char expandable_hex_table[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x00 ... 0x0f */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10 ... 0x1f */ + 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, /* !"#$%&'()*+,-./ */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 0123456789:;<=>? */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* @ABCDEFGHIJKLMNO */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* PQRSTUVWXYZ[\]^_ */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* `abcdefghijklmno */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* pqrstuvwxyz{|}~ */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x80 ... 0x8f */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x90 ... 0x9f */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xa0 ... 0xaf */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xb0 ... 0xbf */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xc0 ... 0xcf */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xd0 ... 0xdf */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xe0 ... 0xef */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xf0 ... 0xff */ +}; + +/* + * Expand all "%" in an URL part to original characters. + */ +static void +url_parts_expand_hex(char *string) +{ + char *source = string; + char *destination = string; + int hex1; + int hex2; + int c; + + while (*source != '\0') { + /* + * "%" occurs. + * Unescape it if the character is not unsafe or reserved. + */ + if (*source == '%' + && ASCII_ISXDIGIT(*(source + 1)) + && ASCII_ISXDIGIT(*(source + 2))) { + hex1 = *(source + 1); + hex2 = *(source + 2); + c = 0; + + if ('0' <= hex1 && hex1 <= '9') + c += (hex1 - '0') << 4; + else if ('A' <= hex1 && hex1 <= 'F') + c += (hex1 - 'A' + 0x0a) << 4; + else if ('a' <= hex1 && hex1 <= 'f') + c += (hex1 - 'a' + 0x0a) << 4; + + if ('0' <= hex2 && hex2 <= '9') + c += (hex2 - '0'); + else if ('A' <= hex2 && hex2 <= 'F') + c += (hex2 - 'A' + 0x0a); + else if ('a' <= hex2 && hex2 <= 'f') + c += (hex2 - 'a' + 0x0a); + + if (expandable_hex_table[c]) + *(unsigned char *)destination++ = c; + else { + *destination++ = '%'; + *destination++ = hex1; + *destination++ = hex2; + } + source += 3; + + } else + *destination++ = *source++; + } + + *destination = '\0'; +} + + +/* + * Convert upper case letters in a stinrg `string' to lower case. + * This function is for the `scheme' and `host' parts in an URL, + * since they are case insensitive, + */ +static void +url_parts_convert_to_lower(char *string) +{ + char *p; + + for (p = string; *p != '\0'; p++) { + if (ASCII_ISUPPER(*p)) + *p = 'a' + (*p - 'A'); + } +} + + +void +url_parts_print(URL_Parts *parts) +{ + printf("url parts = {\n"); + if (parts->scheme != NULL) + printf(" scheme = %s\n", parts->scheme); + if (parts->user != NULL) + printf(" user = %s\n", parts->user); + if (parts->password != NULL) + printf(" password = %s\n", parts->password); + if (parts->host != NULL) + printf(" host = %s\n", parts->host); + if (parts->port != NULL) + printf(" port = %s\n", parts->port); + if (parts->path != NULL) + printf(" path = %s\n", parts->path); + if (parts->params != NULL) + printf(" params = %s\n", parts->params); + if (parts->query != NULL) + printf(" query = %s\n", parts->query); + if (parts->fragment != NULL) + printf(" fragment = %s\n", parts->fragment); + printf("}\n"); + fflush(stdout); +} + +/* + * Main for test. + */ +#ifdef TEST + +int +main(int argc, char *argv[]) +{ + URL_Parts url; + int i; + + if (argc < 2) { + fprintf(stderr, "usage: %s URL\n", argv[0]); + exit(1); + } + + url_parts_initialize(&url); + url_parts_parse(&url, argv[1]); + url_parts_print(&url); + fflush(stdout); + url_parts_finalize(&url); +} + +#endif diff --git a/lib/ebu/ebu/urlparts.h b/lib/ebu/ebu/urlparts.h new file mode 100644 index 0000000..b3fb863 --- /dev/null +++ b/lib/ebu/ebu/urlparts.h @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2000-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef URLPARTS_H +#define URLPARTS_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/* + * URL Parts. + */ +typedef struct { + char *url; + char *scheme; + char *user; + char *password; + char *host; + char *port; + char *path; + char *params; + char *query; + char *fragment; + char *buffer; +} URL_Parts; + +/* + * Function Declarations. + */ +void url_parts_initialize(URL_Parts *parts); +void url_parts_finalize(URL_Parts *parts); +const char *url_parts_url(URL_Parts *parts); +const char *url_parts_scheme(URL_Parts *parts); +const char *url_parts_user(URL_Parts *parts); +const char *url_parts_password(URL_Parts *parts); +const char *url_parts_host(URL_Parts *parts); +const char *url_parts_port(URL_Parts *parts); +const char *url_parts_path(URL_Parts *parts); +const char *url_parts_params(URL_Parts *parts); +const char *url_parts_query(URL_Parts *parts); +const char *url_parts_fragment(URL_Parts *parts); +int url_parts_parse(URL_Parts *, const char *parts); +void url_parts_print(URL_Parts *parts); + +#endif /* not URLPARTS_H */ diff --git a/lib/ebu/ebu/urlparts.lo b/lib/ebu/ebu/urlparts.lo new file mode 100644 index 0000000..91be38b --- /dev/null +++ b/lib/ebu/ebu/urlparts.lo @@ -0,0 +1,12 @@ +# urlparts.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/urlparts.o' + +# Name of the non-PIC object +non_pic_object='urlparts.o' + diff --git a/lib/ebu/ebu/utf8.c b/lib/ebu/ebu/utf8.c new file mode 100644 index 0000000..b51d6e0 --- /dev/null +++ b/lib/ebu/ebu/utf8.c @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2009 Kazuhiro Ito + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "binary.h" +#include "font.h" +#include "build-post.h" + +char *eb_normalize_utf8 (EB_Book *book, int code) { + EB_Subbook *subbook; + EB_UTF8_Table *table; + int floor = -1 , ceil; + int current; + + subbook = book->subbook_current; + table = subbook->table; + ceil = subbook->table_count; + + while (floor + 1 != ceil) { + current = (floor + ceil) / 2; + if (table[current].code == code) { + return table[current].string; + } + + if (table[current].code < code) { + floor = current; + } else { + ceil = current; + } + } + + return NULL; +} + +EB_Error_Code eb_load_utf8_table (EB_Book *book) { + EB_Error_Code error_code; + EB_Subbook *subbook; + size_t buffer_size; + unsigned int count, i; + char *buffer, *read; + + LOG(("in: eb_load_utf8_table(book=%d)", (int)book->code)); + + subbook = book->subbook_current; + + /* + * If table is already loaded, do nothing. + */ + if (subbook->table_buffer) return EB_SUCCESS; + + /* + * Allocate memory for table buffer. + */ + buffer_size = subbook->table_size * EB_SIZE_PAGE; + subbook->table_buffer = malloc(buffer_size); + if (subbook->table_buffer == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + buffer = subbook->table_buffer; + + /* + * Read normalization table. + */ + if (zio_lseek(&subbook->text_zio, + ((off_t) subbook->table_page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_TEXT; + goto failed; + } + if (zio_read(&subbook->text_zio, buffer, buffer_size) != buffer_size) { + error_code = EB_ERR_FAIL_READ_TEXT; + goto failed; + } + + /* + * Check version and etc. + */ + if (eb_uint4(buffer) != 1) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + subbook->table_count = eb_uint4(buffer + 4); + if (subbook->table_count > 0x10ffff) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + + /* + * Allocate memory for table elements. + */ + subbook->table = malloc(subbook->table_count * sizeof(EB_UTF8_Table)); + if (subbook->table == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + + read = buffer + 8; + for (i = 0; i < subbook->table_count; i++) { + read += eb_read_utf8(read, &(subbook->table[i].code)); + if (subbook->table[i].code == 0) { + error_code = EB_ERR_UNEXP_TEXT; + goto failed; + } + subbook->table[i].string = read; + read += strlen(read) + 1; + } + + LOG(("out: eb_load_utf8_table() = %s", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + failed: + if (subbook->table_buffer) { + free(subbook->table_buffer); + subbook->table_buffer = NULL; + } + if (subbook->table) { + free(subbook->table); + subbook->table = NULL; + } + + LOG(("out: eb_load_utf8_table() = %s", eb_error_string(error_code))); + return error_code; +} + + +void eb_initialize_utf8_table (EB_Book *book) { + EB_Subbook *subbook; + + subbook = book->subbook_current; + + subbook->table_buffer = NULL; + subbook->table = NULL; + subbook->table_count = 0; +} + +void eb_finalize_utf8_table (EB_Book *book) { + EB_Subbook *subbook; + + subbook = book->subbook_current; + + if (subbook->table_buffer) { + free(subbook->table_buffer); + subbook->table_buffer = NULL; + } + if (subbook->table) { + free(subbook->table); + subbook->table = NULL; + } + subbook->table_count = 0; +} + +int eb_read_utf8 (const char *buffer, int *code) { + if (!(((unsigned char)*buffer) & 0x80)) { + *code = *buffer; + return 1; + } else if (!(((unsigned char)*buffer) & 0x20)) { + *code = + ((((unsigned char)buffer[0]) & 0x1f) << 6) + + ((((unsigned char)buffer[1]) & 0x3f) ); + return 2; + } else if (!(((unsigned char)*buffer) & 0x10)) { + *code = + ((((unsigned char)buffer[0]) & 0x0f) << 12) + + ((((unsigned char)buffer[1]) & 0x3f) << 6) + + ((((unsigned char)buffer[2]) & 0x3f) ); + return 3; + } else if (!(((unsigned char)*buffer) & 0x08)) { + *code = + ((((unsigned char)buffer[0]) & 0x07) << 18) + + ((((unsigned char)buffer[1]) & 0x3f) << 12) + + ((((unsigned char)buffer[2]) & 0x3f) << 6) + + ((((unsigned char)buffer[3]) & 0x3f) ); + return 4; + } + + /* invalid string */ + *code = 0; + return 0; +} diff --git a/lib/ebu/ebu/utf8.lo b/lib/ebu/ebu/utf8.lo new file mode 100644 index 0000000..75f3355 --- /dev/null +++ b/lib/ebu/ebu/utf8.lo @@ -0,0 +1,12 @@ +# utf8.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/utf8.o' + +# Name of the non-PIC object +non_pic_object='utf8.o' + diff --git a/lib/ebu/ebu/widealt.c b/lib/ebu/ebu/widealt.c new file mode 100644 index 0000000..f16e937 --- /dev/null +++ b/lib/ebu/ebu/widealt.c @@ -0,0 +1,629 @@ +/* automatically generated from narwalt.c. */ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "appendix.h" +#include "build-post.h" + +/* + * Unexported functions. + */ +static EB_Error_Code eb_wide_character_text_jis(EB_Appendix *appendix, + int character_number, char *text); +static EB_Error_Code eb_wide_character_text_latin(EB_Appendix *appendix, + int character_number, char *text); + +/* + * Hash macro for cache data. + */ +#define EB_HASH_ALT_CACHE(c) ((c) & 0x0f) + + +/* + * Examine whether the current subbook in `book' has a wide font + * alternation or not. + */ +int +eb_have_wide_alt(EB_Appendix *appendix) +{ + eb_lock(&appendix->lock); + LOG(("in: eb_have_wide_alt(appendix=%d)", (int)appendix->code)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) + goto failed; + + if (appendix->subbook_current->wide_page == 0) + goto failed; + + LOG(("out: eb_have_wide_alt() = %d", 1)); + eb_unlock(&appendix->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_wide_alt() = %d", 0)); + eb_unlock(&appendix->lock); + return 0; +} + + +/* + * Look up the character number of the start of the wide font alternation + * of the current subbook in `book'. + */ +EB_Error_Code +eb_wide_alt_start(EB_Appendix *appendix, int *start) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_wide_alt_start(appendix=%d)", (int)appendix->code)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + if (appendix->subbook_current->wide_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + *start = appendix->subbook_current->wide_start; + + LOG(("out: eb_wide_alt_start(start=%d) = %s", *start, + eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *start = -1; + LOG(("out: eb_wide_alt_start() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Return the character number of the end of the wide font alternation + * of the current subbook in `book'. + */ +EB_Error_Code +eb_wide_alt_end(EB_Appendix *appendix, int *end) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_wide_alt_end(appendix=%d)", (int)appendix->code)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + if (appendix->subbook_current->wide_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + *end = appendix->subbook_current->wide_end; + + LOG(("out: eb_wide_alt_end(end=%d) = %s", *end, + eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *end = -1; + LOG(("out: eb_wide_alt_end() = %s", eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Get the alternation text of the character number `character_number'. + */ +EB_Error_Code +eb_wide_alt_character_text(EB_Appendix *appendix, int character_number, + char *text) +{ + EB_Error_Code error_code; + + eb_lock(&appendix->lock); + LOG(("in: eb_wide_alt_character_text(appendix=%d, character_number=%d)", + (int)appendix->code, character_number)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (appendix->subbook_current->wide_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + if (appendix->subbook_current->character_code == EB_CHARCODE_ISO8859_1) { + error_code = eb_wide_character_text_latin(appendix, + character_number, text); + } else { + error_code = eb_wide_character_text_jis(appendix, character_number, + text); + } + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_wide_alt_character_text(text=%s) = %s", + eb_quoted_string(text), eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *text = '\0'; + LOG(("out: eb_wide_alt_character_text() = %s", + eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Get the alternation text of the character number `character_number'. + */ +static EB_Error_Code +eb_wide_character_text_jis(EB_Appendix *appendix, int character_number, + char *text) +{ + EB_Error_Code error_code; + int start; + int end; + off_t location; + EB_Alternation_Cache *cachep; + + LOG(("in: eb_wide_alt_character_text_jis(appendix=%d, \ +character_number=%d)", + (int)appendix->code, character_number)); + + start = appendix->subbook_current->wide_start; + end = appendix->subbook_current->wide_end; + + /* + * Check for `character_number'. Is it in a font? + * This test works correctly even when the font doesn't exist in + * the current subbook because `start' and `end' have set to -1 + * in the case. + */ + if (character_number < start + || end < character_number + || (character_number & 0xff) < 0x21 + || 0x7e < (character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Calculate the location of alternation data. + */ + location + = (appendix->subbook_current->wide_page - 1) * EB_SIZE_PAGE + + (((character_number >> 8) - (start >> 8)) * 0x5e + + (character_number & 0xff) - (start & 0xff)) + * (EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + + /* + * Check for the cache data. + */ + cachep = appendix->wide_cache + EB_HASH_ALT_CACHE(character_number); + if (cachep->character_number == character_number) { + memcpy(text, cachep->text, EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + goto succeeded; + } + + /* + * Read the alternation data. + */ + if (zio_lseek(&appendix->subbook_current->zio, location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_APP; + goto failed; + } + cachep->character_number = -1; + if (zio_read(&appendix->subbook_current->zio, cachep->text, + EB_MAX_ALTERNATION_TEXT_LENGTH + 1) + != EB_MAX_ALTERNATION_TEXT_LENGTH + 1) { + error_code = EB_ERR_FAIL_READ_APP; + goto failed; + } + + /* + * Update cache data. + */ + memcpy(text, cachep->text, EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + cachep->text[EB_MAX_ALTERNATION_TEXT_LENGTH] = '\0'; + cachep->character_number = character_number; + + succeeded: + LOG(("out: eb_wide_alt_character_text_jis(text=%s) = %s", + eb_quoted_string(text), eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *text = '\0'; + LOG(("out: eb_wide_alt_character_text_jis() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Get the alternation text of the character number `character_number'. + */ +static EB_Error_Code +eb_wide_character_text_latin(EB_Appendix *appendix, int character_number, + char *text) +{ + EB_Error_Code error_code; + int start; + int end; + off_t location; + EB_Alternation_Cache *cache_p; + + LOG(("in: eb_wide_alt_character_text_latin(appendix=%d, \ +character_number=%d)", + (int)appendix->code, character_number)); + + start = appendix->subbook_current->wide_start; + end = appendix->subbook_current->wide_end; + + /* + * Check for `character_number'. Is it in a font? + * This test works correctly even when the font doesn't exist in + * the current subbook because `start' and `end' have set to -1 + * in the case. + */ + if (character_number < start + || end < character_number + || (character_number & 0xff) < 0x01 + || 0xfe < (character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Calculate the location of alternation data. + */ + location + = (appendix->subbook_current->wide_page - 1) * EB_SIZE_PAGE + + (((character_number >> 8) - (start >> 8)) * 0xfe + + (character_number & 0xff) - (start & 0xff)) + * (EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + + /* + * Check for the cache data. + */ + cache_p = appendix->wide_cache + EB_HASH_ALT_CACHE(character_number); + if (cache_p->character_number == character_number) { + memcpy(text, cache_p->text, EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + goto succeeded; + } + + /* + * Read the alternation data. + */ + if (zio_lseek(&appendix->subbook_current->zio, location, SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_APP; + goto failed; + } + cache_p->character_number = -1; + if (zio_read(&appendix->subbook_current->zio, cache_p->text, + EB_MAX_ALTERNATION_TEXT_LENGTH + 1) + != EB_MAX_ALTERNATION_TEXT_LENGTH + 1) { + error_code = EB_ERR_FAIL_READ_APP; + goto failed; + } + + /* + * Update cache data. + */ + memcpy(text, cache_p->text, EB_MAX_ALTERNATION_TEXT_LENGTH + 1); + cache_p->text[EB_MAX_ALTERNATION_TEXT_LENGTH] = '\0'; + cache_p->character_number = character_number; + + succeeded: + LOG(("out: eb_wide_alt_character_text_latin(text=%s) = %s", + eb_quoted_string(text), eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *text = '\0'; + LOG(("out: eb_wide_alt_character_text_latin() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Return next `n'th character number from `*character_number'. + */ +EB_Error_Code +eb_forward_wide_alt_character(EB_Appendix *appendix, int n, + int *character_number) +{ + EB_Error_Code error_code; + int start; + int end; + int i; + + if (n < 0) { + return eb_backward_wide_alt_character(appendix, -n, + character_number); + } + + eb_lock(&appendix->lock); + LOG(("in: eb_forward_wide_alt_character(appendix=%d, n=%d, \ +character_number=%d)", + (int)appendix->code, n, *character_number)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (appendix->subbook_current->wide_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + start = appendix->subbook_current->wide_start; + end = appendix->subbook_current->wide_end; + + if (appendix->subbook_current->character_code == EB_CHARCODE_ISO8859_1) { + /* + * Check for `*character_number'. (ISO 8859 1) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x01 + || 0xfe < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Get character number. (ISO 8859 1) + */ + for (i = 0; i < n; i++) { + if (0xfe <= (*character_number & 0xff)) + *character_number += 3; + else + *character_number += 1; + if (end < *character_number) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + } + } else { + /* + * Check for `*character_number'. (JIS X 0208) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x21 + || 0x7e < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Get character number. (JIS X 0208) + */ + for (i = 0; i < n; i++) { + if (0x7e <= (*character_number & 0xff)) + *character_number += 0xa3; + else + *character_number += 1; + if (end < *character_number) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + } + } + + LOG(("out: eb_forkward_wide_alt_character(character_number=%d) = %s", + *character_number, eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *character_number = -1; + LOG(("out: eb_forward_wide_alt_character() = %s", + eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + +/* + * Return previous `n'th character number from `*character_number'. + */ +EB_Error_Code +eb_backward_wide_alt_character(EB_Appendix *appendix, int n, + int *character_number) +{ + EB_Error_Code error_code; + int start; + int end; + int i; + + if (n < 0) { + return eb_forward_wide_alt_character(appendix, -n, character_number); + } + + eb_lock(&appendix->lock); + LOG(("in: eb_backward_wide_alt_character(appendix=%d, n=%d, \ +character_number=%d)", + (int)appendix->code, n, *character_number)); + + /* + * Current subbook must have been set. + */ + if (appendix->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_APPSUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (appendix->subbook_current->wide_page == 0) { + error_code = EB_ERR_NO_ALT; + goto failed; + } + + start = appendix->subbook_current->wide_start; + end = appendix->subbook_current->wide_end; + + if (appendix->subbook_current->character_code == EB_CHARCODE_ISO8859_1) { + /* + * Check for `*character_number'. (ISO 8859 1) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x01 + || 0xfe < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Get character number. (ISO 8859 1) + */ + for (i = 0; i < n; i++) { + if ((*character_number & 0xff) <= 0x01) + *character_number -= 3; + else + *character_number -= 1; + if (*character_number < start) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + } + } else { + /* + * Check for `*character_number'. (JIS X 0208) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x21 + || 0x7e < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + + /* + * Get character number. (JIS X 0208) + */ + for (i = 0; i < n; i++) { + if ((*character_number & 0xff) <= 0x21) + *character_number -= 0xa3; + else + *character_number -= 1; + if (*character_number < start) { + error_code = EB_ERR_NO_SUCH_CHAR_TEXT; + goto failed; + } + } + } + + LOG(("out: eb_backward_wide_alt_character(character_number=%d) = %s", + *character_number, eb_error_string(EB_SUCCESS))); + eb_unlock(&appendix->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *character_number = -1; + LOG(("out: eb_backward_wide_alt_character() = %s", + eb_error_string(error_code))); + eb_unlock(&appendix->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/widealt.lo b/lib/ebu/ebu/widealt.lo new file mode 100644 index 0000000..ff1d7fd --- /dev/null +++ b/lib/ebu/ebu/widealt.lo @@ -0,0 +1,12 @@ +# widealt.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/widealt.o' + +# Name of the non-PIC object +non_pic_object='widealt.o' + diff --git a/lib/ebu/ebu/widefont.c b/lib/ebu/ebu/widefont.c new file mode 100644 index 0000000..5e81188 --- /dev/null +++ b/lib/ebu/ebu/widefont.c @@ -0,0 +1,1100 @@ +/* automatically generated from narwfont.c. */ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "font.h" +#include "build-post.h" + +/* + * Unexported functions. + */ +static EB_Error_Code eb_wide_character_bitmap_jis(EB_Book *book, + int character_number, char *bitmap); +static EB_Error_Code eb_wide_character_bitmap_latin(EB_Book *book, + int character_number, char *bitmap); + + +/* + * Open a font file. + */ +EB_Error_Code +eb_open_wide_font_file(EB_Book *book, EB_Font_Code font_code) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Font *wide_font; + char font_path_name[EB_MAX_PATH_LENGTH + 1]; + Zio_Code zio_code; + + LOG(("in: eb_open_wide_font(book=%d, font_code=%d)", + (int)book->code, (int)font_code)); + + subbook = book->subbook_current; + wide_font = subbook->wide_fonts + font_code; + + if (wide_font->font_code == EB_FONT_INVALID) { + error_code = EB_ERR_FAIL_OPEN_FONT; + goto failed; + } + if (0 <= zio_file(&wide_font->zio)) + goto succeeded; + + /* + * If the book is EBWING, open the wide font file. + * (In EB books, font data are stored in the `START' file.) + */ + zio_code = ZIO_INVALID; + + if (book->disc_code == EB_DISC_EB) { + if (wide_font->initialized) { + if (zio_mode(&wide_font->zio) != ZIO_INVALID) + zio_code = ZIO_REOPEN; + } else { + zio_code = zio_mode(&subbook->text_zio); + } + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->text_file_name, font_path_name); + + } else { + if (wide_font->initialized) { + if (zio_mode(&wide_font->zio) != ZIO_INVALID) + zio_code = ZIO_REOPEN; + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, wide_font->file_name, + font_path_name); + } else { + eb_canonicalize_file_name(wide_font->file_name); + if (eb_find_file_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, wide_font->file_name, + wide_font->file_name) != EB_SUCCESS) { + error_code = EB_ERR_FAIL_OPEN_FONT; + goto failed; + } + + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, wide_font->file_name, + font_path_name); + eb_path_name_zio_code(font_path_name, ZIO_PLAIN, &zio_code); + } + } + + if (zio_code != ZIO_INVALID + && zio_open(&wide_font->zio, font_path_name, zio_code) < 0) { + error_code = EB_ERR_FAIL_OPEN_FONT; + goto failed; + } + + succeeded: + LOG(("out: eb_open_wide_font_file(file=%d) = %s", + zio_file(&wide_font->zio), eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_open_wide_font_file() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Read font header. + */ +EB_Error_Code +eb_load_wide_font_header(EB_Book *book, EB_Font_Code font_code) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Font *wide_font; + char buffer[16]; + int character_count; + Zio *zio; + + LOG(("in: eb_load_wide_font_header(book=%d, font_code=%d)", + (int)book->code, (int)font_code)); + + subbook = book->subbook_current; + wide_font = subbook->wide_fonts + font_code; + zio = &wide_font->zio; + + if (wide_font->initialized) + goto succeeded; + + /* + * Read information from the text file. + */ + if (zio_lseek(zio, ((off_t) wide_font->page - 1) * EB_SIZE_PAGE, + SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_FONT; + goto failed; + } + if (zio_read(zio, buffer, 16) != 16) { + error_code = EB_ERR_FAIL_READ_FONT; + goto failed; + } + + /* + * If the number of characters (`character_count') is 0, the font + * is unavailable. We return EB_ERR_NO_SUCH_FONT. + */ + character_count = eb_uint2(buffer + 12); + if (character_count == 0) { + zio_close(zio); + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + /* + * Set the information. + */ + wide_font->start = eb_uint2(buffer + 10); + if (book->character_code == EB_CHARCODE_ISO8859_1) { + wide_font->end = wide_font->start + + ((character_count / 0xfe) << 8) + (character_count % 0xfe) - 1; + if (0xfe < (wide_font->end & 0xff)) + wide_font->end += 3; + } else { + wide_font->end = wide_font->start + + ((character_count / 0x5e) << 8) + (character_count % 0x5e) - 1; + if (0x7e < (wide_font->end & 0xff)) + wide_font->end += 0xa3; + } + + if (book->character_code == EB_CHARCODE_ISO8859_1) { + if ((wide_font->start & 0xff) < 0x01 + || 0xfe < (wide_font->start & 0xff) + || wide_font->start < 0x0001 + || 0x1efe < wide_font->end) { + error_code = EB_ERR_UNEXP_FONT; + goto failed; + } + } else { + if ((wide_font->start & 0xff) < 0x21 + || 0x7e < (wide_font->start & 0xff) + || wide_font->start < 0xa121 + || 0xfe7e < wide_font->end) { + error_code = EB_ERR_UNEXP_FONT; + goto failed; + } + } + + succeeded: + LOG(("out: eb_load_wide_font_header()", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_load_wide_font_header()", eb_error_string(error_code))); + return error_code; +} + + +/* + * Read font glyph data. + */ +EB_Error_Code +eb_load_wide_font_glyphs(EB_Book *book, EB_Font_Code font_code) +{ + EB_Error_Code error_code; + EB_Subbook *subbook; + EB_Font *wide_font; + int character_count; + size_t glyph_size; + size_t total_glyph_size; + Zio *zio; + + LOG(("in: eb_load_wide_font_glyphs(book=%d, font_code=%d)", + (int)book->code, (int)font_code)); + + subbook = book->subbook_current; + wide_font = subbook->wide_fonts + font_code; + zio = &wide_font->zio; + + if (wide_font->glyphs != NULL) + goto succeeded; + + /* + * Calculate size of glyph data (`total_glyph_size'). + * + * Set the number of local defined characters to `character_count'. + * Set the number of character glpyhs in a page to `page_glyph_count'. + * Set size of glyph data to `total_glyph_size'. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1) { + character_count + = ((wide_font->end >> 8) - (wide_font->start >> 8)) * 0xfe + + ((wide_font->end & 0xff) - (wide_font->start & 0xff)) + 1; + } else { + character_count + = ((wide_font->end >> 8) - (wide_font->start >> 8)) * 0x5e + + ((wide_font->end & 0xff) - (wide_font->start & 0xff)) + 1; + } + + eb_wide_font_size2(font_code, &glyph_size); + total_glyph_size + = (character_count / (1024 / glyph_size)) * 1024 + + (character_count % (1024 / glyph_size)) * glyph_size; + + /* + * Allocate memory for glyph data. + */ + wide_font->glyphs = (char *) malloc(total_glyph_size); + if (wide_font->glyphs == NULL) { + error_code = EB_ERR_MEMORY_EXHAUSTED; + goto failed; + } + + /* + * Read glyphs. + */ + if (zio_lseek(zio, (off_t) wide_font->page * EB_SIZE_PAGE, SEEK_SET) + < 0) { + error_code = EB_ERR_FAIL_SEEK_FONT; + goto failed; + } + if (zio_read(zio, wide_font->glyphs, total_glyph_size) + != total_glyph_size) { + error_code = EB_ERR_FAIL_READ_FONT; + goto failed; + } + + succeeded: + LOG(("out: eb_load_wide_font_glyphs()", eb_error_string(EB_SUCCESS))); + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_load_wide_font_glyphs()", eb_error_string(error_code))); + if (wide_font->glyphs != NULL) { + free(wide_font->glyphs); + wide_font->glyphs = NULL; + } + return error_code; +} + + +/* + * Examine whether the current subbook in `book' has a wide font. + */ +int +eb_have_wide_font(EB_Book *book) +{ + int i; + + eb_lock(&book->lock); + LOG(("in: eb_have_wide_font(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + /* + * If the wide font has already set, the subbook has wide fonts. + */ + if (book->subbook_current->wide_current != NULL) + goto succeeded; + + /* + * Scan the font table. + */ + for (i = 0; i < EB_MAX_FONTS; i++) { + if (book->subbook_current->wide_fonts[i].font_code + != EB_FONT_INVALID) + break; + } + + if (EB_MAX_FONTS <= i) + goto failed; + + succeeded: + LOG(("out: eb_have_wide_font() = %d", 1)); + eb_unlock(&book->lock); + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_wide_font() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Get width of the font `font_code' in the current subbook of `book'. + */ +EB_Error_Code +eb_wide_font_width(EB_Book *book, int *width) +{ + EB_Error_Code error_code; + EB_Font_Code font_code; + + eb_lock(&book->lock); + LOG(("in: eb_wide_font_width(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (book->subbook_current->wide_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + /* + * Calculate width. + */ + font_code = book->subbook_current->wide_current->font_code; + error_code = eb_wide_font_width2(font_code, width); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_wide_font_width(width=%d) = %s", (int)*width, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *width = 0; + LOG(("out: eb_wide_font_width() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get width of the font `font_code'. + */ +EB_Error_Code +eb_wide_font_width2(EB_Font_Code font_code, int *width) +{ + EB_Error_Code error_code; + + LOG(("in: eb_wide_font_width2(font_code=%d)", (int)font_code)); + + switch (font_code) { + case EB_FONT_16: + *width = EB_WIDTH_WIDE_FONT_16; + break; + case EB_FONT_24: + *width = EB_WIDTH_WIDE_FONT_24; + break; + case EB_FONT_30: + *width = EB_WIDTH_WIDE_FONT_30; + break; + case EB_FONT_48: + *width = EB_WIDTH_WIDE_FONT_48; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_wide_font_width2(width=%d) = %s", *width, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *width = 0; + LOG(("out: eb_wide_font_width2() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Get the bitmap size of the font `font_code' in the current subbook + * of `book'. + */ +EB_Error_Code +eb_wide_font_size(EB_Book *book, size_t *size) +{ + EB_Error_Code error_code; + EB_Font_Code font_code; + int width; + int height; + + eb_lock(&book->lock); + LOG(("in: eb_wide_font_size(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (book->subbook_current->wide_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + /* + * Calculate size. + */ + font_code = book->subbook_current->wide_current->font_code; + error_code = eb_wide_font_width2(font_code, &width); + if (error_code != EB_SUCCESS) + goto failed; + error_code = eb_font_height2(font_code, &height); + if (error_code != EB_SUCCESS) + goto failed; + *size = (width / 8) * height; + + LOG(("out: eb_wide_font_size(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_wide_font_size() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get the bitmap size of a character in `font_code' of the current + * subbook. + */ +EB_Error_Code +eb_wide_font_size2(EB_Font_Code font_code, size_t *size) +{ + EB_Error_Code error_code; + + LOG(("in: eb_wide_font_size2(font_code=%d)", (int)font_code)); + + switch (font_code) { + case EB_FONT_16: + *size = EB_SIZE_WIDE_FONT_16; + break; + case EB_FONT_24: + *size = EB_SIZE_WIDE_FONT_24; + break; + case EB_FONT_30: + *size = EB_SIZE_WIDE_FONT_30; + break; + case EB_FONT_48: + *size = EB_SIZE_WIDE_FONT_48; + break; + default: + error_code = EB_ERR_NO_SUCH_FONT; + goto failed; + } + + LOG(("out: eb_wide_font_size2(size=%ld) = %s", (long)*size, + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *size = 0; + LOG(("out: eb_wide_font_size2() = %s", eb_error_string(error_code))); + return error_code; +} + + +/* + * Get the character number of the start of the wide font of the current + * subbook in `book'. + */ +EB_Error_Code +eb_wide_font_start(EB_Book *book, int *start) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_wide_font_start(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (book->subbook_current->wide_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + *start = book->subbook_current->wide_current->start; + + LOG(("out: eb_wide_font_start(start=%d) = %s", *start, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_wide_font_start() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get the character number of the end of the wide font of the current + * subbook in `book'. + */ +EB_Error_Code +eb_wide_font_end(EB_Book *book, int *end) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_wide_font_end(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (book->subbook_current->wide_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + *end = book->subbook_current->wide_current->end; + + LOG(("out: eb_wide_font_end(end=%d) = %s", *end, + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_wide_font_end() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get bitmap data of the character with character number `character_number' + * in the current wide font of the current subbook in `book'. + */ +EB_Error_Code +eb_wide_font_character_bitmap(EB_Book *book, int character_number, + char *bitmap) +{ + EB_Error_Code error_code; + + eb_lock(&book->lock); + LOG(("in: eb_wide_font_character_bitmap(book=%d, character_number=%d)", + (int)book->code, character_number)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (book->subbook_current->wide_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + if (book->character_code == EB_CHARCODE_ISO8859_1) { + error_code = eb_wide_character_bitmap_latin(book, character_number, + bitmap); + } else { + error_code = eb_wide_character_bitmap_jis(book, character_number, + bitmap); + } + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_wide_font_character_bitmap() = %s", + eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *bitmap = '\0'; + LOG(("out: eb_wide_font_character_bitmap() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Get bitmap data of the character with character number `character_number' + * in the current wide font of the current subbook in `book'. + */ +static EB_Error_Code +eb_wide_character_bitmap_jis(EB_Book *book, int character_number, + char *bitmap) +{ + EB_Error_Code error_code; + EB_Font *wide_current; + int start; + int end; + int character_index; + off_t offset; + size_t size; + Zio *zio; + + LOG(("in: eb_wide_font_character_bitmap_jis(book=%d, \ +character_number=%d)", + (int)book->code, character_number)); + + start = book->subbook_current->wide_current->start; + end = book->subbook_current->wide_current->end; + wide_current = book->subbook_current->wide_current; + + /* + * Check for `character_number'. Is it in a range of bitmaps? + * This test works correctly even when the font doesn't exist in + * the current subbook because `start' and `end' have set to -1 + * in the case. + */ + if (character_number < start + || end < character_number + || (character_number & 0xff) < 0x21 + || 0x7e < (character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Calculate the size and the location of bitmap data. + */ + error_code = eb_wide_font_size(book, &size); + if (error_code != EB_SUCCESS) + goto failed; + + character_index = ((character_number >> 8) - (start >> 8)) * 0x5e + + ((character_number & 0xff) - (start & 0xff)); + offset + = (character_index / (1024 / size)) * 1024 + + (character_index % (1024 / size)) * size; + + /* + * Read bitmap data. + */ + if (wide_current->glyphs == NULL) { + zio = &wide_current->zio; + + if (zio_lseek(zio, + (off_t) wide_current->page * EB_SIZE_PAGE + offset, + SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_FONT; + goto failed; + } + if (zio_read(zio, bitmap, size) != size) { + error_code = EB_ERR_FAIL_READ_FONT; + goto failed; + } + } else { + memcpy(bitmap, wide_current->glyphs + offset, size); + } + + LOG(("out: eb_wide_font_character_bitmap_jis() = %s", + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *bitmap = '\0'; + LOG(("out: eb_wide_font_character_bitmap_jis() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Get bitmap data of the character with character number `character_number' + * in the current wide font of the current subbook in `book'. + */ +static EB_Error_Code +eb_wide_character_bitmap_latin(EB_Book *book, int character_number, + char *bitmap) +{ + EB_Error_Code error_code; + EB_Font *wide_current; + int start; + int end; + int character_index; + off_t offset; + size_t size; + Zio *zio; + + LOG(("in: eb_wide_font_character_bitmap_latin(book=%d, \ +character_number=%d)", + (int)book->code, character_number)); + + start = book->subbook_current->wide_current->start; + end = book->subbook_current->wide_current->end; + wide_current = book->subbook_current->wide_current; + + /* + * Check for `ch'. Is it in a range of bitmaps? + * This test works correctly even when the font doesn't exist in + * the current subbook because `start' and `end' have set to -1 + * in the case. + */ + if (character_number < start + || end < character_number + || (character_number & 0xff) < 0x01 + || 0xfe < (character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Calculate the size and the location of bitmap data. + */ + error_code = eb_wide_font_size(book, &size); + if (error_code != EB_SUCCESS) + goto failed; + + character_index = ((character_number >> 8) - (start >> 8)) * 0xfe + + ((character_number & 0xff) - (start & 0xff)); + offset + = (character_index / (1024 / size)) * 1024 + + (character_index % (1024 / size)) * size; + + /* + * Read bitmap data. + */ + if (wide_current->glyphs == NULL) { + zio = &wide_current->zio; + + if (zio_lseek(zio, + (off_t) wide_current->page * EB_SIZE_PAGE + offset, + SEEK_SET) < 0) { + error_code = EB_ERR_FAIL_SEEK_FONT; + goto failed; + } + if (zio_read(zio, bitmap, size) != size) { + error_code = EB_ERR_FAIL_READ_FONT; + goto failed; + } + } else { + memcpy(bitmap, wide_current->glyphs + offset, size); + } + + LOG(("out: eb_wide_font_character_bitmap_latin() = %s", + eb_error_string(EB_SUCCESS))); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *bitmap = '\0'; + LOG(("out: eb_wide_font_character_bitmap_latin() = %s", + eb_error_string(error_code))); + return error_code; +} + + +/* + * Return next `n'th character number from `character_number'. + */ +EB_Error_Code +eb_forward_wide_font_character(EB_Book *book, int n, int *character_number) +{ + EB_Error_Code error_code; + int start; + int end; + int i; + + if (n < 0) + return eb_backward_wide_font_character(book, -n, character_number); + + eb_lock(&book->lock); + LOG(("in: eb_forward_wide_font_character(book=%d, n=%d, \ +character_number=%d)", + (int)book->code, n, *character_number)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (book->subbook_current->wide_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + start = book->subbook_current->wide_current->start; + end = book->subbook_current->wide_current->end; + + if (book->character_code == EB_CHARCODE_ISO8859_1) { + /* + * Check for `*character_number'. (ISO 8859 1) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x01 + || 0xfe < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Get character number. (ISO 8859 1) + */ + for (i = 0; i < n; i++) { + if (0xfe <= (*character_number & 0xff)) + *character_number += 3; + else + *character_number += 1; + if (end < *character_number) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + } + } else { + /* + * Check for `*character_number'. (JIS X 0208) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x21 + || 0x7e < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Get character number. (JIS X 0208) + */ + for (i = 0; i < n; i++) { + if (0x7e <= (*character_number & 0xff)) + *character_number += 0xa3; + else + *character_number += 1; + if (end < *character_number) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + } + } + + LOG(("out: eb_forward_wide_font_character(character_number=%d) = %s", + *character_number, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *character_number = -1; + LOG(("out: eb_forward_wide_font_character() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + +/* + * Return previous `n'th character number from `*character_number'. + */ +EB_Error_Code +eb_backward_wide_font_character(EB_Book *book, int n, int *character_number) +{ + EB_Error_Code error_code; + int start; + int end; + int i; + + if (n < 0) + return eb_forward_wide_font_character(book, -n, character_number); + + eb_lock(&book->lock); + LOG(("in: eb_backward_wide_font_character(book=%d, n=%d, \ +character_number=%d)", + (int)book->code, n, *character_number)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * The wide font must exist in the current subbook. + */ + if (book->subbook_current->wide_current == NULL) { + error_code = EB_ERR_NO_CUR_FONT; + goto failed; + } + + start = book->subbook_current->wide_current->start; + end = book->subbook_current->wide_current->end; + + if (book->character_code == EB_CHARCODE_ISO8859_1) { + /* + * Check for `*character_number'. (ISO 8859 1) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x01 + || 0xfe < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Get character number. (ISO 8859 1) + */ + for (i = 0; i < n; i++) { + if ((*character_number & 0xff) <= 0x01) + *character_number -= 3; + else + *character_number -= 1; + if (*character_number < start) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + } + } else { + /* + * Check for `*character_number'. (JIS X 0208) + */ + if (*character_number < start + || end < *character_number + || (*character_number & 0xff) < 0x21 + || 0x7e < (*character_number & 0xff)) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + + /* + * Get character number. (JIS X 0208) + */ + for (i = 0; i < n; i++) { + if ((*character_number & 0xff) <= 0x21) + *character_number -= 0xa3; + else + *character_number -= 1; + if (*character_number < start) { + error_code = EB_ERR_NO_SUCH_CHAR_BMP; + goto failed; + } + } + } + + LOG(("out: eb_backward_wide_font_character(character_number=%d) = %s", + *character_number, eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + *character_number = -1; + LOG(("out: eb_backward_wide_font_character() = %s", + eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} + + diff --git a/lib/ebu/ebu/widefont.lo b/lib/ebu/ebu/widefont.lo new file mode 100644 index 0000000..caa46d6 --- /dev/null +++ b/lib/ebu/ebu/widefont.lo @@ -0,0 +1,12 @@ +# widefont.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/widefont.o' + +# Name of the non-PIC object +non_pic_object='widefont.o' + diff --git a/lib/ebu/ebu/word.c b/lib/ebu/ebu/word.c new file mode 100644 index 0000000..0e8fd3b --- /dev/null +++ b/lib/ebu/ebu/word.c @@ -0,0 +1,186 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "build-pre.h" +#include "eb.h" +#include "error.h" +#include "build-post.h" + +/* + * Examine whether the current subbook in `book' supports `WORD SEARCH' + * or not. + */ +int +eb_have_word_search(EB_Book *book) +{ + eb_lock(&book->lock); + LOG(("in: eb_have_word_search(book=%d)", (int)book->code)); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) + goto failed; + + if (book->subbook_current->word_alphabet.start_page == 0 + && book->subbook_current->word_asis.start_page == 0 + && book->subbook_current->word_kana.start_page == 0) + goto failed; + + LOG(("out: eb_have_word_search() = %d", 1)); + eb_unlock(&book->lock); + + return 1; + + /* + * An error occurs... + */ + failed: + LOG(("out: eb_have_word_search() = %d", 0)); + eb_unlock(&book->lock); + return 0; +} + + +/* + * Word search. + */ +EB_Error_Code +eb_search_word(EB_Book *book, const char *input_word) +{ + EB_Error_Code error_code; + EB_Word_Code word_code; + EB_Search_Context *context; + + eb_lock(&book->lock); + LOG(("in: eb_search_word(book=%d, input_word=%s)", (int)book->code, + eb_quoted_string(input_word))); + + /* + * Current subbook must have been set. + */ + if (book->subbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + /* + * Initialize search context. + */ + eb_reset_search_contexts(book); + context = book->search_contexts; + context->code = EB_SEARCH_WORD; + + /* + * Make a fixed word and a canonicalized word to search from + * `input_word'. + */ + error_code = eb_set_word(book, input_word, context->word, + context->canonicalized_word, &word_code); + if (error_code != EB_SUCCESS) + goto failed; + + /* + * Get a page number. + */ + switch (word_code) { + case EB_WORD_ALPHABET: + if (book->subbook_current->word_alphabet.start_page != 0) + context->page = book->subbook_current->word_alphabet.start_page; + else if (book->subbook_current->word_asis.start_page != 0) + context->page = book->subbook_current->word_asis.start_page; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_KANA: + if (book->subbook_current->word_kana.start_page != 0) + context->page = book->subbook_current->word_kana.start_page; + else if (book->subbook_current->word_asis.start_page != 0) + context->page = book->subbook_current->word_asis.start_page; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + case EB_WORD_OTHER: + if (book->subbook_current->word_asis.start_page != 0) + context->page = book->subbook_current->word_asis.start_page; + else { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + break; + + default: + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + /* + * Choose comparison functions. + */ + if (book->character_code == EB_CHARCODE_ISO8859_1 + || book->character_code == EB_CHARCODE_UTF8) { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word; + } else if (context->page == book->subbook_current->word_kana.start_page) { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word_kana_single; + context->compare_group = eb_match_word_kana_group; + } else { + context->compare_pre = eb_pre_match_word; + context->compare_single = eb_match_word; + context->compare_group = eb_match_word_kana_group; + } + + /* + * Pre-search. + */ + error_code = eb_presearch_word(book, context); + if (error_code != EB_SUCCESS) + goto failed; + + LOG(("out: eb_search_word() = %s", eb_error_string(EB_SUCCESS))); + eb_unlock(&book->lock); + + return EB_SUCCESS; + + /* + * An error occurs... + */ + failed: + eb_reset_search_contexts(book); + LOG(("out: eb_search_word() = %s", eb_error_string(error_code))); + eb_unlock(&book->lock); + return error_code; +} diff --git a/lib/ebu/ebu/word.lo b/lib/ebu/ebu/word.lo new file mode 100644 index 0000000..dfc3c79 --- /dev/null +++ b/lib/ebu/ebu/word.lo @@ -0,0 +1,12 @@ +# word.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/word.o' + +# Name of the non-PIC object +non_pic_object='word.o' + diff --git a/lib/ebu/ebu/zio.c b/lib/ebu/ebu/zio.c new file mode 100644 index 0000000..c9f630b --- /dev/null +++ b/lib/ebu/ebu/zio.c @@ -0,0 +1,2156 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef ENABLE_PTHREAD +#include +#endif + +#ifdef ENABLE_LIBDEFLATE +#include +#else +#include +#endif + +#include "zio.h" +#ifdef ENABLE_EBNET +#include "ebnet.h" +#endif + +/* + * Flags for open(). + */ +#ifndef O_BINARY +#define O_BINARY 0 +#endif + +/* + * The maximum length of path name. + */ +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else /* not MAXPATHLEN */ +#define PATH_MAX 1024 +#endif /* not MAXPATHLEN */ +#endif /* not PATH_MAX */ + +/* + * Mutual exclusion lock of Pthreads. + */ +#ifndef ENABLE_PTHREAD +#define pthread_mutex_lock(m) +#define pthread_mutex_unlock(m) +#endif + +/* + * Debug message handler. + */ +#ifdef EB_BUILD_LIBRARY +extern int eb_log_flag; +extern void eb_log(const char *, ...); +#define LOG(x) do {if (eb_log_flag) eb_log x;} while (0) +#else +#define LOG(x) +#endif + +/* + * Get an unsigned value from an octet stream buffer. + */ +#define zio_uint1(p) (*(const unsigned char *)(p)) + +#define zio_uint2(p) ((*(const unsigned char *)(p) << 8) \ + + (*(const unsigned char *)((p) + 1))) + +#define zio_uint3(p) ((*(const unsigned char *)(p) << 16) \ + + (*(const unsigned char *)((p) + 1) << 8) \ + + (*(const unsigned char *)((p) + 2))) + +#define zio_uint4(p) (((off_t) *(const unsigned char *)(p) << 24) \ + + (*(const unsigned char *)((p) + 1) << 16) \ + + (*(const unsigned char *)((p) + 2) << 8) \ + + (*(const unsigned char *)((p) + 3))) + +#define zio_uint5(p) (((off_t) (*(const unsigned char *)(p)) << 32) \ + + ((off_t) (*(const unsigned char *)((p) + 1)) << 24) \ + + (*(const unsigned char *)((p) + 2) << 16) \ + + (*(const unsigned char *)((p) + 3) << 8) \ + + (*(const unsigned char *)((p) + 4))) + +/* + * Test whether the path is URL with the `ebnet' scheme. + */ +#define is_ebnet_url(p) \ + ( ((p)[0] == 'E' || (p)[0] == 'e') \ + && ((p)[1] == 'B' || (p)[1] == 'b') \ + && ((p)[2] == 'N' || (p)[2] == 'n') \ + && ((p)[3] == 'E' || (p)[3] == 'e') \ + && ((p)[4] == 'T' || (p)[4] == 't') \ + && (p)[5] == ':' && (p)[6] == '/' && (p)[7] == '/') + +/* + * Size of a page (The term `page' means `block' in JIS X 4081). + */ +#define ZIO_SIZE_PAGE 2048 + +/* + * Size of a cache buffer. + * It must be large enough to memory an uncompressed slice. + * + * (In EBZIP and EPWING compressions, the size of uncompressed slice + * is 2048. In S-EBXA compression, the size is 4096.) + */ +#define ZIO_CACHE_BUFFER_SIZE (ZIO_SIZE_PAGE << ZIO_MAX_EBZIP_LEVEL) + +/* + * NULL Zio ID. + */ +#define ZIO_ID_NONE -1 + +/* + * Buffer for caching uncompressed data. + */ +static char *cache_buffer = NULL; + +/* + * Zio ID which caches data in `cache_buffer'. + */ +static int cache_zio_id = ZIO_ID_NONE; + +/* + * Offset of the beginning of the cached data `cache_buffer'. + */ +static off_t cache_location; + +/* + * Zio object counter. + */ +static int zio_counter = 0; + +/* + * Mutex for cache variables. + */ +#ifdef ENABLE_PTHREAD +static pthread_mutex_t zio_mutex = PTHREAD_MUTEX_INITIALIZER; +#endif + +/* + * Test whether `off_t' represents a large integer. + */ +#define off_t_is_large \ + ((((off_t) 1 << 41) + ((off_t) 1 << 40) + 1) % 9999991 == 7852006) + +/* + * Unexported function. + */ +static int zio_reopen(Zio *zio, const char *file_name); +static int zio_open_plain(Zio *zio, const char *file_name); +static int zio_open_ebzip(Zio *zio, const char *file_name); +static int zio_open_epwing(Zio *zio, const char *file_name); +static int zio_open_epwing6(Zio *zio, const char *file_name); +static int zio_make_epwing_huffman_tree(Zio *zio, int leaf_count); +static ssize_t zio_read_ebzip(Zio *zio, char *buffer, size_t length); +static ssize_t zio_read_epwing(Zio *zio, char *buffer, size_t length); +static ssize_t zio_read_sebxa(Zio *zio, char *buffer, size_t length); +static int zio_unzip_slice_ebzip1(Zio *zio, char *out_buffer, + size_t zipped_slice_size); +inline static int zio_unzip_slice_ebzip1_internal(Zio *zio, + char *out_buffer, size_t zipped_slice_size); +static int zio_unzip_slice_epwing(Zio *zio, char *out_buffer); +static int zio_unzip_slice_epwing6(Zio *zio, char *out_buffer); +static int zio_unzip_slice_sebxa(Zio *zio, char *out_buffer); +static int zio_open_raw(Zio *zio, const char *file_name); +static void zio_close_raw(Zio *zio); +static off_t zio_lseek_raw(Zio *zio, off_t offset, int whence); +static ssize_t zio_read_raw(Zio *zio, void *buffer, size_t length); + + +/* + * Initialize cache buffer. + */ +int +zio_initialize_library(void) +{ + pthread_mutex_lock(&zio_mutex); + LOG(("in: zio_initialize_library()")); + + /* + * Allocate memory for cache buffer. + */ + if (cache_buffer == NULL) { + cache_buffer = (char *) malloc(ZIO_CACHE_BUFFER_SIZE); + if (cache_buffer == NULL) + goto failed; + } + + LOG(("out: zio_initialize_library() = %d", 0)); + pthread_mutex_unlock(&zio_mutex); + return 0; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_initialize_library() = %d", -1)); + pthread_mutex_unlock(&zio_mutex); + return -1; +} + + +/* + * Clear cache buffer. + */ +void +zio_finalize_library(void) +{ + pthread_mutex_lock(&zio_mutex); + LOG(("in: zio_finalize_library()")); + + if (cache_buffer != NULL) + free(cache_buffer); + cache_buffer = NULL; + cache_zio_id = ZIO_ID_NONE; + + LOG(("out: zio_finalize_library()")); + pthread_mutex_unlock(&zio_mutex); +} + + +/* + * Initialize `zio'. + */ +void +zio_initialize(Zio *zio) +{ + LOG(("in: zio_initialize()")); + + zio->id = -1; + zio->file = -1; + zio->huffman_nodes = NULL; + zio->huffman_root = NULL; + zio->code = ZIO_INVALID; + zio->file_size = 0; + zio->is_ebnet = 0; + + LOG(("out: zio_initialize()")); +} + + +/* + * Finalize `zio'. + */ +void +zio_finalize(Zio *zio) +{ + LOG(("in: zio_finalize(zio=%d)", (int)zio->id)); + + zio_close(zio); + if (zio->huffman_nodes != NULL) + free(zio->huffman_nodes); + + zio->id = -1; + zio->huffman_nodes = NULL; + zio->huffman_root = NULL; + zio->code = ZIO_INVALID; + + LOG(("out: zio_finalize()")); +} + + +/* + * Set S-EBXA compression mode. + */ +int +zio_set_sebxa_mode(Zio *zio, off_t index_location, off_t index_base, + off_t zio_start_location, off_t zio_end_location) +{ + LOG(("in: zio_set_sebxa_mode(zio=%d, index_location=%ld, index_base=%ld, \ +zio_start_location=%ld, zio_end_location=%ld)", + (int)zio->id, (long)index_location, (long)index_base, + (long)zio_start_location, (long)zio_end_location)); + + if (zio->code != ZIO_PLAIN) + goto failed; + + zio->code = ZIO_SEBXA; + zio->index_location = index_location; + zio->index_base = index_base; + zio->zio_start_location = zio_start_location; + zio->zio_end_location = zio_end_location; + zio->file_size = zio_end_location; + + LOG(("out: zio_set_sebxa_mode() = %d", 0)); + return 0; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_set_sebxa_mode() = %d", -1)); + return -1; +} + +/* + * Open `file'. + */ +int +zio_open(Zio *zio, const char *file_name, Zio_Code zio_code) +{ + int result; + + LOG(("in: zio_open(zio=%d, file_name=%s, zio_code=%d)", + (int)zio->id, file_name, zio_code)); + + if (0 <= zio->file) { + if (zio_code == ZIO_REOPEN) { + result = 0; + goto succeeded; + } + zio_finalize(zio); + zio_initialize(zio); + } + + switch (zio_code) { + case ZIO_REOPEN: + result = zio_reopen(zio, file_name); + break; + case ZIO_PLAIN: + result = zio_open_plain(zio, file_name); + break; + case ZIO_EBZIP1: + result = zio_open_ebzip(zio, file_name); + break; + case ZIO_EPWING: + result = zio_open_epwing(zio, file_name); + break; + case ZIO_EPWING6: + result = zio_open_epwing6(zio, file_name); + break; + case ZIO_SEBXA: + result = zio_open_plain(zio, file_name); + break; + default: + result = -1; + } + + succeeded: + LOG(("out: zio_open() = %d", result)); + return result; +} + + +/* + * Reopen a file. + */ +static int +zio_reopen(Zio *zio, const char *file_name) +{ + LOG(("in: zio_reopen(zio=%d, file_name=%s)", (int)zio->id, file_name)); + + if (zio->code == ZIO_INVALID) + goto failed; + + if (zio_open_raw(zio, file_name) < 0) { + zio->code = ZIO_INVALID; + goto failed; + } + zio->location = 0; + + LOG(("out: zio_reopen() = %d", zio->file)); + return zio->file; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_reopen() = %d", -1)); + return -1; +} + + +/* + * Open an non-compressed file. + */ +static int +zio_open_plain(Zio *zio, const char *file_name) +{ + LOG(("in: zio_open_plain(zio=%d, file_name=%s)", (int)zio->id, file_name)); + + if (zio_open_raw(zio, file_name) < 0) + goto failed; + + zio->code = ZIO_PLAIN; + zio->slice_size = ZIO_SIZE_PAGE; + zio->file_size = zio_lseek_raw(zio, 0, SEEK_END); + if (zio->file_size < 0 || zio_lseek_raw(zio, 0, SEEK_SET) < 0) + goto failed; + + /* + * Assign ID. + */ + pthread_mutex_lock(&zio_mutex); + zio->id = zio_counter++; + pthread_mutex_unlock(&zio_mutex); + + LOG(("out: zio_open_plain(zio=%d) = %d", (int)zio->id, zio->file)); + return zio->file; + + /* + * An error occurs... + */ + failed: + if (0 <= zio->file) + zio_close_raw(zio); + zio->file = -1; + zio->code = ZIO_INVALID; + + LOG(("out: zio_open_plain() = %d", -1)); + return -1; +} + + +/* + * Open an EBZIP compression file. + */ +static int +zio_open_ebzip(Zio *zio, const char *file_name) +{ + char header[ZIO_SIZE_EBZIP_HEADER]; + int ebzip_mode; + + LOG(("in: zio_open_ebzip(zio=%d, file_name=%s)", (int)zio->id, file_name)); + + /* + * Try to open a `*.ebz' file. + */ + if (zio_open_raw(zio, file_name) < 0) + goto failed; + + /* + * Read header part of the ebzip'ped file. + */ + if (zio_read_raw(zio, header, ZIO_SIZE_EBZIP_HEADER) + != ZIO_SIZE_EBZIP_HEADER) + goto failed; + ebzip_mode = zio_uint1(header + 5) >> 4; + zio->code = ZIO_EBZIP1; + zio->zip_level = zio_uint1(header + 5) & 0x0f; + zio->slice_size = ZIO_SIZE_PAGE << zio->zip_level; + zio->file_size = zio_uint5(header + 9); + zio->crc = zio_uint4(header + 14); + zio->mtime = zio_uint4(header + 18); + zio->location = 0; + + if (zio->file_size < (off_t) 1 << 16) + zio->index_width = 2; + else if (zio->file_size < (off_t) 1 << 24) + zio->index_width = 3; + else if (zio->file_size < (off_t) 1 << 32 || !off_t_is_large) + zio->index_width = 4; + else + zio->index_width = 5; + + /* + * Check zio header information. + */ + if (memcmp(header, "EBZip", 5) != 0 + || ZIO_SIZE_PAGE << ZIO_MAX_EBZIP_LEVEL < zio->slice_size) + goto failed; + + if (off_t_is_large) { + if (ebzip_mode != 1 && ebzip_mode != 2) + goto failed; + } else { + if (ebzip_mode != 1) + goto failed; + } + + /* + * Assign ID. + */ + pthread_mutex_lock(&zio_mutex); + zio->id = zio_counter++; + pthread_mutex_unlock(&zio_mutex); + + LOG(("out: zio_open_ebzip(zio=%d) = %d", (int)zio->id, zio->file)); + return zio->file; + + /* + * An error occurs... + */ + failed: + if (0 <= zio->file) + zio_close_raw(zio); + zio->file = -1; + zio->code = ZIO_INVALID; + LOG(("out: zio_open_ebzip() = %d", -1)); + return -1; +} + + +/* + * The buffer size must be 512 bytes, the number of 8 bit nodes. + */ +#define ZIO_EPWING_BUFFER_SIZE 512 + +/* + * Open an EPWING compression file. + */ +static int +zio_open_epwing(Zio *zio, const char *file_name) +{ + int leaf16_count; + int leaf_count; + char buffer[ZIO_EPWING_BUFFER_SIZE]; + char *buffer_p; + ssize_t read_length; + Zio_Huffman_Node *tail_node_p; + int i; + + LOG(("in: zio_open_epwing(zio=%d, file_name=%s)", (int)zio->id, + file_name)); + + zio->code = ZIO_EPWING; + zio->huffman_nodes = NULL; + + /* + * Open `HONMON2'. + */ + if (zio_open_raw(zio, file_name) < 0) + goto failed; + + /* + * Read a header of `HONMON2' (32 bytes). + * When `frequencies_length' is shorter than 512, we assumes the + * file is broken. + */ + if (zio_read_raw(zio, buffer, 32) != 32) + goto failed; + zio->location = 0; + zio->slice_size = ZIO_SIZE_PAGE; + zio->index_location = zio_uint4(buffer); + zio->index_length = zio_uint4(buffer + 4); + zio->frequencies_location = zio_uint4(buffer + 8); + zio->frequencies_length = zio_uint4(buffer + 12); + leaf16_count = (zio->frequencies_length - (256 * 2)) / 4; + leaf_count = leaf16_count + 256 + 1; + if (zio->index_length < 36 || zio->frequencies_length < 512) + goto failed; + + /* + * Check for the length of an uncompressed file. + * + * If the index of the non-first page in the last index group + * is 0x0000, we assumes the data corresponding with the index + * doesn't exist. + */ + if (zio_lseek_raw(zio, zio->index_location + + ((off_t) zio->index_length - 36) / 36 * 36, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, buffer, 36) != 36) + goto failed; + zio->file_size = ((off_t) zio->index_length / 36) * (ZIO_SIZE_PAGE * 16); + for (i = 1, buffer_p = buffer + 4 + 2; i < 16; i++, buffer_p += 2) { + if (zio_uint2(buffer_p) == 0) + break; + } + zio->file_size -= ZIO_SIZE_PAGE * (16 - i); + + /* + * Allocate memory for huffman nodes. + */ + zio->huffman_nodes = (Zio_Huffman_Node *) malloc(sizeof(Zio_Huffman_Node) + * leaf_count * 2); + if (zio->huffman_nodes == NULL) + goto failed; + tail_node_p = zio->huffman_nodes; + + /* + * Make leafs for 16bit character. + */ + read_length = ZIO_EPWING_BUFFER_SIZE - (ZIO_EPWING_BUFFER_SIZE % 4); + if (zio_lseek_raw(zio, zio->frequencies_location, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, buffer, read_length) != read_length) + goto failed; + + buffer_p = buffer; + for (i = 0; i < leaf16_count; i++) { + if (buffer + read_length <= buffer_p) { + if (zio_read_raw(zio, buffer, read_length) != read_length) + goto failed; + buffer_p = buffer; + } + tail_node_p->type = ZIO_HUFFMAN_NODE_LEAF16; + tail_node_p->value = zio_uint2(buffer_p); + tail_node_p->frequency = zio_uint2(buffer_p + 2); + tail_node_p->left = NULL; + tail_node_p->right = NULL; + buffer_p += 4; + tail_node_p++; + } + + /* + * Make leafs for 8bit character. + */ + if (zio_lseek_raw(zio, zio->frequencies_location + leaf16_count * 4, + SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, buffer, 512) != 512) + goto failed; + + buffer_p = buffer; + for (i = 0; i < 256; i++) { + tail_node_p->type = ZIO_HUFFMAN_NODE_LEAF8; + tail_node_p->value = i; + tail_node_p->frequency = zio_uint2(buffer_p); + tail_node_p->left = NULL; + tail_node_p->right = NULL; + buffer_p += 2; + tail_node_p++; + } + + /* + * Make a leaf for the end-of-page character. + */ + tail_node_p->type = ZIO_HUFFMAN_NODE_EOF; + tail_node_p->value = 256; + tail_node_p->frequency = 1; + tail_node_p++; + + /* + * Make a huffman tree. + */ + if (zio_make_epwing_huffman_tree(zio, leaf_count) < 0) + goto failed; + + /* + * Assign ID. + */ + pthread_mutex_lock(&zio_mutex); + zio->id = zio_counter++; + pthread_mutex_unlock(&zio_mutex); + + LOG(("out: zio_open_epwing(zio=%d) = %d", (int)zio->id, zio->file)); + return zio->file; + + /* + * An error occurs... + */ + failed: + if (0 <= zio->file) + zio_close_raw(zio); + if (zio->huffman_nodes != NULL) + free(zio->huffman_nodes); + zio->file = -1; + zio->huffman_nodes = NULL; + zio->huffman_root = NULL; + zio->code = ZIO_INVALID; + + LOG(("out: zio_open_epwing() = %d", -1)); + return -1; +} + + +/* + * Open an EPWING compression file. + */ +static int +zio_open_epwing6(Zio *zio, const char *file_name) +{ + int leaf32_count; + int leaf16_count; + int leaf_count; + char buffer[ZIO_EPWING_BUFFER_SIZE]; + char *buffer_p; + ssize_t read_length; + Zio_Huffman_Node *tail_node_p; + int i; + + LOG(("in: zio_open_epwing6(zio=%d, file_name=%s)", (int)zio->id, + file_name)); + + zio->code = ZIO_EPWING6; + zio->huffman_nodes = NULL; + + /* + * Open `HONMON2'. + */ + if (zio_open_raw(zio, file_name) < 0) + goto failed; + + /* + * Read a header of `HONMON2' (48 bytes). + * When `frequencies_length' is shorter than 512, we assumes the + * file is broken. + */ + if (zio_read_raw(zio, buffer, 48) != 48) + goto failed; + zio->location = 0; + zio->slice_size = ZIO_SIZE_PAGE; + zio->index_location = zio_uint4(buffer); + zio->index_length = zio_uint4(buffer + 4); + zio->frequencies_location = zio_uint4(buffer + 8); + zio->frequencies_length = zio_uint4(buffer + 12); + leaf16_count = 0x400; + leaf32_count = (zio->frequencies_length - (leaf16_count * 4) - (256 * 2)) + / 6; + leaf_count = leaf32_count + leaf16_count + 256 + 1; + if (zio->index_length < 36 || zio->frequencies_length < 512) + goto failed; + + /* + * Check for the length of an uncompressed file. + * + * If the index of the non-first page in the last index group + * is 0x0000, we assumes the data corresponding with the index + * doesn't exist. + */ + if (zio_lseek_raw(zio, zio->index_location + + ((off_t) zio->index_length - 36) / 36 * 36, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, buffer, 36) != 36) + goto failed; + zio->file_size = ((off_t) zio->index_length / 36) * (ZIO_SIZE_PAGE * 16); + for (i = 1, buffer_p = buffer + 4 + 2; i < 16; i++, buffer_p += 2) { + if (zio_uint2(buffer_p) == 0) + break; + } + zio->file_size -= ZIO_SIZE_PAGE * (16 - i); + + /* + * Allocate memory for huffman nodes. + */ + zio->huffman_nodes = (Zio_Huffman_Node *) malloc(sizeof(Zio_Huffman_Node) + * leaf_count * 2); + if (zio->huffman_nodes == NULL) + goto failed; + tail_node_p = zio->huffman_nodes; + + /* + * Make leafs for 32bit character. + */ + read_length = ZIO_EPWING_BUFFER_SIZE - (ZIO_EPWING_BUFFER_SIZE % 6); + if (zio_lseek_raw(zio, zio->frequencies_location, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, buffer, read_length) != read_length) + goto failed; + + buffer_p = buffer; + for (i = 0; i < leaf32_count; i++) { + if (buffer + read_length <= buffer_p) { + if (zio_read_raw(zio, buffer, read_length) != read_length) + goto failed; + buffer_p = buffer; + } + tail_node_p->type = ZIO_HUFFMAN_NODE_LEAF32; + tail_node_p->value = zio_uint4(buffer_p); + tail_node_p->frequency = zio_uint2(buffer_p + 4); + tail_node_p->left = NULL; + tail_node_p->right = NULL; + buffer_p += 6; + tail_node_p++; + } + + /* + * Make leafs for 16bit character. + */ + read_length = ZIO_EPWING_BUFFER_SIZE - (ZIO_EPWING_BUFFER_SIZE % 4); + if (zio_lseek_raw(zio, zio->frequencies_location + leaf32_count * 6, + SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, buffer, read_length) != read_length) + goto failed; + + buffer_p = buffer; + for (i = 0; i < leaf16_count; i++) { + if (buffer + read_length <= buffer_p) { + if (zio_read_raw(zio, buffer, read_length) != read_length) + goto failed; + buffer_p = buffer; + } + tail_node_p->type = ZIO_HUFFMAN_NODE_LEAF16; + tail_node_p->value = zio_uint2(buffer_p); + tail_node_p->frequency = zio_uint2(buffer_p + 2); + tail_node_p->left = NULL; + tail_node_p->right = NULL; + buffer_p += 4; + tail_node_p++; + } + + /* + * Make leafs for 8bit character. + */ + if (zio_lseek_raw(zio, zio->frequencies_location + leaf32_count * 6 + + leaf16_count * 4, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, buffer, 512) != 512) + goto failed; + + buffer_p = buffer; + for (i = 0; i < 256; i++) { + tail_node_p->type = ZIO_HUFFMAN_NODE_LEAF8; + tail_node_p->value = i; + tail_node_p->frequency = zio_uint2(buffer_p); + tail_node_p->left = NULL; + tail_node_p->right = NULL; + buffer_p += 2; + tail_node_p++; + } + + /* + * Make a leaf for the end-of-page character. + */ + tail_node_p->type = ZIO_HUFFMAN_NODE_EOF; + tail_node_p->value = 256; + tail_node_p->frequency = 1; + tail_node_p++; + + /* + * Make a huffman tree. + */ + if (zio_make_epwing_huffman_tree(zio, leaf_count) < 0) + goto failed; + + /* + * Assign ID. + */ + pthread_mutex_lock(&zio_mutex); + zio->id = zio_counter++; + pthread_mutex_unlock(&zio_mutex); + + LOG(("out: zio_open_epwing6(zio=%d) = %d", (int)zio->id, zio->file)); + return zio->file; + + /* + * An error occurs... + */ + failed: + if (0 <= zio->file) + zio_close_raw(zio); + if (zio->huffman_nodes != NULL) + free(zio->huffman_nodes); + zio->file = -1; + zio->huffman_nodes = NULL; + zio->huffman_root = NULL; + zio->code = ZIO_INVALID; + + LOG(("out: zio_open_epwing6() = %d", -1)); + return -1; +} + + +/* + * Make a huffman tree for decompressing EPWING compression data. + */ +static int +zio_make_epwing_huffman_tree(Zio *zio, int leaf_count) +{ + Zio_Huffman_Node *target_node; + Zio_Huffman_Node *most_node; + Zio_Huffman_Node *node_p; + Zio_Huffman_Node temporary_node; + Zio_Huffman_Node *least_node_p; + Zio_Huffman_Node *tail_node_p; + int i; + int j; + + LOG(("in: zio_make_epwing_huffman_tree(zio=%d, leaf_count=%d)", + (int)zio->id, leaf_count)); + + tail_node_p = zio->huffman_nodes + leaf_count; + + /* + * Sort the leaf nodes in frequency order. + */ + for (i = 0; i < leaf_count - 1; i++) { + target_node = zio->huffman_nodes + i; + most_node = target_node; + node_p = zio->huffman_nodes + i + 1; + + for (j = i + 1; j < leaf_count; j++) { + if (most_node->frequency < node_p->frequency) + most_node = node_p; + node_p++; + } + + temporary_node.type = most_node->type; + temporary_node.value = most_node->value; + temporary_node.frequency = most_node->frequency; + + most_node->type = target_node->type; + most_node->value = target_node->value; + most_node->frequency = target_node->frequency; + + target_node->type = temporary_node.type; + target_node->value = temporary_node.value; + target_node->frequency = temporary_node.frequency; + } + + /* + * Make intermediate nodes of the huffman tree. + * The number of intermediate nodes of the tree is - 1. + */ + for (i = 1; i < leaf_count; i++) { + /* + * Initialize a new intermediate node. + */ + tail_node_p->type = ZIO_HUFFMAN_NODE_INTERMEDIATE; + tail_node_p->left = NULL; + tail_node_p->right = NULL; + + /* + * Find for a least frequent node. + * That node becomes a left child of the new intermediate node. + */ + least_node_p = NULL; + for (node_p = zio->huffman_nodes; node_p < tail_node_p; node_p++) { + if (node_p->frequency == 0) + continue; + if (least_node_p == NULL + || node_p->frequency <= least_node_p->frequency) + least_node_p = node_p; + } + if (least_node_p == NULL) + goto failed; + tail_node_p->left = least_node_p; + tail_node_p->frequency = least_node_p->frequency; + least_node_p->frequency = 0; + + /* + * Find for a next least frequent node. + * That node becomes a right child of the new intermediate node. + */ + least_node_p = NULL; + for (node_p = zio->huffman_nodes; node_p < tail_node_p; node_p++) { + if (node_p->frequency == 0) + continue; + if (least_node_p == NULL + || node_p->frequency <= least_node_p->frequency) + least_node_p = node_p; + } + if (least_node_p == NULL) + goto failed; + tail_node_p->right = least_node_p; + tail_node_p->frequency += least_node_p->frequency; + least_node_p->frequency = 0; + + tail_node_p++; + } + + /* + * Set a root node of the huffman tree. + */ + zio->huffman_root = tail_node_p - 1; + + LOG(("out: zio_make_epwing_huffman_tree() = %d", 0)); + return 0; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_make_epwing_huffman_tree() = %d", -1)); + return -1; +} + + +/* + * Close `zio'. + */ +void +zio_close(Zio *zio) +{ + pthread_mutex_lock(&zio_mutex); + LOG(("in: zio_close(zio=%d)", (int)zio->id)); + + /* + * If contents of the file is cached, clear the cache. + */ + if (0 <= zio->file) + zio_close_raw(zio); + zio->file = -1; + + LOG(("out: zio_close()")); + pthread_mutex_unlock(&zio_mutex); +} + + +/* + * Return file descriptor of `zio'. + */ +int +zio_file(Zio *zio) +{ + LOG(("in+out: zio_file(zio=%d) = %d", (int)zio->id, zio->file)); + + return zio->file; +} + + +/* + * Return compression mode of `zio'. + */ +Zio_Code +zio_mode(Zio *zio) +{ + LOG(("in+out: zio_mode(zio=%d) = %d", (int)zio->id, zio->code)); + + return zio->code; +} + + +/* + * Seek `zio'. + */ +off_t +zio_lseek(Zio *zio, off_t location, int whence) +{ + off_t result; + + LOG(("in: zio_lseek(zio=%d, location=%ld, whence=%d)", + (int)zio->id, (long)location, whence)); + + if (zio->file < 0) + goto failed; + + if (zio->code == ZIO_PLAIN) { + /* + * If `zio' is not compressed, simply call lseek(). + */ + result = zio_lseek_raw(zio, location, whence); + } else { + /* + * Calculate new location according with `whence'. + */ + switch (whence) { + case SEEK_SET: + zio->location = location; + break; + case SEEK_CUR: + zio->location = zio->location + location; + break; + case SEEK_END: + zio->location = zio->file_size - location; + break; + default: +#ifdef EINVAL + errno = EINVAL; +#endif + goto failed; + } + + /* + * Adjust location. + */ + if (zio->location < 0) + zio->location = 0; + if (zio->file_size < zio->location) + zio->location = zio->file_size; + + /* + * Update `zio->location'. + * (We don't actually seek the file.) + */ + result = zio->location; + } + + LOG(("out: zio_lseek() = %ld", (long)result)); + return result; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_lseek() = %ld", (long)-1)); + return -1; +} + + +/* + * Read data from `zio' file. + */ +ssize_t +zio_read(Zio *zio, char *buffer, size_t length) +{ + ssize_t read_length; + + pthread_mutex_lock(&zio_mutex); + LOG(("in: zio_read(zio=%d, length=%ld)", (int)zio->id, (long)length)); + + /* + * If the zio `file' is not compressed, call read() and return. + */ + if (zio->file < 0) + goto failed; + + switch (zio->code) { + case ZIO_PLAIN: + read_length = zio_read_raw(zio, buffer, length); + break; + case ZIO_EBZIP1: + read_length = zio_read_ebzip(zio, buffer, length); + break; + case ZIO_EPWING: + case ZIO_EPWING6: + read_length = zio_read_epwing(zio, buffer, length); + break; + case ZIO_SEBXA: + read_length = zio_read_sebxa(zio, buffer, length); + break; + default: + goto failed; + } + + LOG(("out: zio_read() = %ld", (long)read_length)); + pthread_mutex_unlock(&zio_mutex); + + return read_length; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_read() = %ld", (long)-1)); + return -1; +} + + +/* + * Read data from the `zio' file compressed with the ebzip compression + * format. + */ +static ssize_t +zio_read_ebzip(Zio *zio, char *buffer, size_t length) +{ + char temporary_buffer[8]; + ssize_t read_length = 0; + size_t zipped_slice_size; + off_t slice_location; + off_t next_slice_location; + int n; + + LOG(("in: zio_read_ebzip(zio=%d, length=%ld)", (int)zio->id, + (long)length)); + + /* + * Read data. + */ + while (read_length < length) { + if (zio->file_size <= zio->location) + goto succeeded; + + /* + * If data in `cache_buffer' is out of range, read data from + * `zio->file'. + */ + if (cache_zio_id != zio->id + || zio->location < cache_location + || cache_location + zio->slice_size <= zio->location) { + + cache_zio_id = ZIO_ID_NONE; + cache_location = zio->location - (zio->location % zio->slice_size); + + /* + * Get buffer location and size from index table in `zio->file'. + */ + if (zio_lseek_raw(zio, zio->location / zio->slice_size + * zio->index_width + ZIO_SIZE_EBZIP_HEADER, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, temporary_buffer, zio->index_width * 2) + != zio->index_width * 2) + goto failed; + + switch (zio->index_width) { + case 2: + slice_location = zio_uint2(temporary_buffer); + next_slice_location = zio_uint2(temporary_buffer + 2); + break; + case 3: + slice_location = zio_uint3(temporary_buffer); + next_slice_location = zio_uint3(temporary_buffer + 3); + break; + case 4: + slice_location = zio_uint4(temporary_buffer); + next_slice_location = zio_uint4(temporary_buffer + 4); + break; + case 5: + slice_location = zio_uint5(temporary_buffer); + next_slice_location = zio_uint5(temporary_buffer + 5); + break; + default: + goto failed; + } + zipped_slice_size = next_slice_location - slice_location; + + if (next_slice_location <= slice_location + || zio->slice_size < zipped_slice_size) + goto failed; + + /* + * Read a compressed slice from `zio->file' and uncompress it. + * The data is not compressed if its size is equals to + * slice size. + */ + if (zio_lseek_raw(zio, slice_location, SEEK_SET) < 0) + goto failed; + if (zio_unzip_slice_ebzip1(zio, cache_buffer, zipped_slice_size) + < 0) + goto failed; + + cache_zio_id = zio->id; + } + + /* + * Copy data from `cache_buffer' to `buffer'. + */ + n = zio->slice_size - (zio->location % zio->slice_size); + if (length - read_length < n) + n = length - read_length; + if (zio->file_size - zio->location < n) + n = zio->file_size - zio->location; + memcpy(buffer + read_length, + cache_buffer + (zio->location % zio->slice_size), n); + read_length += n; + zio->location += n; + } + + succeeded: + LOG(("out: zio_read_ebzip() = %ld", (long)read_length)); + return read_length; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_read_ebzip() = %ld", (long)-1)); + return -1; +} + + +/* + * Read data from the `zio' file compressed with the EPWING or EPWING V6 + * compression format. + */ +static ssize_t +zio_read_epwing(Zio *zio, char *buffer, size_t length) +{ + char temporary_buffer[36]; + ssize_t read_length = 0; + off_t page_location; + int n; + + LOG(("in: zio_read_epwing(zio=%d, length=%ld)", (int)zio->id, + (long)length)); + + /* + * Read data. + */ + while (read_length < length) { + if (zio->file_size <= zio->location) + goto succeeded; + + /* + * If data in `cache_buffer' is out of range, read data from the zio + * file. + */ + if (cache_zio_id != zio->id + || zio->location < cache_location + || cache_location + zio->slice_size <= zio->location) { + cache_zio_id = ZIO_ID_NONE; + cache_location = zio->location - (zio->location % zio->slice_size); + + /* + * Get page location from index table in `zio->file'. + */ + if (zio_lseek_raw(zio, zio->index_location + + zio->location / (ZIO_SIZE_PAGE * 16) * 36, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, temporary_buffer, 36) != 36) + goto failed; + page_location = zio_uint4(temporary_buffer) + + zio_uint2(temporary_buffer + 4 + + (zio->location / ZIO_SIZE_PAGE % 16) * 2); + + /* + * Read a compressed page from `zio->file' and uncompress it. + */ + if (zio_lseek_raw(zio, page_location, SEEK_SET) < 0) + goto failed; + if (zio->code == ZIO_EPWING) { + if (zio_unzip_slice_epwing(zio, cache_buffer) < 0) + goto failed; + } else { + if (zio_unzip_slice_epwing6(zio, cache_buffer) < 0) + goto failed; + } + + cache_zio_id = zio->id; + } + + /* + * Copy data from `cache_buffer' to `buffer'. + */ + n = ZIO_SIZE_PAGE - (zio->location % ZIO_SIZE_PAGE); + if (length - read_length < n) + n = length - read_length; + if (zio->file_size - zio->location < n) + n = zio->file_size - zio->location; + memcpy(buffer + read_length, + cache_buffer + (zio->location - cache_location), n); + read_length += n; + zio->location += n; + } + + succeeded: + LOG(("out: zio_read_epwing() = %ld", (long)read_length)); + return read_length; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_read_epwing() = %ld", (long)-1)); + return -1; +} + + +#define ZIO_SEBXA_SLICE_LENGTH 4096 + +/* + * Read data from the zio `file' compressed with the S-EBXA compression + * format. + */ +static ssize_t +zio_read_sebxa(Zio *zio, char *buffer, size_t length) +{ + char temporary_buffer[4]; + ssize_t read_length = 0; + off_t slice_location; + ssize_t n; + int slice_index; + + LOG(("in: zio_read_sebxa(zio=%d, length=%ld)", (int)zio->id, + (long)length)); + + /* + * Read data. + */ + while (read_length < length) { + if (zio->file_size <= zio->location) + goto succeeded; + + if (zio->location < zio->zio_start_location) { + /* + * Data is located in front of compressed text. + */ + if (zio->zio_start_location - zio->location < length - read_length) + n = zio->zio_start_location - zio->location; + else + n = length - read_length; + if (zio_lseek_raw(zio, zio->location, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, buffer, n) != n) + goto failed; + read_length += n; + + } else if (zio->zio_end_location <= zio->location) { + /* + * Data is located behind compressed text. + */ + if (zio_lseek_raw(zio, zio->location, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, buffer, length - read_length) + != length - read_length) + goto failed; + read_length = length; + + } else { + /* + * Data is located in compressed text. + * + * If data in `cache_buffer' is out of range, read data from + * `file'. + */ + if (cache_zio_id != zio->id + || zio->location < cache_location + || cache_location + ZIO_SEBXA_SLICE_LENGTH <= zio->location) { + + cache_zio_id = ZIO_ID_NONE; + cache_location = zio->location + - (zio->location % ZIO_SEBXA_SLICE_LENGTH); + + /* + * Get buffer location and size. + */ + slice_index = (zio->location - zio->zio_start_location) + / ZIO_SEBXA_SLICE_LENGTH; + if (slice_index == 0) + slice_location = zio->index_base; + else { + if (zio_lseek_raw(zio, ((off_t) slice_index - 1) * 4 + + zio->index_location, SEEK_SET) < 0) + goto failed; + if (zio_read_raw(zio, temporary_buffer, 4) != 4) + goto failed; + slice_location = zio->index_base + + zio_uint4(temporary_buffer); + } + + /* + * Read a compressed slice from `zio->file' and uncompress it. + */ + if (zio_lseek_raw(zio, slice_location, SEEK_SET) < 0) + goto failed; + if (zio_unzip_slice_sebxa(zio, cache_buffer) < 0) + goto failed; + + cache_zio_id = zio->id; + } + + /* + * Copy data from `cache_buffer' to `buffer'. + */ + n = ZIO_SEBXA_SLICE_LENGTH + - (zio->location % ZIO_SEBXA_SLICE_LENGTH); + if (length - read_length < n) + n = length - read_length; + if (zio->file_size - zio->location < n) + n = zio->file_size - zio->location; + memcpy(buffer + read_length, + cache_buffer + (zio->location - cache_location), n); + read_length += n; + zio->location += n; + } + } + + succeeded: + LOG(("out: zio_read_sebxa() = %ld", (long)read_length)); + return read_length; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_read_sebxa() = %ld", (long)-1)); + return -1; +} + + +/* + * Uncompress an ebzip'ped slice. + * + * If it succeeds, 0 is returned. Otherwise, -1 is returned. + */ +static int +zio_unzip_slice_ebzip1(Zio *zio, char *out_buffer, size_t zipped_slice_size) +{ + LOG(("in: zio_unzip_slice_ebzip1(zio=%d, zipped_slice_size=%ld)", + (int)zio->id, (long)zipped_slice_size)); + + if (zio->slice_size == zipped_slice_size) { + /* + * The input slice is not compressed. + * Read the target page in the slice. + */ + if (zio_read_raw(zio, out_buffer, zipped_slice_size) != + zipped_slice_size) + goto failed; + + } else { + /* + * The input slice is compressed. + * Read and uncompress the target page in the slice. + */ + if (zio_unzip_slice_ebzip1_internal + (zio, out_buffer, zipped_slice_size) != 0) + goto failed; + } + + LOG(("out: zio_unzip_slice_ebzip1() = %d", 0)); + return 0; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_unzip_slice_ebzip1() = %d", -1)); + return -1; +} + +inline static int +zio_unzip_slice_ebzip1_internal +(Zio *zio, char *out_buffer, size_t zipped_slice_size) +{ +#ifdef ENABLE_LIBDEFLATE + char *in_buffer = NULL; + struct libdeflate_decompressor *decompressor = NULL; + enum libdeflate_result result; + + LOG(("in: zio_unzip_slice_ebzip1_internal(zio=%d, zipped_slice_size=%ld)", + (int)zio->id, (long)zipped_slice_size)); + + decompressor = libdeflate_alloc_decompressor(); + if (!decompressor) goto failed; + + in_buffer = malloc(zipped_slice_size); + if (!in_buffer) goto failed; + + if (zio_read_raw(zio, in_buffer, zipped_slice_size) != + zipped_slice_size) + goto failed; + + result = libdeflate_zlib_decompress + (decompressor, in_buffer, zipped_slice_size, out_buffer, + zio->slice_size, NULL); + + if (result != LIBDEFLATE_SUCCESS) goto failed; + + libdeflate_free_decompressor(decompressor); + free (in_buffer); + + LOG(("out: zio_unzip_slice_ebzip1_internal() = %d", 0)); + return 0; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_unzip_slice_ebzip1_internal() = %d", -1)); + if (!decompressor) libdeflate_free_decompressor(decompressor); + if (!in_buffer) free (in_buffer); + return -1; +#else + char in_buffer[ZIO_SIZE_PAGE]; + z_stream stream; + size_t read_length; + int z_result; + + LOG(("in: zio_unzip_slice_ebzip1_internal(zio=%d, zipped_slice_size=%ld)", + (int)zio->id, (long)zipped_slice_size)); + + stream.zalloc = NULL; + stream.zfree = NULL; + stream.opaque = NULL; + + if (inflateInit(&stream) != Z_OK) + goto failed; + + stream.next_in = (Bytef *) in_buffer; + stream.avail_in = 0; + stream.next_out = (Bytef *) out_buffer; + stream.avail_out = zio->slice_size; + + while (stream.total_out < zio->slice_size) { + if (0 < stream.avail_in) + memmove(in_buffer, stream.next_in, stream.avail_in); + + if (zipped_slice_size - stream.total_in < ZIO_SIZE_PAGE) { + read_length = zipped_slice_size - stream.total_in + - stream.avail_in; + } else { + read_length = ZIO_SIZE_PAGE - stream.avail_in; + } + + if (zio_read_raw(zio, in_buffer + stream.avail_in, + read_length) != read_length) + goto failed; + + stream.next_in = (Bytef *) in_buffer; + stream.avail_in += read_length; + stream.avail_out = zio->slice_size - stream.total_out; + + z_result = inflate(&stream, Z_SYNC_FLUSH); + if (z_result == Z_STREAM_END) { + break; + } else if (z_result != Z_OK && z_result != Z_BUF_ERROR) { + goto failed; + } + } + + inflateEnd(&stream); + + LOG(("out: zio_unzip_slice_ebzip1_internal() = %d", 0)); + return 0; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_unzip_slice_ebzip1_internal() = %d", -1)); + inflateEnd(&stream); + return -1; +#endif +} + + +/* + * Uncompress an EPWING compressed slice. + * The offset of `zio->file' must points to the beginning of the compressed + * slice. Uncompressed data are put into `out_buffer'. + * + * If it succeeds, 0 is returned. Otherwise, -1 is returned. + */ +static int +zio_unzip_slice_epwing(Zio *zio, char *out_buffer) +{ + Zio_Huffman_Node *node_p; + int bit; + char in_buffer[ZIO_SIZE_PAGE]; + unsigned char *in_buffer_p; + ssize_t in_read_length; + int in_bit_index; + unsigned char *out_buffer_p; + size_t out_length; + + LOG(("in: zio_unzip_slice_epwing(zio=%d)", (int)zio->id)); + + in_buffer_p = (unsigned char *)in_buffer; + in_bit_index = 7; + in_read_length = 0; + out_buffer_p = (unsigned char *)out_buffer; + out_length = 0; + + for (;;) { + /* + * Descend the huffman tree until reached to the leaf node. + */ + node_p = zio->huffman_root; + while (node_p->type == ZIO_HUFFMAN_NODE_INTERMEDIATE) { + + /* + * If no data is left in the input buffer, read next chunk. + */ + if ((unsigned char *)in_buffer + in_read_length <= in_buffer_p) { + in_read_length = zio_read_raw(zio, in_buffer, ZIO_SIZE_PAGE); + if (in_read_length <= 0) + goto failed; + in_buffer_p = (unsigned char *)in_buffer; + } + + /* + * Step to a child. + */ + bit = (*in_buffer_p >> in_bit_index) & 0x01; + + if (bit == 1) + node_p = node_p->left; + else + node_p = node_p->right; + if (node_p == NULL) + goto failed; + + if (0 < in_bit_index) + in_bit_index--; + else { + in_bit_index = 7; + in_buffer_p++; + } + } + + if (node_p->type == ZIO_HUFFMAN_NODE_EOF) { + /* + * Fill the rest of the output buffer with NUL, + * when we meet an EOF mark before decode ZIO_SIZE_PAGE bytes. + */ + if (out_length < ZIO_SIZE_PAGE) { + memset(out_buffer_p, '\0', ZIO_SIZE_PAGE - out_length); + out_length = ZIO_SIZE_PAGE; + } + break; + + } else if (node_p->type == ZIO_HUFFMAN_NODE_LEAF16) { + /* + * The leaf is leaf16, decode 2 bytes character. + */ + if (ZIO_SIZE_PAGE <= out_length) + goto failed; + else if (ZIO_SIZE_PAGE <= out_length + 1) { + *out_buffer_p++ = (node_p->value >> 8) & 0xff; + out_length++; + } else { + *out_buffer_p++ = (node_p->value >> 8) & 0xff; + *out_buffer_p++ = node_p->value & 0xff; + out_length += 2; + } + } else { + /* + * The leaf is leaf8, decode 1 byte character. + */ + if (ZIO_SIZE_PAGE <= out_length) + goto failed; + else { + *out_buffer_p++ = node_p->value; + out_length++; + } + } + } + + LOG(("out: zio_unzip_slice_epwing() = %d", 0)); + return 0; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_unzip_slice_epwing() = %d", -1)); + return -1; +} + + +/* + * Uncompress an EPWING V6 compressed slice. + * The offset of `zio->file' must points to the beginning of the compressed + * slice. Uncompressed data are put into `out_buffer'. + * + * If it succeeds, 0 is returned. Otherwise, -1 is returned. + */ +static int +zio_unzip_slice_epwing6(Zio *zio, char *out_buffer) +{ + Zio_Huffman_Node *node_p; + int bit; + char in_buffer[ZIO_SIZE_PAGE]; + unsigned char *in_buffer_p; + ssize_t in_read_length; + int in_bit_index; + unsigned char *out_buffer_p; + size_t out_length; + int compression_type; + + LOG(("in: zio_unzip_slice_epwing6(zio=%d)", (int)zio->id)); + + in_buffer_p = (unsigned char *)in_buffer; + in_bit_index = 7; + in_read_length = 0; + out_buffer_p = (unsigned char *)out_buffer; + out_length = 0; + + /* + * Get compression type. + */ + if (zio_read_raw(zio, in_buffer, 1) != 1) + goto failed; + compression_type = zio_uint1(in_buffer); + + /* + * If compression type is not 0, this page is not compressed. + */ + if (compression_type != 0) { + if (zio_read_raw(zio, out_buffer, ZIO_SIZE_PAGE) != ZIO_SIZE_PAGE) + goto failed; + goto succeeded; + } + + while (out_length < ZIO_SIZE_PAGE) { + /* + * Descend the huffman tree until reached to the leaf node. + */ + node_p = zio->huffman_root; + while (node_p->type == ZIO_HUFFMAN_NODE_INTERMEDIATE) { + + /* + * If no data is left in the input buffer, read next chunk. + */ + if ((unsigned char *)in_buffer + in_read_length <= in_buffer_p) { + in_read_length = zio_read_raw(zio, in_buffer, ZIO_SIZE_PAGE); + if (in_read_length <= 0) + goto failed; + in_buffer_p = (unsigned char *)in_buffer; + } + + /* + * Step to a child. + */ + bit = (*in_buffer_p >> in_bit_index) & 0x01; + + if (bit == 1) + node_p = node_p->left; + else + node_p = node_p->right; + if (node_p == NULL) + goto failed; + + if (0 < in_bit_index) + in_bit_index--; + else { + in_bit_index = 7; + in_buffer_p++; + } + } + + if (node_p->type == ZIO_HUFFMAN_NODE_EOF) { + /* + * Fill the rest of the output buffer with NUL, + * when we meet an EOF mark before decode ZIO_SIZE_PAGE bytes. + */ + if (out_length < ZIO_SIZE_PAGE) { + memset(out_buffer_p, '\0', ZIO_SIZE_PAGE - out_length); + out_length = ZIO_SIZE_PAGE; + } + break; + + } else if (node_p->type == ZIO_HUFFMAN_NODE_LEAF32) { + /* + * The leaf is leaf32, decode 4 bytes character. + */ + if (ZIO_SIZE_PAGE <= out_length + 1) { + *out_buffer_p++ = (node_p->value >> 24) & 0xff; + out_length++; + } else if (ZIO_SIZE_PAGE <= out_length + 2) { + *out_buffer_p++ = (node_p->value >> 24) & 0xff; + *out_buffer_p++ = (node_p->value >> 16) & 0xff; + out_length += 2; + } else if (ZIO_SIZE_PAGE <= out_length + 3) { + *out_buffer_p++ = (node_p->value >> 24) & 0xff; + *out_buffer_p++ = (node_p->value >> 16) & 0xff; + *out_buffer_p++ = (node_p->value >> 8) & 0xff; + out_length += 3; + } else { + *out_buffer_p++ = (node_p->value >> 24) & 0xff; + *out_buffer_p++ = (node_p->value >> 16) & 0xff; + *out_buffer_p++ = (node_p->value >> 8) & 0xff; + *out_buffer_p++ = node_p->value & 0xff; + out_length += 4; + } + } else if (node_p->type == ZIO_HUFFMAN_NODE_LEAF16) { + /* + * The leaf is leaf16, decode 2 bytes character. + */ + if (ZIO_SIZE_PAGE <= out_length + 1) { + *out_buffer_p++ = (node_p->value >> 8) & 0xff; + out_length++; + } else { + *out_buffer_p++ = (node_p->value >> 8) & 0xff; + *out_buffer_p++ = node_p->value & 0xff; + out_length += 2; + } + } else { + /* + * The leaf is leaf8, decode 1 byte character. + */ + *out_buffer_p++ = node_p->value; + out_length++; + } + } + + succeeded: + LOG(("out: zio_unzip_slice_epwing6() = %d", 0)); + return 0; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_unzip_slice_epwing6() = %d", -1)); + return -1; +} + +/* + * Uncompress an S-EBXA compressed slice. + * The offset of `zio->file' must points to the beginning of the compressed + * slice. Uncompressed data are put into `out_buffer'. + * + * If it succeeds, 0 is returned. Otherwise, -1 is returned. + */ +static int +zio_unzip_slice_sebxa(Zio *zio, char *out_buffer) +{ + char in_buffer[ZIO_SEBXA_SLICE_LENGTH]; + unsigned char *in_buffer_p; + ssize_t in_read_rest; + unsigned char *out_buffer_p; + size_t out_length; + int compression_flags[8]; + int copy_offset; + int copy_length; + int i, j; + + LOG(("in: zio_unzip_slice_sebxa(zio=%d)", (int)zio->id)); + + in_buffer_p = (unsigned char *)in_buffer; + in_read_rest = 0; + out_buffer_p = (unsigned char *)out_buffer; + out_length = 0; + + for (;;) { + /* + * If no data is left in the input buffer, read next chunk. + */ + if (in_read_rest <= 0) { + in_read_rest = zio_read_raw(zio, in_buffer, + ZIO_SEBXA_SLICE_LENGTH); + if (in_read_rest <= 0) + goto failed; + in_buffer_p = (unsigned char *)in_buffer; + } + + /* + * The current input byte is recognized as compression flags + * for next 8 chunks. + */ + compression_flags[0] = !(*in_buffer_p & 0x01); + compression_flags[1] = !(*in_buffer_p & 0x02); + compression_flags[2] = !(*in_buffer_p & 0x04); + compression_flags[3] = !(*in_buffer_p & 0x08); + compression_flags[4] = !(*in_buffer_p & 0x10); + compression_flags[5] = !(*in_buffer_p & 0x20); + compression_flags[6] = !(*in_buffer_p & 0x40); + compression_flags[7] = !(*in_buffer_p & 0x80); + in_buffer_p++; + in_read_rest--; + + /* + * Decode 8 chunks. + */ + for (i = 0; i < 8; i++) { + if (compression_flags[i]) { + /* + * This chunk is compressed. + * Copy `copy_length' bytes from `copy_p' to the current + * point. + */ + unsigned char *copy_p; + unsigned char c0, c1; + + if (in_read_rest <= 1) + goto failed; + + /* + * Get 2 bytes from the current input, and recognize + * them as following: + * + * *in_buffer_p *(in_bufer_p + 1) + * bit pattern: [AAAA|BBBB] [CCCC|DDDD] + * + * copy_offset = ([CCCCAAAABBBB] + 18) % 4096 + * copy_length = [DDDD] + 3 + */ + c0 = *(unsigned char *)in_buffer_p; + c1 = *((unsigned char *)in_buffer_p + 1); + copy_offset = (((c1 & 0xf0) << 4) + c0 + 18) + % ZIO_SEBXA_SLICE_LENGTH; + copy_length = (c1 & 0x0f) + 3; + + if (ZIO_SEBXA_SLICE_LENGTH < out_length + copy_length) + copy_length = ZIO_SEBXA_SLICE_LENGTH - out_length; + + copy_p = (unsigned char *)out_buffer + copy_offset; + for (j = 0; j < copy_length; j++) { + if (copy_p < out_buffer_p) + *out_buffer_p++ = *copy_p; + else + *out_buffer_p++ = 0x00; + copy_p++; + if (ZIO_SEBXA_SLICE_LENGTH <= + copy_p - (unsigned char *)out_buffer) + copy_p -= ZIO_SEBXA_SLICE_LENGTH; + } + + in_read_rest -= 2; + in_buffer_p += 2; + out_length += copy_length; + + } else { + /* + * This chunk is not compressed. + * Put the current input byte as a decoded value. + */ + if (in_read_rest <= 0) + goto failed; + in_read_rest -= 1; + *out_buffer_p++ = *in_buffer_p++; + out_length += 1; + } + + /* + * Return if the slice has been uncompressed. + */ + if (ZIO_SEBXA_SLICE_LENGTH <= out_length) + goto succeeded; + } + } + + succeeded: + LOG(("out: zio_unzip_slice_sebxa() = %d", 0)); + return 0; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_unzip_slice_sebxa() = %d", -1)); + return -1; +} + + +/* + * Low-level open function. + * + * If `file_name' is ebnet URL, it calls ebnet_open(). Otherwise it + * calls the open() system call. + * + * Like open(), it returns file descrptor or -1. + */ +static int +zio_open_raw(Zio *zio, const char *file_name) +{ +#ifdef ENABLE_EBNET + if (is_ebnet_url(file_name)) { + zio->is_ebnet = 1; + zio->file = ebnet_open(file_name); + } else { + zio->is_ebnet = 0; + zio->file = open(file_name, O_RDONLY | O_BINARY); + } +#else + zio->file = open(file_name, O_RDONLY | O_BINARY); +#endif + + return zio->file; +} + + +/* + * Low-level close function. + * + * If `zio->file' is socket, it calls ebnet_close(). Otherwise it calls + * the close() system call. + */ +static void +zio_close_raw(Zio *zio) +{ +#ifdef ENABLE_EBNET + if (zio->is_ebnet) + ebnet_close(zio->file); + else + close(zio->file); +#else + close(zio->file); +#endif +} + + +/* + * Low-level seek function. + * + * If `zio->file' is socket, it calls ebnet_close(). Otherwise it calls + * the close() system call. + */ +static off_t +zio_lseek_raw(Zio *zio, off_t offset, int whence) +{ + off_t result; + + if (zio->is_ebnet) { +#ifdef ENABLE_EBNET + result = ebnet_lseek(zio->file, offset, whence); +#else + result = -1; +#endif + } else { + result = lseek(zio->file, offset, whence); + } + + return result; +} + + +/* + * Low-level read function. + * + * If `zio->file' is socket, it calls ebnet_read(). Otherwise it calls + * the read() system call. + */ +static ssize_t +zio_read_raw(Zio *zio, void *buffer, size_t length) +{ + char *buffer_p = buffer; + ssize_t result; + + LOG(("in: zio_read_raw(file=%d, length=%ld)", zio->file, (long)length)); + + if (zio->is_ebnet) { + /* + * Read from a remote server. + */ +#ifdef ENABLE_EBNET + result = ebnet_read(&zio->file, buffer, length); +#else + result = -1; +#endif + } else { + /* + * Read from a local file. + */ + ssize_t rest_length = length; + ssize_t n; + + while (0 < rest_length) { + errno = 0; + n = read(zio->file, buffer_p, rest_length); + if (n < 0) { + if (errno == EINTR) + continue; + goto failed; + } else if (n == 0) + break; + else { + rest_length -= n; + buffer_p += n; + } + } + + result = length - rest_length; + } + + LOG(("out: zio_read_raw() = %ld", (long)result)); + return result; + + /* + * An error occurs... + */ + failed: + LOG(("out: zio_read_raw() = %ld", (long)-1)); + return -1; +} + + diff --git a/lib/ebu/ebu/zio.h b/lib/ebu/ebu/zio.h new file mode 100644 index 0000000..0cb7bbd --- /dev/null +++ b/lib/ebu/ebu/zio.h @@ -0,0 +1,237 @@ +/* -*- C -*- + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef ZIO_H +#define ZIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * Header size of the ebzip compression file. + */ +#define ZIO_SIZE_EBZIP_HEADER 22 + +/* + * Margin size for ebzip compression buffer. + * (Since compressed data is larger than original in the worst case, + * we must add margin to a compression buffer.) + */ +#define ZIO_SIZE_EBZIP_MARGIN 1024 + +/* + * Maximum ebzio compression level. + */ +#define ZIO_MAX_EBZIP_LEVEL 5 + +/* + * Huffman node types. + */ +#define ZIO_HUFFMAN_NODE_INTERMEDIATE 0 +#define ZIO_HUFFMAN_NODE_EOF 1 +#define ZIO_HUFFMAN_NODE_LEAF8 2 +#define ZIO_HUFFMAN_NODE_LEAF16 3 +#define ZIO_HUFFMAN_NODE_LEAF32 4 + +/* + * Compression type codes. + */ +#define ZIO_PLAIN 0 +#define ZIO_EBZIP1 1 +#define ZIO_EPWING 2 +#define ZIO_EPWING6 3 +#define ZIO_SEBXA 4 +#define ZIO_INVALID -1 +#define ZIO_REOPEN -2 + +/* + * Compression type. + */ +typedef int Zio_Code; + +/* + * A node of static Huffman tree. + */ +typedef struct Zio_Huffman_Node_Struct Zio_Huffman_Node; + +struct Zio_Huffman_Node_Struct { + /* + * node type (ITNERMEDIATE, LEAF8, LEAF16, LEAF32 or EOF). + */ + int type; + + /* + * Value of a leaf node. + */ + unsigned int value; + + /* + * Frequency of a node. + */ + int frequency; + + /* + * Left child. + */ + Zio_Huffman_Node *left; + + /* + * Right child. + */ + Zio_Huffman_Node *right; +}; + +/* + * Compression information of a book. + */ +typedef struct Zio_Struct Zio; + +struct Zio_Struct { + /* + * ID. + */ + int id; + + /* + * Zio type. (PLAIN, EBZIP, EPWING, EPWING6 or SEBXA) + */ + Zio_Code code; + + /* + * File descriptor. + */ + int file; + + /* + * Current location. + */ + off_t location; + + /* + * Size of an uncompressed file. + */ + off_t file_size; + + /* + * Slice size of an EBZIP compressed file. + */ + size_t slice_size; + + /* + * Compression level. (EBZIP compression only) + */ + int zip_level; + + /* + * Length of an index. (EBZIP compression only) + */ + int index_width; + + /* + * Adler-32 check sum of an uncompressed file. (EBZIP compression only) + */ + unsigned int crc; + + /* + * mtime of an uncompressed file. (EBZIP compression only) + */ + time_t mtime; + + /* + * Location of an index table. (EPWING and S-EBXA compression only) + */ + off_t index_location; + + /* + * Length of an index table. (EPWING and S-EBXA compression only) + */ + size_t index_length; + + /* + * Location of a frequency table. (EPWING compression only) + */ + off_t frequencies_location; + + /* + * Length of a frequency table. (EPWING compression only) + */ + size_t frequencies_length; + + /* + * Huffman tree nodes. (EPWING compression only) + */ + Zio_Huffman_Node *huffman_nodes; + + /* + * Root node of a Huffman tree. (EPWING compression only) + */ + Zio_Huffman_Node *huffman_root; + + /* + * Region of compressed pages. (S-EBXA compression only) + */ + off_t zio_start_location; + off_t zio_end_location; + + /* + * Add this value to offset written in index. (S-EBXA compression only) + */ + off_t index_base; + + /* + * ebnet mode flag. + */ + int is_ebnet; +}; + +/* + * Function declarations. + */ +/* zio.c */ +int zio_initialize_library(void); +void zio_finalize_library(void); +void zio_initialize(Zio *zio); +void zio_finalize(Zio *zio); +int zio_set_sebxa_mode(Zio *zio, off_t index_location, off_t index_base, + off_t zio_start_location, off_t zio_end_location); +int zio_open(Zio *zio, const char *file_name, Zio_Code zio_code); +void zio_close(Zio *zio); +int zio_file(Zio *zio); +Zio_Code zio_mode(Zio *zio); +off_t zio_lseek(Zio *zio, off_t offset, int whence); +ssize_t zio_read(Zio *zio, char *buffer, size_t length); + +#ifdef __cplusplus +} +#endif + +#endif /* not ZIO_H */ diff --git a/lib/ebu/ebu/zio.lo b/lib/ebu/ebu/zio.lo new file mode 100644 index 0000000..7789c05 --- /dev/null +++ b/lib/ebu/ebu/zio.lo @@ -0,0 +1,12 @@ +# zio.lo - a libtool object file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +pic_object='.libs/zio.o' + +# Name of the non-PIC object +non_pic_object='zio.o' + diff --git a/lib/ebu/ebzip/.deps/copyfile.Po b/lib/ebu/ebzip/.deps/copyfile.Po new file mode 100644 index 0000000..9953610 --- /dev/null +++ b/lib/ebu/ebzip/.deps/copyfile.Po @@ -0,0 +1,391 @@ +copyfile.o: copyfile.c /usr/include/stdc-predef.h ebzip.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h \ + ../libebutils/ebutils.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: + +../libebutils/ebutils.h: diff --git a/lib/ebu/ebzip/.deps/ebzip.Po b/lib/ebu/ebzip/.deps/ebzip.Po new file mode 100644 index 0000000..28dfa63 --- /dev/null +++ b/lib/ebu/ebzip/.deps/ebzip.Po @@ -0,0 +1,391 @@ +ebzip.o: ebzip.c /usr/include/stdc-predef.h ebzip.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h \ + ../libebutils/ebutils.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: + +../libebutils/ebutils.h: diff --git a/lib/ebu/ebzip/.deps/ebzip1.Po b/lib/ebu/ebzip/.deps/ebzip1.Po new file mode 100644 index 0000000..a44f763 --- /dev/null +++ b/lib/ebu/ebzip/.deps/ebzip1.Po @@ -0,0 +1,388 @@ +ebzip1.o: ebzip1.c /usr/include/stdc-predef.h ../config.h ebzip.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h + +/usr/include/stdc-predef.h: + +../config.h: + +ebzip.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: diff --git a/lib/ebu/ebzip/.deps/sebxa.Po b/lib/ebu/ebzip/.deps/sebxa.Po new file mode 100644 index 0000000..b214a48 --- /dev/null +++ b/lib/ebu/ebzip/.deps/sebxa.Po @@ -0,0 +1,388 @@ +sebxa.o: sebxa.c /usr/include/stdc-predef.h ebzip.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: diff --git a/lib/ebu/ebzip/.deps/speedup.Po b/lib/ebu/ebzip/.deps/speedup.Po new file mode 100644 index 0000000..2956a7a --- /dev/null +++ b/lib/ebu/ebzip/.deps/speedup.Po @@ -0,0 +1,388 @@ +speedup.o: speedup.c /usr/include/stdc-predef.h ebzip.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: diff --git a/lib/ebu/ebzip/.deps/unlinkfile.Po b/lib/ebu/ebzip/.deps/unlinkfile.Po new file mode 100644 index 0000000..cdb0e49 --- /dev/null +++ b/lib/ebu/ebzip/.deps/unlinkfile.Po @@ -0,0 +1,388 @@ +unlinkfile.o: unlinkfile.c /usr/include/stdc-predef.h ebzip.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: diff --git a/lib/ebu/ebzip/.deps/unzipbook.Po b/lib/ebu/ebzip/.deps/unzipbook.Po new file mode 100644 index 0000000..b9629cf --- /dev/null +++ b/lib/ebu/ebzip/.deps/unzipbook.Po @@ -0,0 +1,391 @@ +unzipbook.o: unzipbook.c /usr/include/stdc-predef.h ebzip.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h \ + ../libebutils/ebutils.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: + +../libebutils/ebutils.h: diff --git a/lib/ebu/ebzip/.deps/unzipfile.Po b/lib/ebu/ebzip/.deps/unzipfile.Po new file mode 100644 index 0000000..1cdc500 --- /dev/null +++ b/lib/ebu/ebzip/.deps/unzipfile.Po @@ -0,0 +1,388 @@ +unzipfile.o: unzipfile.c /usr/include/stdc-predef.h ebzip.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: diff --git a/lib/ebu/ebzip/.deps/zipbook.Po b/lib/ebu/ebzip/.deps/zipbook.Po new file mode 100644 index 0000000..4459b5a --- /dev/null +++ b/lib/ebu/ebzip/.deps/zipbook.Po @@ -0,0 +1,391 @@ +zipbook.o: zipbook.c /usr/include/stdc-predef.h ebzip.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h \ + ../libebutils/ebutils.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: + +../libebutils/ebutils.h: diff --git a/lib/ebu/ebzip/.deps/zipfile.Po b/lib/ebu/ebzip/.deps/zipfile.Po new file mode 100644 index 0000000..b85a3ea --- /dev/null +++ b/lib/ebu/ebzip/.deps/zipfile.Po @@ -0,0 +1,388 @@ +zipfile.o: zipfile.c /usr/include/stdc-predef.h ebzip.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: diff --git a/lib/ebu/ebzip/.deps/zipinfobook.Po b/lib/ebu/ebzip/.deps/zipinfobook.Po new file mode 100644 index 0000000..254247f --- /dev/null +++ b/lib/ebu/ebzip/.deps/zipinfobook.Po @@ -0,0 +1,391 @@ +zipinfobook.o: zipinfobook.c /usr/include/stdc-predef.h ebzip.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h \ + ../libebutils/ebutils.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: + +../libebutils/ebutils.h: diff --git a/lib/ebu/ebzip/.deps/zipinfofile.Po b/lib/ebu/ebzip/.deps/zipinfofile.Po new file mode 100644 index 0000000..4203bbb --- /dev/null +++ b/lib/ebu/ebzip/.deps/zipinfofile.Po @@ -0,0 +1,388 @@ +zipinfofile.o: zipinfofile.c /usr/include/stdc-predef.h ebzip.h \ + ../config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h /usr/include/utime.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h /usr/include/zlib.h /usr/include/zconf.h \ + ../ebu/eb.h ../ebu/defs.h ../ebu/sysdefs.h ../ebu/zio.h \ + /usr/include/time.h /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ../ebu/font.h ../ebu/build-post.h ../ebu/defs.h \ + ../libebutils/getopt.h ../libebutils/getumask.h ../libebutils/makedir.h \ + ../libebutils/samefile.h ../libebutils/strlist.h ../libebutils/yesno.h + +/usr/include/stdc-predef.h: + +ebzip.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/bits/signal_ext.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: + +/usr/include/utime.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../ebu/eb.h: + +../ebu/defs.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +../ebu/font.h: + +../ebu/build-post.h: + +../ebu/defs.h: + +../libebutils/getopt.h: + +../libebutils/getumask.h: + +../libebutils/makedir.h: + +../libebutils/samefile.h: + +../libebutils/strlist.h: + +../libebutils/yesno.h: diff --git a/lib/ebu/ebzip/.libs/ebuzip b/lib/ebu/ebzip/.libs/ebuzip new file mode 100644 index 0000000000000000000000000000000000000000..d0a938fbeafb3d0131ab5403072c8625f28556af GIT binary patch literal 308016 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�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 copy %s <==\n"), in_file_name); + fprintf(stderr, _("output to %s\n"), out_file_name); + fflush(stderr); + } + + /* + * Check for the input file. + */ + if (stat(in_file_name, &in_status) != 0 || !S_ISREG(in_status.st_mode)) { + fprintf(stderr, _("%s: no such file: %s\n"), invoked_name, + in_file_name); + goto failed; + } + + /* + * Do nothing if the `in_file_name' and `out_file_name' are the same. + */ + if (is_same_file(out_file_name, in_file_name)) { + if (!ebzip_quiet_flag) { + fprintf(stderr, + _("the input and output files are the same, skipped.\n\n")); + fflush(stderr); + } + return 0; + } + + /* + * When test mode, return immediately. + */ + if (ebzip_test_flag) { +#if defined(PRINTF_LL_MODIFIER) + fprintf(stderr, _("completed (%llu / %llu bytes)\n"), + (unsigned long long) in_status.st_size, + (unsigned long long) in_status.st_size); +#elif defined(PRINTF_I64_MODIFIER) + fprintf(stderr, _("completed (%I64u / %I64u bytes)\n"), + (unsigned __int64) in_status.st_size, + (unsigned __int64) in_status.st_size); +#else + fprintf(stderr, _("completed (%lu / %lu bytes)\n"), + (unsigned long) in_status.st_size, + (unsigned long) in_status.st_size); +#endif + fputc('\n', stderr); + fflush(stderr); + return 0; + } + + /* + * If the file to be output already exists, confirm and unlink it. + */ + if (stat(out_file_name, &out_status) == 0 + && S_ISREG(out_status.st_mode)) { + if (ebzip_overwrite_mode == EBZIP_OVERWRITE_NO) { + if (!ebzip_quiet_flag) { + fputs(_("already exists, skip the file\n\n"), stderr); + fflush(stderr); + } + return 0; + } + if (ebzip_overwrite_mode == EBZIP_OVERWRITE_CONFIRM) { + int y_or_n; + + fprintf(stderr, _("\nthe file already exists: %s\n"), + out_file_name); + y_or_n = query_y_or_n(_("do you wish to overwrite (y or n)? ")); + fputc('\n', stderr); + fflush(stderr); + if (!y_or_n) + return 0; + } + if (unlink(out_file_name) < 0) { + fprintf(stderr, _("%s: failed to unlink the file: %s\n"), + invoked_name, out_file_name); + goto failed; + } + } + + /* + * Open files. + */ + in_file = open(in_file_name, O_RDONLY | O_BINARY); + if (in_file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), in_file_name); + goto failed; + } + + trap_file_name = out_file_name; +#ifdef SIGHUP + signal(SIGHUP, trap); +#endif + signal(SIGINT, trap); +#ifdef SIGQUIT + signal(SIGQUIT, trap); +#endif +#ifdef SIGTERM + signal(SIGTERM, trap); +#endif + +#ifdef O_CREAT + out_file = open(out_file_name, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, + 0666 ^ get_umask()); +#else + out_file = creat(out_file_name, 0666 ^ get_umask()); +#endif + if (out_file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + trap_file = out_file; + + /* + * Read data from the input file, compress the data, and then + * write them to the output file. + */ + total_length = 0; + total_slices = (in_status.st_size + EB_SIZE_PAGE - 1) / EB_SIZE_PAGE; + progress_interval = EBZIP_PROGRESS_INTERVAL_FACTOR; + for (i = 0; i < total_slices; i++) { + /* + * Read data from `in_file', and write them to `out_file'. + */ + in_length = read(in_file, buffer, EB_SIZE_PAGE); + if (in_length < 0) { + fprintf(stderr, _("%s: failed to read from the file, %s: %s\n"), + invoked_name, strerror(errno), in_file_name); + goto failed; + } else if (in_length == 0) { + fprintf(stderr, _("%s: unexpected EOF: %s\n"), + invoked_name, in_file_name); + goto failed; + } else if (in_length != EB_SIZE_PAGE + && total_length + in_length != in_status.st_size) { + fprintf(stderr, _("%s: unexpected EOF: %s\n"), + invoked_name, in_file_name); + goto failed; + } + + /* + * Write decoded data to `out_file'. + */ + if (write(out_file, buffer, in_length) != in_length) { + fprintf(stderr, _("%s: failed to write to the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + total_length += in_length; + + /* + * Output status information unless `quiet' mode. + */ + if (!ebzip_quiet_flag && (i + 1) % progress_interval == 0) { +#if defined(PRINTF_LL_MODIFIER) + fprintf(stderr, _("%4.1f%% done (%llu / %llu bytes)\n"), + (double) (i + 1) * 100.0 / (double) total_slices, + (unsigned long long) total_length, + (unsigned long long) in_status.st_size); +#elif defined(PRINTF_I64_MODIFIER) + fprintf(stderr, _("%4.1f%% done (%I64u / %I64u bytes)\n"), + (double) (i + 1) * 100.0 / (double) total_slices, + (unsigned __int64) total_length, + (unsigned __int64) in_status.st_size); +#else + fprintf(stderr, _("%4.1f%% done (%lu / %lu bytes)\n"), + (double) (i + 1) * 100.0 / (double) total_slices, + (unsigned long) total_length, + (unsigned long) in_status.st_size); +#endif + fflush(stderr); + } + } + + /* + * Output the result unless quiet mode. + */ + if (!ebzip_quiet_flag) { +#if defined(PRINTF_LL_MODIFIER) + fprintf(stderr, _("completed (%llu / %llu bytes)\n"), + (unsigned long long) total_length, + (unsigned long long) in_status.st_size); +#elif defined(PRINTF_I64_MODIFIER) + fprintf(stderr, _("completed (%I64u / %I64u bytes)\n"), + (unsigned __int64) total_length, + (unsigned __int64) in_status.st_size); +#else + fprintf(stderr, _("completed (%lu / %lu bytes)\n"), + (unsigned long) total_length, + (unsigned long) in_status.st_size); +#endif + fputc('\n', stderr); + fflush(stderr); + } + + /* + * Close files. + */ + close(in_file); + in_file = -1; + + close(out_file); + out_file = -1; + trap_file = -1; + trap_file_name = NULL; +#ifdef SIGHUP + signal(SIGHUP, SIG_DFL); +#endif + signal(SIGINT, SIG_DFL); +#ifdef SIGQUIT + signal(SIGQUIT, SIG_DFL); +#endif +#ifdef SIGTERM + signal(SIGTERM, SIG_DFL); +#endif + + /* + * Delete an original file unless the keep flag is set. + */ + if (!ebzip_test_flag && !ebzip_keep_flag) + unlink_files_add(in_file_name); + + /* + * Set owner, group, permission, atime and mtime of `out_file'. + * We ignore return values of `chown', `chmod' and `utime'. + */ + utim.actime = in_status.st_atime; + utim.modtime = in_status.st_mtime; + utime(out_file_name, &utim); + + return 0; + + /* + * An error occurs... + */ + failed: + if (0 <= in_file) + close(in_file); + if (0 <= out_file) + close(out_file); + + fputc('\n', stderr); + fflush(stderr); + + return -1; +} + + +/* + * Copy all files in a directory. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_copy_files_in_directory(const char *out_directory_name, + const char *in_directory_name) +{ + struct dirent *entry; + DIR *dir = NULL; + struct stat in_status; + char in_path_name[PATH_MAX + 1]; + char out_path_name[PATH_MAX + 1]; + + /* + * Check for the input directory. + */ + if (stat(in_directory_name, &in_status) != 0 + || !S_ISDIR(in_status.st_mode)) + return 0; + + + /* + * Make the output directory if missing. + */ + if (!ebzip_test_flag + && make_missing_directory(out_directory_name, 0777 ^ get_umask()) + < 0) { + fprintf(stderr, _("%s: failed to create a directory, %s: %s\n"), + invoked_name, strerror(errno), out_directory_name); + goto failed; + } + + /* + * Open the directory `path'. + */ + dir = opendir(in_directory_name); + if (dir == NULL) { + fprintf(stderr, _("%s: failed to open the directory, %s: %s\n"), + invoked_name, strerror(errno), in_directory_name); + goto failed; + } + + for (;;) { + /* + * Read the directory entry. + */ + entry = readdir(dir); + if (entry == NULL) + break; + + eb_compose_path_name(in_directory_name, entry->d_name, in_path_name); + eb_compose_path_name(out_directory_name, entry->d_name, out_path_name); + + if (stat(in_path_name, &in_status) != 0 + || !S_ISREG(in_status.st_mode)) + continue; + + ebzip_copy_file(out_path_name, in_path_name); + } + + closedir(dir); + return 0; + + /* + * An error occurs... + */ + failed: + if (dir != NULL) + closedir(dir); + return -1; +} + + +/* + * Signal handler. + */ +static void +trap(int signal_number) +{ + if (0 <= trap_file) + close(trap_file); + if (trap_file_name != NULL) + unlink(trap_file_name); + + exit(1); +} diff --git a/lib/ebu/ebzip/ebuzip b/lib/ebu/ebzip/ebuzip new file mode 100644 index 0000000..dfb7899 --- /dev/null +++ b/lib/ebu/ebzip/ebuzip @@ -0,0 +1,210 @@ +#! /bin/bash + +# ebuzip - temporary wrapper script for .libs/ebuzip +# Generated by libtool (GNU libtool) 2.4.6 +# +# The ebuzip program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command="" + +# This environment variable determines our operation mode. +if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then + # install mode needs the following variables: + generated_by_libtool_version='2.4.6' + notinst_deplibs=' ../ebu/libebu.la' +else + # When we are sourced in execute mode, $file and $ECHO are already set. + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + file="$0" + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + ECHO="printf %s\\n" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string --lt- +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's ../libtool value, followed by no. +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=$0 + shift + for lt_opt + do + case "$lt_opt" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` + test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. + lt_dump_F=`$ECHO "X$lt_script_arg0" | /usr/bin/sed -e 's/^X//' -e 's%^.*/%%'` + cat "$lt_dump_D/$lt_dump_F" + exit 0 + ;; + --lt-*) + $ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n "$lt_option_debug"; then + echo "ebuzip:ebuzip:$LINENO: libtool wrapper (GNU libtool) 2.4.6" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + $ECHO "ebuzip:ebuzip:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" + lt_dump_args_N=`expr $lt_dump_args_N + 1` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ + + if test -n "$lt_option_debug"; then + $ECHO "ebuzip:ebuzip:$LINENO: newargv[0]: $progdir/$program" 1>&2 + func_lt_dump_args ${1+"$@"} 1>&2 + fi + exec "$progdir/$program" ${1+"$@"} + + $ECHO "$0: cannot exec $program $*" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from $@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case " $* " in + *\ --lt-*) + for lt_wr_arg + do + case $lt_wr_arg in + --lt-*) ;; + *) set x "$@" "$lt_wr_arg"; shift;; + esac + shift + done ;; + esac + func_exec_program_core ${1+"$@"} +} + + # Parse options + func_parse_lt_options "$0" ${1+"$@"} + + # Find the directory that this script lives in. + thisdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + test "x$thisdir" = "x$file" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'` + while test -n "$file"; do + destdir=`$ECHO "$file" | /usr/bin/sed 's%/[^/]*$%%'` + + # If there was a directory component, then change thisdir. + if test "x$destdir" != "x$file"; then + case "$destdir" in + [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; + *) thisdir="$thisdir/$destdir" ;; + esac + fi + + file=`$ECHO "$file" | /usr/bin/sed 's%^.*/%%'` + file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no + if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then + # special case for '.' + if test "$thisdir" = "."; then + thisdir=`pwd` + fi + # remove .libs from thisdir + case "$thisdir" in + *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;; + .libs ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=`cd "$thisdir" && pwd` + test -n "$absdir" && thisdir="$absdir" + + program='ebuzip' + progdir="$thisdir/.libs" + + + if test -f "$progdir/$program"; then + # Add our own library path to LD_LIBRARY_PATH + LD_LIBRARY_PATH="/mnt/d/files/projects/ebclient/lib/ebu/ebu/.libs:$LD_LIBRARY_PATH" + + # Some systems cannot cope with colon-terminated LD_LIBRARY_PATH + # The second colon is a workaround for a bug in BeOS R4 sed + LD_LIBRARY_PATH=`$ECHO "$LD_LIBRARY_PATH" | /usr/bin/sed 's/::*$//'` + + export LD_LIBRARY_PATH + + if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then + # Run the actual program with our arguments. + func_exec_program ${1+"$@"} + fi + else + # The program doesn't exist. + $ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 + $ECHO "This script is just a wrapper for $program." 1>&2 + $ECHO "See the libtool documentation for more information." 1>&2 + exit 1 + fi +fi diff --git a/lib/ebu/ebzip/ebzip.c b/lib/ebu/ebzip/ebzip.c new file mode 100644 index 0000000..4ee2358 --- /dev/null +++ b/lib/ebu/ebzip/ebzip.c @@ -0,0 +1,615 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" +#include "ebutils.h" + +#if defined(DOS_FILE_PATH) && defined(HAVE_MBSTRING_H) +/* a path may contain double-byte chars in SJIS. */ +#include +#define strchr _mbschr +#define strrchr _mbsrchr +#endif + +/* + * Program name and version. + */ +const char *program_name = "ebzip"; +const char *program_version = VERSION; +const char *invoked_name; + +/* + * Command line options. + */ +static const char *short_options = "fhikl:no:qs:S:tT:uvw:zr:"; +static struct option long_options[] = { + {"force-overwrite", no_argument, NULL, 'f'}, + {"help", no_argument, NULL, 'h'}, + {"information", no_argument, NULL, 'i'}, + {"keep", no_argument, NULL, 'k'}, + {"level", required_argument, NULL, 'l'}, + {"no-overwrite", no_argument, NULL, 'n'}, + {"output-directory", required_argument, NULL, 'o'}, + {"quiet", no_argument, NULL, 'q'}, + {"silent", no_argument, NULL, 'q'}, + {"skip-content", required_argument, NULL, 's'}, + {"subbook", required_argument, NULL, 'S'}, + {"test", no_argument, NULL, 't'}, + {"uncompress", no_argument, NULL, 'u'}, + {"version", no_argument, NULL, 'v'}, + {"overwrite", required_argument, NULL, 'w'}, + {"compress", no_argument, NULL, 'z'}, + {"slice-number", required_argument, NULL, 'r'}, + {NULL, 0, NULL, 0} +}; + +/* + * Zip level. + */ +int ebzip_level = EBZIP_DEFAULT_LEVEL; + +/* + * Keep mode flag. + */ +int ebzip_keep_flag = EBZIP_DEFAULT_KEEP; + +/* + * Quiet mode flag. + */ +int ebzip_quiet_flag = EBZIP_DEFAULT_QUIET; + +/* + * Test mode flag. + */ +int ebzip_test_flag = EBZIP_DEFAULT_TEST; + +/* + * Overwrite mode. + */ +int ebzip_overwrite_mode = EBZIP_DEFAULT_OVERWRITE; + +/* + * Target contents. + */ +int ebzip_skip_flag_font = EBZIP_DEFAULT_SKIP_FONT; +int ebzip_skip_flag_graphic = EBZIP_DEFAULT_SKIP_GRAPHIC; +int ebzip_skip_flag_movie = EBZIP_DEFAULT_SKIP_MOVIE; +int ebzip_skip_flag_sound = EBZIP_DEFAULT_SKIP_SOUND; + +/* + * Number of slices to load at a time. + */ +int ebzip_slice_number = EBZIP_DEFAULT_SLICE_NUMBER; + +/* + * List of files to be unlinked. + */ +String_List unlinking_files; + +/* + * Operation modes. + */ +#define EBZIP_ACTION_ZIP 0 +#define EBZIP_ACTION_UNZIP 1 +#define EBZIP_ACTION_INFO 2 + +static int action_mode = EBZIP_ACTION_ZIP; + +/* + * A list of subbook names to be compressed/uncompressed. + */ +static char +subbook_name_list[EB_MAX_SUBBOOKS][EB_MAX_DIRECTORY_NAME_LENGTH + 1]; +static int subbook_name_count = 0; + +/* + * Unexported functions. + */ +static int parse_zip_level(const char *argument, int *zip_level); +static int parse_slice_number(const char *argument, int *slice_number); +static int parse_skip_content_argument(const char *argument); +static void output_help(void); + + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + char out_top_path[PATH_MAX + 1]; + char book_path[PATH_MAX + 1]; + int ch; + char *last_slash, *last_backslash; + char *invoked_base_name; + + invoked_name = argv[0]; + strcpy(out_top_path, EBZIP_DEFAULT_OUTPUT_DIRECTORY); + + /* + * Initialize locale data. + */ +#ifdef ENABLE_NLS +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain(TEXT_DOMAIN_NAME, LOCALEDIR); + textdomain(TEXT_DOMAIN_NAME); +#endif + + /* + * Determine the default action. + */ + last_slash = strrchr(argv[0], '/'); +#ifndef DOS_FILE_PATH + last_backslash = NULL; +#else + last_backslash = strrchr(argv[0], '\\'); +#endif + + if (last_slash == NULL && last_backslash == NULL) + invoked_base_name = argv[0]; + else if (last_slash == NULL) + invoked_base_name = last_backslash + 1; + else if (last_backslash == NULL) + invoked_base_name = last_slash + 1; + else if (last_slash < last_backslash) + invoked_base_name = last_backslash + 1; + else + invoked_base_name = last_slash + 1; + +#ifndef EXEEXT_EXE + if (strcmp(invoked_base_name, "ebunzip") == 0 + || strcmp(invoked_base_name, "ebuunzip") == 0) + action_mode = EBZIP_ACTION_UNZIP; + else if (strcmp(invoked_base_name, "ebzipinfo") == 0 + || strcmp(invoked_base_name, "ebuzipinfo") == 0) + action_mode = EBZIP_ACTION_INFO; +#else /* EXEEXT_EXE */ + if (strcasecmp(invoked_base_name, "ebunzip") == 0 + || strcasecmp(invoked_base_name, "ebunzip.exe") == 0 + || strcasecmp(invoked_base_name, "ebuunzip") == 0 + || strcasecmp(invoked_base_name, "ebuunzip.exe") == 0) { + action_mode = EBZIP_ACTION_UNZIP; + } else if (strcasecmp(invoked_base_name, "ebzipinfo") == 0 + || strcasecmp(invoked_base_name, "ebzipinfo.exe") == 0 + || strcasecmp(invoked_base_name, "ebuzipinfo") == 0 + || strcasecmp(invoked_base_name, "ebuzipinfo.exe") == 0) { + action_mode = EBZIP_ACTION_INFO; + } +#endif /* EXEEXT_EXE */ + + /* + * Set overwrite mode. + */ + if (!isatty(0)) + ebzip_overwrite_mode = EBZIP_OVERWRITE_NO; + + /* + * Initialize list of files to be unlinked. + */ + + string_list_initialize(&unlinking_files); + + /* + * Initialize EB Library. + */ + error_code = eb_initialize_library(); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + goto die; + } + + /* + * Parse command line options. + */ + for (;;) { + ch = getopt_long(argc, argv, short_options, long_options, NULL); + if (ch == -1) + break; + switch (ch) { + case 'f': + /* + * Obsolete option `-f'. Set `force' to the overwrite flag. + */ + ebzip_overwrite_mode = EBZIP_OVERWRITE_FORCE; + break; + + case 'h': + /* + * Option `-h'. Display help message, then exit. + */ + output_help(); + exit(0); + + case 'i': + /* + * Option `-i'. Information mode. + */ + action_mode = EBZIP_ACTION_INFO; + break; + + case 'k': + /* + * Option `-k'. Keep (don't delete) input files. + */ + ebzip_keep_flag = 1; + break; + + case 'l': + /* + * Option `-l'. Specify compression level. + */ + if (parse_zip_level(optarg, &ebzip_level) < 0) + exit(1); + break; + + case 'n': + /* + * Obsolete option `-n'. Set `no' to the overwrite flag. + */ + ebzip_overwrite_mode = EBZIP_OVERWRITE_NO; + break; + + case 'o': + /* + * Option `-o'. Output files under DIRECOTRY. + * The length of the file name + * "/subdir/subsubdir/file.ebz;1" + * must not exceed PATH_MAX. + */ + if (PATH_MAX < strlen(optarg)) { + fprintf(stderr, _("%s: too long output directory path\n"), + invoked_name); + exit(1); + } + strcpy(out_top_path, optarg); + canonicalize_path(out_top_path); + if (PATH_MAX < strlen(out_top_path) + 1 + + EB_MAX_DIRECTORY_NAME_LENGTH + 1 + + EB_MAX_DIRECTORY_NAME_LENGTH + 1 + + EB_MAX_FILE_NAME_LENGTH) { + fprintf(stderr, _("%s: too long output directory path\n"), + invoked_name); + goto die; + } + break; + + case 'q': + /* + * Option `-q'. Set quiet flag. + */ + ebzip_quiet_flag = 1; + break; + + case 's': + /* + * Option `-s'. Specify content type to be skipped. + */ + if (parse_skip_content_argument(optarg) < 0) + exit(1); + break; + + case 'S': + /* + * Option `-S'. Specify target subbooks. + */ + if (parse_subbook_name_argument(invoked_name, optarg, + subbook_name_list, &subbook_name_count) < 0) + exit(1); + break; + + case 't': + /* + * Option `-t'. Set test mode. + */ + ebzip_test_flag = 1; + break; + + case 'u': + /* + * Option `-u'. Decompression mode. + */ + action_mode = EBZIP_ACTION_UNZIP; + break; + + case 'v': + /* + * Option `-v'. Display version number, then exit. + */ + output_version(program_name, program_version); + exit(0); + + case 'w': + /* + * Option `-w'. Set overwrite mode. + */ + if (strcasecmp(optarg, "confirm") == 0) + ebzip_overwrite_mode = EBZIP_OVERWRITE_CONFIRM; + else if (strcasecmp(optarg, "force") == 0) + ebzip_overwrite_mode = EBZIP_OVERWRITE_FORCE; + else if (strcasecmp(optarg, "no") == 0) + ebzip_overwrite_mode = EBZIP_OVERWRITE_NO; + else { + fprintf(stderr, _("%s: invalid overwrite mode: %s\n"), + invoked_name, optarg); + output_try_help(invoked_name); + goto die; + } + break; + + case 'z': + /* + * Option `-z'. Compression mode. + */ + action_mode = EBZIP_ACTION_ZIP; + break; + + case 'r': + /* + * Option `-r'. Specify a number of slices to load at a time. + */ + if (parse_slice_number(optarg, &ebzip_slice_number) < 0) + exit(1); + break; + + default: + output_try_help(invoked_name); + goto die; + } + } + + /* + * Check the number of rest arguments. + */ + if (1 < argc - optind) { + fprintf(stderr, _("%s: too many arguments\n"), invoked_name); + output_try_help(invoked_name); + goto die; + } + + /* + * Set a book path. + */ + if (argc == optind) + strcpy(book_path, EBZIP_DEFAULT_BOOK_DIRECTORY); + else + strcpy(book_path, argv[optind]); + + if (is_ebnet_url(book_path)) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(EB_ERR_EBNET_UNSUPPORTED)); + goto die; + } + canonicalize_path(book_path); + + /* + * Compress the book. + */ + switch (action_mode) { + case EBZIP_ACTION_ZIP: + if (ebzip_zip_book(out_top_path, book_path, subbook_name_list, + subbook_name_count) < 0) { + goto die; + } + break; + case EBZIP_ACTION_UNZIP: + if (ebzip_unzip_book(out_top_path, book_path, subbook_name_list, + subbook_name_count) < 0) { + goto die; + } + break; + case EBZIP_ACTION_INFO: + if (ebzip_zipinfo_book(book_path, subbook_name_list, + subbook_name_count) < 0) { + goto die; + } + break; + } + + eb_finalize_library(); + unlink_files(); + string_list_finalize(&unlinking_files); + + return 0; + + /* + * A critical error occurs... + */ + die: + eb_finalize_library(); + exit(1); +} + + +/* + * Parse an argument to option `--level (-l)'. + * If the argument is valid form, 0 is returned. + * Otherwise -1 is returned. + */ +static int +parse_zip_level(const char *argument, int *zip_level) +{ + char *end_p; + int level; + + level = (int)strtol(argument, &end_p, 10); + if (!ASCII_ISDIGIT(*argument) || *end_p != '\0' + || level < 0 || ZIO_MAX_EBZIP_LEVEL < level) { + fprintf(stderr, _("%s: invalid compression level `%s'\n"), + invoked_name, argument); + fflush(stderr); + return -1; + } + + *zip_level = level; + + return 0; +} + + +/* + * Parse an argument to option `--slice-number (-r)'. + * If the argument is valid form, 0 is returned. + * Otherwise -1 is returned. + */ +static int +parse_slice_number(const char *argument, int *slice_number) +{ + char *end_p; + int level; + + level = (int)strtol(argument, &end_p, 10); + if (!ASCII_ISDIGIT(*argument) || *end_p != '\0' + || level < 1 || EBZIP_MAX_SLICE_NUMBER < level) { + fprintf(stderr, _("%s: invalid slice number `%s'\n"), + invoked_name, argument); + fflush(stderr); + return -1; + } + + *slice_number = level; + + return 0; +} + + +/* + * Parse an argument to option `--skip-content (-S)'. + * If the argument is valid form, 0 is returned. + * Otherwise -1 is returned. + */ +static int +parse_skip_content_argument(const char *argument) +{ + const char *argument_p = argument; + char name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + char *name_p; + int i; + + while (*argument_p != '\0') { + /* + * Take a next element in the argument. + */ + i = 0; + name_p = name; + while (*argument_p != ',' && *argument_p != '\0' + && i < EB_MAX_DIRECTORY_NAME_LENGTH) { + *name_p = ASCII_TOLOWER(*argument_p); + i++; + name_p++; + argument_p++; + } + *name_p = '\0'; + if (*argument_p == ',') + argument_p++; + else if (*argument_p != '\0') { + fprintf(stderr, _("%s: invalid content name `%s'\n"), + invoked_name, name); + fflush(stderr); + return -1; + } + + /* + * If the font name is not found in `font_list', it is added to + * the list. + */ + if (strcasecmp(name, "font") == 0) { + ebzip_skip_flag_font = 1; + } else if (strcasecmp(name, "sound") == 0) { + ebzip_skip_flag_sound = 1; + } else if (strcasecmp(name, "graphic") == 0) { + ebzip_skip_flag_graphic = 1; + } else if (strcasecmp(name, "movie") == 0) { + ebzip_skip_flag_movie = 1; + } else { + fprintf(stderr, _("%s: invalid content name `%s'\n"), + invoked_name, name); + fflush(stderr); + return -1; + } + } + + return 0; +} + + +/* + * Output help message to stdandard out. + */ +static void +output_help(void) +{ + printf(_("Usage: %s [option...] [book-directory]\n"), program_name); + printf(_("Options:\n")); + printf(_(" -f --force-overwrite set overwrite mode to `force'\n")); + printf(_(" (same as `--overwrite force')\n")); + printf(_(" -h --help display this help, then exit\n")); + printf(_(" -i --information list information of compressed files\n")); + printf(_(" -k --keep don't delete original files\n")); + printf(_(" -l INTEGER --level INTEGER\n")); + printf(_(" compression level; 0..%d\n"), + ZIO_MAX_EBZIP_LEVEL); + printf(_(" (default: %d)\n"), + EBZIP_DEFAULT_LEVEL); + printf(_(" -r INTEGER --slice-number INTEGER\n")); + printf(_(" set a number of slices to load at a time; 1..%d\n"), + EBZIP_MAX_SLICE_NUMBER); + printf(_(" (default: %d)\n"), + EBZIP_DEFAULT_SLICE_NUMBER); + printf(_(" -n --no-overwrite set overwrite mode to `no'\n")); + printf(_(" (same as `--overwrite no')\n")); + printf(_(" -o DIRECTORY --output-directory DIRECTORY\n")); + printf(_(" ouput files under DIRECTORY\n")); + printf(_(" (default: %s)\n"), + EBZIP_DEFAULT_OUTPUT_DIRECTORY); + printf(_(" -q --quiet --silence suppress all warnings\n")); + printf(_(" -s TYPE[,TYPE] --skip-content TYPE[,TYPE...]\n")); + printf(_(" skip content; font, graphic, sound or movie\n")); + printf(_(" (default: none is skipped)\n")); + printf(_(" -S SUBBOOK[,SUBBOOK...] --subbook SUBBOOK[,SUBBOOK...]\n")); + printf(_(" target subbook\n")); + printf(_(" (default: all subbooks)\n")); + printf(_(" -t --test only check for input files\n")); + printf(_(" -u --uncompress uncompress files\n")); + printf(_(" -v --version display version number, then exit\n")); + printf(_(" -w MODE --overwrite MODE set overwrite mode of output files;\n")); + printf(_(" confirm, force or no\n")); + printf(_(" (default: confirm)\n")); + printf(_(" -z --compress compress files\n")); + printf(_("\nArgument:\n")); + printf(_(" book-directory top directory of a CD-ROM book\n")); + printf(_(" (default: %s)\n"), + EBZIP_DEFAULT_BOOK_DIRECTORY); + + printf(_("\nDefault action:\n")); + printf(_(" When invoked as `ebuunzip', uncompression is the default action.\n")); + printf(_(" When invoked as `ebuzipinfo', listing information is the default action.\n")); + printf(_(" Otherwise, compression is the default action.\n")); + printf(_("\nReport bugs to %s.\n"), MAILING_ADDRESS); + fflush(stdout); +} diff --git a/lib/ebu/ebzip/ebzip.h b/lib/ebu/ebzip/ebzip.h new file mode 100644 index 0000000..b1a0f97 --- /dev/null +++ b/lib/ebu/ebzip/ebzip.h @@ -0,0 +1,277 @@ +/* -*- C -*- + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EBZIP_H +#define EBZIP_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef ENABLE_NLS +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#endif + +#ifdef ENABLE_LIBDEFLATE +#include +#else +#include +#endif + +#ifndef HAVE_STRCASECMP +int strcasecmp(const char *, const char *); +int strncasecmp(const char *, const char *, size_t); +#endif + +/* + * O_BINARY flag for open(). + */ +#ifndef O_BINARY +#define O_BINARY 0 +#endif + +/* + * stat macros. + */ +#ifndef S_ISREG +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif +#ifndef S_ISDIR +#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif + +/* + * The maximum length of path name. + */ +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else /* not MAXPATHLEN */ +#define PATH_MAX 1024 +#endif /* not MAXPATHLEN */ +#endif /* not PATH_MAX */ + +#include "ebu/eb.h" +#include "ebu/error.h" +#include "ebu/font.h" +#include "ebu/build-post.h" + +#include "getopt.h" +#include "getumask.h" +#include "makedir.h" +#include "samefile.h" +#include "strlist.h" +#include "yesno.h" + +/* + * Tricks for gettext. + */ +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define _(string) (string) +#define N_(string) (string) +#endif + +/* + * Character type tests and conversions. + */ +#define ASCII_ISDIGIT(c) ('0' <= (c) && (c) <= '9') +#define ASCII_ISUPPER(c) ('A' <= (c) && (c) <= 'Z') +#define ASCII_ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define ASCII_ISALPHA(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c)) +#define ASCII_ISALNUM(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c) || ASCII_ISDIGIT(c)) +#define ASCII_ISXDIGIT(c) \ + (ASCII_ISDIGIT(c) || ('A' <= (c) && (c) <= 'F') || ('a' <= (c) && (c) <= 'f')) +#define ASCII_TOUPPER(c) (('a' <= (c) && (c) <= 'z') ? (c) - 0x20 : (c)) +#define ASCII_TOLOWER(c) (('A' <= (c) && (c) <= 'Z') ? (c) + 0x20 : (c)) + +/* + * File name suffixes. + */ +#define EBZIP_SUFFIX_NONE "" +#define EBZIP_SUFFIX_EBZ ".ebz" +#define EBZIP_SUFFIX_ORG ".org" + +/* + * Defaults input and output directories. + */ +#define EBZIP_DEFAULT_BOOK_DIRECTORY "." +#define EBZIP_DEFAULT_OUTPUT_DIRECTORY "." + +/* + * Information output interval. + */ +#define EBZIP_PROGRESS_INTERVAL_FACTOR 1024 + +/* + * Overwrite modes. + */ +#define EBZIP_OVERWRITE_CONFIRM 0 +#define EBZIP_OVERWRITE_FORCE 1 +#define EBZIP_OVERWRITE_NO 2 + +/* + * Defaults. + */ +#define EBZIP_DEFAULT_LEVEL 0 +#define EBZIP_DEFAULT_KEEP 0 +#define EBZIP_DEFAULT_QUIET 0 +#define EBZIP_DEFAULT_TEST 0 +#define EBZIP_DEFAULT_OVERWRITE EBZIP_OVERWRITE_CONFIRM + +#define EBZIP_DEFAULT_SKIP_FONT 0 +#define EBZIP_DEFAULT_SKIP_GRAPHIC 0 +#define EBZIP_DEFAULT_SKIP_MOVIE 0 +#define EBZIP_DEFAULT_SKIP_SOUND 0 +#define EBZIP_DEFAULT_SLICE_NUMBER 64 +#define EBZIP_MAX_SLICE_NUMBER 10000 + +/* + * Region in HONMON or START file which ebzip doesn't compress. + */ +#define EBZIP_MAX_SPEEDUP_REGION_COUNT 3 + +typedef struct { + int start_page; + int end_page; +} Zip_Speedup_Region; + +typedef struct { + int region_count; + Zip_Speedup_Region regions[EBZIP_MAX_SPEEDUP_REGION_COUNT]; +} Zip_Speedup; + + +/* + * Global variables. + */ +extern const char *program_name; +extern const char *program_version; +extern const char *invoked_name; + +extern int ebzip_level; +extern int ebzip_keep_flag; +extern int ebzip_quiet_flag; +extern int ebzip_test_flag; +extern int ebzip_overwrite_mode; + +extern int ebzip_skip_flag_font; +extern int ebzip_skip_flag_graphic; +extern int ebzip_skip_flag_movie; +extern int ebzip_skip_flag_sound; + +extern int ebzip_slice_number; + +extern String_List unlinking_files; + +/* + * Function declarations. + */ +/* copyfile.c */ +int ebzip_copy_file(const char *out_file_name, const char *in_file_name); +int ebzip_copy_files_in_directory(const char *out_directory_name, + const char *in_directory_name); + +/* ebzip1.c */ +int ebzip1_slice(char *out_buffer, size_t *out_byte_length, char *in_buffer, + size_t in_byte_length); + +/* sebxa.c */ +int rewrite_sebxa_start(const char *file_name, int index_page); +int get_sebxa_indexes(const char *file_name, int index_page, + off_t *index_location, off_t *index_base, off_t *zio_start_location, + off_t *zio_end_location); + +/* unzipbook.c */ +int ebzip_unzip_book(const char *out_top_path, const char *book_path, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count); + +/* unzipfile.c */ +int ebzip_unzip_file(const char *out_file_name, const char *in_file_name, + Zio_Code in_zio_code); +int ebzip_unzip_start_file(const char *out_file_name, + const char *in_file_name, Zio_Code in_zio_code, int index_page); + +/* zipbook.c */ +int ebzip_zip_book(const char *out_top_path, const char *book_path, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count); + +/* zipfile.c */ +int ebzip_zip_file(const char *out_file_name, const char *in_file_name, + Zio_Code in_zio_code, Zip_Speedup *speedup); +int ebzip_zip_start_file(const char *out_file_name, const char *in_file_name, + Zio_Code in_zio_code, int index_page, Zip_Speedup *speedup); + +/* zipinfobook.c */ +int ebzip_zipinfo_book(const char *book_path, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count); + +/* zipinfofile.c */ +int ebzip_zipinfo_file(const char *in_file_name, Zio_Code in_zio_code); +int ebzip_zipinfo_start_file(const char *in_file_name, Zio_Code in_zio_code, + int index_page); + +/* sppedup.c */ +void ebzip_initialize_zip_speedup(Zip_Speedup *speedup); +void ebzip_finalize_zip_speedup(Zip_Speedup *speedup); +int ebzip_set_zip_speedup(Zip_Speedup *speedup, const char *file_name, + Zio_Code zio_code, int index_page); +int ebzip_is_speedup_slice(Zip_Speedup *speedup, int slice, int zip_level); + +/* unlinkfile.c */ +int unlink_files_add(const char *file_name); +void unlink_files(); + +#endif /* EBZIP_H */ diff --git a/lib/ebu/ebzip/ebzip1.c b/lib/ebu/ebzip/ebzip1.c new file mode 100644 index 0000000..50b2125 --- /dev/null +++ b/lib/ebu/ebzip/ebzip1.c @@ -0,0 +1,93 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "ebzip.h" + +#include +#include + +#include "ebu/eb.h" + +/* + * Compress a slice with the ebzip compression format. + * + * If it succeeds, 0 is returned. Otherwise, -1 is returned. + */ +int +ebzip1_slice(char *out_buffer, size_t *out_byte_length, char *in_buffer, + size_t in_byte_length) +{ +#ifdef ENABLE_LIBDEFLATE + struct libdeflate_compressor *compressor; + size_t result; + + if (!(compressor = libdeflate_alloc_compressor(12))) { + return -1; + } + + result = libdeflate_zlib_compress + (compressor, in_buffer, in_byte_length, out_buffer, in_byte_length); + + *out_byte_length = result ? result : in_byte_length; + libdeflate_free_compressor(compressor); + return 0; +#else + z_stream stream; + + stream.zalloc = Z_NULL; + stream.zfree = Z_NULL; + stream.opaque = Z_NULL; + + if (deflateInit(&stream, ebzip_level > 3 + ? Z_BEST_COMPRESSION : Z_DEFAULT_COMPRESSION) != Z_OK) + return -1; + + stream.next_in = (Bytef *) in_buffer; + stream.avail_in = in_byte_length; + stream.next_out = (Bytef *) out_buffer; + stream.avail_out = in_byte_length; + + if (deflate(&stream, Z_FINISH) != Z_STREAM_END) { + *out_byte_length = in_byte_length; + deflateEnd(&stream); + return 0; + } + + if (deflateEnd(&stream) != Z_OK) + return -1; + + *out_byte_length = stream.total_out; + return 0; +#endif +} + + diff --git a/lib/ebu/ebzip/sebxa.c b/lib/ebu/ebzip/sebxa.c new file mode 100644 index 0000000..e72855b --- /dev/null +++ b/lib/ebu/ebzip/sebxa.c @@ -0,0 +1,279 @@ +/* -*- C -*- + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" + +#define zio_uint4(p) ((*(const unsigned char *)(p) << 24) \ + + (*(const unsigned char *)((p) + 1) << 16) \ + + (*(const unsigned char *)((p) + 2) << 8) \ + + (*(const unsigned char *)((p) + 3))) + +/* + * Delete compression information in START file of S-EBXA. + * Return 0 if succeeds, -1 otherwise. + */ +int +rewrite_sebxa_start(const char *file_name, int index_page) +{ + char buffer[EB_SIZE_PAGE]; + int file = -1; + int index_count; + int removed_index_count; + char *index_in_p; + char *index_out_p; + ssize_t done_length; + ssize_t n; + int i; + + if (index_page == 0) + index_page = 1; + + /* + * Output information. + */ + if (!ebzip_quiet_flag) { + fprintf(stderr, _("==> rewrite %s <==\n"), file_name); + fflush(stderr); + } + + /* + * Open the file. + */ + file = open(file_name, O_RDWR | O_BINARY); + if (file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } + + /* + * Read index page. + */ + if (lseek(file, ((off_t) index_page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + fprintf(stderr, _("%s: failed to seek the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } + + done_length = 0; + while (done_length < EB_SIZE_PAGE) { + errno = 0; + n = read(file, buffer + done_length, EB_SIZE_PAGE - done_length); + if (n < 0) { + if (errno == EINTR) + continue; + fprintf(stderr, _("%s: failed to read the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } else if (n == 0) { + fprintf(stderr, _("%s: unexpected EOF: %s\n"), + invoked_name, file_name); + goto failed; + } else { + done_length += n; + } + } + + /* + * Remove index 0x21 and 0x22. + * They has comression information. + */ + index_count = *(unsigned char *)(buffer + 1); + removed_index_count = 0; + + index_in_p = buffer + 16; + index_out_p = buffer + 16; + for (i = 0; i < index_count; i++, index_in_p += 16) { + if (*index_in_p == 0x21 || *index_in_p == 0x22) { + removed_index_count++; + } else { + if (index_in_p != index_out_p) + memcpy(index_out_p, index_in_p, 16); + index_out_p += 16; + } + } + for (i = 0; i < removed_index_count; i++, index_out_p += 16) { + memset(index_out_p, 0, 16); + } + + *(unsigned char *)(buffer + 1) = index_count - removed_index_count; + + /* + * Write back the index page. + */ + if (lseek(file, ((off_t) index_page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + fprintf(stderr, _("%s: failed to seek the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } + + done_length = 0; + while (done_length < EB_SIZE_PAGE) { + errno = 0; + n = write(file, buffer + done_length, EB_SIZE_PAGE - done_length); + if (n < 0) { + if (errno == EINTR) + continue; + fprintf(stderr, _("%s: failed to write the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } else { + done_length += n; + } + } + + if (!ebzip_quiet_flag) { +#if defined(PRINTF_LL_MODIFIER) + fprintf(stderr, _("completed (%llu / %llu bytes)\n"), + (unsigned long long) done_length, + (unsigned long long) done_length); +#elif defined(PRINTF_I64_MODIFIER) + fprintf(stderr, _("completed (%I64u / %I64u bytes)\n"), + (unsigned __int64) done_length, + (unsigned __int64) done_length); +#else + fprintf(stderr, _("completed (%lu / %lu bytes)\n"), + (unsigned long) done_length, + (unsigned long) done_length); +#endif + fputc('\n', stderr); + fflush(stderr); + } + + close(file); + return 0; + + failed: + if (0 <= file) + close(file); + fputc('\n', stderr); + return -1; +} + + +/* + * Get compression information (`index_page', `index_location', `index_base', + * `zio_start_location' and `zio_end_location') in START file. + * Return 0 if succeeds, -1 otherwise. + */ +int +get_sebxa_indexes(const char *file_name, int index_page, off_t *index_location, + off_t *index_base, off_t *zio_start_location, off_t *zio_end_location) +{ + char buffer[EB_SIZE_PAGE]; + int file = -1; + int index_count; + char *index_p; + ssize_t done_length; + ssize_t n; + int page; + int page_count; + int i; + + *index_location = 0; + *index_base = 0; + *zio_start_location = 0; + *zio_end_location = 0; + + if (index_page == 0) + index_page = 1; + + /* + * Open the file. + */ + file = open(file_name, O_RDONLY | O_BINARY); + if (file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } + + /* + * Read index page. + */ + if (lseek(file, ((off_t) index_page - 1) * EB_SIZE_PAGE, SEEK_SET) < 0) { + fprintf(stderr, _("%s: failed to seek the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } + + done_length = 0; + while (done_length < EB_SIZE_PAGE) { + errno = 0; + n = read(file, buffer + done_length, EB_SIZE_PAGE - done_length); + if (n < 0) { + if (errno == EINTR) + continue; + fprintf(stderr, _("%s: failed to read the file, %s: %s\n"), + invoked_name, strerror(errno), file_name); + goto failed; + } else if (n == 0) { + fprintf(stderr, _("%s: unexpected EOF: %s\n"), + invoked_name, file_name); + goto failed; + } else { + done_length += n; + } + } + + /* + * Get information in index 0x21 and 0x22. + * They has comression information. + */ + index_count = *(unsigned char *)(buffer + 1); + + index_p = buffer + 16; + for (i = 0; i < index_count; i++, index_p += 16) { + page = zio_uint4(index_p + 2); + page_count = zio_uint4(index_p + 6); + + switch (*index_p) { + case 0x00: + *zio_start_location + = ((off_t) page - 1) * EB_SIZE_PAGE; + *zio_end_location + = ((off_t) page + page_count - 1) * EB_SIZE_PAGE - 1; + break; + case 0x21: + *index_base = ((off_t) page - 1) * EB_SIZE_PAGE; + break; + case 0x22: + *index_location = ((off_t) page - 1) * EB_SIZE_PAGE; + break; + } + } + + close(file); + return 0; + + failed: + if (0 <= file) + close(file); + fputc('\n', stderr); + return -1; +} diff --git a/lib/ebu/ebzip/speedup.c b/lib/ebu/ebzip/speedup.c new file mode 100644 index 0000000..d7cb597 --- /dev/null +++ b/lib/ebu/ebzip/speedup.c @@ -0,0 +1,196 @@ +/* -*- C -*- + * Copyright (c) 2004-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" + +#define zio_uint1(p) (*(const unsigned char *)(p)) + +#define zio_uint4(p) ((*(const unsigned char *)(p) << 24) \ + + (*(const unsigned char *)((p) + 1) << 16) \ + + (*(const unsigned char *)((p) + 2) << 8) \ + + (*(const unsigned char *)((p) + 3))) + +/* + * Initialize `speeedup'. + */ +void +ebzip_initialize_zip_speedup(Zip_Speedup *speedup) +{ + speedup->region_count = 0; +} + + +/* + * Finalize `speeedup'. + */ +void +ebzip_finalize_zip_speedup(Zip_Speedup *speedup) +{ + speedup->region_count = 0; +} + + +/* + * Read HONMON/START file to set `speedup'. + */ +int +ebzip_set_zip_speedup(Zip_Speedup *speedup, const char *file_name, + Zio_Code zio_code, int index_page) +{ + char buffer[EB_SIZE_PAGE]; + char *buffer_p; + int start_page; + Zio zio; + int index_count; + int index_code; + int i; + + zio_initialize(&zio); + + /* + * Open the file and read it's index page. + */ + if (zio_open(&zio, file_name, zio_code) < 0) { + fprintf(stderr, _("%s: failed to open the file: %s\n"), + invoked_name, file_name); + goto failed; + } + if (zio_lseek(&zio, ((off_t) index_page - 1) * EB_SIZE_PAGE, SEEK_SET) + < 0) { + fprintf(stderr, _("%s: failed to read the file: %s\n"), + invoked_name, file_name); + goto failed; + } + if (zio_read(&zio, buffer, EB_SIZE_PAGE) != EB_SIZE_PAGE) { + fprintf(stderr, _("%s: failed to read the file: %s\n"), + invoked_name, file_name); + goto failed; + } + + /* + * Read the index page to get `start_page' location. + */ + index_count = zio_uint1(buffer + 1); + buffer_p = buffer + 16; + for (i = 0; i < index_count; i++) { + index_code = zio_uint1(buffer_p); + if ((0x90 <= index_code && index_code <= 0x92) + || index_code == 0xc6) { + if (EBZIP_MAX_SPEEDUP_REGION_COUNT <= speedup->region_count) + break; + speedup->regions[speedup->region_count].start_page + = zio_uint4(buffer_p + 2); + speedup->region_count++; + } + buffer_p += 16; + } + + /* + * Read `start_page' to get `end_page' location. + */ + for (i = 0; i < speedup->region_count; i++) { + start_page = speedup->regions[i].start_page; + if (zio_lseek(&zio, ((off_t) start_page - 1) * EB_SIZE_PAGE, SEEK_SET) + < 0) { + fprintf(stderr, _("%s: failed to read the file: %s\n"), + invoked_name, file_name); + goto failed; + } + if (zio_read(&zio, buffer, EB_SIZE_PAGE) != EB_SIZE_PAGE) { + fprintf(stderr, _("%s: failed to read the file: %s\n"), + invoked_name, file_name); + goto failed; + } + + speedup->regions[i].end_page = start_page + zio_uint1(buffer + 3) - 1; + } + + zio_close(&zio); + zio_finalize(&zio); + return 0; + + /* + * An error occurs... + */ + failed: + zio_close(&zio); + zio_finalize(&zio); + speedup->region_count = 0; + + return -1; +} + + +/* + * Check if `slice' is lain in/over/across a speedup region. + */ +int +ebzip_is_speedup_slice(Zip_Speedup *speedup, int slice, int ebzip_level) +{ + Zip_Speedup_Region *p; + int start_page; + int end_page; + int i; + + start_page = slice * (1 << ebzip_level) + 1; + end_page = (slice + 1) * (1 << ebzip_level); + + for (i = 0, p = speedup->regions; i < speedup->region_count; i++, p++) { + /* + * speedup region + * +================+ + * o------o + * or o-----------------------o + * + */ + if (start_page <= speedup->regions[i].start_page + && speedup->regions[i].start_page <= end_page) + return 1; + + /* + * speedup region + * +================+ + * o------o + * or o--------------------o + */ + if (start_page <= speedup->regions[i].end_page + && speedup->regions[i].end_page <= end_page) + return 1; + + /* + * speedup region + * +================+ + * o--------o + */ + if (speedup->regions[i].start_page <= start_page + && end_page <= speedup->regions[i].end_page) + return 1; + } + + return 0; +} diff --git a/lib/ebu/ebzip/unlinkfile.c b/lib/ebu/ebzip/unlinkfile.c new file mode 100644 index 0000000..4c983b0 --- /dev/null +++ b/lib/ebu/ebzip/unlinkfile.c @@ -0,0 +1,61 @@ +/* -*- C -*- + * Copyright (c) 2008-2009 Kazuhiro Ito + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" + +/* + * Add a file to the list of unlinking files. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int unlink_files_add(const char *file_name) +{ + if (string_list_add(&unlinking_files, file_name)) { + if (!ebzip_quiet_flag) { + fprintf(stderr, _("%s: warning: memory exhausted, file %s is not to be unlinked\n"), invoked_name, file_name); + } + return -1; + } + + return 0; +} + +/* + * Unlink files. + */ +void unlink_files() +{ + String_List_Node *p = unlinking_files.head; + + while (p != NULL) { + if (unlink(p->string) < 0 && !ebzip_quiet_flag) { + fprintf(stderr, _("%s: warning: failed to unlink the file: %s\n"), + invoked_name, p->string); + } + p = p->next; + } +} diff --git a/lib/ebu/ebzip/unzipbook.c b/lib/ebu/ebzip/unzipbook.c new file mode 100644 index 0000000..0f33bf6 --- /dev/null +++ b/lib/ebu/ebzip/unzipbook.c @@ -0,0 +1,470 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" +#include "ebutils.h" + +#include "getumask.h" +#include "makedir.h" +#include "strlist.h" + +/* + * Unexported function. + */ +static int ebzip_unzip_book_eb(EB_Book *book, const char *out_top_path, + const char *book_path, EB_Subbook_Code *subbook_list, int subbook_count); +static int ebzip_unzip_book_epwing(EB_Book *book, const char *out_top_path, + const char *book_path, EB_Subbook_Code *subbook_list, int subbook_count); + + +/* + * Uncompress files in `book' and output them under `out_top_path'. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_unzip_book(const char *out_top_path, const char *book_path, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count) +{ + EB_Book book; + EB_Error_Code error_code; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + EB_Subbook_Code subbook_code; + int subbook_count = 0; + int result; + int i; + + eb_initialize_book(&book); + + /* + * Bind a book. + */ + error_code = eb_bind(&book, book_path); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + fflush(stderr); + return -1; + } + + /* + * For each targe subbook, convert a subbook-names to a subbook-codes. + * If no subbook is specified by `--subbook'(`-S'), set all subbooks + * as the target. + */ + if (subbook_name_count == 0) { + error_code = eb_subbook_list(&book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + fflush(stderr); + return -1; + } + } else { + for (i = 0; i < subbook_name_count; i++) { + error_code = find_subbook(&book, subbook_name_list[i], + &subbook_code); + if (error_code != EB_SUCCESS) { + fprintf(stderr, _("%s: unknown subbook name `%s'\n"), + invoked_name, subbook_name_list[i]); + return -1; + } + subbook_list[subbook_count++] = subbook_code; + } + } + + /* + * Uncompress the book. + */ + if (book.disc_code == EB_DISC_EB) { + result = ebzip_unzip_book_eb(&book, out_top_path, book_path, + subbook_list, subbook_count); + } else { + result = ebzip_unzip_book_epwing(&book, out_top_path, book_path, + subbook_list, subbook_count); + } + + eb_finalize_book(&book); + + return result; +} + + +/* + * Internal function for `unzip_book'. + * This is used to compress an EB book. + */ +static int +ebzip_unzip_book_eb(EB_Book *book, const char *out_top_path, + const char *book_path, EB_Subbook_Code *subbook_list, int subbook_count) +{ + EB_Subbook *subbook; + EB_Error_Code error_code; + String_List string_list; + char in_path_name[PATH_MAX + 1]; + char out_sub_path[PATH_MAX + 1]; + char out_path_name[PATH_MAX + 1]; + char catalog_file_name[EB_MAX_FILE_NAME_LENGTH]; + char language_file_name[EB_MAX_FILE_NAME_LENGTH]; + mode_t out_directory_mode; + Zio_Code in_zio_code; + int i; + + /* + * If `out_top_path' and/or `book_path' represents "/", replace it + * to an empty string. + */ + if (strcmp(out_top_path, "/") == 0) + out_top_path++; + if (strcmp(book_path, "/") == 0) + book_path++; + + /* + * Initialize variables. + */ + out_directory_mode = 0777 ^ get_umask(); + string_list_initialize(&string_list); + + error_code = eb_load_all_subbooks(book); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + } + + /* + * Uncompress a book. + */ + for (i = 0; i < subbook_count; i++) { + subbook = book->subbooks + subbook_list[i]; + + /* + * Make an output directory for the current subbook. + */ + eb_compose_path_name(out_top_path, subbook->directory_name, + out_sub_path); + if (!ebzip_test_flag + && make_missing_directory(out_sub_path, out_directory_mode) < 0) { + fprintf(stderr, _("%s: failed to create a directory, %s: %s\n"), + invoked_name, strerror(errno), out_sub_path); + goto failed; + } + + /* + * Uncompress START file. + */ + in_zio_code = zio_mode(&subbook->text_zio); + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->text_file_name, in_path_name); + eb_compose_path_name2(out_top_path, subbook->directory_name, + subbook->text_file_name, out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_NONE); + + if (in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (ebzip_unzip_start_file(out_path_name, in_path_name, + in_zio_code, subbook->index_page) < 0) + goto failed; + } + + if (!ebzip_test_flag + && rewrite_sebxa_start(out_path_name, subbook->index_page) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + + /* + * Uncompress a language file. + */ + if (eb_find_file_name(book->path, "language", language_file_name) + == EB_SUCCESS) { + eb_compose_path_name(book->path, language_file_name, in_path_name); + eb_compose_path_name(out_top_path, language_file_name, out_path_name); + eb_path_name_zio_code(in_path_name, ZIO_PLAIN, &in_zio_code); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_NONE); + if (ebzip_unzip_file(out_path_name, in_path_name, in_zio_code) < 0) + goto failed; + } + + /* + * Copy CATALOG file. + */ + if (eb_find_file_name(book->path, "catalog", catalog_file_name) + == EB_SUCCESS) { + eb_compose_path_name(book->path, catalog_file_name, in_path_name); + eb_compose_path_name(out_top_path, catalog_file_name, out_path_name); + if (ebzip_copy_file(out_path_name, in_path_name) < 0) + goto failed; + } + + string_list_finalize(&string_list); + return 0; + + /* + * An error occurs... + */ + failed: + string_list_finalize(&string_list); + return -1; +} + + +/* + * Internal function for `unzip_book'. + * This is used to compress an EPWING book. + */ +static int +ebzip_unzip_book_epwing(EB_Book *book, const char *out_top_path, + const char *book_path, EB_Subbook_Code *subbook_list, int subbook_count) +{ + EB_Subbook *subbook; + EB_Error_Code error_code; + EB_Font *font; + String_List string_list; + char in_path_name[PATH_MAX + 1]; + char out_sub_path[PATH_MAX + 1]; + char out_path_name[PATH_MAX + 1]; + char catalogs_file_name[EB_MAX_FILE_NAME_LENGTH]; + mode_t out_directory_mode; + Zio_Code in_zio_code; + int i, j; + + /* + * If `out_top_path' and/or `book_path' represents "/", replace it + * to an empty string. + */ + if (strcmp(out_top_path, "/") == 0) + out_top_path++; + if (strcmp(book_path, "/") == 0) + book_path++; + + /* + * Initialize variables. + */ + out_directory_mode = 0777 ^ get_umask(); + string_list_initialize(&string_list); + + error_code = eb_load_all_subbooks(book); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + } + + /* + * Uncompress a book. + */ + for (i = 0; i < subbook_count; i++) { + subbook = book->subbooks + subbook_list[i]; + + /* + * Make an output directory for the current subbook. + */ + eb_compose_path_name(out_top_path, subbook->directory_name, + out_sub_path); + if (!ebzip_test_flag + && make_missing_directory(out_sub_path, out_directory_mode) < 0) { + fprintf(stderr, _("%s: failed to create a directory, %s: %s\n"), + invoked_name, strerror(errno), out_sub_path); + goto failed; + } + + /* + * Make `data' sub directory for the current subbook. + */ + eb_compose_path_name2(out_top_path, subbook->directory_name, + subbook->data_directory_name, out_sub_path); + if (!ebzip_test_flag + && make_missing_directory(out_sub_path, out_directory_mode) < 0) { + fprintf(stderr, _("%s: failed to create a directory, %s: %s\n"), + invoked_name, strerror(errno), out_sub_path); + goto failed; + } + + /* + * Uncompress HONMON/HONMON2 file. + */ + in_zio_code = zio_mode(&subbook->text_zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->text_file_name, + in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->data_directory_name, subbook->text_file_name, + out_path_name); + + if (in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (strncasecmp(subbook->text_file_name, "honmon2", 7) == 0) + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_ORG); + else + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_NONE); + if (ebzip_unzip_file(out_path_name, in_path_name, in_zio_code) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + + /* + * Uncompress HONMONS file. + */ + in_zio_code = zio_mode(&subbook->sound_zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->sound_file_name, + in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->data_directory_name, subbook->sound_file_name, + out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_NONE); + + if (!ebzip_skip_flag_sound + && in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (ebzip_unzip_file(out_path_name, in_path_name, in_zio_code) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + + /* + * Uncompress HONMONG file. + */ + in_zio_code = zio_mode(&subbook->graphic_zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->graphic_file_name, + in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->data_directory_name, subbook->graphic_file_name, + out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_NONE); + + if (!ebzip_skip_flag_graphic + && in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (ebzip_unzip_file(out_path_name, in_path_name, in_zio_code) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + + /* + * Make `gaiji' sub directory for the current subbook. + */ + if (!ebzip_skip_flag_font) { + eb_compose_path_name2(out_top_path, subbook->directory_name, + subbook->gaiji_directory_name, out_sub_path); + if (!ebzip_test_flag + && make_missing_directory(out_sub_path, out_directory_mode) + < 0) { + fprintf(stderr, + _("%s: failed to create a directory, %s: %s\n"), + invoked_name, strerror(errno), out_sub_path); + goto failed; + } + + /* + * Uncompress narrow font files. + */ + for (j = 0; j < EB_MAX_FONTS; j++) { + font = subbook->narrow_fonts + j; + if (font->font_code == EB_FONT_INVALID) + continue; + + in_zio_code = zio_mode(&font->zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, font->file_name, + in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->gaiji_directory_name, font->file_name, + out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_NONE); + + if (in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (ebzip_unzip_file(out_path_name, in_path_name, + in_zio_code) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + } + + /* + * Uncompress wide font files. + */ + for (j = 0; j < EB_MAX_FONTS; j++) { + font = subbook->wide_fonts + j; + if (font->font_code == EB_FONT_INVALID) + continue; + + in_zio_code = zio_mode(&font->zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, + font->file_name, in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->gaiji_directory_name, font->file_name, + out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_NONE); + + if (in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (ebzip_unzip_file(out_path_name, in_path_name, + in_zio_code) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + } + } + + /* + * Copy movie files. + */ + if (!ebzip_skip_flag_movie) { + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->movie_directory_name, in_path_name); + eb_compose_path_name2(out_top_path, subbook->directory_name, + subbook->movie_directory_name, out_path_name); + if (ebzip_copy_files_in_directory(out_path_name, in_path_name) < 0) + goto failed; + } + } + + /* + * Copy CATALOGS file. + */ + if (eb_find_file_name(book->path, "catalogs", catalogs_file_name) + == EB_SUCCESS) { + eb_compose_path_name(book->path, catalogs_file_name, in_path_name); + eb_compose_path_name(out_top_path, catalogs_file_name, out_path_name); + if (ebzip_copy_file(out_path_name, in_path_name) < 0) + goto failed; + } + + string_list_finalize(&string_list); + return 0; + + /* + * An error occurs... + */ + failed: + string_list_finalize(&string_list); + return -1; +} diff --git a/lib/ebu/ebzip/unzipfile.c b/lib/ebu/ebzip/unzipfile.c new file mode 100644 index 0000000..22f9819 --- /dev/null +++ b/lib/ebu/ebzip/unzipfile.c @@ -0,0 +1,439 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" + +#include "getumask.h" +#include "makedir.h" +#include "samefile.h" +#include "yesno.h" + +/* + * Tricks for gettext. + */ +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define _(string) (string) +#define N_(string) (string) +#endif + +/* + * File name to be deleted and file to be closed when signal is received. + */ +static const char *trap_file_name = NULL; +static int trap_file = -1; + +/* + * Unexported function. + */ +static int ebzip_unzip_file_internal(const char *out_file_name, + const char *in_file_name, Zio_Code in_zio_code, int index_page); +static void trap(int signal_number); + + +/* + * Uncompress a file `in_file_name'. + * For START file, use ebzip_unzip_start_file() instead. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_unzip_file(const char *out_file_name, const char *in_file_name, + Zio_Code in_zio_code) +{ + return ebzip_unzip_file_internal(out_file_name, in_file_name, + in_zio_code, 0); +} + +/* + * Uncompress START file `in_file_name'. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_unzip_start_file(const char *out_file_name, const char *in_file_name, + Zio_Code in_zio_code, int index_page) +{ + return ebzip_unzip_file_internal(out_file_name, in_file_name, + in_zio_code, index_page); +} + +/* + * Internal function for ebzip_unzip_file() and ebzip_unzip_sebxa_start(). + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +static int +ebzip_unzip_file_internal(const char *out_file_name, const char *in_file_name, + Zio_Code in_zio_code, int index_page) +{ + Zio in_zio; + unsigned char *buffer = NULL; + off_t total_length; + int out_file = -1; + ssize_t length; + struct stat in_status, out_status; + unsigned int crc = 1; + int progress_interval; + int total_slices; + int i; + + zio_initialize(&in_zio); + + /* + * Simply copy a file, when an input file is not compressed. + */ + if (in_zio_code == ZIO_PLAIN) + return ebzip_copy_file(out_file_name, in_file_name); + + /* + * Output file name information. + */ + if (!ebzip_quiet_flag) { + fprintf(stderr, _("==> uncompress %s <==\n"), in_file_name); + fprintf(stderr, _("output to %s\n"), out_file_name); + fflush(stderr); + } + + /* + * Get status of the input file. + */ + if (stat(in_file_name, &in_status) < 0 || !S_ISREG(in_status.st_mode)) { + fprintf(stderr, _("%s: no such file: %s\n"), invoked_name, + in_file_name); + goto failed; + } + + /* + * Do nothing if the `in_file_name' and `out_file_name' are the same. + */ + if (is_same_file(out_file_name, in_file_name)) { + if (!ebzip_quiet_flag) { + fprintf(stderr, + _("the input and output files are the same, skipped.\n\n")); + fflush(stderr); + } + return 0; + } + + /* + * Allocate memories for in/out buffers. + */ + buffer = (unsigned char *)malloc(EB_SIZE_PAGE << ZIO_MAX_EBZIP_LEVEL); + if (buffer == NULL) { + fprintf(stderr, _("%s: memory exhausted\n"), invoked_name); + goto failed; + } + + /* + * If the file `out_file_name' already exists, confirm and unlink it. + */ + if (!ebzip_test_flag + && stat(out_file_name, &out_status) == 0 + && S_ISREG(out_status.st_mode)) { + if (ebzip_overwrite_mode == EBZIP_OVERWRITE_NO) { + if (!ebzip_quiet_flag) { + fputs(_("already exists, skip the file\n\n"), stderr); + fflush(stderr); + } + return 0; + } else if (ebzip_overwrite_mode == EBZIP_OVERWRITE_CONFIRM) { + int y_or_n; + + fprintf(stderr, _("\nthe file already exists: %s\n"), + out_file_name); + y_or_n = query_y_or_n(_("do you wish to overwrite (y or n)? ")); + fputc('\n', stderr); + fflush(stderr); + if (!y_or_n) + return 0; + } + if (unlink(out_file_name) < 0) { + fprintf(stderr, _("%s: failed to unlink the file: %s\n"), + invoked_name, out_file_name); + goto failed; + } + } + + /* + * Open files. + */ + if (zio_open(&in_zio, in_file_name, in_zio_code) < 0) { + fprintf(stderr, _("%s: failed to open the file: %s\n"), + invoked_name, in_file_name); + goto failed; + } + if (in_zio_code == ZIO_SEBXA) { + off_t index_location; + off_t index_base; + off_t zio_start_location; + off_t zio_end_location; + + if (get_sebxa_indexes(in_file_name, index_page, &index_location, + &index_base, &zio_start_location, &zio_end_location) < 0) { + goto failed; + } + zio_set_sebxa_mode(&in_zio, index_location, index_base, + zio_start_location, zio_end_location); + } + + if (!ebzip_test_flag) { + trap_file_name = out_file_name; +#ifdef SIGHUP + signal(SIGHUP, trap); +#endif + signal(SIGINT, trap); +#ifdef SIGQUIT + signal(SIGQUIT, trap); +#endif +#ifdef SIGTERM + signal(SIGTERM, trap); +#endif + +#ifdef O_CREAT + out_file = open(out_file_name, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, + 0666 ^ get_umask()); +#else + out_file = creat(out_file_name, 0666 ^ get_umask()); +#endif + if (out_file < 0) { + fprintf(stderr, _("%s: failed to open the file: %s\n"), + invoked_name, out_file_name); + goto failed; + } + trap_file = out_file; + } + + /* + * Read a slice from the input file, uncompress it if required, + * and then write it to the output file. + */ + total_length = 0; + total_slices = (in_zio.file_size + in_zio.slice_size - 1) + / in_zio.slice_size; + progress_interval = EBZIP_PROGRESS_INTERVAL_FACTOR; + if (((total_slices + 999) / 1000) > progress_interval) + progress_interval = ((total_slices + 999) / 1000); + + for (i = 0; i < total_slices; i++) { + /* + * Read a slice. + */ + if (zio_lseek(&in_zio, total_length, SEEK_SET) < 0) { + fprintf(stderr, _("%s: failed to seek the file: %s\n"), + invoked_name, in_file_name); + goto failed; + } + length = zio_read(&in_zio, (char *)buffer, in_zio.slice_size); + if (length < 0) { + fprintf(stderr, _("%s: failed to read from the file: %s\n"), + invoked_name, in_file_name); + goto failed; + } else if (length == 0) { + fprintf(stderr, _("%s: unexpected EOF: %s\n"), + invoked_name, in_file_name); + goto failed; + } else if (length != in_zio.slice_size + && total_length + length != in_zio.file_size) { + fprintf(stderr, _("%s: unexpected EOF: %s\n"), + invoked_name, in_file_name); + goto failed; + } + + /* + * Update CRC. (Calculate adler32 again.) + */ + if (in_zio.code == ZIO_EBZIP1) { +#ifdef ENABLE_LIBDEFLATE + crc = libdeflate_adler32((uint32_t)crc, buffer, (size_t)length); +#else + crc = adler32((uLong)crc, (Bytef *)buffer, (uInt)length); +#endif + } + + /* + * Write the slice to `out_file'. + */ + if (!ebzip_test_flag) { + if (write(out_file, buffer, length) != length) { + fprintf(stderr, _("%s: failed to write to the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + } + total_length += length; + + /* + * Output status information unless `quiet' mode. + */ + if (!ebzip_quiet_flag && (i + 1) % progress_interval == 0) { +#if defined(PRINTF_LL_MODIFIER) + fprintf(stderr, _("%4.1f%% done (%llu / %llu bytes)\n"), + (double) (i + 1) * 100.0 / (double) total_slices, + (unsigned long long) total_length, + (unsigned long long) in_zio.file_size); +#elif defined(PRINTF_I64_MODIFIER) + fprintf(stderr, _("%4.1f%% done (%I64u / %I64u bytes)\n"), + (double) (i + 1) * 100.0 / (double) total_slices, + (unsigned __int64) total_length, + (unsigned __int64) in_zio.file_size); +#else + fprintf(stderr, _("%4.1f%% done (%lu / %lu bytes)\n"), + (double) (i + 1) * 100.0 / (double) total_slices, + (unsigned long) total_length, + (unsigned long) in_zio.file_size); +#endif + fflush(stderr); + } + } + + /* + * Output the result unless quiet mode. + */ + if (!ebzip_quiet_flag) { +#if defined(PRINTF_LL_MODIFIER) + fprintf(stderr, _("completed (%llu / %llu bytes)\n"), + (unsigned long long) in_zio.file_size, + (unsigned long long) in_zio.file_size); +#elif defined(PRINTF_I64_MODIFIER) + fprintf(stderr, _("completed (%I64u / %I64u bytes)\n"), + (unsigned __int64) in_zio.file_size, + (unsigned __int64) in_zio.file_size); +#else + fprintf(stderr, _("%lu -> %lu bytes\n\n"), + (unsigned long) in_status.st_size, + (unsigned long) total_length); +#endif + fflush(stderr); + } + + /* + * Close files. + */ + zio_close(&in_zio); + zio_finalize(&in_zio); + + if (!ebzip_test_flag) { + close(out_file); + out_file = -1; + trap_file = -1; + trap_file_name = NULL; +#ifdef SIGHUP + signal(SIGHUP, SIG_DFL); +#endif + signal(SIGINT, SIG_DFL); +#ifdef SIGQUIT + signal(SIGQUIT, SIG_DFL); +#endif +#ifdef SIGTERM + signal(SIGTERM, SIG_DFL); +#endif + } + + /* + * Check for CRC. + */ + if (in_zio.code == ZIO_EBZIP1 && in_zio.crc != crc) { + fprintf(stderr, _("%s: CRC error: %s\n"), invoked_name, out_file_name); + goto failed; + } + + /* + * Delete an original file unless the keep flag is set. + */ + if (!ebzip_test_flag && !ebzip_keep_flag) + unlink_files_add(in_file_name); + + /* + * Set owner, group, permission, atime and mtime of `out_file'. + * We ignore return values of `chown', `chmod' and `utime'. + */ + if (!ebzip_test_flag) { + struct utimbuf utim; + + utim.actime = in_status.st_atime; + utim.modtime = in_status.st_mtime; + utime(out_file_name, &utim); + } + + /* + * Dispose memories. + */ + free(buffer); + + return 0; + + /* + * An error occurs... + */ + failed: + if (buffer != NULL) + free(buffer); + + zio_close(&in_zio); + zio_finalize(&in_zio); + + if (0 <= out_file) { + close(out_file); + trap_file = -1; + trap_file_name = NULL; +#ifdef SIGHUP + signal(SIGHUP, SIG_DFL); +#endif + signal(SIGINT, SIG_DFL); +#ifdef SIGQUIT + signal(SIGQUIT, SIG_DFL); +#endif +#ifdef SIGTERM + signal(SIGTERM, SIG_DFL); +#endif + } + + fputc('\n', stderr); + fflush(stderr); + + return -1; +} + + +/* + * Signal handler. + */ +static void +trap(int signal_number) +{ + if (0 <= trap_file) + close(trap_file); + if (trap_file_name != NULL) + unlink(trap_file_name); + + exit(1); +} diff --git a/lib/ebu/ebzip/zipbook.c b/lib/ebu/ebzip/zipbook.c new file mode 100644 index 0000000..90cd6c9 --- /dev/null +++ b/lib/ebu/ebzip/zipbook.c @@ -0,0 +1,478 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" +#include "ebutils.h" + +#include "getumask.h" +#include "makedir.h" +#include "strlist.h" + +/* + * Unexported function. + */ +static int ebzip_zip_book_eb(EB_Book *book, const char *out_top_path, + const char *book_path, EB_Subbook_Code *subbook_list, int subbook_count); +static int ebzip_zip_book_epwing(EB_Book *book, const char *out_top_path, + const char *book_path, EB_Subbook_Code *subbook_list, int subbook_count); + + +/* + * Compress files in `book' and output them under `out_top_path'. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_zip_book(const char *out_top_path, const char *book_path, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count) +{ + EB_Book book; + EB_Error_Code error_code; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + EB_Subbook_Code subbook_code; + int subbook_count; + int result; + int i; + + eb_initialize_book(&book); + + /* + * Bind a book. + */ + error_code = eb_bind(&book, book_path); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + fflush(stderr); + return -1; + } + + /* + * For each targe subbook, convert a subbook-names to a subbook-codes. + * If no subbook is specified by `--subbook'(`-S'), set all subbooks + * as the target. + */ + if (subbook_name_count == 0) { + error_code = eb_subbook_list(&book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + fflush(stderr); + return -1; + } + } else { + subbook_count = 0; + for (i = 0; i < subbook_name_count; i++) { + error_code = find_subbook(&book, subbook_name_list[i], + &subbook_code); + if (error_code != EB_SUCCESS) { + fprintf(stderr, _("%s: unknown subbook name `%s'\n"), + invoked_name, subbook_name_list[i]); + return -1; + } + subbook_list[subbook_count++] = subbook_code; + } + } + + /* + * Compress the book. + */ + if (book.disc_code == EB_DISC_EB) { + result = ebzip_zip_book_eb(&book, out_top_path, book_path, + subbook_list, subbook_count); + } else { + result = ebzip_zip_book_epwing(&book, out_top_path, book_path, + subbook_list, subbook_count); + } + + eb_finalize_book(&book); + + return result; +} + + +/* + * Internal function for `zip_book'. + * This is used to compress an EB book. + */ +static int +ebzip_zip_book_eb(EB_Book *book, const char *out_top_path, + const char *book_path, EB_Subbook_Code *subbook_list, int subbook_count) +{ + EB_Subbook *subbook; + EB_Error_Code error_code; + String_List string_list; + char in_path_name[PATH_MAX + 1]; + char out_sub_path[PATH_MAX + 1]; + char out_path_name[PATH_MAX + 1]; + char catalog_file_name[EB_MAX_FILE_NAME_LENGTH]; + char language_file_name[EB_MAX_FILE_NAME_LENGTH]; + mode_t out_directory_mode; + Zip_Speedup speedup; + Zio_Code in_zio_code; + int i; + + /* + * If `out_top_path' and/or `book_path' represents "/", replace it + * to an empty string. + */ + if (strcmp(out_top_path, "/") == 0) + out_top_path++; + if (strcmp(book_path, "/") == 0) + book_path++; + + /* + * Initialize variables. + */ + out_directory_mode = 0777 ^ get_umask(); + string_list_initialize(&string_list); + + error_code = eb_load_all_subbooks(book); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + } + + /* + * Compress a book. + */ + for (i = 0; i < subbook_count; i++) { + subbook = book->subbooks + subbook_list[i]; + + /* + * Make an output directory for the current subbook. + */ + eb_compose_path_name(out_top_path, subbook->directory_name, + out_sub_path); + if (!ebzip_test_flag + && make_missing_directory(out_sub_path, out_directory_mode) < 0) { + fprintf(stderr, _("%s: failed to create a directory, %s: %s\n"), + invoked_name, strerror(errno), out_sub_path); + goto failed; + } + + /* + * Compress START file. + */ + in_zio_code = zio_mode(&subbook->text_zio); + + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->text_file_name, in_path_name); + eb_compose_path_name2(out_top_path, subbook->directory_name, + subbook->text_file_name, out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_EBZ); + + if (in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + ebzip_initialize_zip_speedup(&speedup); + if (ebzip_set_zip_speedup(&speedup, in_path_name, in_zio_code, + subbook->index_page) < 0) + goto failed; + if (ebzip_zip_start_file(out_path_name, in_path_name, in_zio_code, + subbook->index_page, &speedup) < 0) + goto failed; + ebzip_finalize_zip_speedup(&speedup); + string_list_add(&string_list, in_path_name); + } + } + + /* + * Compress a language file. + */ + if (eb_find_file_name(book->path, "language", language_file_name) + == EB_SUCCESS) { + eb_compose_path_name(book->path, language_file_name, in_path_name); + eb_compose_path_name(out_top_path, language_file_name, out_path_name); + eb_path_name_zio_code(in_path_name, ZIO_PLAIN, &in_zio_code); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_EBZ); + if (ebzip_zip_file(out_path_name, in_path_name, in_zio_code, NULL) < 0) + goto failed; + } + + /* + * Copy CATALOG file. + */ + if (eb_find_file_name(book->path, "catalog", catalog_file_name) + == EB_SUCCESS) { + eb_compose_path_name(book->path, catalog_file_name, in_path_name); + eb_compose_path_name(out_top_path, catalog_file_name, out_path_name); + eb_path_name_zio_code(in_path_name, ZIO_PLAIN, &in_zio_code); + if (ebzip_copy_file(out_path_name, in_path_name) < 0) + goto failed; + } + + string_list_finalize(&string_list); + return 0; + + /* + * An error occurs... + */ + failed: + string_list_finalize(&string_list); + return -1; +} + + +/* + * Internal function for `zip_book'. + * This is used to compress an EPWING book. + */ +static int +ebzip_zip_book_epwing(EB_Book *book, const char *out_top_path, + const char *book_path, EB_Subbook_Code *subbook_list, int subbook_count) +{ + EB_Subbook *subbook; + EB_Error_Code error_code; + EB_Font *font; + String_List string_list; + char in_path_name[PATH_MAX + 1]; + char out_sub_path[PATH_MAX + 1]; + char out_path_name[PATH_MAX + 1]; + char catalogs_file_name[EB_MAX_FILE_NAME_LENGTH]; + mode_t out_directory_mode; + Zip_Speedup speedup; + Zio_Code in_zio_code; + int i, j; + + /* + * If `out_top_path' and/or `book_path' represents "/", replace it + * to an empty string. + */ + if (strcmp(out_top_path, "/") == 0) + out_top_path++; + if (strcmp(book_path, "/") == 0) + book_path++; + + /* + * Initialize variables. + */ + out_directory_mode = 0777 ^ get_umask(); + string_list_initialize(&string_list); + + error_code = eb_load_all_subbooks(book); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + } + + /* + * Compress a book. + */ + for (i = 0; i < subbook_count; i++) { + subbook = book->subbooks + subbook_list[i]; + + /* + * Make an output directory for the current subbook. + */ + eb_compose_path_name(out_top_path, subbook->directory_name, + out_sub_path); + if (!ebzip_test_flag + && make_missing_directory(out_sub_path, out_directory_mode) < 0) { + fprintf(stderr, _("%s: failed to create a directory, %s: %s\n"), + invoked_name, strerror(errno), out_sub_path); + goto failed; + } + + /* + * Make `data' sub directory for the current subbook. + */ + eb_compose_path_name2(out_top_path, subbook->directory_name, + subbook->data_directory_name, out_sub_path); + if (!ebzip_test_flag + && make_missing_directory(out_sub_path, out_directory_mode) < 0) { + fprintf(stderr, _("%s: failed to create a directory, %s: %s\n"), + invoked_name, strerror(errno), out_sub_path); + goto failed; + } + /* + * Compress HONMON/HONMON2 file. + */ + in_zio_code = zio_mode(&subbook->text_zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->text_file_name, + in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->data_directory_name, subbook->text_file_name, + out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_EBZ); + + if (in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + ebzip_initialize_zip_speedup(&speedup); + if (ebzip_set_zip_speedup(&speedup, in_path_name, in_zio_code, + subbook->index_page) < 0) + goto failed; + if (ebzip_zip_file(out_path_name, in_path_name, in_zio_code, + &speedup) < 0) + goto failed; + ebzip_finalize_zip_speedup(&speedup); + string_list_add(&string_list, in_path_name); + } + + /* + * Compress HONMONS file. + */ + in_zio_code = zio_mode(&subbook->sound_zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->sound_file_name, + in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->data_directory_name, subbook->sound_file_name, + out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_EBZ); + + if (!ebzip_skip_flag_sound + && in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (ebzip_zip_file(out_path_name, in_path_name, in_zio_code, + NULL) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + + /* + * Copy HONMONG file. + */ + in_zio_code = zio_mode(&subbook->graphic_zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->graphic_file_name, + in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->data_directory_name, subbook->graphic_file_name, + out_path_name); + + if (!ebzip_skip_flag_graphic + && in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (ebzip_copy_file(out_path_name, in_path_name) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + + if (!ebzip_skip_flag_font) { + /* + * Make `gaiji' sub directory for the current subbook. + */ + eb_compose_path_name2(out_top_path, subbook->directory_name, + subbook->gaiji_directory_name, out_sub_path); + if (!ebzip_test_flag + && make_missing_directory(out_sub_path, out_directory_mode) + < 0) { + fprintf(stderr, + _("%s: failed to create a directory, %s: %s\n"), + invoked_name, strerror(errno), out_sub_path); + goto failed; + } + + /* + * Compress narrow font files. + */ + for (j = 0; j < EB_MAX_FONTS; j++) { + font = subbook->narrow_fonts + j; + if (font->font_code == EB_FONT_INVALID) + continue; + + in_zio_code = zio_mode(&font->zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, font->file_name, + in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->gaiji_directory_name, font->file_name, + out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_EBZ); + + if (in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (ebzip_zip_file(out_path_name, in_path_name, + in_zio_code, NULL) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + } + + /* + * Compress wide font files. + */ + for (j = 0; j < EB_MAX_FONTS; j++) { + font = subbook->wide_fonts + j; + if (font->font_code == EB_FONT_INVALID) + continue; + + in_zio_code = zio_mode(&font->zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->gaiji_directory_name, font->file_name, + in_path_name); + eb_compose_path_name3(out_top_path, subbook->directory_name, + subbook->gaiji_directory_name, font->file_name, + out_path_name); + eb_fix_path_name_suffix(out_path_name, EBZIP_SUFFIX_EBZ); + + if (in_zio_code != ZIO_INVALID + && !string_list_find(&string_list, in_path_name)) { + if (ebzip_zip_file(out_path_name, in_path_name, + in_zio_code, NULL) < 0) + goto failed; + string_list_add(&string_list, in_path_name); + } + } + } + + /* + * Copy movie files. + */ + if (!ebzip_skip_flag_movie) { + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->movie_directory_name, in_path_name); + eb_compose_path_name2(out_top_path, subbook->directory_name, + subbook->movie_directory_name, out_path_name); + if (ebzip_copy_files_in_directory(out_path_name, in_path_name) < 0) + goto failed; + } + } + + /* + * Copy CATALOGS file. + */ + if (eb_find_file_name(book->path, "catalogs", catalogs_file_name) + == EB_SUCCESS) { + eb_compose_path_name(book->path, catalogs_file_name, in_path_name); + eb_compose_path_name(out_top_path, catalogs_file_name, out_path_name); + if (ebzip_copy_file(out_path_name, in_path_name) < 0) + goto failed; + } + + string_list_finalize(&string_list); + return 0; + + /* + * An error occurs... + */ + failed: + string_list_finalize(&string_list); + return -1; +} diff --git a/lib/ebu/ebzip/zipfile.c b/lib/ebu/ebzip/zipfile.c new file mode 100644 index 0000000..5524b9b --- /dev/null +++ b/lib/ebu/ebzip/zipfile.c @@ -0,0 +1,699 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" + +#include "getumask.h" +#include "makedir.h" +#include "samefile.h" +#include "yesno.h" + +/* + * File name to be deleted and file to be closed when signal is received. + */ +static const char *trap_file_name = NULL; +static int trap_file = -1; + +/* + * Unexported function. + */ +static int ebzip_zip_file_internal(const char *out_file_name, + const char *in_file_name, Zio_Code in_zio_code, int index_page, + Zip_Speedup *speedup); +static void trap(int signal_number); + + +/* + * Ccompress a file `in_file_name'. + * For START file, use ebzip_zip_start_file() instead. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_zip_file(const char *out_file_name, const char *in_file_name, + Zio_Code in_zio_code, Zip_Speedup *speedup) +{ + return ebzip_zip_file_internal(out_file_name, in_file_name, + in_zio_code, 0, speedup); +} + +/* + * Compress TART file `in_file_name'. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_zip_start_file(const char *out_file_name, const char *in_file_name, + Zio_Code in_zio_code, int index_page, Zip_Speedup *speedup) +{ + return ebzip_zip_file_internal(out_file_name, in_file_name, + in_zio_code, index_page, speedup); +} + +/* + * Internal function for zip_unzip_file() and ebzip_zip_sebxa_start(). + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +static int +ebzip_zip_file_internal(const char *out_file_name, const char *in_file_name, + Zio_Code in_zio_code, int index_page, Zip_Speedup *speedup) +{ + Zio in_zio, out_zio; + unsigned char *buffer, *in_buffer, *out_buffer; + off_t in_total_length, out_total_length; + ssize_t in_length; + size_t *out_length; + struct stat in_status, out_status; + off_t *slice_location; + off_t next_location; + size_t index_length; + int progress_interval; + int total_slices; + int i, j, k; + int failed = 0; + int slice_size = EB_SIZE_PAGE << ebzip_level; + + zio_initialize(&in_zio); + zio_initialize(&out_zio); + + /* + * Output information. + */ + if (!ebzip_quiet_flag) { + fprintf(stderr, _("==> compress %s <==\n"), in_file_name); + fprintf(stderr, _("output to %s\n"), out_file_name); + fflush(stderr); + } + + /* + * Get status of the input file. + */ + if (stat(in_file_name, &in_status) < 0 || !S_ISREG(in_status.st_mode)) { + fprintf(stderr, _("%s: no such file: %s\n"), invoked_name, + in_file_name); + goto failed; + } + + /* + * Do nothing if the `in_file_name' and `out_file_name' are the same. + */ + if (is_same_file(out_file_name, in_file_name)) { + if (!ebzip_quiet_flag) { + fprintf(stderr, + _("the input and output files are the same, skipped.\n\n")); + fflush(stderr); + } + return 0; + } + + /* + * Allocate memories for in/out buffers. + */ + buffer = (unsigned char *)malloc((slice_size * 2 + ZIO_SIZE_EBZIP_MARGIN + + sizeof(off_t) + sizeof(size_t)) * ebzip_slice_number); + if (!buffer) { + fprintf(stderr, _("%s: memory exhausted\n"), invoked_name); + goto failed; + } + + out_length = (size_t *)buffer; + slice_location = (off_t *)buffer + sizeof(size_t) * ebzip_slice_number; + in_buffer = buffer + (sizeof(size_t) + sizeof(off_t)) * ebzip_slice_number; + out_buffer = in_buffer + slice_size * ebzip_slice_number; + + /* + * If the file `out_file_name' already exists, confirm and unlink it. + */ + if (!ebzip_test_flag + && stat(out_file_name, &out_status) == 0 + && S_ISREG(out_status.st_mode)) { + if (ebzip_overwrite_mode == EBZIP_OVERWRITE_NO) { + if (!ebzip_quiet_flag) { + fputs(_("already exists, skip the file\n\n"), stderr); + fflush(stderr); + } + return 0; + } else if (ebzip_overwrite_mode == EBZIP_OVERWRITE_CONFIRM) { + int y_or_n; + + fprintf(stderr, _("\nthe file already exists: %s\n"), + out_file_name); + y_or_n = query_y_or_n(_("do you wish to overwrite (y or n)? ")); + fputc('\n', stderr); + fflush(stderr); + if (!y_or_n) + return 0; + } + if (unlink(out_file_name) < 0) { + fprintf(stderr, _("%s: failed to unlink the file: %s\n"), + invoked_name, out_file_name); + goto failed; + } + } + + /* + * Open files. + */ + if (zio_open(&in_zio, in_file_name, in_zio_code) < 0) { + fprintf(stderr, _("%s: failed to open the file: %s\n"), + invoked_name, in_file_name); + goto failed; + } + if (in_zio_code == ZIO_SEBXA) { + off_t index_location; + off_t index_base; + off_t zio_start_location; + off_t zio_end_location; + + if (get_sebxa_indexes(in_file_name, index_page, &index_location, + &index_base, &zio_start_location, &zio_end_location) < 0) { + goto failed; + } + zio_set_sebxa_mode(&in_zio, index_location, index_base, + zio_start_location, zio_end_location); + } + + if (!ebzip_test_flag) { + trap_file_name = out_file_name; +#ifdef SIGHUP + signal(SIGHUP, trap); +#endif + signal(SIGINT, trap); +#ifdef SIGQUIT + signal(SIGQUIT, trap); +#endif +#ifdef SIGTERM + signal(SIGTERM, trap); +#endif + +#ifdef O_CREAT + out_zio.file = open(out_file_name, + O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, 0666 ^ get_umask()); +#else + out_zio.file = creat(out_file_name, 0666 ^ get_umask()); +#endif + if (out_zio.file < 0) { + fprintf(stderr, _("%s: failed to open the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + trap_file = out_zio.file; + } + + /* + * Initialize `zip'. + */ + out_zio.code = ZIO_EBZIP1; + out_zio.slice_size = slice_size; + out_zio.file_size = in_zio.file_size; + out_zio.crc = 1; + out_zio.mtime = in_status.st_mtime; + + if (out_zio.file_size < (off_t) 1 << 16) + out_zio.index_width = 2; + else if (out_zio.file_size < (off_t) 1 << 24) + out_zio.index_width = 3; + else if (out_zio.file_size < (off_t) 1 << 32 || !off_t_is_large) + out_zio.index_width = 4; + else + out_zio.index_width = 5; + + /* + * Fill header and index part with `\0'. + * + * Original File: + * +-----------------+-----------------+-....-+-------+ + * | slice 1 | slice 2 | |slice N| [EOF] + * | | | | | + * +-----------------+-----------------+-....-+-------+ + * slice_size slice_size odds + * <-------------------- file size -------------------> + * + * Compressed file: + * +------+---------+...+---------+---------+----------+...+- + * |Header|index for| |index for|index for|compressed| | + * | | slice 1 | | slice N | EOF | slice 1 | | + * +------+---------+...+---------+---------+----------+...+- + * index index index + * width width width + * <--------- index_length ---------> + * + * total_slices = N = (file_size + slice_size - 1) / slice_size + * index_length = (N + 1) * index_width + */ + total_slices = (out_zio.file_size + slice_size - 1) / slice_size; + index_length = (total_slices + 1) * out_zio.index_width; + memset(out_buffer, '\0', slice_size); + + if (!ebzip_test_flag) { + for (i = index_length + ZIO_SIZE_EBZIP_HEADER; + slice_size <= i; i -= slice_size) { + if (write(out_zio.file, out_buffer, slice_size) != slice_size) { + fprintf(stderr, _("%s: failed to write to the file: %s\n"), + invoked_name, out_file_name); + goto failed; + } + } + if (0 < i) { + if (write(out_zio.file, out_buffer, i) != i) { + fprintf(stderr, _("%s: failed to write to the file: %s\n"), + invoked_name, out_file_name); + goto failed; + } + } + } + + /* + * Read a slice from the input file, compress it, and then + * write it to the output file. + */ + in_total_length = 0; + out_total_length = 0; + progress_interval = EBZIP_PROGRESS_INTERVAL_FACTOR >> ebzip_level; + if (((total_slices + 999) / 1000) > progress_interval) + progress_interval = ((total_slices + 999) / 1000); + + for (i = 0; i < total_slices; i += j) { + j = (i + ebzip_slice_number) < total_slices ? + ebzip_slice_number : total_slices - i; + + for (k = 0; k < j; k++) { + /* + * Read a slice from the original file. + */ + if (zio_lseek(&in_zio, in_total_length, SEEK_SET) < 0) { + fprintf(stderr, _("%s: failed to seek the file: %s\n"), + invoked_name, in_file_name); + goto failed; + } + in_length = zio_read(&in_zio, (char *)(in_buffer + k * slice_size), + slice_size); + if (in_length < 0) { + fprintf(stderr, _("%s: failed to read from the file: %s\n"), + invoked_name, in_file_name); + goto failed; + } else if (in_length == 0) { + fprintf(stderr, _("%s: unexpected EOF: %s\n"), + invoked_name, in_file_name); + goto failed; + } else if (in_length != slice_size + && in_total_length + in_length != out_zio.file_size) { + fprintf(stderr, _("%s: unexpected EOF: %s\n"), + invoked_name, in_file_name); + goto failed; + } + + /* + * Update CRC. (Calculate adler32 again.) + */ +#ifdef ENABLE_LIBDEFLATE + out_zio.crc = libdeflate_adler32 + ((uint32_t)out_zio.crc, in_buffer + k * slice_size, + (size_t)in_length); +#else + out_zio.crc = adler32((uLong)out_zio.crc, + (Bytef *)(in_buffer + k * slice_size), (uInt)in_length); +#endif + + /* + * If this is last slice and its length is shorter than + * `slice_size', fill `\0'. + */ + if (in_length < slice_size) { + memset(in_buffer + k * slice_size + in_length, '\0', + slice_size - in_length); + in_length = slice_size; + } + in_total_length += in_length; + } + +#pragma omp parallel for + for (k = 0; k < j; k++) { + if (!failed) { + /* + * Compress the slice. + */ + if (speedup != NULL + && ebzip_is_speedup_slice(speedup, i + k, ebzip_level)) { + out_length[k] = slice_size; + } else if (ebzip1_slice + ((char *)(out_buffer + + k * (slice_size + ZIO_SIZE_EBZIP_MARGIN)), + &out_length[k], + (char *)(in_buffer + k * slice_size), + slice_size) < 0) { + fprintf(stderr, _("%s: memory exhausted\n"), invoked_name); + failed = 1; + } + if (slice_size <= out_length[k]) { + memcpy(out_buffer + + k * (slice_size + ZIO_SIZE_EBZIP_MARGIN), + in_buffer + k * slice_size, slice_size); + out_length[k] = slice_size; + } + } + } + if (failed) goto failed; + + for (k = 0; k < j; k++) { + /* + * Write the slice to the zip file. + * If the length of the zipped slice is not shorter than + * original, write orignal slice. + */ + if (!ebzip_test_flag) { + slice_location[k] = lseek(out_zio.file, 0, SEEK_END); + if (slice_location[k] < 0) { + fprintf(stderr, _("%s: failed to seek the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + if (write(out_zio.file, out_buffer + + k * (slice_size + ZIO_SIZE_EBZIP_MARGIN), + out_length[k]) != out_length[k]) { + fprintf(stderr, _("%s: failed to write to the file: %s\n"), + invoked_name, out_file_name); + goto failed; + } + } + } + + for (k = 0; k < j; k++) { + /* + * Write an index for the slice. + */ + switch (out_zio.index_width) { + case 2: + out_buffer[ 2 * k] = (slice_location[k] >> 8) & 0xff; + out_buffer[1 + 2 * k] = slice_location[k] & 0xff; + break; + case 3: + out_buffer[ 3 * k] = (slice_location[k] >> 16) & 0xff; + out_buffer[1 + 3 * k] = (slice_location[k] >> 8) & 0xff; + out_buffer[2 + 3 * k] = slice_location[k] & 0xff; + break; + case 4: + out_buffer[ 4 * k] = (slice_location[k] >> 24) & 0xff; + out_buffer[1 + 4 * k] = (slice_location[k] >> 16) & 0xff; + out_buffer[2 + 4 * k] = (slice_location[k] >> 8) & 0xff; + out_buffer[3 + 4 * k] = slice_location[k] & 0xff; + break; + case 5: + out_buffer[ 5 * k] = (slice_location[k] >> 32) & 0xff; + out_buffer[1 + 5 * k] = (slice_location[k] >> 24) & 0xff; + out_buffer[2 + 5 * k] = (slice_location[k] >> 16) & 0xff; + out_buffer[3 + 5 * k] = (slice_location[k] >> 8) & 0xff; + out_buffer[4 + 5 * k] = slice_location[k] & 0xff; + break; + } + out_total_length += out_length[k] + out_zio.index_width; + } + + next_location = slice_location[j - 1] + out_length[j - 1]; + switch (out_zio.index_width) { + case 2: + out_buffer[ 2 * j] = (next_location >> 8) & 0xff; + out_buffer[1 + 2 * j] = next_location & 0xff; + break; + case 3: + out_buffer[ 3 * j] = (next_location >> 16) & 0xff; + out_buffer[1 + 3 * j] = (next_location >> 8) & 0xff; + out_buffer[2 + 3 * j] = next_location & 0xff; + break; + case 4: + out_buffer[ 4 * j] = (next_location >> 24) & 0xff; + out_buffer[1 + 4 * j] = (next_location >> 16) & 0xff; + out_buffer[2 + 4 * j] = (next_location >> 8) & 0xff; + out_buffer[3 + 4 * j] = next_location & 0xff; + break; + case 5: + out_buffer[ 5 * j] = (next_location >> 32) & 0xff; + out_buffer[1 + 5 * j] = (next_location >> 24) & 0xff; + out_buffer[2 + 5 * j] = (next_location >> 16) & 0xff; + out_buffer[3 + 5 * j] = (next_location >> 8) & 0xff; + out_buffer[4 + 5 * j] = next_location & 0xff; + break; + } + + if (!ebzip_test_flag) { + if (lseek(out_zio.file, + ZIO_SIZE_EBZIP_HEADER + (off_t) i * out_zio.index_width, + SEEK_SET) < 0) { + fprintf(stderr, _("%s: failed to seek the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + if (write(out_zio.file, out_buffer, out_zio.index_width * (j + 1)) + != out_zio.index_width * (j + 1)) { + fprintf(stderr, _("%s: failed to write to the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + } + + /* + * Output status information unless `quiet' mode. + */ + if (!ebzip_quiet_flag + && (j >= progress_interval + || (i + j) / progress_interval > i / progress_interval)) { +#if defined(PRINTF_LL_MODIFIER) + fprintf(stderr, _("%4.1f%% done (%llu / %llu bytes)\n"), + (double) (i + k + 1) * 100.0 / (double) total_slices, + (unsigned long long) in_total_length, + (unsigned long long) in_zio.file_size); +#elif defined(PRINTF_I64_MODIFIER) + fprintf(stderr, _("%4.1f%% done (%I64u / %I64u bytes)\n"), + (double) (i + k + 1) * 100.0 / (double) total_slices, + (unsigned __int64) in_total_length, + (unsigned __int64) in_zio.file_size); +#else + fprintf(stderr, _("%4.1f%% done (%lu / %lu bytes)\n"), + (double) (i + k + 1) * 100.0 / (double) total_slices, + (unsigned long) in_total_length, + (unsigned long) in_zio.file_size); +#endif + fflush(stderr); + } + } + + /* + * Write a header part (22 bytes): + * magic-id 5 bytes ( 0 ... 4) + * zip-mode 4/8 bytes ( 5) + * slice_size 4/8 bytes ( 5) + * (reserved) 4 bytes ( 6 ... 9) + * file_size 4 bytes (10 ... 13) + * crc 4 bytes (14 ... 17) + * mtime 4 bytes (18 ... 21) + */ + memcpy(out_buffer, "EBZip", 5); + + if (out_zio.file_size < (off_t) 1 << 32 || !off_t_is_large) + out_buffer[5] = (1 << 4) + (ebzip_level & 0x0f); + else + out_buffer[5] = (2 << 4) + (ebzip_level & 0x0f); + out_buffer[ 6] = 0; + out_buffer[ 7] = 0; + out_buffer[ 8] = 0; + out_buffer[ 9] = (out_zio.file_size >> 32) & 0xff; + out_buffer[10] = (out_zio.file_size >> 24) & 0xff; + out_buffer[11] = (out_zio.file_size >> 16) & 0xff; + out_buffer[12] = (out_zio.file_size >> 8) & 0xff; + out_buffer[13] = out_zio.file_size & 0xff; + out_buffer[14] = (out_zio.crc >> 24) & 0xff; + out_buffer[15] = (out_zio.crc >> 16) & 0xff; + out_buffer[16] = (out_zio.crc >> 8) & 0xff; + out_buffer[17] = out_zio.crc & 0xff; + out_buffer[18] = (out_zio.mtime >> 24) & 0xff; + out_buffer[19] = (out_zio.mtime >> 16) & 0xff; + out_buffer[20] = (out_zio.mtime >> 8) & 0xff; + out_buffer[21] = out_zio.mtime & 0xff; + + if (!ebzip_test_flag) { + if (lseek(out_zio.file, 0, SEEK_SET) < 0) { + fprintf(stderr, _("%s: failed to seek the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + if (write(out_zio.file, out_buffer, ZIO_SIZE_EBZIP_HEADER) + != ZIO_SIZE_EBZIP_HEADER) { + fprintf(stderr, _("%s: failed to write to the file, %s: %s\n"), + invoked_name, strerror(errno), out_file_name); + goto failed; + } + } + + /* + * Output the result information unless quiet mode. + */ + out_total_length += ZIO_SIZE_EBZIP_HEADER + out_zio.index_width; + + if (!ebzip_quiet_flag) { +#if defined(PRINTF_LL_MODIFIER) + fprintf(stderr, _("completed (%llu / %llu bytes)\n"), + (unsigned long long) in_zio.file_size, + (unsigned long long) in_zio.file_size); + if (in_total_length != 0) { + fprintf(stderr, _("%llu -> %llu bytes (%4.1f%%)\n\n"), + (unsigned long long) in_zio.file_size, + (unsigned long long) out_total_length, + (double) out_total_length * 100.0 + / (double) in_zio.file_size); + } else { + fprintf(stderr, _("%llu -> %llu bytes\n\n"), + (unsigned long long) in_zio.file_size, + (unsigned long long) out_total_length); + } +#elif defined(PRINTF_I64_MODIFIER) + fprintf(stderr, _("completed (%I64u / %I64u bytes)\n"), + (unsigned __int64) in_zio.file_size, + (unsigned __int64) in_zio.file_size); + if (in_total_length != 0) { + fprintf(stderr, _("%I64u -> %I64u bytes (%4.1f%%)\n\n"), + (unsigned __int64) in_zio.file_size, + (unsigned __int64) out_total_length, + (double) out_total_length * 100.0 / (double) in_zio.file_size); + } else { + fprintf(stderr, _("%I64u -> %I64u bytes\n\n"), + (unsigned __int64) in_zio.file_size, + (unsigned __int64) out_total_length); + } +#else + fprintf(stderr, _("completed (%lu / %lu bytes)\n"), + (unsigned long) in_zio.file_size, + (unsigned long) in_zio.file_size); + if (in_total_length != 0) { + fprintf(stderr, _("%lu -> %lu bytes (%4.1f%%)\n\n"), + (unsigned long) in_zio.file_size, + (unsigned long) out_total_length, + (double) out_total_length * 100.0 / (double) in_zio.file_size); + } else { + fprintf(stderr, _("%lu -> %lu bytes\n\n"), + (unsigned long) in_zio.file_size, + (unsigned long) out_total_length); + } +#endif + fflush(stderr); + } + + /* + * Close files. + */ + zio_close(&in_zio); + zio_finalize(&in_zio); + + if (!ebzip_test_flag) { + close(out_zio.file); + out_zio.file = -1; + zio_finalize(&out_zio); + trap_file = -1; + trap_file_name = NULL; +#ifdef SIGHUP + signal(SIGHUP, SIG_DFL); +#endif + signal(SIGINT, SIG_DFL); +#ifdef SIGQUIT + signal(SIGQUIT, SIG_DFL); +#endif +#ifdef SIGTERM + signal(SIGTERM, SIG_DFL); +#endif + } + + /* + * Delete an original file unless the keep flag is set. + */ + if (!ebzip_test_flag && !ebzip_keep_flag) + unlink_files_add(in_file_name); + + /* + * Set owner, group, permission, atime and utime of `out_zio.file'. + * We ignore return values of `chown', `chmod' and `utime'. + */ + if (!ebzip_test_flag) { + struct utimbuf utim; + + utim.actime = in_status.st_atime; + utim.modtime = in_status.st_mtime; + utime(out_file_name, &utim); + } + + /* + * Dispose memories. + */ + free(buffer); + + return 0; + + /* + * An error occurs... + */ + failed: + if (buffer) + free(buffer); + + zio_close(&in_zio); + zio_finalize(&in_zio); + + if (0 <= out_zio.file) { + close(out_zio.file); + out_zio.file = -1; + zio_finalize(&out_zio); + trap_file = -1; + trap_file_name = NULL; +#ifdef SIGHUP + signal(SIGHUP, SIG_DFL); +#endif + signal(SIGINT, SIG_DFL); +#ifdef SIGQUIT + signal(SIGQUIT, SIG_DFL); +#endif +#ifdef SIGTERM + signal(SIGTERM, SIG_DFL); +#endif + } + + fputc('\n', stderr); + fflush(stderr); + + return -1; +} + + +/* + * Signal handler. + */ +static void +trap(int signal_number) +{ + if (0 <= trap_file) + close(trap_file); + if (trap_file_name != NULL) + unlink(trap_file_name); + + exit(1); +} diff --git a/lib/ebu/ebzip/zipinfobook.c b/lib/ebu/ebzip/zipinfobook.c new file mode 100644 index 0000000..64c3971 --- /dev/null +++ b/lib/ebu/ebzip/zipinfobook.c @@ -0,0 +1,340 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" +#include "ebutils.h" + +/* + * Unexported functions. + */ +static int ebzip_zipinfo_book_eb(EB_Book *book, const char *book_path, + EB_Subbook_Code *subbook_list, int subbook_count); +static int ebzip_zipinfo_book_epwing(EB_Book *book, const char *book_path, + EB_Subbook_Code *subbook_list, int subbook_count); + + +/* + * Hints of language file names in a book. + */ +#define EB_HINT_INDEX_LANGUAGE 0 +#define EB_HINT_INDEX_LANGUAGE_EBZ 1 + +/* + * List compressed book information. + * If is succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_zipinfo_book(const char *book_path, + char subbook_name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], + int subbook_name_count) +{ + EB_Book book; + EB_Error_Code error_code; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + EB_Subbook_Code subbook_code; + int subbook_count = 0; + int result; + int i; + + eb_initialize_book(&book); + + /* + * Bind a book. + */ + error_code = eb_bind(&book, book_path); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + fflush(stderr); + return -1; + } + + /* + * For each targe subbook, convert a subbook-names to a subbook-codes. + * If no subbook is specified by `--subbook'(`-S'), set all subbooks + * as the target. + */ + if (subbook_name_count == 0) { + error_code = eb_subbook_list(&book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + fflush(stderr); + return -1; + } + } else { + for (i = 0; i < subbook_name_count; i++) { + error_code = find_subbook(&book, *(subbook_name_list + i), + &subbook_code); + if (error_code != EB_SUCCESS) { + fprintf(stderr, _("%s: unknown subbook name `%s'\n"), + invoked_name, subbook_name_list[i]); + return -1; + } + subbook_list[subbook_count++] = subbook_code; + } + } + + /* + * List compressed book information. + */ + if (book.disc_code == EB_DISC_EB) { + result = ebzip_zipinfo_book_eb(&book, book_path, subbook_list, + subbook_count); + } else { + result = ebzip_zipinfo_book_epwing(&book, book_path, subbook_list, + subbook_count); + } + + eb_finalize_book(&book); + + return result; +} + + +/* + * Internal function for `zipinfo_book'. + * This is used to list files in an EB book. + */ +static int +ebzip_zipinfo_book_eb(EB_Book *book, const char *book_path, + EB_Subbook_Code *subbook_list, int subbook_count) +{ + EB_Subbook *subbook; + EB_Error_Code error_code; + char in_path_name[PATH_MAX + 1]; + char catalog_file_name[EB_MAX_FILE_NAME_LENGTH]; + char language_file_name[EB_MAX_FILE_NAME_LENGTH]; + Zio_Code in_zio_code; + int i; + + /* + * If `book_path' represents "/", replace it to an empty string. + */ + if (strcmp(book_path, "/") == 0) + book_path++; + + /* + * Initialize variables. + */ + error_code = eb_load_all_subbooks(book); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + } + + /* + * Inspect a book. + */ + for (i = 0; i < subbook_count; i++) { + subbook = book->subbooks + subbook_list[i]; + + in_zio_code = zio_mode(&subbook->text_zio); + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->text_file_name, in_path_name); + + if (in_zio_code != ZIO_INVALID) { + ebzip_zipinfo_start_file(in_path_name, in_zio_code, + subbook->index_page); + } + } + + /* + * Inspect a language file. + */ + if (eb_find_file_name(book->path, "language", language_file_name) + == EB_SUCCESS) { + eb_compose_path_name(book->path, language_file_name, in_path_name); + eb_path_name_zio_code(in_path_name, ZIO_PLAIN, &in_zio_code); + ebzip_zipinfo_file(in_path_name, in_zio_code); + } + + /* + * Inspect CATALOG file. + */ + if (eb_find_file_name(book->path, "catalog", catalog_file_name) + == EB_SUCCESS) { + eb_compose_path_name(book->path, catalog_file_name, in_path_name); + ebzip_zipinfo_file(in_path_name, ZIO_PLAIN); + } + + return 0; +} + + +/* + * Internal function for `zipinfo_book'. + * This is used to list files in an EPWING book. + */ +static int +ebzip_zipinfo_book_epwing(EB_Book *book, const char *book_path, + EB_Subbook_Code *subbook_list, int subbook_count) +{ + EB_Subbook *subbook; + EB_Error_Code error_code; + EB_Font *font; + char in_path_name[PATH_MAX + 1]; + char in_movie_path_name[PATH_MAX + 1]; + char catalogs_file_name[EB_MAX_FILE_NAME_LENGTH]; + Zio_Code in_zio_code; + DIR *dir; + int i, j; + + /* + * If `book_path' represents "/", replace it to an empty string. + */ + if (strcmp(book_path, "/") == 0) + book_path++; + + /* + * Initialize variables. + */ + error_code = eb_load_all_subbooks(book); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: %s\n", invoked_name, + eb_error_message(error_code)); + } + + /* + * Inspect a book. + */ + for (i = 0; i < subbook_count; i++) { + subbook = book->subbooks + subbook_list[i]; + + /* + * Inspect HONMON/HONMON2 file. + */ + in_zio_code = zio_mode(&subbook->text_zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->text_file_name, + in_path_name); + if (in_zio_code != ZIO_INVALID) + ebzip_zipinfo_file(in_path_name, in_zio_code); + + /* + * Inspect HONMONS file. + */ + in_zio_code = zio_mode(&subbook->sound_zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->sound_file_name, + in_path_name); + if (!ebzip_skip_flag_sound + && in_zio_code != ZIO_INVALID + && strncasecmp(subbook->sound_file_name, "honmons", 7) == 0) + ebzip_zipinfo_file(in_path_name, in_zio_code); + + /* + * Inspect HONMONG file. + */ + in_zio_code = zio_mode(&subbook->graphic_zio); + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->data_directory_name, subbook->graphic_file_name, + in_path_name); + if (!ebzip_skip_flag_graphic + && in_zio_code != ZIO_INVALID + && strncasecmp(subbook->graphic_file_name, "honmong", 7) == 0) + ebzip_zipinfo_file(in_path_name, in_zio_code); + + if (!ebzip_skip_flag_font) { + /* + * Inspect narrow font files. + */ + for (j = 0; j < EB_MAX_FONTS; j++) { + font = subbook->narrow_fonts + j; + if (font->font_code == EB_FONT_INVALID) + continue; + + in_zio_code = zio_mode(&font->zio); + + if (in_zio_code != ZIO_INVALID) { + eb_compose_path_name3(book->path, + subbook->directory_name, subbook->gaiji_directory_name, + font->file_name, in_path_name); + ebzip_zipinfo_file(in_path_name, in_zio_code); + } + } + + /* + * Inspect wide font files. + */ + for (j = 0; j < EB_MAX_FONTS; j++) { + font = subbook->wide_fonts + j; + if (font->font_code == EB_FONT_INVALID) + continue; + + in_zio_code = zio_mode(&font->zio); + + if (in_zio_code != ZIO_INVALID) { + eb_compose_path_name3(book->path, + subbook->directory_name, subbook->gaiji_directory_name, + font->file_name, in_path_name); + ebzip_zipinfo_file(in_path_name, in_zio_code); + } + } + } + + /* + * Inspect movie files. + */ + if (!ebzip_skip_flag_movie) { + eb_compose_path_name2(book->path, subbook->directory_name, + subbook->movie_directory_name, in_movie_path_name); + dir = opendir(in_movie_path_name); + if (dir == NULL) + continue; + for (;;) { + struct dirent *entry; + struct stat st; + + entry = readdir(dir); + if (entry == NULL) + break; + eb_compose_path_name3(book->path, subbook->directory_name, + subbook->movie_directory_name, entry->d_name, + in_path_name); + if (stat(in_path_name, &st) < 0 || !S_ISREG(st.st_mode)) + continue; + eb_path_name_zio_code(in_path_name, ZIO_PLAIN, &in_zio_code); + ebzip_zipinfo_file(in_path_name, in_zio_code); + } + closedir(dir); + } + } + + /* + * Inspect CATALOGS file. + */ + if (eb_find_file_name(book->path, "catalogs", catalogs_file_name) + == EB_SUCCESS) { + eb_compose_path_name(book->path, catalogs_file_name, in_path_name); + eb_path_name_zio_code(in_path_name, ZIO_PLAIN, &in_zio_code); + ebzip_zipinfo_file(in_path_name, in_zio_code); + } + + return 0; +} diff --git a/lib/ebu/ebzip/zipinfofile.c b/lib/ebu/ebzip/zipinfofile.c new file mode 100644 index 0000000..741dede --- /dev/null +++ b/lib/ebu/ebzip/zipinfofile.c @@ -0,0 +1,185 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "ebzip.h" + +#include "samefile.h" +#include "yesno.h" + +/* + * Tricks for gettext. + */ +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define _(string) (string) +#define N_(string) (string) +#endif + +/* + * Unexported functions. + */ +static int ebzip_zipinfo_file_internal(const char *in_file_name, + Zio_Code in_zio_code, int index_page); + + +/* + * Output status of a file `in_file_name'. + * For START file, use ebzip_zipinfo_start_file() instead. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_zipinfo_file(const char *in_file_name, Zio_Code in_zio_code) +{ + return ebzip_zipinfo_file_internal(in_file_name, in_zio_code, 0); +} + +/* + * Output status of START file `in_file_name'. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +int +ebzip_zipinfo_start_file(const char *in_file_name, Zio_Code in_zio_code, + int index_page) +{ + return ebzip_zipinfo_file_internal(in_file_name, in_zio_code, index_page); +} + +/* + * Output status of a file `file_name'. + * If it succeeds, 0 is returned. Otherwise -1 is returned. + */ +static int +ebzip_zipinfo_file_internal(const char *in_file_name, Zio_Code in_zio_code, + int index_page) +{ + Zio in_zio; + int in_file = -1; + struct stat in_status; + + /* + * Output file name information. + */ + printf("==> %s <==\n", in_file_name); + fflush(stdout); + + /* + * Open the file. + */ + zio_initialize(&in_zio); + if (stat(in_file_name, &in_status) == 0 && S_ISREG(in_status.st_mode)) + in_file = zio_open(&in_zio, in_file_name, in_zio_code); + + if (in_file < 0) { + fprintf(stderr, _("%s: failed to open the file: %s\n"), + invoked_name, in_file_name); + goto failed; + } + if (in_zio_code == ZIO_SEBXA) { + off_t index_location; + off_t index_base; + off_t zio_start_location; + off_t zio_end_location; + + if (get_sebxa_indexes(in_file_name, index_page, &index_location, + &index_base, &zio_start_location, &zio_end_location) < 0) { + goto failed; + } + zio_set_sebxa_mode(&in_zio, index_location, index_base, + zio_start_location, zio_end_location); + } + + /* + * Close the file. + */ + zio_close(&in_zio); + + /* + * Output information. + */ + if (in_zio.code == ZIO_PLAIN) { +#if defined(PRINTF_LL_MODIFIER) + printf(_("%llu bytes (not compressed)\n"), + (unsigned long long) in_status.st_size); +#elif defined(PRINTF_I64_MODIFIER) + printf(_("%I64u bytes (not compressed)\n"), + (unsigned __int64) in_status.st_size); +#else + printf(_("%lu bytes (not compressed)\n"), + (unsigned long) in_status.st_size); +#endif + } else { +#if defined(PRINTF_LL_MODIFIER) + printf(_("%llu -> %llu bytes "), + (unsigned long long) in_zio.file_size, + (unsigned long long) in_status.st_size); +#elif defined(PRINTF_I64_MODIFIER) + printf(_("%I64u -> %I64u bytes "), + (unsigned __int64) in_zio.file_size, + (unsigned __int64) in_status.st_size); +#else + printf(_("%lu -> %lu bytes "), + (unsigned long) in_zio.file_size, + (unsigned long) in_status.st_size); +#endif + if (in_zio.file_size == 0) + fputs(_("(empty original file, "), stdout); + else { + printf("(%4.1f%%, ", (double)in_status.st_size * 100.0 + / (double)in_zio.file_size); + } + if (in_zio.code == ZIO_EBZIP1) + printf(_("ebzip level %d compression)\n"), in_zio.zip_level); + else if (in_zio.code == ZIO_SEBXA) + printf(_("S-EBXA compression)\n")); + else + printf(_("EPWING compression)\n")); + } + + fputc('\n', stdout); + fflush(stdout); + + return 0; + + /* + * An error occurs... + */ + failed: + if (0 <= in_file) + close(in_file); + + fputc('\n', stderr); + fflush(stderr); + + return -1; +} diff --git a/lib/ebu/install-sh b/lib/ebu/install-sh new file mode 100644 index 0000000..6781b98 --- /dev/null +++ b/lib/ebu/install-sh @@ -0,0 +1,520 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2009-04-28.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# 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. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # 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 $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/lib/ebu/libebutils/.deps/ebutils.Po b/lib/ebu/libebutils/.deps/ebutils.Po new file mode 100644 index 0000000..d3dc48a --- /dev/null +++ b/lib/ebu/libebutils/.deps/ebutils.Po @@ -0,0 +1,214 @@ +ebutils.o: ebutils.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/include/libintl.h ../ebu/eb.h ../ebu/defs.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h ../ebu/sysdefs.h \ + ../ebu/zio.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + ../ebu/error.h ebutils.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/libintl.h: + +../ebu/eb.h: + +../ebu/defs.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +../ebu/sysdefs.h: + +../ebu/zio.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +../ebu/error.h: + +ebutils.h: diff --git a/lib/ebu/libebutils/.deps/getopt.Po b/lib/ebu/libebutils/.deps/getopt.Po new file mode 100644 index 0000000..67a2d86 --- /dev/null +++ b/lib/ebu/libebutils/.deps/getopt.Po @@ -0,0 +1,195 @@ +getopt.o: getopt.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + getopt.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +getopt.h: diff --git a/lib/ebu/libebutils/.deps/getumask.Po b/lib/ebu/libebutils/.deps/getumask.Po new file mode 100644 index 0000000..0c5f53a --- /dev/null +++ b/lib/ebu/libebutils/.deps/getumask.Po @@ -0,0 +1,134 @@ +getumask.o: getumask.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: diff --git a/lib/ebu/libebutils/.deps/makedir.Po b/lib/ebu/libebutils/.deps/makedir.Po new file mode 100644 index 0000000..1d23b5f --- /dev/null +++ b/lib/ebu/libebutils/.deps/makedir.Po @@ -0,0 +1,150 @@ +makedir.o: makedir.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: diff --git a/lib/ebu/libebutils/.deps/puts_eucjp.Po b/lib/ebu/libebutils/.deps/puts_eucjp.Po new file mode 100644 index 0000000..48c5400 --- /dev/null +++ b/lib/ebu/libebutils/.deps/puts_eucjp.Po @@ -0,0 +1,212 @@ +puts_eucjp.o: puts_eucjp.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/iconv.h \ + /usr/include/langinfo.h /usr/include/nl_types.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/iconv.h: + +/usr/include/langinfo.h: + +/usr/include/nl_types.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: diff --git a/lib/ebu/libebutils/.deps/samefile.Po b/lib/ebu/libebutils/.deps/samefile.Po new file mode 100644 index 0000000..47f2621 --- /dev/null +++ b/lib/ebu/libebutils/.deps/samefile.Po @@ -0,0 +1,150 @@ +samefile.o: samefile.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: diff --git a/lib/ebu/libebutils/.deps/strcasecmp.Po b/lib/ebu/libebutils/.deps/strcasecmp.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/lib/ebu/libebutils/.deps/strcasecmp.Po @@ -0,0 +1 @@ +# dummy diff --git a/lib/ebu/libebutils/.deps/strlist.Po b/lib/ebu/libebutils/.deps/strlist.Po new file mode 100644 index 0000000..3038f05 --- /dev/null +++ b/lib/ebu/libebutils/.deps/strlist.Po @@ -0,0 +1,188 @@ +strlist.o: strlist.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h strlist.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: + +strlist.h: diff --git a/lib/ebu/libebutils/.deps/yesno.Po b/lib/ebu/libebutils/.deps/yesno.Po new file mode 100644 index 0000000..0bac896 --- /dev/null +++ b/lib/ebu/libebutils/.deps/yesno.Po @@ -0,0 +1,161 @@ +yesno.o: yesno.c /usr/include/stdc-predef.h ../config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h + +/usr/include/stdc-predef.h: + +../config.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/timesize.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/time64.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endianness.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: + +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: + +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: diff --git a/lib/ebu/libebutils/Makefile b/lib/ebu/libebutils/Makefile new file mode 100644 index 0000000..10cd65b --- /dev/null +++ b/lib/ebu/libebutils/Makefile @@ -0,0 +1,525 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# libebutils/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = libebutils +DIST_COMMON = $(dist_noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in strcasecmp.c +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +libebutils_a_AR = $(AR) $(ARFLAGS) +libebutils_a_DEPENDENCIES = +am_libebutils_a_OBJECTS = ebutils.$(OBJEXT) getopt.$(OBJEXT) \ + getumask.$(OBJEXT) makedir.$(OBJEXT) puts_eucjp.$(OBJEXT) \ + samefile.$(OBJEXT) strlist.$(OBJEXT) yesno.$(OBJEXT) +libebutils_a_OBJECTS = $(am_libebutils_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libebutils_a_SOURCES) +DIST_SOURCES = $(libebutils_a_SOURCES) +HEADERS = $(dist_noinst_HEADERS) $(nodist_noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu/libebutils +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu/libebutils +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +noinst_LIBRARIES = libebutils.a +libebutils_a_SOURCES = ebutils.c getopt.c getumask.c makedir.c puts_eucjp.c \ + samefile.c strlist.c yesno.c + +libebutils_a_LIBADD = +dist_noinst_HEADERS = getopt.h getumask.h makedir.h samefile.h strlist.h \ + yesno.h + +nodist_noinst_HEADERS = ebutils.h +EXTRA_DIST = getopt_long.pl ebutils.h.in +CLEANFILES = stamp-ebutils-h ebutils.h +BUILT_SOURCES = ebutils.h +INCLUDES = -I$(top_srcdir) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libebutils/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu libebutils/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libebutils.a: $(libebutils_a_OBJECTS) $(libebutils_a_DEPENDENCIES) + -rm -f libebutils.a + $(libebutils_a_AR) libebutils.a $(libebutils_a_OBJECTS) $(libebutils_a_LIBADD) + $(RANLIB) libebutils.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include $(DEPDIR)/strcasecmp.Po +include ./$(DEPDIR)/ebutils.Po +include ./$(DEPDIR)/getopt.Po +include ./$(DEPDIR)/getumask.Po +include ./$(DEPDIR)/makedir.Po +include ./$(DEPDIR)/puts_eucjp.Po +include ./$(DEPDIR)/samefile.Po +include ./$(DEPDIR)/strlist.Po +include ./$(DEPDIR)/yesno.Po + +.c.o: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LIBRARIES) $(HEADERS) +installdirs: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +ebutils.h: stamp-ebutils-h +stamp-ebutils-h: ebutils.h.in Makefile + rm -f ebutils.h.tmp + echo '/* automatically generated from ebutils.h.in. */' \ + > ebutils.h.tmp + sed -e 's;\@localedir\@;$(localedir);' \ + $(srcdir)/ebutils.h.in >> ebutils.h.tmp + $(top_srcdir)/move-if-change ebutils.h.tmp ebutils.h + @echo timestamp > stamp-ebutils-h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/libebutils/Makefile.am b/lib/ebu/libebutils/Makefile.am new file mode 100644 index 0000000..9d0791f --- /dev/null +++ b/lib/ebu/libebutils/Makefile.am @@ -0,0 +1,24 @@ +noinst_LIBRARIES = libebutils.a +libebutils_a_SOURCES = ebutils.c getopt.c getumask.c makedir.c puts_eucjp.c \ + samefile.c strlist.c yesno.c +libebutils_a_LIBADD = @LIBOBJS@ + +dist_noinst_HEADERS = getopt.h getumask.h makedir.h samefile.h strlist.h \ + yesno.h +nodist_noinst_HEADERS = ebutils.h + +EXTRA_DIST = getopt_long.pl ebutils.h.in +CLEANFILES = stamp-ebutils-h ebutils.h +BUILT_SOURCES = ebutils.h + +INCLUDES = -I$(top_srcdir) @INTLINCS@ @ICONVINCS@ + +ebutils.h: stamp-ebutils-h +stamp-ebutils-h: ebutils.h.in Makefile + rm -f ebutils.h.tmp + echo '/* automatically generated from ebutils.h.in. */' \ + > ebutils.h.tmp + sed -e 's;\@localedir\@;$(localedir);' \ + $(srcdir)/ebutils.h.in >> ebutils.h.tmp + $(top_srcdir)/move-if-change ebutils.h.tmp ebutils.h + @echo timestamp > stamp-ebutils-h diff --git a/lib/ebu/libebutils/Makefile.in b/lib/ebu/libebutils/Makefile.in new file mode 100644 index 0000000..cdc2af3 --- /dev/null +++ b/lib/ebu/libebutils/Makefile.in @@ -0,0 +1,525 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = libebutils +DIST_COMMON = $(dist_noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in strcasecmp.c +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +libebutils_a_AR = $(AR) $(ARFLAGS) +libebutils_a_DEPENDENCIES = @LIBOBJS@ +am_libebutils_a_OBJECTS = ebutils.$(OBJEXT) getopt.$(OBJEXT) \ + getumask.$(OBJEXT) makedir.$(OBJEXT) puts_eucjp.$(OBJEXT) \ + samefile.$(OBJEXT) strlist.$(OBJEXT) yesno.$(OBJEXT) +libebutils_a_OBJECTS = $(am_libebutils_a_OBJECTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libebutils_a_SOURCES) +DIST_SOURCES = $(libebutils_a_SOURCES) +HEADERS = $(dist_noinst_HEADERS) $(nodist_noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LIBRARIES = libebutils.a +libebutils_a_SOURCES = ebutils.c getopt.c getumask.c makedir.c puts_eucjp.c \ + samefile.c strlist.c yesno.c + +libebutils_a_LIBADD = @LIBOBJS@ +dist_noinst_HEADERS = getopt.h getumask.h makedir.h samefile.h strlist.h \ + yesno.h + +nodist_noinst_HEADERS = ebutils.h +EXTRA_DIST = getopt_long.pl ebutils.h.in +CLEANFILES = stamp-ebutils-h ebutils.h +BUILT_SOURCES = ebutils.h +INCLUDES = -I$(top_srcdir) @INTLINCS@ @ICONVINCS@ +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libebutils/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu libebutils/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libebutils.a: $(libebutils_a_OBJECTS) $(libebutils_a_DEPENDENCIES) + -rm -f libebutils.a + $(libebutils_a_AR) libebutils.a $(libebutils_a_OBJECTS) $(libebutils_a_LIBADD) + $(RANLIB) libebutils.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcasecmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebutils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getumask.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/makedir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/puts_eucjp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/samefile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strlist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LIBRARIES) $(HEADERS) +installdirs: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +ebutils.h: stamp-ebutils-h +stamp-ebutils-h: ebutils.h.in Makefile + rm -f ebutils.h.tmp + echo '/* automatically generated from ebutils.h.in. */' \ + > ebutils.h.tmp + sed -e 's;\@localedir\@;$(localedir);' \ + $(srcdir)/ebutils.h.in >> ebutils.h.tmp + $(top_srcdir)/move-if-change ebutils.h.tmp ebutils.h + @echo timestamp > stamp-ebutils-h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/libebutils/ebutils.c b/lib/ebu/libebutils/ebutils.c new file mode 100644 index 0000000..ccea17a --- /dev/null +++ b/lib/ebu/libebutils/ebutils.c @@ -0,0 +1,353 @@ +/* -*- C -*- + * Copyright (c) 1997-2006 Motoyuki Kasahara + * Copyright (c) 2008-2013 Kazuhiro Ito + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#ifdef ENABLE_NLS +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#endif + +#ifndef HAVE_STRCASECMP +int strcasecmp(const char *, const char *); +int strncasecmp(const char *, const char *, size_t); +#endif + +/* + * The maximum length of path name. + */ +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else /* not MAXPATHLEN */ +#define PATH_MAX 1024 +#endif /* not MAXPATHLEN */ +#endif /* not PATH_MAX */ + +#include "ebu/eb.h" +#include "ebu/error.h" +#include "ebutils.h" + +/* + * Test whether `off_t' represents a large integer. + */ +#define off_t_is_large \ + ((((off_t) 1 << 41) + ((off_t) 1 << 40) + 1) % 9999991 == 7852006) + +/* + * Tricks for gettext. + */ +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define _(string) (string) +#define N_(string) (string) +#endif + +/* + * Character type tests and conversions. + */ +#define ASCII_ISDIGIT(c) ('0' <= (c) && (c) <= '9') +#define ASCII_ISUPPER(c) ('A' <= (c) && (c) <= 'Z') +#define ASCII_ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define ASCII_ISALPHA(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c)) +#define ASCII_ISALNUM(c) \ + (ASCII_ISUPPER(c) || ASCII_ISLOWER(c) || ASCII_ISDIGIT(c)) +#define ASCII_ISXDIGIT(c) \ + (ASCII_ISDIGIT(c) || ('A' <= (c) && (c) <= 'F') || ('a' <= (c) && (c) <= 'f')) +#define ASCII_TOUPPER(c) (('a' <= (c) && (c) <= 'z') ? (c) - 0x20 : (c)) +#define ASCII_TOLOWER(c) (('A' <= (c) && (c) <= 'Z') ? (c) + 0x20 : (c)) + +#if defined(DOS_FILE_PATH) && defined(HAVE_MBSTRING_H) +/* path may contain double-byte chars in SJIS. */ +#include +#define strchr _mbschr +#define strrchr _mbsrchr +#endif + +/* + * Output ``try ...'' message to standard error. + */ +void +output_try_help(const char *invoked_name) +{ + fprintf(stderr, _("try `%s --help' for more information\n"), invoked_name); + fflush(stderr); +} + + +/* + * Output version number to stdandard out. + */ +void +output_version(const char *program_name, const char *program_version) +{ + int tmp = 0; + + printf("%s (EB Library with UTF-8 support) version %s\n", program_name, program_version); + printf("Features:"); + if off_t_is_large { + printf(" LARGEFILE"); + tmp = 1; + } +#ifdef ENABLE_PTHREAD + if (tmp) + printf(", "); + else + printf(" "); + printf("PTHREAD"); + tmp = 1; +#endif +#ifdef ENABLE_EBNET + if (tmp) + printf(", "); + else + printf(" "); + printf("EBNET"); + tmp = 1; +#endif +#ifdef ENABLE_IPV6 + if (tmp) + printf(", "); + else + printf(" "); + printf("IPV6"); + tmp = 1; +#endif +#ifdef ENABLE_WINSOCK2 + if (tmp) + printf(", "); + else + printf(" "); + printf("WINSOCK2"); + tmp = 1; +#endif +#ifdef ENABLE_NLS + if (tmp) + printf(", "); + else + printf(" "); + printf("NLS"); + tmp = 1; +#endif +#ifdef ENABLE_LIBDEFLATE + if (tmp) + printf(", "); + else + printf(" "); + printf("LIBDEFLATE"); + tmp = 1; +#endif + printf("\n"); + printf("Copyright (c) 1997-2006 Motoyuki Kasahara\n"); + printf("Copyright (c) 2008-2019 Kazuhiro Ito\n"); + fflush(stdout); +} + + +/* + * Parse an argument to option `--subbook (-S)'. + * If the argument is valid form, 0 is returned. + * Otherwise -1 is returned. + */ +int +parse_subbook_name_argument(const char *invoked_name, const char *argument, + char name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], int *name_count) +{ + const char *argument_p = argument; + char name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + char *name_p; + int i; + + while (*argument_p != '\0') { + /* + * Check current `name_count'. + */ + if (EB_MAX_SUBBOOKS <= *name_count) { + fprintf(stderr, _("%s: too many subbooks\n"), invoked_name); + fflush(stderr); + return -1; + } + + /* + * Take a next element in the argument. + */ + i = 0; + name_p = name; + while (*argument_p != ',' && *argument_p != '\0' + && i < EB_MAX_DIRECTORY_NAME_LENGTH) { + *name_p = ASCII_TOLOWER(*argument_p); + i++; + name_p++; + argument_p++; + } + *name_p = '\0'; + if (*argument_p == ',') + argument_p++; + else if (*argument_p != '\0') { + fprintf(stderr, _("%s: invalid subbook name `%s...'\n"), + invoked_name, name); + fflush(stderr); + return -1; + } + + /* + * If the subbook name is not found in the subbook name list, + * it is added to the list. + */ + for (i = 0; i < *name_count; i++) { + if (strcmp(name, name_list[i]) == 0) + break; + } + if (*name_count <= i) { + strcpy(name_list[i], name); + (*name_count)++; + } + } + + return 0; +} + + +/* + * Find a subbook-code of the subbook whose directory name is `directory'. + * When no sub-book is matched', EB_ERR_NO_SUCH_SUB is returned. + */ +EB_Subbook_Code +find_subbook(EB_Book *book, const char *directory, + EB_Subbook_Code *subbook_code) +{ + EB_Error_Code error_code; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + char directory2[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; + int subbook_count; + int i; + + /* + * Find the subbook in the current book. + */ + error_code = eb_subbook_list(book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + *subbook_code = EB_SUBBOOK_INVALID; + return EB_ERR_NO_SUCH_SUB; + } + for (i = 0; i < subbook_count; i++) { + error_code = eb_subbook_directory2(book, subbook_list[i], directory2); + if (error_code != EB_SUCCESS) + continue; + if (strcasecmp(directory, directory2) == 0) { + *subbook_code = subbook_list[i]; + return EB_SUCCESS; + } + } + + *subbook_code = EB_SUBBOOK_INVALID; + return EB_ERR_NO_SUCH_SUB; +} + + +#ifndef DOS_FILE_PATH + +/* + * Canonicalize `path' (UNIX version). + * It eliminaes `/' at the tail of `path' unless `path' is not "/". + */ +void +canonicalize_path(char *path) +{ + char *last_slash; + + last_slash = strrchr(path, '/'); + if (last_slash == NULL || *(last_slash + 1) != '\0') + return; + + if (last_slash != path) + *last_slash = '\0'; +} + +#else /* DOS_FILE_PATH */ + +/* + * Canonicalize `path' (DOS version). + * It eliminaes `\' at the tail of `path' unless `path' is not "X:\". + */ +void +canonicalize_path(char *path) +{ + char *slash; + char *last_backslash; + + /* + * Replace `/' with `\\'. + */ + slash = path; + for (;;) { + slash = strchr(slash, '/'); + if (slash == NULL) + break; + *slash++ = '\\'; + } + + last_backslash = strrchr(path, '\\'); + if (last_backslash == NULL || *(last_backslash + 1) != '\0') + return; + + /* + * Eliminate `\' in the tail of the path. + */ + if (ASCII_ISALPHA(*path) && *(path + 1) == ':') { + if (last_backslash != path + 2) + *last_backslash = '\0'; + } else if (*path == '\\' && *(path + 1) == '\\') { + if (last_backslash != path + 1) + *last_backslash = '\0'; + } else if (*path == '\\') { + if (last_backslash != path) + *last_backslash = '\0'; + } else { + *last_backslash = '\0'; + } +} + +#endif /* DOS_FILE_PATH */ + diff --git a/lib/ebu/libebutils/ebutils.h b/lib/ebu/libebutils/ebutils.h new file mode 100644 index 0000000..4ad40ac --- /dev/null +++ b/lib/ebu/libebutils/ebutils.h @@ -0,0 +1,69 @@ +/* automatically generated from ebutils.h.in. */ +/* -*- C -*- + * Copyright (c) 2000-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EBUTILS_H +#define EBUTILS_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "ebu/eb.h" + +/* + * Text domain name for message catalog. + */ +#define TEXT_DOMAIN_NAME "ebuutils" + +/* + * Path to the locale directory. + */ +#ifndef WIN32 +#define LOCALEDIR "/usr/local/share/locale" +#else +#define LOCALEDIR localedir() +#endif + +/* + * Function declarations. + */ +/* ebutils.c */ +void output_try_help(const char *invoked_name); +void output_version(const char *program_name, const char *program_version); +int parse_subbook_name_argument(const char *invoked_name, const char *argument, + char name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], int *name_count); +EB_Subbook_Code find_subbook(EB_Book *book, const char *directory, + EB_Subbook_Code *subbook_code); +void canonicalize_path(char *path); + +/* puts_eucjp.c */ +int fputs_eucjp_to_locale(const char *string, FILE *stream); +int puts_eucjp_to_locale(const char *string); + +#endif /* not EBUTILS_H */ diff --git a/lib/ebu/libebutils/ebutils.h.in b/lib/ebu/libebutils/ebutils.h.in new file mode 100644 index 0000000..9bb8d93 --- /dev/null +++ b/lib/ebu/libebutils/ebutils.h.in @@ -0,0 +1,68 @@ +/* -*- C -*- + * Copyright (c) 2000-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef EBUTILS_H +#define EBUTILS_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "ebu/eb.h" + +/* + * Text domain name for message catalog. + */ +#define TEXT_DOMAIN_NAME "ebuutils" + +/* + * Path to the locale directory. + */ +#ifndef WIN32 +#define LOCALEDIR "@localedir@" +#else +#define LOCALEDIR localedir() +#endif + +/* + * Function declarations. + */ +/* ebutils.c */ +void output_try_help(const char *invoked_name); +void output_version(const char *program_name, const char *program_version); +int parse_subbook_name_argument(const char *invoked_name, const char *argument, + char name_list[][EB_MAX_DIRECTORY_NAME_LENGTH + 1], int *name_count); +EB_Subbook_Code find_subbook(EB_Book *book, const char *directory, + EB_Subbook_Code *subbook_code); +void canonicalize_path(char *path); + +/* puts_eucjp.c */ +int fputs_eucjp_to_locale(const char *string, FILE *stream); +int puts_eucjp_to_locale(const char *string); + +#endif /* not EBUTILS_H */ diff --git a/lib/ebu/libebutils/getopt.c b/lib/ebu/libebutils/getopt.c new file mode 100644 index 0000000..785574a --- /dev/null +++ b/lib/ebu/libebutils/getopt.c @@ -0,0 +1,480 @@ +/* $NetBSD: getopt_long.c,v 1.11.2.1 2001/10/08 20:21:09 nathanw Exp $ */ + +/*- + * Copyright (c) 2000 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Dieter Baron and Thomas Klausner. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include + +#ifdef ENABLE_NLS +#include +#endif + +#ifdef ENABLE_NLS +#define _(string) gettext(string) +#ifdef gettext_noop +#define N_(string) gettext_noop(string) +#else +#define N_(string) (string) +#endif +#else +#define gettext(string) (string) +#define _(string) (string) +#define N_(string) (string) +#endif + +#include + +#ifdef REPLACE_GETOPT +int opterr = 1; /* if error message should be printed */ +int optind = 1; /* index into parent argv vector */ +int optopt = '?'; /* character checked for validity */ +char *optarg; /* argument associated with option */ +#endif + +#define IGNORE_FIRST (*options == '-' || *options == '+') +#define PRINT_ERROR ((opterr) && ((*options != ':') \ + || (IGNORE_FIRST && options[1] != ':'))) +#define IS_POSIXLY_CORRECT (getenv("POSIXLY_CORRECT") != NULL) +#define PERMUTE (!IS_POSIXLY_CORRECT && !IGNORE_FIRST) +/* XXX: GNU ignores PC if *options == '-' */ +#define IN_ORDER (!IS_POSIXLY_CORRECT && *options == '-') + +/* return values */ +#define BADCH (int)'?' +#define BADARG ((IGNORE_FIRST && options[1] == ':') \ + || (*options == ':') ? (int)':' : (int)'?') +#define INORDER (int)1 + +#define EMSG "" + +extern char *getenv(); + +static int getopt_internal(int nargc, char * const *nargv, + const char *options); +static int gcd(int a, int b); +static void permute_args(int nonopt_start, int nonopt_end, int opt_end, + char * const *nargv); + +static char *place = EMSG; /* option letter processing */ + +static int nonopt_start = -1; /* first non option argument (for permute) */ +static int nonopt_end = -1; /* first option after non options (for permute) */ + +/* Error messages */ +static const char *recargchar + = N_("%s: option requires an argument -- %c\n"); +static const char *recargstring + = N_("%s: option `%.*s' requires an argument\n"); +static const char *ambig + = N_("%s: option `--%.*s' is ambiguous\n"); +static const char *noarg + = N_("%s: option `--%.*s' doesn't allow an argument\n"); +static const char *illopt + = N_("%s: illegal option -- %c\n"); +static const char *invopt + = N_("%s: invalid option -- %c\n"); +static const char *unrec + = N_("%s: unrecognized option `--%.*s'\n"); + + +/* + * Compute the greatest common divisor of a and b. + */ +static int +gcd(int a, int b) +{ + int c; + + c = a % b; + while (c != 0) { + a = b; + b = c; + c = a % b; + } + + return b; +} + +/* + * Exchange the block from nonopt_start to nonopt_end with the block + * from nonopt_end to opt_end (keeping the same order of arguments + * in each block). + */ +static void +permute_args(int nonopt_start, int nonopt_end, int opt_end, + char * const *nargv) +{ + int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos; + char *swap; + + /* + * compute lengths of blocks and number and size of cycles + */ + nnonopts = nonopt_end - nonopt_start; + nopts = opt_end - nonopt_end; + ncycle = gcd(nnonopts, nopts); + cyclelen = (opt_end - nonopt_start) / ncycle; + + for (i = 0; i < ncycle; i++) { + cstart = nonopt_end+i; + pos = cstart; + for (j = 0; j < cyclelen; j++) { + if (pos >= nonopt_end) + pos -= nnonopts; + else + pos += nopts; + swap = nargv[pos]; + /* LINTED const cast */ + ((char **) nargv)[pos] = nargv[cstart]; + /* LINTED const cast */ + ((char **)nargv)[cstart] = swap; + } + } +} + +/* + * getopt_internal -- + * Parse argc/argv argument vector. Called by user level routines. + * Returns -2 if -- is found (can be long option or end of options marker). + */ +static int +getopt_internal(int nargc, char * const *nargv, const char *options) +{ + char *oli; /* option letter list index */ + int optchar; + + optarg = NULL; + + /* + * XXX Some programs (like rsyncd) expect to be able to + * XXX re-initialize optind to 0 and have getopt_long(3) + * XXX properly function again. Work around this braindamage. + */ + if (optind == 0) + optind = 1; + +start: + if (!*place) { /* update scanning pointer */ + if (optind >= nargc) { /* end of argument vector */ + place = EMSG; + if (nonopt_end != -1) { + /* do permutation, if we have to */ + permute_args(nonopt_start, nonopt_end, + optind, nargv); + optind -= nonopt_end - nonopt_start; + } + else if (nonopt_start != -1) { + /* + * If we skipped non-options, set optind + * to the first of them. + */ + optind = nonopt_start; + } + nonopt_start = nonopt_end = -1; + return -1; + } + if ((*(place = nargv[optind]) != '-') + || (place[1] == '\0')) { /* found non-option */ + place = EMSG; + if (IN_ORDER) { + /* + * GNU extension: + * return non-option as argument to option 1 + */ + optarg = nargv[optind++]; + return INORDER; + } + if (!PERMUTE) { + /* + * if no permutation wanted, stop parsing + * at first non-option + */ + return -1; + } + /* do permutation */ + if (nonopt_start == -1) + nonopt_start = optind; + else if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, + optind, nargv); + nonopt_start = optind - + (nonopt_end - nonopt_start); + nonopt_end = -1; + } + optind++; + /* process next argument */ + goto start; + } + if (nonopt_start != -1 && nonopt_end == -1) + nonopt_end = optind; + if (place[1] && *++place == '-') { /* found "--" */ + place++; + return -2; + } + } + if ((optchar = (int)*place++) == (int)':' || + (oli = strchr(options + (IGNORE_FIRST ? 1 : 0), optchar)) == NULL) { + /* option letter unknown or ':' */ + if (!*place) + ++optind; + if (PRINT_ERROR) { + if (IS_POSIXLY_CORRECT) + fprintf(stderr, gettext(illopt), nargv[0], + optchar); + else + fprintf(stderr, gettext(invopt), nargv[0], + optchar); + } + optopt = optchar; + return BADCH; + } + if (optchar == 'W' && oli[1] == ';') { /* -W long-option */ + /* XXX: what if no long options provided (called by getopt)? */ + if (*place) + return -2; + + if (++optind >= nargc) { /* no arg */ + place = EMSG; + if (PRINT_ERROR) + fprintf(stderr, gettext(recargchar), nargv[0], + optchar); + optopt = optchar; + return BADARG; + } else /* white space */ + place = nargv[optind]; + /* + * Handle -W arg the same as --arg (which causes getopt to + * stop parsing). + */ + return -2; + } + if (*++oli != ':') { /* doesn't take argument */ + if (!*place) + ++optind; + } else { /* takes (optional) argument */ + optarg = NULL; + if (*place) /* no white space */ + optarg = place; + /* XXX: disable test for :: if PC? (GNU doesn't) */ + else if (oli[1] != ':') { /* arg not optional */ + if (++optind >= nargc) { /* no arg */ + place = EMSG; + if (PRINT_ERROR) + fprintf(stderr, gettext(recargchar), + nargv[0], optchar); + optopt = optchar; + return BADARG; + } else + optarg = nargv[optind]; + } + place = EMSG; + ++optind; + } + /* dump back option letter */ + return optchar; +} + +#ifdef REPLACE_GETOPT +/* + * getopt -- + * Parse argc/argv argument vector. + * + * [eventually this will replace the real getopt] + */ +int +getopt(int nargc, char * const *nargv, const char *options) +{ + int retval; + + if ((retval = getopt_internal(nargc, nargv, options)) == -2) { + ++optind; + /* + * We found an option (--), so if we skipped non-options, + * we have to permute. + */ + if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, optind, + nargv); + optind -= nonopt_end - nonopt_start; + } + nonopt_start = nonopt_end = -1; + retval = -1; + } + return retval; +} +#endif + +/* + * getopt_long -- + * Parse argc/argv argument vector. + */ +int +getopt_long(int nargc, char * const *nargv, const char *options, + const struct option *long_options, int *idx) +{ + int retval; + + if ((retval = getopt_internal(nargc, nargv, options)) == -2) { + char *current_argv, *has_equal; + size_t current_argv_len; + int i, match; + + current_argv = place; + match = -1; + + optind++; + place = EMSG; + + if (*current_argv == '\0') { /* found "--" */ + /* + * We found an option (--), so if we skipped + * non-options, we have to permute. + */ + if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, + optind, nargv); + optind -= nonopt_end - nonopt_start; + } + nonopt_start = nonopt_end = -1; + return -1; + } + if ((has_equal = strchr(current_argv, '=')) != NULL) { + /* argument found (--option=arg) */ + current_argv_len = has_equal - current_argv; + has_equal++; + } else + current_argv_len = strlen(current_argv); + + for (i = 0; long_options[i].name; i++) { + /* find matching long option */ + if (strncmp(current_argv, long_options[i].name, + current_argv_len)) + continue; + + if (strlen(long_options[i].name) == + (unsigned)current_argv_len) { + /* exact match */ + match = i; + break; + } + if (match == -1) /* partial match */ + match = i; + else { + /* ambiguous abbreviation */ + if (PRINT_ERROR) + fprintf(stderr, gettext(ambig), + nargv[0], (int)current_argv_len, + current_argv); + optopt = 0; + return BADCH; + } + } + if (match != -1) { /* option found */ + if (long_options[match].has_arg == no_argument + && has_equal) { + if (PRINT_ERROR) + fprintf(stderr, + gettext(noarg), nargv[0], + strlen(long_options[match].name), + long_options[match].name); + /* + * XXX: GNU sets optopt to val regardless of + * flag + */ + if (long_options[match].flag == NULL) + optopt = long_options[match].val; + else + optopt = 0; + return BADARG; + } + if (long_options[match].has_arg == required_argument || + long_options[match].has_arg == optional_argument) { + if (has_equal) + optarg = has_equal; + else if (long_options[match].has_arg == + required_argument) { + /* + * optional argument doesn't use + * next nargv + */ + optarg = nargv[optind++]; + } + } + if ((long_options[match].has_arg == required_argument) + && (optarg == NULL)) { + /* + * Missing argument; leading ':' + * indicates no error should be generated + */ + if (PRINT_ERROR) + fprintf(stderr, gettext(recargstring), + nargv[0], (int)current_argv_len, + current_argv); + /* + * XXX: GNU sets optopt to val regardless + * of flag + */ + if (long_options[match].flag == NULL) + optopt = long_options[match].val; + else + optopt = 0; + --optind; + return BADARG; + } + } else { /* unknown option */ + if (PRINT_ERROR) + fprintf(stderr, gettext(unrec), nargv[0], + (int)current_argv_len,current_argv); + optopt = 0; + return BADCH; + } + if (long_options[match].flag) { + *long_options[match].flag = long_options[match].val; + retval = 0; + } else + retval = long_options[match].val; + if (idx) + *idx = match; + } + return retval; +} diff --git a/lib/ebu/libebutils/getopt.h b/lib/ebu/libebutils/getopt.h new file mode 100644 index 0000000..688fb93 --- /dev/null +++ b/lib/ebu/libebutils/getopt.h @@ -0,0 +1,85 @@ +/* $NetBSD: getopt.h,v 1.3 2000/04/02 22:03:29 christos Exp $ */ + +/*- + * Copyright (c) 2000 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Dieter Baron and Thomas Klausner. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef GETOPT_H +#define GETOPT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/* + * Gnu like getopt_long() and BSD4.4 getsubopt()/optreset extensions + */ +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +extern int opterr; +extern int optind; +extern int optopt; +extern char *optarg; + +struct option { + /* name of long option */ + const char *name; + /* + * one of no_argument, required_argument, and optional_argument: + * whether option takes an argument + */ + int has_arg; + /* if not NULL, set *flag to val when option found */ + int *flag; + /* if flag not NULL, value to set *flag to; else return value */ + int val; +}; + +int getopt_long (int, char * const *, const char *, + const struct option *, int *); + +#ifdef __cplusplus +} +#endif + +#endif /* !_GETOPT_H_ */ diff --git a/lib/ebu/libebutils/getopt_long.pl b/lib/ebu/libebutils/getopt_long.pl new file mode 100644 index 0000000..270012b --- /dev/null +++ b/lib/ebu/libebutils/getopt_long.pl @@ -0,0 +1,362 @@ +# -*- Perl -*- +# Copyright (c) 1997-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +# +# This program is a Perl package running on Perl 4.036 or later. +# The package provides routines to process command line options like +# as GNU getopt_long(). +# +# Version: +# 2.0 +# +# Interface: +# +# &getopt_initialize(LIST) +# Set a list of command line options and initialize internal data +# for &getopt_long. +# You must call the routine before calling &getopt_long. +# Format of each element in the LIST is: +# +# `CANONICAL-OPTION-NAME [ALIAS-OPTION-NAME...] ARGUMENT-FLAG' +# +# CANONICAL-OPTION-NAME, ALIAS-OPTION-NAME and ARGUMENT-FLAG fields +# are separated by spaces or tabs. +# +# CANONICAL-OPTION-NAME and ALIAS-OPTION-NAME must be either a single +# character option including preceding `-' (e.g. `-v'), or a long +# name option including preceding `--' (e.g. `--version'). Whether +# CANONICAL-OPTION-NAME is single character option or long name +# option is not significant. +# +# ARGUMENT-FLAG must be `no-argument', `required-argument' or +# `optional-argument'. If it is set to `required-argument', the +# option always takes an argument. If set to `optional-argument', +# an argument to the option is optional. +# +# You can put a special element `+' or `-' at the first element in +# LIST. See `Details about Option Processing:' for details. +# If succeeded to initialize, 1 is returned. Otherwise 0 is +# returned. +# +# &getopt_long +# Get a option name, and if exists, its argument of the leftmost +# option in @ARGV. +# +# An option name and its argument are returned as a list with two +# elements; the first element is CANONICAL-OPTION-NAME of the option, +# and second is its argument. +# Upon return, the option and its argument are removed from @ARGV. +# When you have already got all options in @ARGV, an empty list is +# returned. In this case, only non-option elements are left in +# @ARGV. +# +# When an error occurs, an error message is output to standard +# error, and the option name in a returned list is set to `?'. +# +# Example: +# +# &getopt_intialize('--help -h no-argument', '--version -v no-argument') +# || die; +# +# while (($name, $arg) = &getopt_long) { +# die "For help, type \`$0 --help\'\n" if ($name eq '?'); +# $opts{$name} = $arg; +# } +# +# Details about Option Processing: +# +# * There are three processing modes: +# 1. PERMUTE +# It permutes the contents of ARGV as it scans, so that all the +# non-option ARGV-elements are at the end. This mode is default. +# 2. REQUIRE_ORDER +# It stops option processing when the first non-option is seen. +# This mode is chosen if the environment variable POSIXLY_CORRECT +# is defined, or the first element in the option list is `+'. +# 3. RETURN_IN_ORDER +# It describes each non-option ARGV-element as if it were the +# argument of an option with an empty name. +# This mode is chosen if the first element in the option list is +# `-'. +# +# * An argument starting with `-' and not exactly `-', is a single +# character option. +# If the option takes an argument, it must be specified at just +# behind the option name (e.g. `-f/tmp/file'), or at the next +# ARGV-element of the option name (e.g. `-f /tmp/file'). +# If the option doesn't have an argument, other single character +# options can be followed within an ARGV-element. For example, +# `-l -g -d' is identical to `-lgd'. +# +# * An argument starting with `--' and not exactly `--', is a long +# name option. +# If the option has an argument, it can be specified at behind the +# option name preceded by `=' (e.g. `--option=argument'), or at the +# next ARGV-element of the option name (e.g. `--option argument'). +# Long name options can be abbreviated as long as the abbreviation +# is unique. +# +# * The special argument `--' forces an end of option processing. +# + +{ + package getopt_long; + + $initflag = 0; + $REQUIRE_ORDER = 0; + $PERMUTE = 1; + $RETURN_IN_ORDER = 2; +} + + +# +# Initialize the internal data. +# +sub getopt_initialize { + local(@fields); + local($name, $flag, $canon); + local($_); + + # + # Determine odering. + # + if ($_[$[] eq '+') { + $getopt_long'ordering = $getopt_long'REQUIRE_ORDER; + shift(@_); + } elsif ($_[$[] eq '-') { + $getopt_long'ordering = $getopt_long'RETURN_IN_ORDER; + shift(@_); + } elsif (defined($ENV{'POSIXLY_CORRECT'})) { + $getopt_long'ordering = $getopt_long'REQUIRE_ORDER; + } else { + $getopt_long'ordering = $getopt_long'PERMUTE; + } + + # + # Parse an option list. + # + %getopt_long'optnames = (); + %getopt_long'argflags = (); + + foreach (@_) { + @fields = split(/[ \t]+/, $_); + if (@fields < 2) { + warn "$0: (getopt_initialize) too few fields \`$arg\'\n"; + return 0; + } + $flag = pop(@fields); + if ($flag ne 'no-argument' && $flag ne 'required-argument' + && $flag ne 'optional-argument') { + warn "$0: (getopt_initialize) invalid argument flag \`$flag\'\n"; + return 0; + } + + $canon = ''; + foreach $name (@fields) { + if ($name !~ /^-([^-]|-.+)$/) { + warn "$0: (getopt_initialize) invalid option name \`$name\'\n"; + return 0; + } elsif (defined($getopt_long'optnames{$name})) { + warn "$0: (getopt_initialize) redefined option \`$name\'\n"; + return 0; + } + $canon = $name if ($canon eq ''); + $getopt_long'optnames{$name} = $canon; + $getopt_long'argflags{$name} = $flag; + } + } + + $getopt_long'endflag = 0; + $getopt_long'shortrest = ''; + @getopt_long'nonopts = (); + + $getopt_long'initflag = 1; +} + + +# +# When it comes to the end of options, restore PERMUTEd non-option +# arguments to @ARGV. +# +sub getopt_end { + $getopt_long'endflag = 1; + unshift(@ARGV, @getopt_long'nonopts); +} + + +# +# Scan elements of @ARGV for getting an option. +# +sub getopt_long { + local($name, $arg) = ('', 1); + local($patt, $key, $ambig, $ch); + local($_); + + &getopt_initialize(@_) if (!$getopt_long'initflag); + return () if ($getopt_long'endflag); + + # + # Take the next argument from @ARGV. + # + if ($getopt_long'shortrest ne '') { + $_ = '-'.$getopt_long'shortrest; + } elsif (@ARGV == 0) { + &getopt_end; + return (); + } elsif ($getopt_long'ordering == $getopt_long'REQUIRE_ORDER) { + $_ = shift(@ARGV); + if (!/^-./) { + push(@getopt_long'nonopts, $_); + &getopt_end; + return (); + } + } elsif ($getopt_long'ordering == $getopt_long'PERMUTE) { + for (;;) { + if (@ARGV == 0) { + &getopt_end; + return (); + } + $_ = shift(@ARGV); + last if (/^-./); + push(@getopt_long'nonopts, $_); + } + } else { # RETURN_IN_ORDER + $_ = shift(@ARGV); + } + + # + # Check for the special option `--'. + # + if ($_ eq '--' && $getopt_long'shortrest eq '') { + # + # `--' indicates the end of the option list. + # + &getopt_end; + return (); + } + + # + # Check for long and short options. + # + if (/^(--[^=]+)/ && $getopt_long'shortrest eq '') { + # + # Long style option, which start with `--'. + # Abbreviations for option names are allowed as long as + # they are unique. + # + $patt = $1; + if (defined($getopt_long'optnames{$patt})) { + $name = $patt; + } else { + $ambig = 0; + foreach $key (keys(%getopt_long'optnames)) { + if (index($key, $patt) == 0) { + if ($name eq '') { + $name = $key; + } else { + $ambig = 1; + } + } + } + if ($ambig) { + warn "$0: option \`$_\' is ambiguous\n"; + return ('?', ''); + } + if ($name eq '') { + warn "$0: unrecognized option \`$_\'\n"; + return ('?', ''); + } + } + + if ($getopt_long'argflags{$name} eq 'required-argument') { + if (/=(.*)$/) { + $arg = $1; + } elsif (0 < @ARGV) { + $arg = shift(@ARGV); + } else { + warn "$0: option \`$_\' requires an argument\n"; + return ('?', ''); + } + } elsif ($getopt_long'argflags{$name} eq 'optional-argument') { + if (/=(.*)$/) { + $arg = $1; + } elsif (0 < @ARGV && $ARGV[$[] !~ /^-./) { + $arg = shift(@ARGV); + } else { + $arg = ''; + } + } elsif (/=(.*)$/) { + warn "$0: option \`$name\' doesn't allow an argument\n"; + return ('?', ''); + } + } elsif (/^(-(.))(.*)/) { + # + # Short style option, which start with `-' (not `--'). + # + ($name, $ch, $getopt_long'shortrest) = ($1, $2, $3); + + if (defined($getopt_long'optnames{$name})) { + if ($getopt_long'argflags{$name} eq 'required-argument') { + if ($getopt_long'shortrest ne '') { + $arg = $getopt_long'shortrest; + $getopt_long'shortrest = ''; + } elsif (0 < @ARGV) { + $arg = shift(@ARGV); + } else { + # 1003.2 specifies the format of this message. + warn "$0: option requires an argument -- $ch\n"; + return ('?', ''); + } + } elsif ($getopt_long'argflags{$name} eq 'optional-argument') { + if ($getopt_long'shortrest ne '') { + $arg = $getopt_long'shortrest; + $getopt_long'shortrest = ''; + } elsif (0 < @ARGV && $ARGV[$[] !~ /^-./) { + $arg = shift(@ARGV); + } else { + $arg = ''; + } + } + } elsif (defined($ENV{'POSIXLY_CORRECT'})) { + # 1003.2 specifies the format of this message. + warn "$0: illegal option -- $ch\n"; + return ('?', ''); + } else { + warn "$0: invalid option -- $ch\n"; + return ('?', ''); + } + } else { + # + # Only RETURN_IN_ORDER falled into here. + # + $arg = $_; + } + + return ($getopt_long'optnames{$name}, $arg); +} + +1; diff --git a/lib/ebu/libebutils/getumask.c b/lib/ebu/libebutils/getumask.c new file mode 100644 index 0000000..45e95a7 --- /dev/null +++ b/lib/ebu/libebutils/getumask.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * This program requires the following Autoconf macros: + * AC_TYPE_MODE_T + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +/* + * Get the current umask. + */ +mode_t +get_umask(void) +{ + mode_t current_umask; + + current_umask = umask((mode_t)022); + umask(current_umask); + + return current_umask; +} diff --git a/lib/ebu/libebutils/getumask.h b/lib/ebu/libebutils/getumask.h new file mode 100644 index 0000000..1f3d013 --- /dev/null +++ b/lib/ebu/libebutils/getumask.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef GETUMASK_H +#define GETUMASK_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/* + * Function declarations. + */ +mode_t get_umask(void); + +#endif /* not GETUMASK_H */ diff --git a/lib/ebu/libebutils/libebutils.a b/lib/ebu/libebutils/libebutils.a new file mode 100644 index 0000000000000000000000000000000000000000..55a8abb6f3a8678e2b274c7b1cb80ae95418951d GIT binary patch literal 142478 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 z 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 +#include +#include + +#ifdef HAVE_DIRECT_H +#include +#endif + +#ifndef S_ISREG +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif +#ifndef S_ISDIR +#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif + +/* + * Make a directory if the directory doesn't exist. + * + * If making the directory is succeeded or the directory has already + * created, 0 is returned. Otherwise -1 is returned. + */ +int +make_missing_directory(const char *path, mode_t mode) +{ + struct stat status; + + if (stat(path, &status) == 0 && S_ISDIR(status.st_mode)) + return 0; + +#if (!defined(WIN32) && !defined(WIN64)) + if (mkdir(path, mode) < 0) + return -1; +#else + if (mkdir(path) < 0) + return -1; +#endif + + return 0; +} diff --git a/lib/ebu/libebutils/makedir.h b/lib/ebu/libebutils/makedir.h new file mode 100644 index 0000000..8eb3a15 --- /dev/null +++ b/lib/ebu/libebutils/makedir.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef MAKEDIR_H +#define MAKEDIR_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/* + * Function declarations. + */ +int make_missing_directory(const char *, mode_t); + +#endif /* not MAKEDIR_H */ diff --git a/lib/ebu/libebutils/puts_eucjp.c b/lib/ebu/libebutils/puts_eucjp.c new file mode 100644 index 0000000..eab6b0e --- /dev/null +++ b/lib/ebu/libebutils/puts_eucjp.c @@ -0,0 +1,155 @@ +/* -*- C -*- + * Copyright (c) 2003-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include + +#ifdef HAVE_ICONV_H +#include +#endif + +#if defined(HAVE_LIBCHARSET_H) +#include +#elif defined(HAVE_LANGINFO_H) +#include +#endif + +/* + * Convert `string' from EUC-JP to the current locale encoding, and + * then write it to `stream'. + */ +int +fputs_eucjp_to_locale(const char *string, FILE *stream) +{ +#if defined(HAVE_ICONV_OPEN) || defined(HAVE_LIBICONV_OPEN) + size_t string_length; + const char *locale_encoding; + char *buffer = NULL; + size_t buffer_size; + iconv_t cd = (iconv_t)-1; + const char *in_p; + char *out_p; + size_t in_left; + size_t out_left; + int fputs_result; + + string_length = strlen(string); + +#if defined(HAVE_LOCALE_CHARSET) + locale_encoding = locale_charset(); +#elif defined(HAVE_NL_LANGINFO) && defined(CODESET) + locale_encoding = nl_langinfo(CODESET); +#else + locale_encoding = NULL; +#endif + if (locale_encoding == NULL) + goto failed; + cd = iconv_open(locale_encoding, "eucJP"); + if (cd == (iconv_t)-1) + cd = iconv_open(locale_encoding, "EUC-JP"); + if (cd == (iconv_t)-1) + goto failed; + + buffer_size = (string_length + 1) * 2; + + for (;;) { + buffer = malloc(buffer_size); + if (buffer == NULL) + goto failed; + + in_p = string; + in_left = string_length + 1; + out_p = buffer; + out_left = buffer_size; + + if (iconv(cd, (char **)&in_p, &in_left, &out_p, &out_left) != -1) + break; + if (errno == E2BIG) { + /* + * Reset initial state. + * To avoid a bug of iconv() on Solaris 2.6, we set `in_left', + * `out_p' and `out_left' to non-NULL values. + */ + in_left = 0; + out_p = buffer; + out_left = 0; + iconv(cd, NULL, &in_left, &out_p, &out_left); + + free(buffer); + buffer = NULL; + buffer_size += string_length + 1; + + continue; + } else { + goto failed; + } + } + + iconv_close(cd); + fputs_result = fputs(buffer, stream); + free(buffer); + + return fputs_result; + + /* + * An error occurs... + */ + failed: + if (cd != (iconv_t)-1) + iconv_close(cd); + if (buffer != NULL) + free(buffer); + return fputs(string, stream); + +#else /* not (HAVE_ICONV_OPEN || HAVE_LIBICONV_OPEN) */ + return fputs(string, stream); +#endif /* HAVE_ICONV_OPEN || HAVE_LIBICONV_OPEN */ +} + + +/* + * Convert `string' from EUC-JP to the current locale encoding, and + * then write it and a newline to `stdout'. + */ +int +puts_eucjp_to_locale(const char *string) +{ + if (fputs_eucjp_to_locale(string, stdout) == EOF) + return EOF; + if (fputs_eucjp_to_locale("\n", stdout) == EOF) + return EOF; + + return 0; +} diff --git a/lib/ebu/libebutils/samefile.c b/lib/ebu/libebutils/samefile.c new file mode 100644 index 0000000..c61d449 --- /dev/null +++ b/lib/ebu/libebutils/samefile.c @@ -0,0 +1,67 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +/* + * If the files `file_name1' and `file_name2' are identical (i.e. the are + * written on a same device and a same i-node is assigned to them), 1 is + * returned. Otherwise, 0 is returned. + */ +int +is_same_file(const char *file_name1, const char *file_name2) +{ + struct stat st1, st2; + + if (stat(file_name1, &st1) != 0 || stat(file_name2, &st2) != 0) + return 0; + +#ifndef DOS_FILE_PATH + if (st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) + return 0; + +#else /* DOS_FILE_PATH */ + /* Can't rely on st_ino and st_dev, use other fields: */ + if (st1.st_mode != st2.st_mode + || st1.st_uid != st2.st_uid + || st1.st_gid != st2.st_gid + || st1.st_size != st2.st_size + || st1.st_atime != st2.st_atime + || st1.st_mtime != st2.st_mtime + || st1.st_ctime != st2.st_ctime) + return 0; +#endif /* DOS_FILE_PATH */ + + return 1; +} diff --git a/lib/ebu/libebutils/samefile.h b/lib/ebu/libebutils/samefile.h new file mode 100644 index 0000000..5cc6963 --- /dev/null +++ b/lib/ebu/libebutils/samefile.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef SAMEFILE_H +#define SAMEFILE_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/* + * Function declarations. + */ +int is_same_file(const char *, const char *); + +#endif /* not SAMEFILE_H */ diff --git a/lib/ebu/libebutils/stamp-ebutils-h b/lib/ebu/libebutils/stamp-ebutils-h new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/lib/ebu/libebutils/stamp-ebutils-h @@ -0,0 +1 @@ +timestamp diff --git a/lib/ebu/libebutils/strcasecmp.c b/lib/ebu/libebutils/strcasecmp.c new file mode 100644 index 0000000..fc80f62 --- /dev/null +++ b/lib/ebu/libebutils/strcasecmp.c @@ -0,0 +1,105 @@ +/* + * Copyright (c) 1997-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/* + * Compare strings. + * Cases in the strings are insensitive. + */ +int +strcasecmp(const char *string1, const char *string2) +{ + const unsigned char *string1_p = (const unsigned char *)string1; + const unsigned char *string2_p = (const unsigned char *)string2; + int c1, c2; + + while (*string1_p != '\0') { + if ('a' <= *string1_p && *string1_p <= 'z') + c1 = *string1_p - ('a' - 'A'); + else + c1 = *string1_p; + + if ('a' <= *string2_p && *string2_p <= 'z') + c2 = *string2_p - ('a' - 'A'); + else + c2 = *string2_p; + + if (c1 != c2) + return c1 - c2; + + string1_p++; + string2_p++; + } + + return -(*string2_p); +} + + +/* + * Compare strings within `n' characters. + * Cases in the strings are insensitive. + */ +int +strncasecmp(const char *string1, const char *string2, size_t n) +{ + const unsigned char *string1_p = (const unsigned char *)string1; + const unsigned char *string2_p = (const unsigned char *)string2; + size_t i = n; + int c1, c2; + + if (i <= 0) + return 0; + + while (*string1_p != '\0') { + if ('a' <= *string1_p && *string1_p <= 'z') + c1 = *string1_p - ('a' - 'A'); + else + c1 = *string1_p; + + if ('a' <= *string2_p && *string2_p <= 'z') + c2 = *string2_p - ('a' - 'A'); + else + c2 = *string2_p; + + if (c1 != c2) + return c1 - c2; + + string1_p++; + string2_p++; + i--; + if (i <= 0) + return 0; + } + + return -(*string2_p); +} diff --git a/lib/ebu/libebutils/strlist.c b/lib/ebu/libebutils/strlist.c new file mode 100644 index 0000000..cc19b0e --- /dev/null +++ b/lib/ebu/libebutils/strlist.c @@ -0,0 +1,194 @@ +/* -*- C -*- + * Copyright (c) 2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#include "strlist.h" + +/* + * Unexported functions. + */ +static String_List_Node * +string_list_find_node(String_List *list, const char *string); + + +/* + * Initialize `list'. + */ +void +string_list_initialize(String_List *list) +{ + list->node_count = 0; + list->head = NULL; + list->tail = NULL; +} + + +/* + * Finalize `list'. + */ +void +string_list_finalize(String_List *list) +{ + string_list_delete_all(list); +} + + +/* + * Add `string' to `list'. + * If `list' has already had `string', it doesn't do anything. + */ +int +string_list_add(String_List *list, const char *string) +{ + String_List_Node *new_node; + + if (string_list_find_node(list, string) != NULL) + return 0; + + new_node = (String_List_Node *)malloc(sizeof(String_List_Node)); + if (new_node == NULL) + return -1; + + new_node->string = (char *)malloc(strlen(string) + 1); + if (new_node->string == NULL) { + free(new_node); + return -1; + } + strcpy(new_node->string, string); + + if (list->node_count == 0) { + new_node->back = NULL; + list->head = new_node; + } else { + new_node->back = list->tail; + list->tail->next = new_node; + } + + new_node->next = NULL; + list->tail = new_node; + list->node_count++; + + return 0; +} + + +/* + * Delete `string' from `list'. + * The function doesn't complain if `list' doesn't have `string'. + */ +void +string_list_delete(String_List *list, const char *string) +{ + String_List_Node *p; + + p = string_list_find_node(list, string); + if (p == NULL) + return; + + if (p->next != NULL) + p->next->back = p->back; + if (p->back != NULL) + p->back->next = p->next; + free(p->string); + free(p); + + list->node_count--; + if (list->node_count == 0) { + list->head = NULL; + list->tail = NULL; + } +} + + +/* + * Delete all strings in `list'. + */ +void +string_list_delete_all(String_List *list) +{ + String_List_Node *p = list->head; + String_List_Node *next_p; + + while (p != NULL) { + next_p = p->next; + free(p->string); + free(p); + p = next_p; + } + + list->node_count = 0; + list->head = NULL; + list->tail = NULL; +} + + +/* + * Return true if `list' has `string'. + */ +int +string_list_find(String_List *list, const char *string) +{ + return (string_list_find_node(list, string) != NULL); +} + + +/* + * Count the number of strings in `list'. + */ +int +string_list_count_node(String_List *list) +{ + return list->node_count; +} + + +/* + * Return a pointer to the node with `string' in `list'. + * Return NULL if `list' doesn't have `string'. + */ +static String_List_Node * +string_list_find_node(String_List *list, const char *string) +{ + String_List_Node *p; + + for (p = list->head; p != NULL; p = p->next) { + if (strcmp(string, p->string) == 0) + return p; + } + + return NULL; +} + + diff --git a/lib/ebu/libebutils/strlist.h b/lib/ebu/libebutils/strlist.h new file mode 100644 index 0000000..48fac94 --- /dev/null +++ b/lib/ebu/libebutils/strlist.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef STRLIST_H +#define STRLIST_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/* + * Type definitions. + */ +typedef struct String_List_Struct String_List; +typedef struct String_List_Node_Struct String_List_Node; + +struct String_List_Struct { + int node_count; + String_List_Node *head; + String_List_Node *tail; +}; + + +struct String_List_Node_Struct { + char *string; + String_List_Node *next; + String_List_Node *back; +}; + + +/* + * Function declarations. + */ +void +string_list_initialize(String_List *list); + +void +string_list_finalize(String_List *list); + +int +string_list_add(String_List *list, const char *string); + +void +string_list_delete(String_List *list, const char *string); + +void +string_list_delete_all(String_List *list); + +int +string_list_find(String_List *list, const char *string); + +int +string_list_count_node(String_List *list); + +#endif /* not STRLIST_H */ diff --git a/lib/ebu/libebutils/yesno.c b/lib/ebu/libebutils/yesno.c new file mode 100644 index 0000000..cf41184 --- /dev/null +++ b/lib/ebu/libebutils/yesno.c @@ -0,0 +1,86 @@ +/* -*- C -*- + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#define YESNO_RESPONSE_SIZE 80 + +/* + * Get y/n response to `message'. + * If `y' is selected, 1 is returned. Otherwise 0 is returned. + */ +int +query_y_or_n(const char *message) +{ + char response[YESNO_RESPONSE_SIZE]; + char *head, *tail; + + for (;;) { + /* + * Output `message' to standard error. + */ + fputs(message, stderr); + fflush(stderr); + + /* + * Get a line from standard in. + */ + if (fgets(response, YESNO_RESPONSE_SIZE, stdin) == NULL) + return 0; + if (strchr(response, '\n') == NULL) + continue; + + /* + * Delete spaces and tabs in the beginning and end of the + * line. + */ + for (head = response; *head == ' ' || *head == '\t'; head++) + ; + for (tail = head + strlen(head) - 1; + head <= tail && (*tail == ' ' || *tail == '\t' || *tail == '\n'); + tail--) + *tail = '\0'; + + /* + * Return if the line is `y' or `n'. + */ + if ((*head == 'Y' || *head == 'y') && *(head + 1) == '\0') + return 1; + if ((*head == 'N' || *head == 'n') && *(head + 1) == '\0') + return 0; + } + + /* not reached */ + return 0; +} diff --git a/lib/ebu/libebutils/yesno.h b/lib/ebu/libebutils/yesno.h new file mode 100644 index 0000000..14d12b3 --- /dev/null +++ b/lib/ebu/libebutils/yesno.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 1998-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef YESNO_H +#define YESNO_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/* + * Function declarations. + */ +int query_y_or_n(const char *); + +#endif /* not YESNO_H */ diff --git a/lib/ebu/libtool b/lib/ebu/libtool new file mode 100644 index 0000000..7675e1d --- /dev/null +++ b/lib/ebu/libtool @@ -0,0 +1,11648 @@ +#! /bin/bash +# Generated automatically by config.status (ebu) 4.5-20200413 +# Libtool was configured on host sagan-panda: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: ${LT_SYS_LIBRARY_PATH=""} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=2.4.6 +macro_revision=2.4.6 + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# Whether or not to build static libraries. +build_old_libs=yes + +# What type of objects to build. +pic_mode=default + +# Whether or not to optimize for fast installation. +fast_install=needless + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec= + +# Shell to use when invoking shell scripts. +SHELL="/bin/bash" + +# An echo program that protects backslashes. +ECHO="printf %s\\n" + +# The PATH separator for the build system. +PATH_SEPARATOR=":" + +# The host system. +host_alias= +host=x86_64-unknown-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-unknown-linux-gnu +build_os=linux-gnu + +# A sed program that does not truncate output. +SED="/usr/bin/sed" + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP="/usr/bin/grep" + +# An ERE matcher. +EGREP="/usr/bin/grep -E" + +# A literal string matcher. +FGREP="/usr/bin/grep -F" + +# A BSD- or MS-compatible name lister. +NM="/usr/bin/nm -B" + +# Whether we need soft or hard links. +LN_S="ln -s" + +# What is the maximum length of a command? +max_cmd_len=1572864 + +# Object file suffix (normally "o"). +objext=o + +# Executable file suffix (normally ""). +exeext= + +# whether the shell understands "unset". +lt_unset=unset + +# turn spaces into newlines. +SP2NL="tr \\040 \\012" + +# turn newlines into spaces. +NL2SP="tr \\015\\012 \\040\\040" + +# convert $build file names to $host format. +to_host_file_cmd=func_convert_file_noop + +# convert $build files to toolchain format. +to_tool_file_cmd=func_convert_file_noop + +# An object symbol dumper. +OBJDUMP="objdump" + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd="\$MAGIC_CMD" + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob="" + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob="no" + +# DLL creation program. +DLLTOOL="false" + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd="printf %s\\n" + +# The archiver. +AR="ar" + +# Flags to create an archive. +AR_FLAGS="cru" + +# How to feed a file listing to the archiver. +archiver_list_spec="@" + +# A symbol stripping program. +STRIP="strip" + +# Commands used to install an old-style archive. +RANLIB="ranlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib" +old_postuninstall_cmds="" + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=no + +# A C compiler. +LTCC="gcc" + +# LTCC compiler flags. +LTCFLAGS="-g -O2 -fopenmp" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'" + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import="" + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p'" + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(lib.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"lib\\1\", (void *) \\&\\1},/p'" + +# The name lister interface. +nm_interface="BSD nm" + +# Specify filename containing input files for $NM. +nm_file_list_spec="@" + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot= + +# Command to truncate a binary pipe. +lt_truncate_bin="/usr/bin/dd bs=4096 count=1" + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=file + +# Must we lock files when doing compilation? +need_locks="no" + +# Manifest tool. +MANIFEST_TOOL=":" + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL="" + +# Tool to change global to local symbols on Mac OS X. +NMEDIT="" + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO="" + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL="" + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64="" + +# Old archive suffix (normally "a"). +libext=a + +# Shared library suffix (normally ".so"). +shrext_cmds=".so" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Do we need the "lib" prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Library versioning type. +version_type=linux + +# Shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# Shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=yes + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec="\$libname\$release\$shared_ext\$versuffix \$libname\$release\$shared_ext\$major \$libname\$shared_ext" + +# The coded name of the library, if different from the real name. +soname_spec="\$libname\$release\$shared_ext\$major" + +# Permission mode override for installation of shared libraries. +install_override_mode="" + +# Command to use after installation of a shared archive. +postinstall_cmds="" + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval="" + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Compile-time system search path for libraries. +sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/9 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib " + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 /libx32 /usr/libx32 " + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path="" + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# Commands used to build an old-style archive. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" + +# A language specific compiler. +CC="gcc" + +# Is the compiler the GNU compiler? +with_gcc=yes + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=no + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\$wl--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive" + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object="no" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build a shared archive. +archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ + \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname \$wl-version-script \$wl\$output_objdir/\$libname.ver -o \$lib" + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds="" +module_expsym_cmds="" + +# Whether we are building with GNU ld or not. +with_gnu_ld="yes" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that enforces no undefined symbols. +no_undefined_flag="" + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist +hardcode_libdir_flag_spec="\$wl-rpath \$wl\$libdir" + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator="" + +# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=no + +# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting $shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=no + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=no + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=no + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=no + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=unknown + +# Set to "yes" if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds="" + +# Commands necessary for finishing linking programs. +postlink_cmds="" + +# Specify filename containing input files. +file_list_spec="" + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# ### END LIBTOOL CONFIG + + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +#! /bin/sh +## DO NOT EDIT - This file generated from /usr/src/ports/libtool/libtool-2.4.6-6.x86_64/src/libtool-2.4.6/build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.6 +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program 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 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES 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, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program 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 3 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, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -stdlib=* select c++ std lib with clang + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -fopenacc|-fopenmp|-ftree-parallelize-loops=*|-fcilkplus|-fgnu-tm| \ + -ffast-math|-funsafe-math-optimizations|-fvtable-verify*| \ + -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/lib/ebu/ltmain.sh b/lib/ebu/ltmain.sh new file mode 100644 index 0000000..9b0947d --- /dev/null +++ b/lib/ebu/ltmain.sh @@ -0,0 +1,11150 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from /usr/src/ports/libtool/libtool-2.4.6-6.x86_64/src/libtool-2.4.6/build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.6 +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program 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 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES 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, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program 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 3 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, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -stdlib=* select c++ std lib with clang + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -fopenacc|-fopenmp|-ftree-parallelize-loops=*|-fcilkplus|-fgnu-tm| \ + -ffast-math|-funsafe-math-optimizations|-fvtable-verify*| \ + -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/lib/ebu/m4/Makefile b/lib/ebu/m4/Makefile new file mode 100644 index 0000000..0659ce4 --- /dev/null +++ b/lib/ebu/m4/Makefile @@ -0,0 +1,414 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# m4/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +subdir = m4 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(m4datadir)" +m4dataDATA_INSTALL = $(INSTALL_DATA) +DATA = $(m4data_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu/m4 +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu/m4 +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +m4datadir = $(datadir)/aclocal +m4data_DATA = ebu.m4 +EXTRA_DIST = ebu.m4 gettext.m4 in6addr.m4 sockaddrin6.m4 sockinttypes.m4 \ + lcmessage.m4 libtool.m4 + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu m4/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)" + @list='$(m4data_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(m4dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4datadir)/$$f'"; \ + $(m4dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4datadir)/$$f"; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(m4datadir)/$$f'"; \ + rm -f "$(DESTDIR)$(m4datadir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(m4datadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-m4dataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-m4dataDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-m4dataDATA install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-m4dataDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/m4/Makefile.am b/lib/ebu/m4/Makefile.am new file mode 100644 index 0000000..88e58cf --- /dev/null +++ b/lib/ebu/m4/Makefile.am @@ -0,0 +1,5 @@ +m4datadir = $(datadir)/aclocal +m4data_DATA = ebu.m4 + +EXTRA_DIST = ebu.m4 gettext.m4 in6addr.m4 sockaddrin6.m4 sockinttypes.m4 \ + lcmessage.m4 libtool.m4 diff --git a/lib/ebu/m4/Makefile.in b/lib/ebu/m4/Makefile.in new file mode 100644 index 0000000..320a94f --- /dev/null +++ b/lib/ebu/m4/Makefile.in @@ -0,0 +1,414 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = m4 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(m4datadir)" +m4dataDATA_INSTALL = $(INSTALL_DATA) +DATA = $(m4data_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +m4datadir = $(datadir)/aclocal +m4data_DATA = ebu.m4 +EXTRA_DIST = ebu.m4 gettext.m4 in6addr.m4 sockaddrin6.m4 sockinttypes.m4 \ + lcmessage.m4 libtool.m4 + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu m4/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)" + @list='$(m4data_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(m4dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4datadir)/$$f'"; \ + $(m4dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4datadir)/$$f"; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(m4datadir)/$$f'"; \ + rm -f "$(DESTDIR)$(m4datadir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(m4datadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-m4dataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-m4dataDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-m4dataDATA install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-m4dataDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/m4/ebu.m4 b/lib/ebu/m4/ebu.m4 new file mode 100644 index 0000000..1f11ebc --- /dev/null +++ b/lib/ebu/m4/ebu.m4 @@ -0,0 +1,138 @@ +dnl * +dnl * Make ready to link EB Library with UTF-8 support. +dnl * +dnl * Copyright (c) 2000-2006 Motoyuki Kasahara +dnl * Copyright (c) 2011 Kazuhiro Ito +dnl * +dnl * Redistribution and use in source and binary forms, with or without +dnl * modification, are permitted provided that the following conditions +dnl * are met: +dnl * 1. Redistributions of source code must retain the above copyright +dnl * notice, this list of conditions and the following disclaimer. +dnl * 2. Redistributions in binary form must reproduce the above copyright +dnl * notice, this list of conditions and the following disclaimer in the +dnl * documentation and/or other materials provided with the distribution. +dnl * 3. Neither the name of the project nor the names of its contributors +dnl * may be used to endorse or promote products derived from this software +dnl * without specific prior written permission. +dnl * +dnl * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +dnl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +dnl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +dnl * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +dnl * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +dnl * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +dnl * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +dnl * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +dnl * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +dnl * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +dnl * SUCH DAMAGE. +dnl * + +AC_DEFUN([eb_LIB_EBU], +[dnl +dnl * +dnl * --enable-ebu option +dnl * +AC_ARG_ENABLE(ebu, + AC_HELP_STRING([--enable-ebu], [Build with EB Library with UTF-8 support [[auto]]]), + ENABLE_EBU=$enableval, ENABLE_EBU=auto) + +if test $ENABLE_EBU != no; then + dnl * + dnl * Requirements. + dnl * + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_PROG_LIBTOOL]) + AC_REQUIRE([AC_TYPE_OFF_T]) + AC_REQUIRE([AC_TYPE_SIZE_T]) + + AC_CHECK_HEADERS(limits.h) + AC_CHECK_TYPE(ssize_t, int) + + dnl * + dnl * --with-ebu-conf option. + dnl * + AC_ARG_WITH(ebu-conf, + AC_HELP_STRING([--with-ebu-conf=FILE], + [ebu.conf file is FILE [[SYSCONFDIR/ebu.conf]]]), + [ebuconf="${withval}"], [ebuconf=$sysconfdir/ebu.conf]) + if test X$prefix = XNONE; then + PREFIX=$ac_default_prefix + else + PREFIX=$prefix + fi + ebuconf=`echo X$ebuconf | sed -e 's/^X//' -e 's;\${prefix};'"$PREFIX;g" \ + -e 's;\$(prefix);'"$PREFIX;g"` + + dnl * + dnl * Read ebu.conf + dnl * + AC_MSG_CHECKING(for ebu.conf) + AC_MSG_RESULT($ebuconf) + if test -f ${ebuconf}; then + . ${ebuconf} + else + if test $ENABLE_EBU = yes; then + AC_MSG_ERROR($ebuconf not found) + else + ENABLE_NLS=no + fi + fi +fi + +if test $ENABLE_EBU != no; then + if test X$EBCONF_ENABLE_PTHREAD = Xyes; then + AC_DEFINE(EBCONF_ENABLE_PTHREAD, 1, + [Define if EB Library supports pthread.]) + fi + if test X$EBCONF_ENABLE_NLS = Xyes; then + AC_DEFINE(EBCONF_ENABLE_NLS, 1, + [Define if EB Library supports native language.]) + fi + if test X$EBCONF_ENABLE_EBNET = Xyes; then + AC_DEFINE(EBCONF_ENABLE_EBNET, 1, + [Define if EB Library supports remote access.]) + fi + + AC_SUBST(EBCONF_EBINCS) + AC_SUBST(EBCONF_EBLIBS) + AC_SUBST(EBCONF_ZLIBINCS) + AC_SUBST(EBCONF_ZLIBLIBS) + AC_SUBST(EBCONF_PTHREAD_CPPFLAGS) + AC_SUBST(EBCONF_PTHREAD_CFLAGS) + AC_SUBST(EBCONF_PTHREAD_LDFLAGS) + AC_SUBST(EBCONF_INTLINCS) + AC_SUBST(EBCONF_INTLLIBS) + + dnl * + dnl * Check for EB Library with UTF-8 support. + dnl * + AC_MSG_CHECKING(for EB Library with UTF-8 support) + save_CPPFLAGS=$CPPFLAGS + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + save_LIBS=$LIBS + CPPFLAGS="$CPPFLAGS $EBCONF_PTHREAD_CPPFLAGS $EBCONF_EBINCS $EBCONF_ZLIBINCS $EBCONF_INTLINCS" + CFLAGS="$CFLAGS $EBCONF_PTHREAD_CFLAGS" + LDFLAGS="$LDFAGS $EBCONF_PTHREAD_LDFLAGS" + LIBS="$LIBS $EBCONF_EBLIBS $EBCONF_ZLIBLIBS $EBCONF_INTLLIBS" + AC_TRY_LINK([#include ], + [eb_initialize_library(); return 0;], + try_eb=yes, try_eb=no) + CPPFLAGS=$save_CPPFLAGS + CFLAGS=$save_CFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + AC_MSG_RESULT($try_eb) + if test ${try_eb} != yes; then + if test $ENABLE_EBU = yes; then + AC_MSG_ERROR(EB Library with UTF-8 support not available) + else + ENABLE_EBU=no + fi + else + AC_DEFINE(ENABLE_EBU, 1, [Define if EB library with UTF-8 support is requested]) + fi +fi +]) diff --git a/lib/ebu/m4/gettext.m4 b/lib/ebu/m4/gettext.m4 new file mode 100644 index 0000000..24efdc7 --- /dev/null +++ b/lib/ebu/m4/gettext.m4 @@ -0,0 +1,295 @@ +dnl * +dnl * Copyright (c) 2004-2006 Motoyuki Kasahara +dnl * +dnl * Redistribution and use in source and binary forms, with or without +dnl * modification, are permitted provided that the following conditions +dnl * are met: +dnl * 1. Redistributions of source code must retain the above copyright +dnl * notice, this list of conditions and the following disclaimer. +dnl * 2. Redistributions in binary form must reproduce the above copyright +dnl * notice, this list of conditions and the following disclaimer in the +dnl * documentation and/or other materials provided with the distribution. +dnl * 3. Neither the name of the project nor the names of its contributors +dnl * may be used to endorse or promote products derived from this software +dnl * without specific prior written permission. +dnl * +dnl * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +dnl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +dnl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +dnl * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +dnl * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +dnl * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +dnl * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +dnl * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +dnl * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +dnl * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +dnl * SUCH DAMAGE. +dnl * + +AC_DEFUN([eb_GNU_GETTEXT], [dnl + INTLINCS= + INTLDEPS= + INTLLIBS= + + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_PROG_LIBTOOL]) + + AC_CHECK_HEADERS([locale.h nl_types.h]) + AC_CHECK_FUNCS([setlocale]) + + AM_LC_MESSAGES + + dnl * + dnl * --enable-nls option + dnl * + AC_ARG_ENABLE(nls, + AC_HELP_STRING([--enable-nls], [Native Language Support [[yes]]]), + ENABLE_NLS=$enableval, ENABLE_NLS=auto) + + dnl * + dnl * --with-gettext-includes option + dnl * + AC_ARG_WITH(gettext-includes, + AC_HELP_STRING([--with-gettext-includes=DIR], + [gettext include files are in DIR]), + [gettext_includes="-I${withval}"], [gettext_includes='']) + + dnl * + dnl * --with-gettext-libraries option + dnl * + AC_ARG_WITH(gettext-libraries, + AC_HELP_STRING([--with-gettext-libraries=DIR], + [gettext library files are in DIR]), + [gettext_libraries="-L${withval}"], [gettext_libraries='']) + + dnl * + dnl * --with-iconv-includes option + dnl * + AC_ARG_WITH(iconv-includes, + AC_HELP_STRING([--with-iconv-includes=DIR], + [iconv include files are in DIR]), + [iconv_includes="-I${withval}"], [iconv_includes='']) + + dnl * + dnl * --with-iconv-libraries option + dnl * + AC_ARG_WITH(iconv-libraries, + AC_HELP_STRING([--with-iconv-libraries=DIR], + [iconv library files are in DIR]), + [iconv_libraries="-L${withval}"], [iconv_libraries='']) + + dnl * + dnl * Check iconv(), iconv.h and -liconv. + dnl * + ICONVINCS= + ICONVLIBS= + save_CPPFLAGS=$CPPFLAGS + save_LIBS=$LIBS + CPPFLAGS="$save_CPPFLAGS $iconv_includes" + LIBS="$save_LIBS $iconv_libraries" + AC_CHECK_LIB(iconv, iconv_open, + [ICONVLIBS="$iconv_libraries -liconv"; LIBS="$LIBS -liconv"], + AC_CHECK_LIB(iconv, libiconv_open, + [ICONVLIBS="$iconv_libraries -liconv"; LIBS="$LIBS -liconv"])) + AC_CHECK_FUNCS(iconv_open libiconv_open locale_charset) + AC_CHECK_HEADERS(iconv.h libcharset.h) + if test $ac_cv_func_iconv_open != no; then + ICONVINCS="$iconv_includes" + fi + CPPFLAGS=$save_CPPFLAGS + LIBS=$save_LIBS + AC_SUBST(ICONVINCS) + AC_SUBST(ICONVLIBS) + + dnl * + dnl * Check gettext(). + dnl * + INTLINCS= + INTLLIBS= + try_nls=no + + AC_MSG_CHECKING([for NLS support]) + + if test $ENABLE_NLS != no; then + save_CPPFLAGS=$CPPFLAGS + save_LIBS=$LIBS + + dnl * + dnl * Test 1: Try to link both libintl and libiconv. + dnl * + CPPFLAGS="$save_CPPFLAGS $gettext_includes" + LIBS="$save_LIBS $gettext_libraries -lintl $iconv_libraries -liconv" + AC_LINK_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_NLS +#undef ENABLE_NLS +#endif +#define ENABLE_NLS 1 +#ifdef HAVE_LOCALE_H +#include +#endif +#include + +int +main() +{ +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain("gttest", ".locale"); + textdomain("gttest"); + gettext("foo"); + return 0; +} +])], + try_nls=yes, try_nls=no) + + if test "$try_nls" = yes; then + INTLINCS="$gettext_includes" + INTLLIBS="$gettext_libraries -lintl $iconv_libraries -liconv" + fi + + dnl * + dnl * Test 2: Try to link libintl. + dnl * + if test "$try_nls" = no; then + CPPFLAGS="$save_CPPFLAGS $gettext_includes" + LIBS="$save_LIBS $gettext_libraries -lintl" + AC_LINK_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_NLS +#undef ENABLE_NLS +#endif +#define ENABLE_NLS 1 +#ifdef HAVE_LOCALE_H +#include +#endif +#include + +int +main() +{ +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain("gttest", ".locale"); + textdomain("gttest"); + gettext("foo"); + return 0; +} +])], + try_nls=yes, try_nls=no) + + if test "$try_nls" = yes; then + INTLINCS="$gettext_includes" + INTLLIBS="$gettext_libraries -lintl" + fi + fi + + dnl * + dnl * Test 3: Try to link libiconv. + dnl * + if test "$try_nls" = no; then + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS $iconv_libraries -liconv" + AC_LINK_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_NLS +#undef ENABLE_NLS +#endif +#define ENABLE_NLS 1 +#ifdef HAVE_LOCALE_H +#include +#endif +#include + +int +main() +{ +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain("gttest", ".locale"); + textdomain("gttest"); + gettext("foo"); + return 0; +} +])], + try_nls=yes, try_nls=no) + + if test "$try_nls" = yes; then + INTLINCS= + INTLLIBS="$iconv_libraries -liconv" + fi + fi + + dnl * + dnl * Test 4: Try to link libc only. + dnl * + if test "$try_nls" = no; then + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS" + AC_LINK_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_NLS +#undef ENABLE_NLS +#endif +#define ENABLE_NLS 1 +#ifdef HAVE_LOCALE_H +#include +#endif +#include + +int +main() +{ +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + bindtextdomain("gttest", ".locale"); + textdomain("gttest"); + gettext("foo"); + return 0; +} +])], + try_nls=yes, try_nls=no) + + if test "$try_nls" = yes; then + INTLINCS= + INTLLIBS= + fi + fi + + CPPFLAGS=$save_CPPFLAGS + LIBS=$save_LIBS + fi + + if test $ENABLE_NLS = auto; then + ENABLE_NLS=$try_nls + fi + + AC_MSG_RESULT($try_nls) + + if test $ENABLE_NLS = yes; then + if test $try_nls = no; then + AC_MSG_ERROR(gettext not available) + fi + fi + + AC_SUBST(ENABLE_NLS) + AC_SUBST(INTLINCS) + AC_SUBST(INTLLIBS) + localedir='$(datadir)/locale' + AC_SUBST(localedir) + if test $ENABLE_NLS = yes; then + AC_DEFINE(ENABLE_NLS, 1, [Define if NLS is requested]) + fi + + dnl * + dnl * Check msgfmt and xgettext commands. + dnl * + AC_PATH_PROGS(MSGFMT, gmsgfmt msgfmt, :) + AC_PATH_PROGS(XGETTEXT, gxgettext xgettext, :) + MSGMERGE=msgmerge + AC_SUBST(MSGMERGE) +]) diff --git a/lib/ebu/m4/in6addr.m4 b/lib/ebu/m4/in6addr.m4 new file mode 100644 index 0000000..d4170fc --- /dev/null +++ b/lib/ebu/m4/in6addr.m4 @@ -0,0 +1,111 @@ +dnl * +dnl * Copyright (c) 2001-2006 Motoyuki Kasahara +dnl * +dnl * Redistribution and use in source and binary forms, with or without +dnl * modification, are permitted provided that the following conditions +dnl * are met: +dnl * 1. Redistributions of source code must retain the above copyright +dnl * notice, this list of conditions and the following disclaimer. +dnl * 2. Redistributions in binary form must reproduce the above copyright +dnl * notice, this list of conditions and the following disclaimer in the +dnl * documentation and/or other materials provided with the distribution. +dnl * 3. Neither the name of the project nor the names of its contributors +dnl * may be used to endorse or promote products derived from this software +dnl * without specific prior written permission. +dnl * +dnl * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +dnl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +dnl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +dnl * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORSBE +dnl * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +dnl * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +dnl * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +dnl * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +dnl * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +dnl * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +dnl * THE POSSIBILITY OF SUCH DAMAGE. +dnl * + +dnl * +dnl * Check for struct in6_addr +dnl * +AC_DEFUN([AC_STRUCT_IN6_ADDR], +[AC_CACHE_CHECK(for struct in6_addr, ac_cv_struct_in6_addr, +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif +struct in6_addr address; +])], [ac_cv_struct_in6_addr=yes], [ac_cv_struct_in6_addr=no])]) +if test "$ac_cv_struct_in6_addr" = yes; then + AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, +[Define to 1 if defines `struct in6_addr']) +fi]) + +dnl * +dnl * Check for in6addr_any. +dnl * +AC_DEFUN([AC_DECL_IN6ADDR_ANY], +[AC_REQUIRE([AC_STRUCT_IN6_ADDR]) +if test $ac_cv_struct_in6_addr = no; then + ac_cv_decl_in6addr_any=no +else + AC_CACHE_CHECK(for in6addr_any declaration in netinet/in.h or ws2tcpip.h, + ac_cv_decl_in6addr_any, + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif + +void +testfunc() +{ + unsigned char *address; + address = (char *)&in6addr_any; +} +])], [ac_cv_decl_in6addr_any=yes], [ac_cv_decl_in6addr_any=no])]) + if test "$ac_cv_decl_in6addr_any" = yes; then + AC_DEFINE(IN6ADDR_ANY_DECLARED, 1, +[Define to 1 if `in6addr_any' is declared by ]) + fi +fi]) + +dnl * +dnl * Check for in6addr_loopback. +dnl * +AC_DEFUN([AC_DECL_IN6ADDR_LOOPBACK], +[AC_REQUIRE([AC_STRUCT_IN6_ADDR]) +if test $ac_cv_struct_in6_addr = no; then + ac_cv_decl_in6addr_loopback=no +else + AC_CACHE_CHECK(for in6addr_loopback declaration in netinet/in.h or ws2tcpip.h, + ac_cv_decl_in6addr_loopback, + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif + +int +testfunc() +{ + unsigned char *address; + address = (char *)&in6addr_loopback; +} +])], [ac_cv_decl_in6addr_loopback=yes], [ac_cv_decl_in6addr_loopback=no])]) + if test "$ac_cv_decl_in6addr_loopback" = yes; then + AC_DEFINE(IN6ADDR_LOOPBACK_DECLARED, 1, +[Define to 1 if `in6addr_loopback' is declared by ]) + fi +fi]) diff --git a/lib/ebu/m4/largefile.m4 b/lib/ebu/m4/largefile.m4 new file mode 100644 index 0000000..a0dd034 --- /dev/null +++ b/lib/ebu/m4/largefile.m4 @@ -0,0 +1,63 @@ +dnl * +dnl * Copyright (c) 2009 Motoyuki Kasahara +dnl * +dnl * Redistribution and use in source and binary forms, with or without +dnl * modification, are permitted provided that the following conditions +dnl * are met: +dnl * 1. Redistributions of source code must retain the above copyright +dnl * notice, this list of conditions and the following disclaimer. +dnl * 2. Redistributions in binary form must reproduce the above copyright +dnl * notice, this list of conditions and the following disclaimer in the +dnl * documentation and/or other materials provided with the distribution. +dnl * 3. Neither the name of the project nor the names of its contributors +dnl * may be used to endorse or promote products derived from this software +dnl * without specific prior written permission. +dnl * +dnl * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +dnl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +dnl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +dnl * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +dnl * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +dnl * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +dnl * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +dnl * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +dnl * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +dnl * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +dnl * SUCH DAMAGE. +dnl * + +dnl * +dnl * Check for large file support. +dnl * +AC_DEFUN([eb_SYS_LARGEFILE], [dnl +AC_REQUIRE([AC_SYS_LARGEFILE]) +AC_CACHE_CHECK([for ll modifier of printf], ac_cv_func_printf_ll, +[AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #include + #include + int main() { + char buffer[[128]]; + sprintf(buffer, "%llx", (unsigned long long) 1 << 32); + return (strcmp(buffer, "100000000") == 0) ? 0 : 1; + } +])], [ac_cv_func_printf_ll=yes], [ac_cv_func_printf_ll=no])]) +AC_CACHE_CHECK([for I64 modifier of printf], ac_cv_func_printf_i64, +[AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #include + #include + int main() { + char buffer[[128]]; + sprintf(buffer, "%I64x", (unsigned __int64) 1 << 32); + return (strcmp(buffer, "100000000") == 0) ? 0 : 1; + } +])], [ac_cv_func_printf_i64=yes], [ac_cv_func_printf_i64=no])]) +if test "$ac_cv_func_printf_ll" = yes; then + AC_DEFINE(PRINTF_LL_MODIFIER, 1, +[Define to `1' if printf() recognizes "ll" modifier for long long]) +fi +if test "$ac_cv_func_printf_i64" = yes; then + AC_DEFINE(PRINTF_I64_MODIFIER, 1, +[Define to `1' if printf() recognizes "I64" modifier for __int64]) +fi]) diff --git a/lib/ebu/m4/lcmessage.m4 b/lib/ebu/m4/lcmessage.m4 new file mode 100644 index 0000000..9da65fc --- /dev/null +++ b/lib/ebu/m4/lcmessage.m4 @@ -0,0 +1,27 @@ +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +# serial 1 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_LINK_IFELSE([AC_LANG_SOURCE([ +#include +int +main() +{ + return LC_MESSAGES; +} +])], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define to 1 if you have the `LC_MESSAGES' locale category]) + fi + fi]) diff --git a/lib/ebu/m4/libtool.m4 b/lib/ebu/m4/libtool.m4 new file mode 100644 index 0000000..a3bc337 --- /dev/null +++ b/lib/ebu/m4/libtool.m4 @@ -0,0 +1,8369 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/lib/ebu/m4/ltoptions.m4 b/lib/ebu/m4/ltoptions.m4 new file mode 100644 index 0000000..94b0829 --- /dev/null +++ b/lib/ebu/m4/ltoptions.m4 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/lib/ebu/m4/ltsugar.m4 b/lib/ebu/m4/ltsugar.m4 new file mode 100644 index 0000000..48bc934 --- /dev/null +++ b/lib/ebu/m4/ltsugar.m4 @@ -0,0 +1,124 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/lib/ebu/m4/ltversion.m4 b/lib/ebu/m4/ltversion.m4 new file mode 100644 index 0000000..fa04b52 --- /dev/null +++ b/lib/ebu/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/lib/ebu/m4/lt~obsolete.m4 b/lib/ebu/m4/lt~obsolete.m4 new file mode 100644 index 0000000..c6b26f8 --- /dev/null +++ b/lib/ebu/m4/lt~obsolete.m4 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/lib/ebu/m4/sockaddrin6.m4 b/lib/ebu/m4/sockaddrin6.m4 new file mode 100644 index 0000000..eab7f80 --- /dev/null +++ b/lib/ebu/m4/sockaddrin6.m4 @@ -0,0 +1,68 @@ +dnl * +dnl * Copyright (c) 2001-2006 Motoyuki Kasahara +dnl * +dnl * Redistribution and use in source and binary forms, with or without +dnl * modification, are permitted provided that the following conditions +dnl * are met: +dnl * 1. Redistributions of source code must retain the above copyright +dnl * notice, this list of conditions and the following disclaimer. +dnl * 2. Redistributions in binary form must reproduce the above copyright +dnl * notice, this list of conditions and the following disclaimer in the +dnl * documentation and/or other materials provided with the distribution. +dnl * 3. Neither the name of the project nor the names of its contributors +dnl * may be used to endorse or promote products derived from this software +dnl * without specific prior written permission. +dnl * +dnl * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +dnl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +dnl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +dnl * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORSBE +dnl * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +dnl * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +dnl * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +dnl * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +dnl * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +dnl * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +dnl * THE POSSIBILITY OF SUCH DAMAGE. +dnl * + +dnl * +dnl * Check for struct sockaddr_in6 +dnl * +AC_DEFUN([AC_STRUCT_SOCKADDR_IN6], +[AC_CACHE_CHECK(for struct sockaddr_in6, ac_cv_struct_sockaddr_in6, +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif +struct sockaddr_in6 address; +])], [ac_cv_struct_sockaddr_in6=yes], [ac_cv_struct_sockaddr_in6=no])]) +if test "$ac_cv_struct_sockaddr_in6" = yes; then + AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, +[Define to 1 if defines `struct sockaddr_in6']) +fi]) + +dnl * +dnl * Check for struct sockaddr_storage +dnl * +AC_DEFUN([AC_STRUCT_SOCKADDR_STORAGE], +[AC_CACHE_CHECK(for struct sockaddr_storage, ac_cv_struct_sockaddr_storage, +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif +struct sockaddr_storage address; +])], [ac_cv_struct_sockaddr_storage=yes], [ac_cv_struct_sockaddr_storage=no])]) +if test "$ac_cv_struct_sockaddr_storage" = yes; then + AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, +[Define to 1 if defines `struct sockaddr_storage']) +fi]) + diff --git a/lib/ebu/m4/sockinttypes.m4 b/lib/ebu/m4/sockinttypes.m4 new file mode 100644 index 0000000..c396b34 --- /dev/null +++ b/lib/ebu/m4/sockinttypes.m4 @@ -0,0 +1,198 @@ +dnl * +dnl * Copyright (c) 2001-2006 Motoyuki Kasahara +dnl * +dnl * Redistribution and use in source and binary forms, with or without +dnl * modification, are permitted provided that the following conditions +dnl * are met: +dnl * 1. Redistributions of source code must retain the above copyright +dnl * notice, this list of conditions and the following disclaimer. +dnl * 2. Redistributions in binary form must reproduce the above copyright +dnl * notice, this list of conditions and the following disclaimer in the +dnl * documentation and/or other materials provided with the distribution. +dnl * 3. Neither the name of the project nor the names of its contributors +dnl * may be used to endorse or promote products derived from this software +dnl * without specific prior written permission. +dnl * +dnl * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +dnl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +dnl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +dnl * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORSBE +dnl * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +dnl * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +dnl * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +dnl * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +dnl * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +dnl * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +dnl * THE POSSIBILITY OF SUCH DAMAGE. +dnl * + +dnl * +dnl * Check for socklen_t. +dnl * +AC_DEFUN([AC_TYPE_SOCKLEN_T], +[AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#endif +socklen_t socklen; +])], [ac_cv_type_socklen_t=yes], [ac_cv_type_socklen_t=no])]) +if test "$ac_cv_type_socklen_t" != yes; then + AC_DEFINE(socklen_t, int, +[Define to `int' if or does not define.]) +fi]) + +dnl * +dnl * Check for in_port_t. +dnl * +AC_DEFUN([AC_TYPE_IN_PORT_T], +[AC_CACHE_CHECK([for in_port_t], ac_cv_type_in_port_t, +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#include +#endif +in_port_t in_port; +])], [ac_cv_type_in_port_t=yes], [ac_cv_type_in_port_t=no])]) +if test "$ac_cv_type_in_port_t" != yes; then + ac_cv_sin_port_size=unknown + AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #include + #endif + int main() { + struct sockaddr_in addr; + return (sizeof(addr.sin_port) == sizeof(long)) ? 0 : 1; + } + ])], [ac_cv_sin_port_size=long]) + AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #include + #endif + int main() { + struct sockaddr_in addr; + return (sizeof(addr.sin_port) == sizeof(int)) ? 0 : 1; + } + ])], [ac_cv_sin_port_size=int]) + AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #include + #endif + int main() { + struct sockaddr_in addr; + return (sizeof(addr.sin_port) == sizeof(short)) ? 0 : 1; + } + ])], [ac_cv_sin_port_size=short]) + AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #include + #endif + int main() { + struct sockaddr_in addr; + return (sizeof(addr.sin_port) == sizeof(char)) ? 0 : 1; + } + ])], [ac_cv_sin_port_size=char]) + if test "$ac_cv_sin_port_size" = unknown; then + AC_MSG_ERROR([Failed to get size of sin_port in struct sockaddr_in.]) + fi + AC_DEFINE_UNQUOTED(in_port_t, unsigned $ac_cv_sin_port_size, +[Define to `unsigned char', `unsigned short', `unsigned int' or +`unsigned long' according with size of `sin_port' in `struct sockaddr_in', +if , or does not define +`in_port_t'.]) +fi]) + +dnl * +dnl * Check for sa_family_t. +dnl * +AC_DEFUN([AC_TYPE_SA_FAMILY_T], +[AC_CACHE_CHECK([for sa_family_t], ac_cv_type_sa_family_t, +[AC_COMPILE_IFELSE([AC_LANG_SOURCE([ +#include +#ifdef ENABLE_WINSOCK2 +#include +#else +#include +#endif +sa_family_t sa_family; +])], [ac_cv_type_sa_family_t=yes], [ac_cv_type_sa_family_t=no])]) +if test "$ac_cv_type_sa_family_t" != yes; then + ac_cv_sa_family_size=unknown + AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #endif + int main() { + struct sockaddr addr; + return (sizeof(addr.sa_family) == sizeof(long)) ? 0 : 1; + } + ])], [ac_cv_sa_family_size=long]) + AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #endif + int main() { + struct sockaddr addr; + return (sizeof(addr.sa_family) == sizeof(int)) ? 0 : 1; + } + ])], [ac_cv_sa_family_size=int]) + AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #endif + int main() { + struct sockaddr addr; + return (sizeof(addr.sa_family) == sizeof(short)) ? 0 : 1; + } + ])], [ac_cv_sa_family_size=short]) + AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #ifdef ENABLE_WINSOCK2 + #include + #else + #include + #endif + int main() { + struct sockaddr addr; + return (sizeof(addr.sa_family) == sizeof(char)) ? 0 : 1; + } + ])], [ac_cv_sa_family_size=char]) + if test "$ac_cv_sa_family_size" = unknown; then + AC_MSG_ERROR([Failed to get size of sa_family in struct sockaddr.]) + fi + AC_DEFINE_UNQUOTED(sa_family_t, unsigned $ac_cv_sa_family_size, +[Define to `unsigned char', `unsigned short', `unsigned int' or +`unsigned long' according with size of `sa_family' in `struct sockaddr', +if or does not define `sa_family_t'.]) +fi]) diff --git a/lib/ebu/misc/ebdump b/lib/ebu/misc/ebdump new file mode 100644 index 0000000..bcf5ce6 --- /dev/null +++ b/lib/ebu/misc/ebdump @@ -0,0 +1,79 @@ +#! /usr/bin/perl +# +# Copyright (c) 2004-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +# +# Parse command line arguments. +# +die "usage: $0 file page[:offset]\n" if (@ARGV != 2); + +$file = $ARGV[0]; +if ($ARGV[1] =~ /^([0-9a-fA-F]+)$/) { + $offset = (hex($1) - 1) * 2048; +} elsif ($ARGV[1] =~ /^([0-9a-fA-F]+):([0-9a-fA-F]+)$/) { + $offset = (hex($1) - 1) * 2048 + hex($2); +} else { + die "$0: invalid offset\n"; +} +die "$0: invalid offset\n" if ($offset < 0); + +# +# Open a file. +# +open(FILE, $file) || die "$0: failed to open the file, $!: $file.\n"; +seek(FILE, $offset, 0) || die "$0: failed to seek the file, $!: $file.\n"; + +# +# Read the file. +# +$count = 0; +while ($count < 2048) { + last if (read(FILE, $buf, 16) != 16); + @data = unpack("C16", $buf); + printf '%04x:%03x ', $offset / 2048 + 1, $offset % 2048; + for ($i = $0; $i < 16; $i += 2) { + printf('%02x%02x', $data[$i], $data[$i + 1]); + } + print ' '; + for ($i = $0; $i < 16; $i += 2) { + if (0x21 <= $data[$i] && $data[$i] <= 0x7e + && 0x21 <= $data[$i + 1] && $data[$i + 1] <= 0x7e) { + printf('[%c%c]', $data[$i] | 0x80, $data[$i + 1] | 0x80); + } else { + printf('%02x%02x', $data[$i], $data[$i + 1]); + } + } + print "\n"; + $offset += 16; + $count += 16; +} + +# +# Close the file. +# +close(FILE); diff --git a/lib/ebu/misc/ebfixlog b/lib/ebu/misc/ebfixlog new file mode 100644 index 0000000..494b530 --- /dev/null +++ b/lib/ebu/misc/ebfixlog @@ -0,0 +1,47 @@ +#! /usr/bin/perl +# +# Copyright (c) 2004-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +use Getopt::Std; +getopts('zn') or die "Usage: $0 [-z|-n] [file...]\n"; +$opt_z = 1 if (defined($opt_n)); # `-n' implies `-z'. + +$indent = 0; + +while (<>) { + chomp; + if (/^\[EB\] (.*)$/) { + $message = $1; + next if (!$opt_z && $message =~ /^\S+: zio_/); + next if (!$opt_n && $message =~ /^\S+: ebnet_/); + $indent-- if ($message =~ /^out: /); + $_ = '[EB] ' . (' ' x ($indent * 2)) . $message; + $indent++ if ($message =~ /^in: /); + } + print $_, "\n"; +} diff --git a/lib/ebu/missing b/lib/ebu/missing new file mode 100644 index 0000000..ac3d51c --- /dev/null +++ b/lib/ebu/missing @@ -0,0 +1,378 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, 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. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). This is about non-GNU programs, so use $1 not +# $program. +case $1 in + lex*|yacc*) + # Not GNU programs, they don't have --version. + ;; + + tar*) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $program in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te*) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison*|yacc*) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex*|flex*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit $? + fi + ;; + + makeinfo*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar*) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/lib/ebu/move-if-change b/lib/ebu/move-if-change new file mode 100644 index 0000000..dae150f --- /dev/null +++ b/lib/ebu/move-if-change @@ -0,0 +1,49 @@ +#! /bin/sh +# +# Copyright (c) 2004-2006 Motoyuki Kasahara +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +NEW_FILE=$1 +TARGET_FILE=$2 + +if [ ! -r $NEW_FILE ]; then + echo "$0: cannot read $NEW_FILE" 1>&2 + exit 1 +fi + +if [ ! -r $TARGET_FILE ]; then + mv -f $NEW_FILE $TARGET_FILE +else + if cmp $NEW_FILE $TARGET_FILE > /dev/null 2>&1; then + echo "$0: $TARGET_FILE is unchanged" 1>&2 + rm -f $NEW_FILE + else + mv -f $NEW_FILE $TARGET_FILE + fi +fi + +exit 0 diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/AUTHORS b/lib/ebu/others/eblook-1.6.1+media-20200414/AUTHORS new file mode 100644 index 0000000..65940f7 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/AUTHORS @@ -0,0 +1,10 @@ +Keisuke Nishida wrote eblook.c and eblook.texi. + +Keisuke MORI compiled eblook on the Cygwin environment. + +Satomi modified for EB-3. + +Kazuhiko modified for EB-3. + +Takashi Nemoto wrote codeconv.c and +codeconv.h. diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/COPYING b/lib/ebu/others/eblook-1.6.1+media-20200414/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program 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 + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/ChangeLog b/lib/ebu/others/eblook-1.6.1+media-20200414/ChangeLog new file mode 100644 index 0000000..17616e4 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/ChangeLog @@ -0,0 +1,1050 @@ +2020-04-14 Kazuhiro Ito + + Update autotools. + + * VERSION: Removed. Version information is written into + configure.ac. + + * Makefile.am (EXTRA_DIST): Remove VERSION. + +2020-04-14 Kazuhiro Ito + + Support color chart. `color' command is available if linked with + EB Library with UTF-8 support 4.5 or later. + + * eblook.c (command_color): New function. + (command_table, text_hooks, , hook_tags): Support color chart when + available. + +2015-07-24 Kazuhiro Ito + + * eblook.c (search_pattern, insert_prev_next): Fix the bug that + very long heading's tail is not displayed. + +2015-03-01 Kazuhiro Ito + + * eblook.c (main): Fix the case that HOME environment variable is + not defined on non-DOS system. Fix buffer overrun with very long + HOME directory. + Cf. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=715857 + +2014-11-16 Kazuhiro Ito + + * getopt.c: Include string.h. + +2014-11-16 Kazuhiro Ito + + * configure.ac: Fix the case building out of source directory. + +2014-11-16 Kazuhiro Ito + + * eblook.c (main): Remove unneeded check for history file name. + +2014-11-15 Kazuhiro Ito + + * bmp_in.c (deflate_rgb24): Fix array length of buf variable. + +2014-11-15 Kazuhiro Ito + + * eblook.c (search_wild_match_pattern): Renamed from + seach_wild_match_pattern. + (eblook_hit_list_wild): Adjusted. + +2014-11-15 Kazuhiro Ito + + * eblook.c (main, fileman_completion): Remove old style readline + usage. + Cf. https://trac.macports.org/ticket/45690 + +2013-09-19 Kazuhiro Ito + + * eblook.c (command_book): Recognize ebnet URL when DOS_FILE_PATH + is defined. + Cf. https://github.com/lookup2/lookup2/issues/12#issuecomment-24679109 + +2011-08-01 Kazuhiro Ito + + Support EB Library with UTF-8 support 20110801 and later. + * configure.ac: Use eb_LIB_EBU macro. + + * bmp2ppm.c: Include libebu header when available. + + * bmp_in.c: Likewise. + + * eblook.c: Likewise. + + * Makefile.am (SUBDIRS): Removed. + + * m4/Makefile.am: Removed. + + * m4/ebu.m4: New file. + +2010-10-27 Kazuhiro Ito + + * eblook.c (command_content): Fix the case when eb_backward_text + or following eb_tell_text failed after loop. + +2010-08-18 Kazuhiro Ito + + * eblook.c (process_child, show_candidate): Fix arguemnt type + mismatch in MULTI_DEBUG part. + +2010-08-16 Kazuhiro Ito + + * codeconv.c (euc_to_current, current_to_euc): Refined. + Initialize conversion descriptor when error occured instead of + before using it. + +2010-08-14 Kazuhiro Ito + + * eblook.c: Check if EB_HOOK_EBXAC_GAIJI is defined. + +2010-08-14 Kazuhiro Ito + + * eblook.c (main): Do not check book's character code. + +2010-08-14 Kazuhiro Ito + + * codeconv.c (current_to_euc, euc_to_current): Do not preserve + next data to write when buffer is overfilled. Initialize + conversion descriptor before using it. + +2010-08-14 Kazuhiro Ito + + * eblook.c (eblook_hit_list_wild, command_mpeg_path) + (eblook_search_wild): Add some casts. + + * codeconv.h (xfgets): Change the type of second argument from int + to size_t + + * codeconv.c (xfgets): Likewise. + + * eblook.c (read_command): Likewise. + +2010-05-15 Kazuhiro Ito + + * eblook.c (text_hooks, heading_hooks): Support EB_HOOK_GB2312, + EB_HOOK_EBXAC_GAIJI, EB_HOOK_BEGIN_UNICODE and EB_HOOK_END_UNICODE + if available. + (hook_gb2312, hook_ebxac_gaiji): New functions. + (hook_tags): Support EB_HOOK_BEGIN_UNICODE and EB_HOOK_END_UNICODE + if available. + (command_content): When entry begins with '-', display backward + content. + +2010-02-18 Kazuhiro Ito + + * eblook.c (parse_command_line): Fix wrong use of strcpy(). + Cf. http://d.hatena.ne.jp/toshiharu_z/20091114/1258209867 + +2009-07-09 Kazuhiro Ito + + * bmp_in.c (deflate_rgb24): Fix bug in decoder. + +2009-05-27 Kazuhiro Ito + + * codeconv.c (xputs2): Do not call convert_nbsp. + (convert_nbsp): Removed. + + * eblook.c (hook_iso8859_1): Convert NO-BREAK SPACE to SPACE. + +2009-04-11 Kazuhiro Ito + + * eblook.c (command_info): Support JIS X 4081 UTF-8 extension. + +2009-02-25 Kazuhiro Ito + + * eblook.c (hook_decoration): Support character modification + descriptors. + (text_hooks, heading_hooks): Add entries for + EB_HOOK_BEGIN_DECORATION and EB_HOOK_END_DECORATION. + +2009-02-19 Kazuhiro Ito + + * eblook.c (hook_font, hook_decoration, hook_stopcode, hook_img) + (hook_tags): Return result of eb_write_text_string. + +2009-02-18 Kazuhiro Ito + + * eblook.c (default_pager): Define only when pager feature is + enabled. + (default_escape_text): New constant. + (escape_text): New variable. + (main): Set internal variable "escape-text" in + initializing. Update escape_text according to the value of + "escape-text". + (hook_iso8859_1): New function. + (hook_euc_to_ascii): Escape text when needed. + (text_hooks, heading_hooks): Add entry for EB_HOOK_ISO8859_1. + +2009-02-13 Kazuhiro Ito + + * Makefile.am (EXTRA_DIST): Add README.org + + * README.org: Renamed from README. + * README: New file. + +2009-02-07 Kazuhiro Ito + + * eblook.c (command_bmp, command_jpeg, command_wav) + (command_mpeg): Call fopen with mode "wb". Do not call setmode. + + * bmp2ppm.c (command_bmp2ppm, command_bmp2tiff): Ditto. + +2009-02-06 Kazuhiro Ito + + * configure.ac (AC_PREREQ, eb_SYS_LARGEFILE): Added. + (AC_PROG_MAKE_SET, AC_HEADER_STDC, AC_HEADER_STAT, AC_C_CONST) + (AC_TYPE_OFF_T, AC_FUNC_MEMCMP, AC_REPLACE_FUNCS) + (AC_HEADER_TIME): Removed. + (AM_INIT_AUTOMAKE): Remove arguments. + (AC_CHECK_HEADERS): Remove checks for stdlib.h, string.h, unistd.h + and ctype.h. + (AC_CHECK_FUNCS): Remove checks for memcpy, strchr, strerror and + strtol. + (AC_FUNC_ALLOCA): Added. + (AC_CONFIG_FILES): Remove rules for dos/Makefile and dos/config.h, + and Add rule for m4/Makefile. + + * bmp2ppm.c, bmp_in.c, codeconv.c, codeconv.h, eblook.c, getopt.c: + * getopt.h, getopt1.c, strcasecmp.c: Assume + POSIX.1-1990 systems and requires ANSI C89 compiler. + + * memcmp.c, memset.c, strdup.c, dos/*: Removed. + + * win32.c: + + * Makefile.am (eblook_SOURCES): Add win32.c. + (EXTRA_DIST): Remove memset.c and win32.c. + (SUBDIRS): Remove dos and add m4. + + * m4/Makefile.am, m4/Makeifle.in: New files. + + * m4/largefile.m4, m4/eb4.m4: Import from EB Library 4.4. + + * m4/libtool.m4, m4/m4/ltdl.m4, m4/ltoptions.m4, m4/ltsugar.m4: + * m4/ltversion.m4, m4/lt~obsolete.m4, ltmain.sh, config.guess: + * config.sub: Import from libtool-2.2.6. + +2009-02-03 Kazuhiro Ito + + * configure.ac: Change default encoding to SHIFT-JIS on MinGW. + +2008-01-16 Kazuhiro Ito + + * eblook.c (command_mpeg_path): New function. + (command_table): Add entry for it. + +2007-08-06 Kazuhiro Ito + + * eblook.c (text_hooks): Add entry for EB_HOOK_SET_INDENT. + (hook_decoration): Support hook code of EB_HOOK_SET_INDENT. + +2007-06-01 Kazuhiro Ito + + * eblook.c (main): New option --non-interactive (-i). + (short_options, long_options, show_help): Ditto. + (interactive_mode): Change initial value. + (show_version): Update copyright notice. + +2007-03-04 Kazuhiro Ito + + * eblook.c (EB_INDEX_STYLE_CONVERT): New constant. Originally + defined in EB Library. + (search_wild_convert_pattern): Remove spaces in pattern. Convert + lower cases to upper as required. + +2007-02-03 Kazuhiro Ito + + * eblook.c (uint1, uint2, uint 4): New macros. + (eblook_wild_pattern, eblook_wild_page, eblook_wild_count): New + variables. + (eblook_search_wild, eblook_hit_list_wild, eblook_have_wild_search) + (search_wild_insert_euc_char, search_wild_convert_pattern) + (seach_wild_match_pattern): New functions. + (command_subinfo, parse_entry_id, search_pattern): Support + searching with wild card. + +2007-02-03 Kazuhiro Ito + + * eblook.c (command_pbm, command_xbm, process_child) + (show_candidate): Fix argument type mismatch. + +2007-01-28 Kazuhiro Ito + + * eblook.c (command_book): Finalize appendix when appendix is not + specified. + +2007-01-20 Kazuhiro Ito + + * eblook.c (search_pattern): In deciding method, search-method is + checked prior to auto judgment. Support cross search. + (eblook_search_cross): New function. + +2006-12-12 Kazuhiro Ito + + * eblook.c (show_prev_next_flag): New variable. + (insert_content): Don't show references to previous and next + articles when show_prev_next_flag is equal to 0. + (hook_img): Set show_prev_next_flag to 0 when called with + EB_HOOK_END_IMAGE_PAGE hook. + (hook_tags): Ditto when called with EB_HOOK_GRAPHIC_REFERENCE hook. + +2006-12-07 Kazuhiro Ito + + * bmp_in.c (LoadBMP): (Almost) rewritten. Support 4bit RLE + compression and do not refer header information for a file size. + (deflate_rle4, deflate_rle8, deflate_rgb1, deflate_rgb4) + (deflate_rgb8, deflate_rgb24, init_bmp_buf) + (read_bytes_from_bmp_buf, seek_bytes_bmp_buf): New functions. + These are called from LoadBMP function. + (read_data_from_eb): Return byte count when function read data + partially. + (get_word, read_dword_from_eb): Removed. + +2006-12-04 Kazuhiro Ito + + * eblook.c (command_table[]): Add commands for graphic menu. + (text_hooks[]): Add hooks for image map and clickable area. + (command_image_menu): New function. + (hook_tags): Handle image map and clickable area. + +2006-07-25 Kazuhiro Ito + + * eblook.c (hook_img): Set inline tag for inline images. + +2006-07-12 Kazuhiro Ito + + * VERSION: Change to 1.6.1+media-yyyymmdd. + * eblook.c (excute_command): Fix typo in error string. + +2006-06-27 Hideyuki SHIRAI + + * eblook.c (command_table[]): Add commands for movie. + (text_hooks[]): Add hooks for movie. + (command_mpeg): New function. + (hook_img): Handle movie hooks. + +2006-04-12 Kazuhiro Ito + + * eblook.c (main): Recognize ebnet URL when DOS_FILE_PATH is defined. + +2005-11-19 Kazuhiro Ito + + * eblook.c: Add WAVE sound support. + +2004-06-18 Kazuhiko + + * bmp2ppm.c, eblook.c : no longer use EB_P() + +2004-02-13 Kazuhiko + + * Version 1.6 released. + +2003-06-30 Takashi NEMOTO + + * eblook.c (insert_dump): initialize outFP by default value + +2002-12-08 NEMOTO Takashi + + * codeconv.c: convert from ISO8859-1 NBSP(0xa0) to SPACE(0x20) + +2002-11-19 NEMOTO Takashi + + * eblook.c : use $HOME/eblookrc instead of $HOME/.eblookrc in DOS mode + change variable "pager" default to "off" + don't decorate search result + add '-a' option to "show" command (display internal val.) + bugfix : search history and + revise pager support + +2002-11-18 NEMOTO Takashi + * configure.ac : Search eb.conf at additional path "/etc" + Check readline library when --with-readline is used + + + Merge from eblook-1_6devel-branch +------------------------------------------ +2002-11-17 NEMOTO Takashi + + * eblook.c (search pattern): bugfix:search without argument() + * eblook.c (parse_entry_id): remove duplicate entry in parse_entry_id + * eblook.c (insert_dump): add pager support + +2002-11-16 NEMOTO Takashi + + * eblook.c (hook_img): Check definition of EB_HOOK_ inline image + +2002-11-15 NEMOTO Takashi + + * configure.ac: revise libreadline detection + * eblook.c (search_pattern): bug fix (search command) + ===== TODO: bugfix - search without argument () ==== + ===== TODO: bugfix - remove duplicate entry in parse_entry_id ==== + +2002-11-02 NEMOTO Takashi + + * eblook.texi : Add documents (Compile, Install) + * eblook.c : support eb_forward/backward_text + +--------------------------------------------- + +2002-11-16 Satomi + + * eblook.c: Fix #ifdef condition for HAVE_SET_MODE. + * bmp2ppm.c: Ditto. + +2002-11-15 Satomi + + * eblook.c (command_bmp): Encode filename in SJIS if + DOS_FILE_PATH is defined. + + * eblook.c (command_jpeg): Encode filename in SJIS if + DOS_FILE_PATH is defined. Do not close the file handle + if not opened yet, to avoid fatal error on VC++ debug build. + +2002-11-15 Satomi + + * eblook.c (hook_img): Use EB_HOOK_BEGIN_IN_COLOR_xxx only if + defined. + +2002-11-09 NEMOTO Takashi + + * eblook.c (hook_img): add inline image support + +2002-11-04 Satomi + + * eblook.c (show-version): Modify copyright year. + * bmp2ppm.c: Include and if WIN32 or + HAVE_SETMODE is defined. + +2002-10-26 NEMOTO Takashi + + * eblook.c (main): cleanup configure.ac + +2002-10-25 NEMOTO Takashi + + * eblook.c (insert_content): Disable pager when called from lookup + +2002-10-23 NEMOTO Takashi + + * eblook.c (read_command): treat last line of .eblookrc + +2002-10-22 NEMOTO Takashi + + * eblook.c : disable readline library when invoked from lookup + * eblook.c : allow comment in .eblookrc + ('#' or ';' at the begining of line) + +2002-10-20 NEMOTO Takashi + + * configure.ac: remove AC_CYGWIN, AC_MINGW32 + +---- +Merging eblook-interactive-branch to head: + + Tag "HEAD" + + 2002-10-26 NEMOTO Takashi + * dos/*, eblook.c : merge support for dos, os/2 (watcom C) + + Tag "eblook-1_6devel-merge2" + 2002-10-21 NEMOTO Takashi + + * eblook.c : + remove redundant entries from hit list + replace part of "WIN32" with "DOS_FILE_PATH" + support inline image + support multiple subbook in same directory + + Tag "eblook-1_6devel-merge1" + + 2002-10-20 NEMOTO Takashi + * bmp2ppm.c, bmp_in.c : fix type conversion + * bmp2ppm.c : bugfix (.ppm write error) + + Tag "eblook-1_6devel-merge0" +---- +2002-10-08 NEMOTO Takashi + + * eblook.c (main): bugfix (win32 : bind appendix file) + +2002-09-21 Satomi + + * eblook.c, bmp2ppm.c: use setmode() to disable newline coversion + when saving a binary file on Win32. set HAVE_SETMODE to 1 to + enable this routine on other platforms than Win32. + +2002-05-23 NEMOTO Takashi + + * Makefile.am (EXTRA_DIST): Add win32.c + +2002-04-25 NEMOTO Takashi + + * eblook.c: Merge readline, pager related codes written by jsawa + new variable "pager" + * configure.ac : new option "--with-pager", "--with-readline" + * codeconv.[ch] (current_to_euc) : remove static + +2002-03-26 Kazuhiko + + * configure.ac: Renamed from configure.in. Merge acconfig.h. + * acconfig.h: Removed. + +2002-03-17 NEMOTO Takashi + + * eblook.c : new variable "decorate-mode" ("on" or "true", default:off) + +2002-03-13 Satomi + + * bmp_in.c: avoid definition conflict with on Win32. + +2002-01-08 NEMOTO Takashi + + * eblook.c : change EB_HOOK_ macro names (as those of eb-3.2beta1) + +2002-01-06 NEMOTO Takashi + + * eblook.c : support narrow kana. + new variable "use-narrow-kana" ("true" or others) + +2001-12-28 NEMOTO Takashi + + * eblook.c : add decoration (emphasis, bold, etc.) code + +2001-12-09 NEMOTO Takashi + + * bmp_in.c: bugfix (24bit bmp) + * eblook.c: remove debug message + +2001-12-08 NEMOTO Takashi + + * bmp2ppm.c, bmp_in.c, eblook.c: Revise error check + +2001-12-07 NEMOTO Takashi + + * bmp2ppm.c, bmp_in.c, eblook.c: Add error check (graphics decode) + +2001-11-30 Kazuhiko + + * eblook.c (hook_img): Remove '\n' from '' tag. + +2001-11-29 NEMOTO Takashi + + * bmp_in.c: Add new file. BMP file decoder. + * bmp2ppm.c: Remove bmp decoder + +2001-11-28 Kazuhiko + + * eblook.c (hook_img): Revise output tag. + +2001-11-28 NEMOTO Takashi + + * bmp2ppm.c (command_bmp2tiff): Add new functions for TIFF + +2001-11-27 NEMOTO Takashi + + * eblook.c (insert_dump): Fix 1 byte lacking problem. + (main): Remove locale_init("SJIS") under _WIN32 condition + +2001-11-23 NEMOTO Takashi + + * eblook.c (text_hooks[]): Add EB_HOOK_STOP_CODE for eb-3.2. + * codeconv.h, codeconv.c: Fix variable argument functions + * codeconv.c: Add Watcom C compiler specific code + * codeconv.c, codeconv.h: Bug fix (without iconv case) + Bug fix (size_t)-1 > 0 when iconv returns error + * codeconv.h, codeconv.c, configure.in: + Check existence of sys/types.h, isatty, and so on. + * configure.in: bug-fix: FALLBACK_ENCODING on HP-UX + * configure.in: Change default FALLBACK_ENCODING on CYGWIN + +2001-11-18 YAMAGATA + + * eblook.c (command_xbm, command_pbm): New commands to extract + monochrome image in text format. Type "xbm page:offset width + height" or "pbm page:offset width height". pbm is almost for the + debugging purpose. + (hook_img): New EB hook function to handle image tag, Currently + supports only 0x1f44/0x1f64 pair. + +2001-09-04 Satomi + + * eblook.c (main, command_book): Fix Win32 path manipulation. + (main): Set default locale to SJIS on Win32 when kanji-code is set + to AUTO. + + * win32.c: Remove extra 0x0D codes (sorry for large diff). + +2001-08-31 Kazuhiko + + * Version 1.5 released. + +2001-07-31 Kazuhiko + + * eblook.c (hook_stopcode): Use EB_SUCCESS and EB_ERR_STOP_CODE + for a return value (contributed by yamagata@nwgpc.kek.jp). + +2001-07-12 Kazuhiko + + * Version 1.5pre2 released. + +2001-07-11 Kazuhiko + + * eblook.c (show_version): Revise copyright notice. + + * eblook.texi: Revise document. + +2001-07-09 Kazuhiko + + * eblook.texi (How To Get): Revise information. + +2001-07-08 Kazuhiko + + * Version 1.5pre1 released. + + * eblook.texi: Add description about keyword search and multiple + search. + + * eblook.c: Fix typo in command_table[]. + +2001-07-04 NEMOTO Takashi + + * eblook.c: Define ENABLE_PTHREAD when EBCONF_ENABLE_PTHREAD is + defined. + +2001-06-29 Kazuhiko + + * eblook.c (can_menu_narrow_char): Revise for eb-3.0 (contributed + by yamagata@nwgpc.kek.jp). + (can_menu_wide_char): Ditto. + +2001-06-20 Satomi + + * win32.c: include "config.h" when HAVE_CONFIG_H is defined. + (dos_fix_path): assume characters as unsigend. + +2001-06-20 Satomi + + * eblook.c: (main, command_book): convert SJIS path to EUC + before printing (on Win32). + (command_book): do not report appendix when not bound. + convert '/'s in a path to '\\'s before passing to eb library + (on Win32). + (show_candidate_level): declare as void to avoid a compiler + warning. + + * codeconv.c: (locale_init): do not refer to cur_to_euc and + euc_to_cur when HAVE_ICONV is not defined. + (current_to_euc, euc_to_current): bug fix when reading the + input string. Support single-byte kana in SJIS conversion. + + * win32.c: new file for Win32. + +2001-06-17 Kazuhiko + + * eblook.texi (Overview): Add description about keyword search. + +2001-04-09 Kazuhiko + + * eblook.c: Implement 'label' command (contributed by + yamagata@nwgpc.kek.jp). + (command_label): New function. + (show_entry_candidate): New function. + (show_label): New function. + +2001-04-09 NEMOTO Takashi + + * codeconv.c : Add ISO-2022-JP Alias support (JIS, ...) + +2001-04-08 NEMOTO Takashi + + * codeconv.c : reset iconv conversion state after code conversion + * Fix incorrect ChangeLog + +2001-04-08 Kazuhiko + + * eblook.texi: Change contact information etc. + + * eblook.c (main): New option --encoding (-e). Ignore case in + matching kanji-code option name. + + * README: Modify required version of eb library. + + * configure.in: Modified for merged codeconv.c. + + * memcmp.c: New file. + * strcasecmp.c: New file. + * strdup.c: New file. + + * eblook.c (eblook_read): Remove. + (eblook_write): Remove. + (jis2euc): Remove. + (sjis2euc): Remove. + (write_euc2jis): Remove. + (write_euc2sjis): Remove. + +2001-04-04 NEMOTO Takashi + + * configure.in : HP-UX treatment (default=Shift-JIS) + * codeconv.c : update comments, + remove FALLBACK_ENCODING definition + +2001-04-02 NEMOTO Takashi + + * codeconv.c: fix locale treatment (in the case + that locale is not japanese, such as C, en_US and so on..). + simplify initialize routine + +2001-02-28 Takashi NEMOTO + + * codeconv.c: fix typos, remove temporary comments + +2001-02-25 NEMOTO Takashi + + * codeconv.c : fix initialization sequence + +2001-02-23 NEMOTO Takashi + + * codeconv.c : remove outjstr, getjstr functions + rewrite initialize function (locale_init) + new current_to_euc, euc_to_current functions + rewrite xputs2 using euc_to_current function + new xfgets function using current_to_euc + +2001-02-13 Kazuhiko + + * eblook.c (command_subinfo): Disable 'graphic' search that is + removed in eb-3.0alpha4. + +2001-02-12 Satomi + + * eblook.c: Use KANJICODE enum type, declared in codeconv.h. + * eblook.c: Avoid compiler warnings. + +2001-02-12 Satomi + + * codeconv.h: Add KANJICODE enum type. + * codeconv.c (xputs2): Refer to kanji_code external variable when + HAVE_ICONV is not defined. + +2001-01-26 Kazuhiko + + * codeconv.h: Never define pseudo function as real function. + +2001-01-24 NEMOTO Takashi + + * configure.in : fallback-charset => fallback-encoding + * codeconv.c : FALLBACK_CODESET => FALLBACK_ENCODING + * acconfig.h : FALLBACK_CHARSET => FALLBACK_ENCODING, + add #undef SMALL_STACK + +2001-01-23 Takashi NEMOTO + + * codeconv.c (locale_init) : Revert FALLBACK_CHARSET code + +2001-01-23 Takashi NEMOTO + + * configure.in, acconfig.h, codeconv.c: + rename from DEFAULT_CHARSET to FALLBACK_CHARSET + * codeconv.c (locale_init, xputs2, getjstr): Add error check code. + (xputs2): fix memory leak + +2001-01-21 Kazuhiko + + * codeconv.h: Never define pseudo function as real function. + + * eblook.c: New Macro MAX_DUMP_SIZE . + (main): New variable max-dump. + (command_dump): New function. + (insert_dump): New function. + +2001-01-10 NEMOTO Takashi + + * codeconv.c (xputs): Put newline after string. + +2001-01-08 Kazuhiko + + * codeconv.c (xputs2): Allocate memory for output buffer + dynamically. Return not 0 but EOF on error. + (xfgets): Allocate memory for temporary buffer same as 2nd + argument. + +2001-01-06 Kazuhiko + + * configure.in: Support iconv. + + * eblook.c (read_command): Use xfgets instead of fgets. + + * codeconv.h: New file. + * codeconv.c: New file. + +2001-01-03 Kazuhiko + + * eblook.c (text_hooks[]) Add EB_HOOK_BEGIN_CANDIDATE and + EB_HOOK_END_CANDIDATE_GROUP'. + (hook_tags): Add cases of EB_HOOK_BEGIN_CANDIDATE and + EB_HOOK_END_CANDIDATE_GROUP'. + +2000-12-20 Kazuhiko + + * eblook.c (search_pattern): Check return value of eb_seek_text, + eb_read_heading and eb_read_text. Terminate result of + eb_read_heading and eb_read_text. + (show_candidate): Change function type from void to int. + +2000-12-19 Kazuhiko + + * eblook.c (text_hooks[]): Remove EB_HOOK_{BEGIN,END}_MENU. + Temporary remove EB_HOOK_{BEGIN,END}_{PICTURE,SOUND}. + (multi_candidate_hooks[]): Ditto. + (hook_newline): Remove. Use eb_hook_newline instead of it. + (hook_font): Revise for eb-3.0alpha3. + +2000-12-12 Kazuhiko + + * Makefile.am (eblook_LDADD): Add @LIBOBJS@. + +2000-10-25 Motoyuki Kasahara + + * eblook.c: Beaufify code. + +2000-10-20 Kazuhiko + + * memset.c: New file. + + * configure.in: Add 'AC_REPLACE_FUNCS(memset)'. + + * Makefile.am (EXTRA_DIST): Add 'memset.c'. + +2000-10-20 Rei + + * eblook.c (eblook_search_keyword): Regress to rev.1.17 (sorry). + +2000-10-19 Rei + + * eblook.c (command_info, parse_dict_id): Minor change for better + error handling. + (search_pattern): Restore the 2nd argument of eb_seek_text() call, + which had been accidentally changed. + (process_child): Add return value (0) to avoid compiler warning. + (show_candidates_level): Declare as void function to avoid compiler + warning. + (can_menu_begin, can_menu_end, show_candidates_level): Use memset() + instead of bzero(). + +2000-10-18 Kazuhiko + + * eblook.c (search_pattern): Support keyword search (by + yamagata@nwgpc.kek.jp). + (eblook_search_keyword): New function. + (command_info): Fix a bug (thanks to yamagata@nwgpc.kek.jp and + Motoyuki Kasahara). + (search_pattern): Support multiple search (by yamagata@nwgpc.kek.jp) + (eblook_search_multi): New function. + +2000-10-11 Kazuhiko + + * README: Revise for EB-3. + + * configure.in: Revise for EB-3 (thanks to Motoyuki Kasahara). + + * acinclude.m4: Remove file. + + * eblook.texi: Change character code from JIS to EUC. + +2000-10-10 Kazuhiko + + * eblook.c: More revise for EB-3. + + * Makefile.am (MAINTAINERCLEANFILES): Remove config.h.in. + +2000-08-18 Rei + + * eblook.c: Modify for eb-3.0alpha1. + +2000-02-25 Keisuke Nishida + + * eblook.c (main): Set kanji-code only when the book is written + in Japanese. + +1999-12-14 Keisuke Nishida + + * Makefile.am (MAINTAINERCLEANFILES): Remove generated files. + +1999-12-08 Keisuke Nishida + + * Version 1.3 released. + +1999-11-16 Eiji-usagi-MATSUmoto + + * eblook.c: suppress duplicated hit contents. + (imported from ndtpd by Motoyuki Kasahara ) + +1999-07-31 Kazuhiro Ito + + * eblook.c (insert_content): insert a newline securely. + (created by Keisuke Nishida ) + +1999-04-27 Keisuke Mori + + * VERSION: New file. + + * configure.in: Get the version number from VERSION file. + --with-ming32 option has been eliminated since it's too much + system dependent on Cygwin. + + * eblook.c (sjis2euc): a bug fixed in handling 0x9f as the second + byte of SJIS. Error checking for an input string has been + improved. + +1999-04-27 Motoyuki Kasahara + + * eblook.c (main): Add a feature to use GNU getopt_long. + getopt.h, getopt.c and getopt1.c have been added for this. + +1999-02-10 NISHIDA Keisuke + + * Version 1.2 released. + + * eblook.c (show_version): Refer the variable `version'. + (main): Set the variable `version' with the version of EB library. + +1999-02-06 NISHIDA Keisuke + + * Use autoconf-2.13 and automake-1.4. + * configure.in: Define the macros for the win32 emvironments. + (Thanks to Keisuke Mori!) + + * acinclude.m4: New file with macro `EB_CONFIG'. + * configure.in: Use `EB_CONFIG'. + * Makefile.am: Updated. + + * INSTALL: Japanized. + + * eblook.c (main): Set book and appendix after loading init file. + (kanji_code, default_code): New variables. + (eblook_read, eblook_write, jis2euc, sjis2euc, + write_euc2jis, write_euc2sjis): New functions. + (main): Set kanji code. + (read_command): Use `eblook_read'. + (command_list, command_subinfo, search_pattern, insert_content): + Use `eblook_write'. + +1998-12-22 NISHIDA Keisuke + + * eblook.c: Include instead of . + +1998-12-07 NISHIDA Keisuke + + * Version 1.1 released. + + * eb: Excluded. + * eblook.c: Rewriten. + * configure.in, Makefile.am: Rewriten. + * README: Updated. + +1998-10-17 NISHIDA Keisuke + + * Version 1.0 released. + + * eblook.texi: Updated for eblook 1.0. + + * eblook.c (command_copyright): New command. + +1998-09-03 NISHIDA Keisuke + + * eblook.c (main): Initialize hookset first. + +1998-08-01 NISHIDA Keisuke + + * Version 1.0b0 released. + + * configure.in: Fixed some probrems. + * configure.in, Makefile.am: Check and use zlib if it already exists. + (Thanks to Motoyuki Kasahara!) + + * eb: Updated to eb-2.1beta1. + +1998-06-12 NISHIDA Keisuke + + * Version 0.9.1 released. + + * README: Updated for eblook 0.9. + + * eb: Updated to eb-2.0.1. + + * eblook.c (hook_stopcode): New function. + +1998-06-10 NISHIDA Keisuke + + * Version 0.9 released. + + * eb: Updated to eb-2.0. + +1998-05-17 NISHIDA Keisuke + + * eblook.c: Now we load an init file "~/.eblookrc" before all. + +1998-05-16 NISHIDA Keisuke + + * eblook.c (hook_narrow_font, hook_wide_font): Modify the format + of gaiji tags again. Now we use same tags with NDTPD 2.x. + (text_hooks): Fixed hook name for narrow charactors. + +1998-05-10 NISHIDA Keisuke + + * configure.in: Modified to use libtool. + * eb: Updated to eb-2.0beta1. + +1998-05-01 NISHIDA Keisuke + + * eblook.c: Fixed incorrect uses of `EB_P' macro. + (main, internal_set_appendix): Fixed to initialize appendix before + bindings. + +1998-03-29 NISHIDA Keisuke + + * eblook.c: Rename variable `last_search_method' to + `last_search_function'. + (eblook_search_string): Deleted. + (search_pattern, parse_entry_id): Updated. + (command_search): Fixed. + + * eblook.c (hook_narrow_font, hook_wide_font): Modify the format + of gaiji tags. + + * eblook.c: Updated for eb-2.x. + * eb: Updated to eb-2.0beta0. + +1998-03-27 NISHIDA Keisuke + + * eblook.c (insert_font_list): New function. + (command_font): Updated. + (insert_dicinfo): Modified not to display the font ranges. + +1998-03/26 NISHIDA Keisuke + + * eblook.c (hook_begin_reference, hook_end_reference): New hooks + to insert references. + +1998-03-20 NISHIDA Keisuke + + * Version 0.8.2 released. + + * eb: Updated to eb-1.0.6. + +1998-03-09 NISHIDA Keisuke + + * Version 0.8.1 released. + +1998-03-08 NISHIDA Keisuke + + * eblook.texi: Now we don't use version.texi. + + * eblook.c (salist_set): Fixed a missing loop break. + +1998-02-22 NISHIDA Keisuke + + * Version 0.8 released. + diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/INSTALL b/lib/ebu/others/eblook-1.6.1+media-20200414/INSTALL new file mode 100644 index 0000000..8865734 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/INSTALL @@ -0,0 +1,368 @@ +Installation Instructions +************************* + + Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software +Foundation, Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command './configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the 'README' file for +instructions specific to this package. Some packages provide this +'INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The 'configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that +you can run in the future to recreate the current configuration, and a +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). + + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. + + If you need to do unusual things to compile the package, please try +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can +be considered for the next release. If you are using the cache, and at +some point 'config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. + + The simplest way to compile this package is: + + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. + + Running 'configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type 'make' to compile the package. + + 3. Optionally, type 'make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type 'make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the 'make install' phase executed with root + privileges. + + 5. Optionally, type 'make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior 'make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type 'make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide 'make + distcheck', which can by used by developers to test that all other + targets like 'make install' and 'make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the 'configure' script does not know about. Run './configure --help' +for details on some of the pertinent environment variables. + + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU 'make'. 'cd' to the +directory where you want the object files and executables to go and run +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. + + With a non-GNU 'make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use 'make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the 'lipo' tool if you have problems. + +Installation Names +================== + + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to 'configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +'make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, 'make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. + + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the +package recognizes. + + For packages that use the X Window System, 'configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of 'make' will be. For these packages, running './configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with 'make V=1'; while running './configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with 'make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX 'make' updates targets which have the same time stamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. + + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features 'configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, 'configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option '--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with '--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to 'configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the 'configure' command line, using 'VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified 'gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +'configure' Invocation +====================== + + 'configure' recognizes the following options to control how it +operates. + +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. + +'--help=short' +'--help=recursive' + Print a summary of the options unique to this package's + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. + +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' + script, and exit. + +'--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally 'config.cache'. FILE defaults to '/dev/null' to + disable caching. + +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. + +'--quiet' +'--silent' +'-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to '/dev/null' (any error + messages will still be shown). + +'--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + 'configure' can determine that directory automatically. + +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. + +'--no-create' +'-n' + Run the configure checks, but stop before creating any output + files. + +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/Makefile.am b/lib/ebu/others/eblook-1.6.1+media-20200414/Makefile.am new file mode 100644 index 0000000..ee66eb8 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/Makefile.am @@ -0,0 +1,13 @@ +ACLOCAL_AMFLAGS = -I m4 + +bin_PROGRAMS = eblook +info_TEXINFOS = eblook.texi + +eblook_SOURCES = eblook.c codeconv.c getopt.c getopt1.c bmp2ppm.c bmp_in.c \ + win32.c +eblook_LDADD = @LIBOBJS@ +noinst_HEADERS = getopt.h codeconv.h + +EXTRA_DIST = README.org +# MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.h.in stamp-h.in \ +# configure missing mkinstalldirs install-sh texinfo.tex diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/Makefile.in b/lib/ebu/others/eblook-1.6.1+media-20200414/Makefile.in new file mode 100644 index 0000000..b93e0bb --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/Makefile.in @@ -0,0 +1,1165 @@ +# Makefile.in generated by automake 1.15.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2017 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +bin_PROGRAMS = eblook$(EXEEXT) +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/eb4.m4 $(top_srcdir)/m4/ebu.m4 \ + $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(noinst_HEADERS) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" +PROGRAMS = $(bin_PROGRAMS) +am_eblook_OBJECTS = eblook.$(OBJEXT) codeconv.$(OBJEXT) \ + getopt.$(OBJEXT) getopt1.$(OBJEXT) bmp2ppm.$(OBJEXT) \ + bmp_in.$(OBJEXT) win32.$(OBJEXT) +eblook_OBJECTS = $(am_eblook_OBJECTS) +eblook_DEPENDENCIES = @LIBOBJS@ +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(eblook_SOURCES) +DIST_SOURCES = $(eblook_SOURCES) +AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) +am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) +am__v_DVIPS_0 = @echo " DVIPS " $@; +am__v_DVIPS_1 = +AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) +am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) +am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; +am__v_MAKEINFO_1 = +AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) +am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) +am__v_INFOHTML_0 = @echo " INFOHTML" $@; +am__v_INFOHTML_1 = +AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) +am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) +am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; +am__v_TEXI2DVI_1 = +AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) +am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) +am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; +am__v_TEXI2PDF_1 = +AM_V_texinfo = $(am__v_texinfo_@AM_V@) +am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) +am__v_texinfo_0 = -q +am__v_texinfo_1 = +AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) +am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) +am__v_texidevnull_0 = > /dev/null +am__v_texidevnull_1 = +INFO_DEPS = $(srcdir)/eblook.info +am__TEXINFO_TEX_DIR = $(srcdir) +DVIS = eblook.dvi +PDFS = eblook.pdf +PSS = eblook.ps +HTMLS = eblook.html +TEXINFOS = eblook.texi +TEXI2DVI = texi2dvi +TEXI2PDF = $(TEXI2DVI) --pdf --batch +MAKEINFOHTML = $(MAKEINFO) --html +AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) +DVIPS = dvips +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +AM_RECURSIVE_TARGETS = cscope +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \ + COPYING ChangeLog INSTALL NEWS README compile config.guess \ + config.sub depcomp install-sh ltmain.sh missing mkinstalldirs \ + strcasecmp.c strdup.c texinfo.tex +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_PTHREAD_CFLAGS = @EBCONF_PTHREAD_CFLAGS@ +EBCONF_PTHREAD_CPPFLAGS = @EBCONF_PTHREAD_CPPFLAGS@ +EBCONF_PTHREAD_LDFLAGS = @EBCONF_PTHREAD_LDFLAGS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 +info_TEXINFOS = eblook.texi +eblook_SOURCES = eblook.c codeconv.c getopt.c getopt1.c bmp2ppm.c bmp_in.c \ + win32.c + +eblook_LDADD = @LIBOBJS@ +noinst_HEADERS = getopt.h codeconv.h +EXTRA_DIST = README.org +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .dvi .html .info .lo .o .obj .pdf .ps .texi +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +eblook$(EXEEXT): $(eblook_OBJECTS) $(eblook_DEPENDENCIES) $(EXTRA_eblook_DEPENDENCIES) + @rm -f eblook$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(eblook_OBJECTS) $(eblook_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcasecmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strdup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bmp2ppm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bmp_in.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codeconv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblook.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt + +.texi.info: + $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && $(am__cd) $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ $<; \ + then \ + rc=0; \ + $(am__cd) $(srcdir); \ + else \ + rc=$$?; \ + $(am__cd) $(srcdir) && \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +.texi.dvi: + $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ + $< + +.texi.pdf: + $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ + $< + +.texi.html: + $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) + $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $(@:.html=.htp) $<; \ + then \ + rm -rf $@ && mv $(@:.html=.htp) $@; \ + else \ + rm -rf $(@:.html=.htp); exit 1; \ + fi +$(srcdir)/eblook.info: eblook.texi +eblook.dvi: eblook.texi +eblook.pdf: eblook.texi +eblook.html: eblook.texi +.dvi.ps: + $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) $(AM_V_texinfo) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f "$(distdir)/$$relfile" || \ + cp -p $$file "$(distdir)/$$relfile"; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -rm -rf eblook.t2d eblook.t2p + +clean-aminfo: + -test -z "eblook.dvi eblook.pdf eblook.ps eblook.html" \ + || rm -rf eblook.dvi eblook.pdf eblook.ps eblook.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-info + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-am +all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(HEADERS) config.h +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-aminfo clean-binPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: $(DVIS) + +html: html-am + +html-am: $(HTMLS) + +info: info-am + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am + +install-dvi: install-dvi-am + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ + done +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ + $(am__strip_dir) \ + d2=$$d$$p; \ + if test -d "$$d2"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ + else \ + list2="$$list2 $$d2"; \ + fi; \ + done; \ + test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ + done; } +install-info: install-info-am + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ + fi; \ + for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + echo "$$ifile"; \ + else : ; fi; \ + done; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done + @$(POST_INSTALL) + @if $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done +install-ps: install-ps-am + +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: $(PDFS) + +ps: ps-am + +ps-am: $(PSS) + +uninstall-am: uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \ + uninstall-info-am uninstall-pdf-am uninstall-ps-am + +.MAKE: all install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \ + clean-aminfo clean-binPROGRAMS clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-info dist-lzip dist-shar \ + dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-aminfo maintainer-clean-generic mostlyclean \ + mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-dvi-am \ + uninstall-html-am uninstall-info-am uninstall-pdf-am \ + uninstall-ps-am + +.PRECIOUS: Makefile + +# MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.h.in stamp-h.in \ +# configure missing mkinstalldirs install-sh texinfo.tex + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/NEWS b/lib/ebu/others/eblook-1.6.1+media-20200414/NEWS new file mode 100644 index 0000000..3f108c4 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/NEWS @@ -0,0 +1,128 @@ +* Changes in eblook 1.6.1 + +** EB $B%i%$%V%i%j(B 4.1 $B$KBP1~!#(B + +* Changes in eblook 1.6 + +** EB $B%i%$%V%i%j(B 4.0 $B$K0\9T!#(B + +** pbm xbm bmp bmp2ppm bmp2tiff jpg jpeg $B%3%^%s%I$NDI2C!#(B + + +* Changes in eblook 1.5.1 + +** EB $B%i%$%V%i%j(B 3.2.1 $B$KBP1~!#(B + +** $B$$$/$D$+$N%P%0%U%#%/%9!#(B + + +* Changes in eblook 1.5 + +** EB $B%i%$%V%i%j(B 3.0 $B$K0\9T!#(BEB $B%i%$%V%i%j(B 2.x $B$H$OHs8_49!#(B + +** $B%m%1!<%k$KBP1~$7$?F~=PNO$N%5%]!<%H!#(B + +** $B>e5-$KH<$J$$!"(Bconfigure $B%*%W%7%g%s$rJQ99!#(B +--with-eb-conf $B$G(B eb.conf $B$N>l=j$r;XDj$9$k!#%G%U%)%k%H$G$O(B +/usr/local/etc/eb.conf $B$HA[Dj$9$k!#(B--with-eb-includes $B$H(B +-with-eb-libraries $B$OGQ;_!#$^$?!"(B--with-fallback-encoding $B$G(B +$B<+F0G'<1<:GT;~$N(B encoding $B$r;XDj$9$k!#(B + +** eblook $B$N8=:_$N%[!<%`%Z!<%8$OH$N$3$H!#(B + +** $B$$$/$D$+$N%P%0%U%#%/%9!#(B + + +* Changes in eblook 1.2 + +** configure $B$K%*%W%7%g%s(B --with-zlib-{includes,libraries} $B$rDI2C!#(B + +** Windows $B$N(B mingw32 $B4D6-$G$N%3%s%Q%$%k$r%5%]!<%H!#(B +configure $B$K%*%W%7%g%s(B --with-mingw32 $B$r;XDj$9$k!#(B +$B$^$?!"%G%U%)%k%H$NJ8;z%3!<%I$r(B SJIS $B$K$7$?!#(B + +** `set' $B=PMh$k%*%W%7%g%s(B `kanji-code' $B$rDI2C!#(B +$BF~=PNO$NJ8;z%3!<%I$r7hDj$9$k!#(B`JIS', `SJIS', `EUC' $B$N$$$:$l$+$r@_Dj2DG=!#(B + +** $B%P!<%8%g%s$N=PNO$K(B EB $B%i%$%V%i%j$N%P!<%8%g%s>pJs$rDI2C!#(B + +** $B@\e5-$KH<$J$$!"(Bconfigure $B$K%*%W%7%g%s$rDI2C!#(B +--with-eb-includes $B$H(B -with-eb-libraries $B$K$h$j!"(BEB $B%i%$%V%i%j$N$"$k(B +$B%G%#%l%/%H%j$r;XDj$9$k!#%G%U%)%k%H$G$O(B /usr/local $B0J2<$K$"$k$HA[Dj$9$k!#(B + +** $B?7$7$$%3%^%s%I(B `book'$B!#(B +$B:#8e!"<-=q%G%#%l%/%H%j$O$3$N%3%^%s%I$K$h$j;XDj$9$k!#$3$l$K$h$j!"(B +"set dict ..." $B$J$I$K$h$k<-=q;XDj$OL58z$H$J$C$?!#(B + +** $B$$$/$D$+$N%3%^%s%I$N;EMM$r8+D>$7$?!#(B +$B>\$7$/$O%^%K%e%"%k$r;2>H$N$3$H!#(B + + +* Changes in eblook 1.0 + +** $B?7$7$$%3%^%s%I(B `copyright'$B!#(B +$B<-=q$NCx:n8">pJs$r=PNO$9$k!#(B + +** EB Library $B$r(B 2.1 $B$K%"%C%W%G!<%H$7$?!#(B + + +* Changes in eblook 1.0b0 + +** EB Library $B$r(B 2.1beta1 $B$K%"%C%W%G!<%H$7$?!#(B + +$B$3$l$K$h$j!"<-=q$r05=L$7$FMxMQ=PMh$k$h$&$K$J$C$?!#>\$7$/$O!"(Beb $B%5%V(B +$B%G%#%l%/%H%j$KImB0$N%I%-%e%a%s%H(B($BFC$K(B ebzip-ja.info)$B$r;2>H!#(B + +* Changes in eblook 0.9 + +** $B=i4|2=%U%!%$%k(B "~/.eblookrc" $B$r%m!<%I$9$k$h$&$K$7$?!#(B +$B%U%!%$%k$K5-=R$5$l$?%3%^%s%I$,5/F0D>8e$K $B$H$7$?!#%j%U%!%l%s%9$N%?%0$N7A<0$r(B +... $B$H$7$?!#(B + +** $B%3%^%s%I(B `dicinfo' $B$G!"30;z$NHO0O$r=PNO$7$J$/$J$C$?!#(B +$BBe$o$j$K!"%3%^%s%I(B `font' $B$r0z?t$J$7$G + +eblook 1.6.1 (*1) $B$N2~B$HG$G$9!#(B +$BJQ99E@Ey$K$D$$$F$N>\:Y$OG[I[%Z!<%8$r;2>H$7$F2<$5$$!#(B +eblook 1.6.1 $B$N(B README $B%U%!%$%k$O(B README.org $B$K$"$j$^$9!#(B + +*1 http://openlab.jp/edict/lookup/eblook/ diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/README.org b/lib/ebu/others/eblook-1.6.1+media-20200414/README.org new file mode 100644 index 0000000..cc00a04 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/README.org @@ -0,0 +1,56 @@ +eblook $B$O!"(BEB $B%i%$%V%i%j$rMQ$$$?BPOC7?$NEE;R<-=q8!:w%3%^%s%I$G$9!#4JC1$J(B +$B@_Dj$H%3%^%s%I$K$h$j(B EPWING ($B8_49(B) $B=q@R$,MxMQ=PMh$^$9!#(B + +How To Install ========================================================= + +eblook $B$r%3%s%Q%$%k$9$k$K$O!"$"$i$+$8$a3^864pG7;a:n$N<-=q8!:w%i%$%V%i%j(B +EB $B$r%$%s%9%H!<%k$7$F$*$/I,MW$,$"$j$^$9!#(BEB $B%i%$%V%i%j$O$l(B EB $B%i%$%V(B +$B%i%j$N@_Dj%U%!%$%k$r;XDj=PMh$^$9!#%G%U%)%k%H$G$Ol9g!"0J2<$NNc$K<($9$h$&$K!"(BCC $B4D6-JQ?t$G(B +Mingw32 $B4D6-MQ$N%3%s%Q%$%i$rL@<(E*$K;XDj$7$F(B configure $B$re$G$O%G%U%)%k%H$NJ8;z%3!<%I$O(B SJIS $B$K$J$j$^$9!#(B + + % CC="gcc -mno-cygwin" ./configure + +$B:G8e$K!"\$7$/$O!"ImB0$N%U%!%$%k(B INSTALL $B$r;2>H$7$F2<$5$$!#(B + +How To Use ============================================================= + +eblook $B$rMxMQ$9$k$K$O!"<-=q$N$"$k%G%#%l%/%H%j$r0z?t$K(B eblook $B$r%7%'%k$+(B +$B$i5/F0$7$F2<$5$$!#(Beblook $B$,BPOCE*$K5/F0$5$l$^$9!#(B + + % eblook /cdrom + eblook> + +`list' $B$G<-=q$N0lMw!"(B`select' $B$G<-=q$NA*Br!"(B`search' $B$GMQ8l$N8!:w!"(B +`content' $B$GFbMF$NI=<(!"(B`help' $B$G%3%^%s%I$N0lMw!"(B`quit' $B$G=*N;$G$9!#(B +$B>\$7$/$O!"ImB0$N%I%-%e%a%s%H$r;2>H$7$F2<$5$$!#(B + +How To Get ============================================================= + +eblook $B$O(B Ring Server $B$N%*!<%W%s%i%\$G3+H/$5$l$F$$$^$9!#(B + + http://openlab.ring.gr.jp/edict/eblook/ + +eblook $B$K4X$9$k>pJs8r49$O!"(Bedict $B$d(B NDTPD $B$N%a!<%j%s%0%j%9%H$K$F9T$o$l(B +$B$F$$$^$9!#(B + + edict ML: http://openlab.ring.gr.jp/edict/ + NDTPD ML: http://www.sra.co.jp/people/m-kasahr/ndtpd/ml-ja.html + +eblook $B$O(B edict $B3+H/%A!<%`(B (edict@ring.gr.jp) $B$K$h$j4IM}$5$l$F$$$^$9!#(B +eblook $B$K4X$9$kLd$$9g$o$;$O$3$A$i$^$G$*4j$$$7$^$9!#(B diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/aclocal.m4 b/lib/ebu/others/eblook-1.6.1+media-20200414/aclocal.m4 new file mode 100644 index 0000000..e08283c --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/aclocal.m4 @@ -0,0 +1,1160 @@ +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/eb4.m4]) +m4_include([m4/ebu.m4]) +m4_include([m4/largefile.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/bmp2ppm.c b/lib/ebu/others/eblook-1.6.1+media-20200414/bmp2ppm.c new file mode 100644 index 0000000..562a03e --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/bmp2ppm.c @@ -0,0 +1,372 @@ +/* -*- mode: C; c-basic-offset: 4; -*- */ +/* bmp2ppm.c - part of eblook, interactive EB interface command + * + * Copyright (C) 2001 Yamagata, T. Nemoto. + * + * This program 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, 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef ENABLE_EBU +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#endif + +extern EB_Book current_book; + +int parse_entry_id (char *code,EB_Position *pos); + +extern unsigned char *LoadBMP (int *w, int *h); + +void command_bmp2tiff (int argc, char *argv[]); +void command_bmp2ppm (int argc, char *argv[]); +static int tiff_put_word (FILE *fp, unsigned short w); +static int tiff_put_dword (FILE *fp, unsigned long dw); +/* static int tifftag_write_byte (FILE *fp, int id, unsigned char ch); */ +static int tifftag_write_word (FILE *fp, int id, unsigned short val); +static int tifftag_write_dword (FILE *fp, int id, unsigned long val); +static int tifftag_write_words (FILE *fp, int id, unsigned char *buf, + int *bp, int base, int count, + const unsigned short *val); +static int tifftag_write_string (FILE *fp, int id, unsigned char *buf, + int *bp, int base, const char *val); + + + +void +command_bmp2ppm(argc, argv) + int argc; + char *argv[]; +{ + EB_Error_Code error_code; + EB_Position pos; + int w, h; + FILE *fp; + unsigned char *p; + const char *ppm_error = NULL; + + if (argc != 3) { + ppm_error = "parameter error"; + goto ppm_fail2; + } + if (parse_entry_id(argv[1], &pos) == 0) { + ppm_error = "entry address error"; + goto ppm_fail2; + } + + error_code = eb_set_binary_color_graphic(¤t_book, &pos); + if (error_code != EB_SUCCESS) { + ppm_error = "data read error"; + goto ppm_fail2; + } + p = LoadBMP(&w, &h); + if (p == NULL) { + ppm_error = "bmp decode error"; + goto ppm_fail2; + } + + fp = fopen(argv[2], "wb"); + if (fp == NULL) { + ppm_error = "output file open error"; + goto ppm_fail3; + } + + if (fprintf(fp, "P6\n%d %d\n255\n", w, h) != 0 && + 1 == fwrite(p, 3*w*h, 1, fp)) { + fclose(fp); + free(p); + printf("OK\n"); + return; + } + ppm_error = "file write error"; +/* ppm_fail: */ + fclose(fp); + unlink(argv[2]); + ppm_fail3: + free(p); + ppm_fail2: + if (ppm_error == NULL) + printf("NG\n"); + else + printf("NG: bmp2ppm : %s\n", ppm_error); +} + +#if 0 +static int +tiff_put_byte(fp, ch) + FILE *fp; + unsigned char ch; +{ + return putc(255 & ch, fp); +} +#endif + +static int +tiff_put_word(fp, w) + FILE *fp; + unsigned short w; +{ + if (EOF == putc(255 & (w >> 8), fp)) + return EOF; + return putc(255 & w, fp); +} + +static int +tiff_put_dword(fp, dw) + FILE *fp; + unsigned long dw; +{ + if (EOF == tiff_put_word(fp, 0xffff & (dw >> 16))) + return EOF; + return tiff_put_word(fp, 0xffff & dw); +} + +#if 0 +static int +tifftag_write_byte(fp, id, ch) + FILE *fp; + int id; + unsigned char ch; +{ + if (EOF == tiff_put_word(fp, id)) + return EOF; + if (EOF == tiff_put_word(fp, 1)) /* TIFF_BYTE */ + return EOF; + if (EOF == tiff_put_dword(fp, 1)) /* length */ + return EOF; + if (EOF == tiff_put_byte(fp, ch)) + return EOF; + if (EOF == tiff_put_byte(fp, 0)) /* padding 1/3 */ + return EOF; + return tiff_put_word(fp, 0); /* padding 2/3 */ +} +#endif + +static int +tifftag_write_word(fp, id, val) + FILE *fp; + int id; + unsigned short val; +{ + if (EOF == tiff_put_word(fp, id)) + return EOF; + if (EOF == tiff_put_word(fp, 3)) /* TIFF_SHORT */ + return EOF; + if (EOF == tiff_put_dword(fp, 1)) /* length */ + return EOF; + if (EOF == tiff_put_word(fp, val)) + return EOF; + return tiff_put_word(fp, 0); /* padding */ +} + +static int +tifftag_write_dword(fp, id, val) + FILE *fp; + int id; + unsigned long val; +{ + if (EOF == tiff_put_word(fp, id)) + return EOF; + if (EOF == tiff_put_word(fp, 4)) /* TIFF_LONG */ + return EOF; + if (EOF == tiff_put_dword(fp, 1)) /* length */ + return EOF; + return tiff_put_dword(fp, val); +} + +static int +tifftag_write_words(fp, id, buf, bp, base, count, val) + FILE *fp; + int id; + unsigned char *buf; + int *bp; + int base; + int count; + const unsigned short *val; +{ + if (EOF == tiff_put_word(fp, id)) + return EOF; + if (EOF == tiff_put_word(fp, 3)) /* TIFF_SHORT */ + return EOF; + if (EOF == tiff_put_dword(fp, count)) /* length */ + return EOF; + if (EOF == tiff_put_dword(fp, base+*bp)) + return EOF; + while(count > 0) { + buf[(*bp)++] = 255 & (*val >> 8); + buf[(*bp)++] = 255 & *val; + val++; + count--; + } + return 1; +} + +static int +tifftag_write_string(fp, id, buf, bp, base, val) + FILE *fp; + int id; + unsigned char *buf; + int *bp; + int base; + const char *val; +{ + int count; + count = strlen(val) + 1; + if (EOF == tiff_put_word(fp, id)) + return EOF; + if (EOF == tiff_put_word(fp, 2)) /* TIFF_ASCII */ + return EOF; + if (EOF == tiff_put_dword(fp, count)) /* length */ + return EOF; + if (EOF == tiff_put_dword(fp, base+*bp)) + return EOF; + memcpy(buf+*bp, val, count); + *bp += count; + return 1; +} + +void +command_bmp2tiff(argc, argv) + int argc; + char *argv[]; +{ + unsigned char binary_data[EB_SIZE_PAGE]; + int binary_data_pointer; + EB_Error_Code error_code; + EB_Position pos; + unsigned int end, base; + int w, h; + FILE *fp; + unsigned char *p; + const unsigned short dep[3] = {8, 8, 8}; + int n_tags; + const char *tiff_error = NULL; + + if (argc != 3) { + tiff_error = "parameter error"; + goto tiff_fail3; + } + + binary_data_pointer = 0; + if (parse_entry_id(argv[1], &pos) == 0) { + tiff_error = "entry address error"; + goto tiff_fail3; + } + + error_code = eb_set_binary_color_graphic(¤t_book, &pos); + if (error_code != EB_SUCCESS) { + tiff_error = "bmp read error"; + goto tiff_fail3; + } + + p = LoadBMP(&w, &h); + if (p == NULL) { + tiff_error = "bmp decode error"; + goto tiff_fail3; + } + + fp = fopen(argv[2], "wb"); + if (fp == NULL) { + tiff_error = "output file open error"; + goto tiff_fail2; + } + + end = w*h*3+8; /* Bitmap Size + TIFF Header Size */ + + /* Write Header */ + n_tags = 11; + base = end + 12 * n_tags + 6; /* end of TIFF directory */ + /* TIFF magic number (big endian) / TIFF version 4.2 */ + if (fwrite("\x4d\x4d\x00\x2a",1,4,fp) != 4 || + /* TIFF directory offset */ + tiff_put_dword(fp, (unsigned long) end) == EOF || + + /* Write Bitmap */ + 3*w*h != fwrite(p, 1, 3*w*h, fp) || + + /* Write Information */ + /* TIFF directory count */ + tiff_put_word(fp, n_tags) == EOF || + /* TIFFTAG_IMAGEWIDTH */ + tifftag_write_word(fp, 256, w) == EOF || + /* TIFFTAG_IMAGELENGTH */ + tifftag_write_word(fp, 257, h) == EOF || + /* TIFFTAG_BITSPARSAMPLE */ + tifftag_write_words(fp, 258, binary_data, &binary_data_pointer, + base, 3, dep) == EOF || + /* TIFFTAG_COMPRESSION */ + tifftag_write_word(fp, 259, 1) == EOF || + /* TIFFTAG_PHOTOMETRIC */ + tifftag_write_word(fp, 262, 2) == EOF || + /* TIFFTAG_IMAGEDESCRIPTION */ + tifftag_write_string(fp, 270, binary_data, &binary_data_pointer, base, + "eblook temporary data. Don't copy this file!") == EOF || + /* TIFFTAG_STRIPOFFSET */ + tifftag_write_dword(fp, 273, 8) == EOF || + /* TIFFTAG_ORIENTATION */ + tifftag_write_word(fp, 274, 1) == EOF || + /* TIFFTAG_SAMPLESPARPIXEL */ + tifftag_write_dword(fp, 277, 3) == EOF || + /* TIFFTAG_STRIPBYTECOUNTS */ + tifftag_write_dword(fp, 279,3*w*h) == EOF || + /* TIFFTAG_SOFTWARE */ + tifftag_write_string(fp, 305, binary_data, &binary_data_pointer, + base, PACKAGE " " VERSION) == EOF || + /* TIFF directory end */ + tiff_put_dword(fp, 0) == EOF || + fwrite(binary_data,1,binary_data_pointer,fp) != binary_data_pointer + ) { + tiff_error = "output file write error"; + goto tiff_fail; + } + fclose(fp); + free(p); + printf("OK\n"); + return; + + tiff_fail: + fclose(fp); + unlink(argv[2]); + tiff_fail2: + free(p); + tiff_fail3: + if (tiff_error == NULL) + printf("NG\n"); + else + printf("NG: bmp2tiff: %s\n",tiff_error); + return; +} diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/bmp_in.c b/lib/ebu/others/eblook-1.6.1+media-20200414/bmp_in.c new file mode 100644 index 0000000..26d4538 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/bmp_in.c @@ -0,0 +1,636 @@ +/* -*- mode: C; c-basic-offset: 4; -*- */ + +/* bmp_in.c - part of eblook, interactive EB interface command + * + * Decoder for Windows BMP format without compression + * + * Copyright (C) 2001 T. Nemoto. + * + * This program 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, 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA + */ + +/* #define DEBUG */ +/* #define BMPTEST */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include + +#ifdef ENABLE_EBU +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#endif + +extern EB_Book current_book; + +#ifndef BI_BITFIELDS +#define BI_RGB 0 +#define BI_RLE8 1 +#define BI_RLE4 2 +#define BI_BITFIELDS 3 +#endif /* not BI_BITFIELDS */ + +static ssize_t read_data_from_eb(unsigned char *buf, int len); +static unsigned long get_dword(unsigned char *p); + +void deflate_rle4 (unsigned char *output, unsigned char *palette, int width, int height, int dir); +void deflate_rle8 (unsigned char *output, unsigned char *palette, int width, int height, int dir); +void deflate_rgb4 (unsigned char *output, unsigned char *palette, int width, int height, int dir); +void deflate_rgb8 (unsigned char *output, unsigned char *palette, int width, int height, int dir); +void deflate_rgb1 (unsigned char *output, unsigned char *palette, int width, int height, int dir); +void deflate_rgb24 (unsigned char *output, unsigned char *palette, int width, int height, int dir); + + +#define BMP_BUF_SIZE 2048 +static unsigned char bmp_buf [BMP_BUF_SIZE]; +static int bmp_buf_max_count = 0, bmp_buf_cur_count = 0; + +void init_bmp_buf () +{ + bmp_buf_max_count = read_data_from_eb(bmp_buf, BMP_BUF_SIZE); + bmp_buf_cur_count = 0; +} + +ssize_t read_bytes_from_bmp_buf (dest, count) + unsigned char *dest; + ssize_t count; +{ + ssize_t send; + send = 0; + + while (send < count) { + if (bmp_buf_cur_count >= bmp_buf_max_count) { + if (bmp_buf_max_count == BMP_BUF_SIZE) { + bmp_buf_max_count = read_data_from_eb(bmp_buf, BMP_BUF_SIZE); + if (bmp_buf_max_count <= 0) + return send; + bmp_buf_cur_count = 0; + } else + return send; + } + + *(dest+send) = bmp_buf[bmp_buf_cur_count]; + send++; + bmp_buf_cur_count++; + } + return send; +} + +ssize_t seek_bytes_bmp_buf (count) + ssize_t count; +{ + ssize_t seeked; + seeked = 0; + + while (seeked < count) { + if (bmp_buf_cur_count >= bmp_buf_max_count) { + if (bmp_buf_max_count == BMP_BUF_SIZE) { + bmp_buf_max_count = read_data_from_eb(bmp_buf, BMP_BUF_SIZE); + if (bmp_buf_max_count <= 0) + return seeked; + bmp_buf_cur_count = 0; + } else + return seeked; + } + + if ((count - seeked) < (bmp_buf_max_count - bmp_buf_cur_count)) { + bmp_buf_cur_count += (count - seeked); + seeked = count; + } else { + seeked += bmp_buf_max_count - bmp_buf_cur_count; + bmp_buf_cur_count = bmp_buf_max_count; + } + } + return seeked; +} + +static ssize_t read_data_from_eb(buf, len) + unsigned char *buf; + int len; +{ + ssize_t read_length; + ssize_t count = 0; + while(len>0) { + if (eb_read_binary(¤t_book, len, (char *)(buf + count), &read_length) + != EB_SUCCESS) + return -1; + if (read_length == 0) + return count; + len -= read_length; + count += read_length; + } + return count; +} + +static unsigned long get_dword(p) + unsigned char *p; +{ + unsigned char *buf; + buf = (unsigned char *) p; + return (((unsigned long)(buf[3]))<<24) + + (((unsigned long)(buf[2]))<<16) + + (((unsigned long)(buf[1]))<<8) + + (unsigned long)buf[0]; +} + +unsigned char * +LoadBMP(w,h) + int *w; + int *h; +{ + unsigned char buf [14 + 124], palette[4 * 256]; + int depth; + unsigned long header_size, palette_size, image_offset; + int width, height, dir, i, n_pal; + unsigned char *output = NULL; + + init_bmp_buf (); + /*Check BMP magic number and header size.*/ + if ((read_bytes_from_bmp_buf (buf, 14 + 20) != 14 + 20) || + buf[0] != 'B' || buf[1] != 'M') { + fprintf(stderr,"Not BMP format.\n"); + goto failed; + } + + header_size = get_dword(buf + 14); + image_offset = get_dword(buf + 10); + + /*Check header type.*/ + switch (header_size) { + case 40: /*INFO header*/ + case 52: + case 60: + case 96: /*V4 header*/ + case 108: + case 112: + case 120: + case 124: /*V5 header*/ + break; + case 12: /*CORE header*/ + default: + goto err_header; + } + + if (read_bytes_from_bmp_buf (buf + 14 + 20, header_size - 20) != header_size - 20) + goto err_data_end; + if (image_offset > (14 + header_size)) + image_offset -= (14 + header_size); + else + image_offset = 0; + + *w = (int) get_dword (buf + 14 + 4); + *h = (int) get_dword (buf + 14 + 8); + if (*h < 0) { + *h = -*h; + dir = 1; + } else + dir = -1; + width = *w; + height = *h; + + output = malloc(width * height * 3); + if (output == NULL) + goto err_memory; + + depth = buf[14 + 14]; + /*Check bitcount.*/ + switch (depth) { + case 1: + case 4: + case 8: + /*Check and set palette.*/ + if (image_offset >= 4) + n_pal = (((image_offset / 4) - 1) & 0xff) + 1; + else { + n_pal = get_dword (buf+14+32); + if (n_pal != 0) + n_pal = ((n_pal - 1) & 0xff) + 1; + else + n_pal = 1 << depth; + } + + if (read_bytes_from_bmp_buf (palette, 4 * n_pal) != 4 * n_pal) + goto err_data_end; + if (image_offset > 4 * n_pal) + image_offset -= 4 * n_pal; + else + image_offset = 0; + break; + case 24: + break; + case 16: + case 32: + default: + goto err_depth; + } + + if (image_offset > 0) + if (seek_bytes_bmp_buf(image_offset) != image_offset) + goto err_data_end; + + /*Check compression type*/ + switch(buf[14 + 16]) { + case BI_RGB: + switch(depth) { + case 1: + deflate_rgb1 (output, palette, width, height, dir); + break; + case 4: + deflate_rgb4 (output, palette, width, height, dir); + break; + case 8: + deflate_rgb8 (output, palette, width, height, dir); + break; + case 24: + deflate_rgb24 (output, palette, width, height, dir); + break; + default: + goto err_depth; + } + break; + case BI_RLE8: + deflate_rle8 (output, palette, width, height, dir); + break; + case BI_RLE4: + deflate_rle4 (output, palette, width, height, dir); + break; + case BI_BITFIELDS: + default: + goto err_compression; + } + return output; + + err_compression: + fprintf(stderr,"Unsupported compression code.\n"); + goto failed; + err_depth: + fprintf(stderr,"Unsupported bitcount.\n"); + goto failed; + err_header: + fprintf(stderr,"Unsupported header format.\n"); + goto failed; + err_memory: + fprintf(stderr,"Memory error.\n"); + goto failed; + err_data_end: + fprintf(stderr,"Unexpected data end. \n"); + goto failed; + failed: + if (output != NULL) + free (output); + return NULL; +} + +void deflate_rle4 (output, palette, width, height, dir) + unsigned char *output; + unsigned char *palette; + int width; + int height; + int dir; +{ + int x, y, y0, l_length, i, col[2]; + unsigned char buf[2 + 256]; + + x = 0; + if (dir > 0) + y = 0; + else + y = height -1; + + do { + if (read_bytes_from_bmp_buf (buf, 2) != 2) + goto failed; + switch(buf[0]) { + case 0: + switch (buf[1]) { + case 0: + x = 0; + y += dir; + + if (y < 0 || y >= height) + goto check_eob; + break; + case 1: + goto rle4_end; + case 2: + if (read_bytes_from_bmp_buf (buf, 2) != 2) + goto failed; + x += buf[0]; + y += buf[1] * dir; + + if (y < 0 || y >= height) + goto check_eob; + break; + default: + if (x + buf[1] > width) + goto illegal; + l_length = (buf[1]+1) / 2; + l_length += l_length % 2; + if (read_bytes_from_bmp_buf (buf+2, l_length) != l_length) + goto failed; + for(i=0; i < buf[1]; i++) { + if ((i % 2) == 0) { + col[0] = (buf[i/2 + 2] & 0xf0) >> 4; + } else { + col[0] = buf[i/2 + 2] & 0x0f; + } + output[(x+y*width)*3 + 0]=palette[col[0]*4 + 2]; + output[(x+y*width)*3 + 1]=palette[col[0]*4 + 1]; + output[(x+y*width)*3 + 2]=palette[col[0]*4 + 0]; + x++; + } + } + break; + default: + if (x + buf[0] > width) + goto illegal; + col[0] = (buf[1] & 0xf0) >> 4; + col[1] = buf[1] & 0x0f; + for(i=0; i < buf[0]; i++) { + output[(x+y*width)*3 + 0]=palette[col[i % 2]*4 + 2]; + output[(x+y*width)*3 + 1]=palette[col[i % 2]*4 + 1]; + output[(x+y*width)*3 + 2]=palette[col[i % 2]*4 + 0]; + x++; + } + + } + } while (1); + + failed: + fprintf(stderr,"(RLE4)Unexpected data end.\n"); + return; + illegal: + fprintf(stderr,"(RLE4)Reached illegal point.\n"); + return; + check_eob: + if (read_bytes_from_bmp_buf (buf, 2) != 2) + goto failed; + if (buf[0] != 0 || buf[1] != 1) + goto illegal; + rle4_end: + return; +} + + + +void deflate_rle8 (output, palette, width, height, dir) + unsigned char *output; + unsigned char *palette; + int width; + int height; + int dir; +{ + int x, y, l_length, i; + unsigned char buf[2 + 256]; + + x = 0; + if (dir > 0) + y = 0; + else + y = height - 1; + do { + if (read_bytes_from_bmp_buf (buf, 2) != 2) + goto failed; + switch(buf[0]) { + case 0: + switch (buf[1]) { + case 0: + x = 0; + y += dir; + + if (y < 0 || y >=height) + goto check_eob; + break; + case 1: + goto rle8_end; + case 2: + if (read_bytes_from_bmp_buf (buf, 2) != 2) + goto failed; + x += buf[0]; + y += buf[1] * dir; + + if (y < 0 || y >= height) + goto check_eob; + break; + default: + if (x + buf[1] > width) + goto illegal; + l_length = buf[1] + (buf[1] & 1); + if (read_bytes_from_bmp_buf (buf+2, l_length) != l_length) + goto failed; + for(i=0; i < buf[1]; i++) { + output[(x+y*width)*3 + 0]=palette[buf[i + 2]*4 + 2]; + output[(x+y*width)*3 + 1]=palette[buf[i + 2]*4 + 1]; + output[(x+y*width)*3 + 2]=palette[buf[i + 2]*4 + 0]; + x++; + } + } + break; + default: + if (x + buf[0] > width) + goto illegal; + for(i=0; i < buf[0]; i++) { + output[(x+y*width)*3 + 0]=palette[buf[1]*4 + 2]; + output[(x+y*width)*3 + 1]=palette[buf[1]*4 + 1]; + output[(x+y*width)*3 + 2]=palette[buf[1]*4 + 0]; + x++; + } + + } + } while (1); + + failed: + fprintf(stderr,"(RLE8)Unexpected data end.\n"); + return; + illegal: + fprintf(stderr,"(RLE8)Reached illegal point.\n"); + return; + check_eob: + if (read_bytes_from_bmp_buf (buf, 2) != 2) + goto failed; + if (buf[0] != 0 || buf[1] != 1) + goto illegal; + rle8_end: + return; +} + +void deflate_rgb8 (output, palette, width, height, dir) + unsigned char *output; + unsigned char *palette; + int width; + int height; + int dir; +{ + int x, y, y0, skipbytes, col; + unsigned char buf[1]; + + if (dir > 0) + y = 0; + else + y = height - 1; + + skipbytes = (4 - (width % 4)) % 4; + for (y0 = 0; y0 < height; y0++, y += dir) { + for (x = 0; x < width; x++) { + if (read_bytes_from_bmp_buf (buf, 1) != 1) + goto failed; + col = buf[0]; + output[(x+y*width)*3 + 0]=palette[col*4 + 2]; + output[(x+y*width)*3 + 1]=palette[col*4 + 1]; + output[(x+y*width)*3 + 2]=palette[col*4 + 0]; + } + if (skipbytes != 0) { + if (seek_bytes_bmp_buf (skipbytes) != skipbytes) + goto failed; + } + } + return; + failed: + fprintf(stderr,"(RGB8)Unexpected data end.\n"); + return; +} + +void deflate_rgb4 (output, palette, width, height, dir) + unsigned char *output; + unsigned char *palette; + int width; + int height; + int dir; +{ + int x, y, y0, skipbytes, col; + unsigned char buf[1]; + + if (dir > 0) + y = 0; + else + y = height - 1; + + skipbytes = (4 - (((width + 1) / 2) % 4)) % 4; + for (y0 = 0; y0 < height; y0++, y += dir) { + for (x = 0; x < width; x++) { + if ((x % 2) == 0) { + if (read_bytes_from_bmp_buf (buf, 1) != 1) + goto failed; + col = (buf[0] & 0xf0) >> 4; + } else + col = buf[0] & 0x0f; + output[(x+y*width)*3 + 0]=palette[col*4 + 2]; + output[(x+y*width)*3 + 1]=palette[col*4 + 1]; + output[(x+y*width)*3 + 2]=palette[col*4 + 0]; + } + if (skipbytes != 0) + if (seek_bytes_bmp_buf(skipbytes) != skipbytes) + goto failed; + } + return; + failed: + fprintf(stderr,"(RGB4)Unexpected data end.\n"); + return; +} + + +void deflate_rgb1 (output, palette, width, height, dir) + unsigned char *output; + unsigned char *palette; + int width; + int height; + int dir; +{ + int x, y, y0, skipbytes, col; + unsigned char buf[1]; + + if (dir > 0) + y = 0; + else + y = height - 1; + + skipbytes = (4 - (((width + 7) / 8) % 4)) % 4; + for (y0 = 0; y0 < height; y0++, y+=dir) { + for (x = 0; x < width; x++) { + if ((x % 8) == 0) + if (read_bytes_from_bmp_buf (buf, 1) != 1) + goto failed; + col = (buf[0] & (0x80 >> (x % 8))) >> (7- (x % 8)); + output[(x+y*width)*3 + 0]=palette[col*4 + 2]; + output[(x+y*width)*3 + 1]=palette[col*4 + 1]; + output[(x+y*width)*3 + 2]=palette[col*4 + 0]; + } + + if (skipbytes != 0) { + if (seek_bytes_bmp_buf (skipbytes) != skipbytes) + goto failed; + } + } + + return; + failed: + fprintf(stderr,"(RGB1)Unexpected data end.\n"); + return; +} + + +void deflate_rgb24 (output, palette, width, height, dir) + unsigned char *output; + unsigned char *palette; + int width; + int height; + int dir; +{ + int x, y, y0, skipbytes, col; + unsigned char buf[3]; + + if (dir > 0) + y = 0; + else + y = height - 1; + + skipbytes = (4 - ((width * 3) % 4)) % 4; + for (y0 = 0; y0 < height; y0++, y += dir) { + for (x = 0; x < width; x++) { + if (read_bytes_from_bmp_buf (buf, 3) != 3) + goto failed; + output[(x+y*width)*3 + 0]=buf[2]; + output[(x+y*width)*3 + 1]=buf[1]; + output[(x+y*width)*3 + 2]=buf[0]; + } + + if (skipbytes != 0) { + if (seek_bytes_bmp_buf(skipbytes) != skipbytes) + goto failed; + } + } + return; + failed: + fprintf(stderr,"(RGB24)Unexpected data end.\n"); + return; +} diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/codeconv.c b/lib/ebu/others/eblook-1.6.1+media-20200414/codeconv.c new file mode 100644 index 0000000..49ade98 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/codeconv.c @@ -0,0 +1,804 @@ +/* + * codeconv.c + * Copyright(c) 2001 Takashi NEMOTO + * + * This program 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. + * + * Written by Takashi Nemoto (tnemoto@mvi.biglobe.ne.jp). + * Modified by Kazuhiko + * Modified by Satomi + * + */ + +/* #define DEBUG_CODECONV */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "codeconv.h" + +#include +#include +#include +#include +#include + +#ifdef HAVE_LOCALE_H +# include +#endif + +#ifdef HAVE_ICONV_H +# include +#endif + +#ifdef HAVE_LANGINFO_H +#include +#endif + +#ifdef HAVE_ALLOCA_H +#include +#endif + +#ifdef HAVE_ICONV +static iconv_t cur_to_euc = (iconv_t)-1; +static iconv_t euc_to_cur = (iconv_t)-1; +static const char *eucjp_code_name = NULL; +#endif + +/* Return code <0: error, -2: Output Buffer Overflow */ +size_t current_to_euc PROTO((char **current, size_t *in_len, + char **euc, size_t *out_len)); +static size_t euc_to_current PROTO((char **euc, size_t *in_len, + char **current, size_t *out_len)); + + +enum CONV_MODE {IO_AUTO, IO_ICONV, IO_SJIS, IO_EUC} conv_mode; + +static enum CONV_MODE detect_conv_mode PROTO((const char *encoding)); + + + + +#define TMP_SIZE 10240 + +static int xputs_raw PROTO((const char *str, int len, FILE *fp)); +static int xputs2 PROTO((const char *str, int len, FILE *fp)); + +static const char *euc_jp_names[] = { + "eucJP", "EUC-JP", "eucjp", "euc-jp", "EUCJP", "ujis", "UJIS", + "euc", "EUC", NULL +}; + +static const char *shift_jis_names[] = { + "SHIFT-JIS", "SHIFT_JIS", "SJIS", "CSSHIFTJIS", "SHIFTJIS", NULL +}; + +#ifdef HAVE_ICONV +static const char *iso_2022_jp_names[] = { + "ISO-2022-JP-3", "ISO-2022-JP-2", "ISO-2022-JP", + "CSISO2022JP", "CSISO2022JP2", "CSISO2022JP3", + "ISO-2022", "ISO2022", "ISO2022JP", "ISO2022-JP", "JIS", NULL +}; + +static const char *japanese_names[] = { + "ja", "japanese", NULL +}; +#endif + +static int match_str(str,str_list) + const char *str; + const char **str_list; +{ + const char **ptr; + for(ptr=str_list;*ptr!=NULL;ptr++) { + if (strcasecmp(str,*ptr)==0) return 1; + } + return 0; +} + +/* + + ¥³¡¼¥ÉÊÑ´¹´Ø¿ô½é´ü²½¼ê½ç + + + 1. encoding ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¤é¡¢¤Þ¤º»ØÄꤵ¤ì¤¿ encoding ¤ò»î¤¹ + 1a. ¤Þ¤º »ØÄꤵ¤ì¤¿ encoding ¤¬ EUC/SJIS ¤«¤É¤¦¤«¤òȽÄê => IO_EUC / IO_SJIS + 1b. ¤À¤á¤Ê¤é iconv ¤ÇÊÑ´¹¤Ç¤­¤ë encoding ¤«¤òȽÄê => IO_ICONV + °Ê²¼Æ±ÍÍ¡£ + + 2. ´û¤Ë½é´ü²½ºÑ¤ß¤À¤Ã¤¿¤é ¤³¤³¤Ç½ªÎ» + + 3. ¤À¤á¤Ê¤é locale ¤«¤é¤Î¼èÆÀ¤ò»î¤ß¤ë + 3a. nl_langinfo(CODESET) ¤«¤é¤Î encoding ¼è¤ê½Ð¤·¤ò»î¤ß¤ë¡£ + 3b. LC_CTYPE ¤«¤é¤Î encoding ¼è¤ê½Ð¤·¤ò»î¤ß¤ë¡£ + 2e. LC_CTYPE ¸åȾÉô(.°Ê¹ß) ¤«¤é¤Î encoding ¼è¤ê½Ð¤·¤ò»î¤ß¤ë¡£ + + 3. FALLBACK_ENCODING ¤ò»î¤¹ + + 4. ¤¢¤­¤é¤á¤Æ EUC_JP + + ÌäÂê¤Ë¤Ê¤ëÎã + SJIS ¤Î locale ̾¤¬ ja/japanese ¤Î¾ì¹ç + iconv ¤¬Í­¤ë¾ì¹ç => EUC_JP ¤Î iconv ̾¤Ï¡© + iconv ¤¬Ìµ¤¤¾ì¹ç => 4. ¤Ç EUC_JP ¤«¤Ê¡© + locale ¤¬ C ¤È¤« en_US ¤À¤Ã¤¿¤é¡© => ÅöÌÌ FALLBACK ¤¹¤ë¡£ + gettext ÂбþÅù¤Î¾ì¹ç¤ÏÍ×¼êľ¤·¡£ + + */ + +#ifdef HAVE_ICONV + +static int +setup_eucjp_code_name() +{ + const char **enc; + iconv_t ic; + if (eucjp_code_name == NULL) { + for (enc = euc_jp_names; *enc != NULL; enc++) { + ic = iconv_open(*enc, *enc); + if (ic != (iconv_t)-1) { + eucjp_code_name = *enc; + iconv_close(ic); + break; + } + } + if (eucjp_code_name == NULL) { + /* EUC-JP ÀßÄê¤Ë¼ºÇÔ - Û£Ëæ¤Ê "ja" "japanese" ¤â»î¤¹ */ + for (enc = japanese_names; *enc != NULL; enc++) { + ic = iconv_open(*enc,*enc); + if (ic != (iconv_t)-1) { + eucjp_code_name = *enc; + iconv_close(ic); + break; + } + } + } + } + return eucjp_code_name != NULL; +} + +/* Current locale ¤Î codeset ¤ÇÆüËܸ줬°·¤¨¤ë¤«¡© + ¼ºÇԤʤé 0, À®¸ù¤Ê¤é 1 ¤òÊÖ¤¹ */ + +static int +iconv_test(ctoe, etoc) + iconv_t ctoe, etoc; +{ + /* ʸ»úÎó "¼Â¸³" */ +#define TEST_STRING "\xBC\xC2\xB8\xB3" +#define TEST_LENGTH 50 + char test1_0[TEST_LENGTH],test2_0[TEST_LENGTH],test3_0[TEST_LENGTH]; + char *test1,*test2,*test3; + size_t ilen,olen; + + if (ctoe == (iconv_t)-1 || etoc == (iconv_t)-1) + return 0; + strcpy(test1_0,TEST_STRING); + test1=test1_0; + test2=test2_0; + test3=test3_0; + ilen=strlen(TEST_STRING); + olen=TEST_LENGTH; + + /* euc-jp => current code ¤ÎÊÑ´¹¥Æ¥¹¥È */ + if (iconv(etoc,&test1,&ilen,&test2,&olen) == ((size_t)-1)) + return 0; + if (iconv(etoc,NULL,&ilen,&test2,&olen) == ((size_t)-1)) + return 0; + + /* current code ¤«¤é ¸µ¤ËÌá¤ë¤« */ + test2=test2_0; + ilen=TEST_LENGTH-olen; + olen=TEST_LENGTH; + if (iconv(ctoe,&test2,&ilen,&test3,&olen) == ((size_t)-1)) + return 0; + if (iconv(ctoe,NULL,&ilen,&test3,&olen) == ((size_t)-1)) + return 0; + + if (strncmp(test1_0,test3_0,strlen(test1_0)) != 0) + return 0; + + return 1; +} + +static int +iconv_setup(current_code_name) + const char *current_code_name; +{ + iconv_t ctoe,etoc; + static int disable_iconv = 0; + + if (disable_iconv) + return 0; + if (eucjp_code_name == NULL) { + if (! setup_eucjp_code_name()) { + disable_iconv = 1; + return 0; + } + } + + if (current_code_name == NULL || eucjp_code_name == NULL) + return 0; + + ctoe = iconv_open(eucjp_code_name, current_code_name); + etoc = iconv_open(current_code_name, eucjp_code_name); + + + if (iconv_test(ctoe, etoc)) { + /* ¤¦¤Þ¤¯¤¤¤Ã¤¿¤é ÀßÄꤹ¤ë */ + if (cur_to_euc != (iconv_t) -1) + iconv_close(cur_to_euc); + if (euc_to_cur != (iconv_t) -1) + iconv_close(euc_to_cur); + cur_to_euc=ctoe; + euc_to_cur=etoc; + return 1; + } else { + if (ctoe != (iconv_t)-1) + iconv_close(ctoe); + if (etoc != (iconv_t)-1) + iconv_close(etoc); + return 0; + } +} +#endif + +enum CONV_MODE detect_conv_mode(encoding) + const char *encoding; +{ + if (encoding == NULL) return IO_AUTO; + if (match_str(encoding,euc_jp_names)) return IO_EUC; + if (match_str(encoding,shift_jis_names)) return IO_SJIS; +#ifdef HAVE_ICONV + if (match_str(encoding,iso_2022_jp_names)) { + const char **enc; + for(enc = iso_2022_jp_names;*enc != NULL; enc++){ + if (iconv_setup(*enc)) + return IO_ICONV; + } + } else if (iconv_setup(encoding)) { + return IO_ICONV; + } +#endif + return IO_AUTO; +} + +size_t +locale_init(encoding) + const char *encoding; +{ + static int initialized = 0; +#ifdef HAVE_SETLOCALE + static char *locale_name = NULL; + static char *current_code_name = NULL; +#endif + enum CONV_MODE cm_temp; + +#ifdef HAVE_SETLOCALE + locale_name = setlocale(LC_CTYPE, ""); +#endif + + /* 1. encoding ¤Ë¤è¤ë»ØÄê + ¡§ Í­¸ú¤Ê encoding ¤¬»ØÄꤵ¤ì¤ì¤Ð°ÊÁ°¤ÎÃͤò¾å½ñ¤­ */ + cm_temp = detect_conv_mode(encoding); + if (cm_temp != IO_AUTO) { + conv_mode = cm_temp; + goto init_finish; + } + + /* ¤¹¤Ç¤Ë ½é´ü²½ºÑ¤ß¤Ç¤¢¤ì¤Ð ¤½¤Î¤Þ¤Þµ¢¤ë */ + if (initialized != 0 && + (conv_mode != IO_ICONV +#ifdef HAVE_ICONV + || (cur_to_euc != (iconv_t)-1 && euc_to_cur != (iconv_t)-1) +#endif + )) + return CODECONV_OK; + initialized = 0; + conv_mode = IO_AUTO; + +#ifdef HAVE_SETLOCALE + /* 2. current_locale ¤«¤é ·èÄê¤ò»î¤ß¤ë */ +#if defined(HAVE_NL_LANGINFO) && defined(CODESET) + /* 2a/2b. nl_langinfo(CODESET) ¤«¤é¤Î¼èÆÀ¤Î»î¤ß */ + current_code_name=nl_langinfo(CODESET); + conv_mode=detect_conv_mode(current_code_name); + if (conv_mode != IO_AUTO) + goto init_finish; +#endif + /* 2c/2d. locale LC_CTYPE ¤½¤Î¤â¤Î¤Î³Îǧ */ + conv_mode=detect_conv_mode(locale_name); + if (conv_mode != IO_AUTO) + goto init_finish; + + /* 2e/2f. locale LC_CTYPE ¸åȾÉô¤Î³Îǧ */ + if (locale_name != NULL) { + char *try2; + locale_name = strdup(locale_name); + if (locale_name == NULL) + return CODECONV_ERROR; + try2 = strtok(locale_name, ".@"); + if (try2 != NULL) + try2 = strtok(NULL, ".@"); + if (try2 != NULL) { + conv_mode = detect_conv_mode(try2); + if (conv_mode != IO_AUTO) goto init_finish; + } + } +#endif /* HAVE_SETLOCALE */ + + /* 3a/3b. ¤½¤ì¤Ç¤â¤À¤á¤Ê¤é FALLBACK ¤¹¤ë */ +#ifdef FALLBACK_ENCODING + conv_mode = detect_conv_mode(FALLBACK_ENCODING); +#endif + + /* 4. ¤¢¤­¤é¤á¤Æ EUC_JP */ + if (conv_mode == IO_AUTO) conv_mode = IO_EUC; + + init_finish: + initialized = 1; + return CODECONV_OK; +} + +static int +xputs_raw(str, len, fp) + const char *str; + int len; + FILE *fp; +{ + int outlen = 0; + int len1 = len; + int wlen; + + while (outlen < len) { + wlen = fwrite(str, 1, len1, fp); + if (wlen == 0) + break; + outlen += wlen; + len1 -= wlen; + str += wlen; + } + return outlen; +} + +static int +xputs2(str, len, fp) + const char *str; + int len; + FILE *fp; +{ + char *buf1p, *buf1p0; + char *buf2p, *buf2p0; + size_t len1, len2; + size_t outlen; + int ret_code; + size_t status; + + /* The maximum size of output is 4 times larger than input. */ + outlen = len * 4; + + len1 = len; + len2 = outlen; +#ifdef HAVE_ALLOCA + buf1p = buf1p0 = alloca(len1); +#else + buf1p = buf1p0 = malloc(len1); +#endif + if (buf1p == NULL) + return EOF; +#ifdef HAVE_ALLOCA + buf2p = buf2p0 = alloca(len2); +#else + buf2p = buf2p0 = malloc(len2); +#endif + if (buf2p == NULL) { + free(buf1p0); + return EOF; + } + memcpy(buf1p, str, len); + status=euc_to_current(&buf1p, &len1, &buf2p, &len2); + if (status == CODECONV_BUFFER_OVERFLOW) { /* °ì²ó¤À¤± ¥á¥â¥êÎΰè¤ò³ÈÂç */ + buf1p = buf1p0; + len1 = len; + outlen *= 3; + len2 = outlen; +#ifdef HAVE_ALLOCA + buf2p = buf2p0 = alloca(outlen); +#else + free(buf2p0); + buf2p = buf2p0 = malloc(outlen); +#endif + if (buf2p == NULL){ + free(buf1p0); + return EOF; + } + status=euc_to_current(&buf1p, &len1, &buf2p, &len2); + } + if (status == CODECONV_ERROR || status == CODECONV_BUFFER_OVERFLOW) { + /* Conversion Error ¤¢¤­¤é¤á¤Æ ¤½¤Î¤Þ¤Þ½ÐÎÏ */ +#ifndef HAVE_ALLOCA + free(buf1p0); + free(buf2p0); +#endif + return xputs_raw(str, len, fp); + } +#ifndef HAVE_ALLOCA + free(buf1p0); +#endif + ret_code = xputs_raw(buf2p0, outlen - len2, fp); +#ifndef HAVE_ALLOCA + free(buf2p0); +#endif + return ret_code; +} + +int +xfputs(str, fp) + const char *str; + FILE* fp; +{ + return xputs2(str, strlen(str), fp); +} + +int +xputs(str) + const char *str; +{ + int len; + len=xfputs(str, stdout); + if (len<0) return EOF; + putchar('\n'); + return len+1; +} + +int +xvfprintf(fp, fmt, ap) + FILE *fp; + const char *fmt; + va_list ap; +{ + char buf1[TMP_SIZE]; + int len; +#ifdef HAVE_VSNPRINTF + len = vsnprintf(buf1, TMP_SIZE - 1, fmt, ap); + buf1[TMP_SIZE - 1]=0; +#else + len = vsprintf(buf1, fmt, ap); +#endif + return xputs2(buf1, len, fp); +} + +/* USE_STDARG_H is defined in codeconv.h */ +#ifdef USE_STDARG_H +int +xfprintf(FILE *fp, const char *fmt, ...) +#else +int +xfprintf(fp, fmt, va_alist) + FILE *fp; + const char *fmt; + va_dcl +#endif +{ + int len; + va_list ap; +#ifdef USE_STDARG_H + va_start(ap, fmt); +#else + va_start(ap); +#endif + len = xvfprintf(fp, fmt, ap); + va_end(ap); + return len; +} + +int +#ifdef USE_STDARG_H +xprintf(const char *fmt, ...) +#else +xprintf(fmt, va_alist) + const char *fmt; + va_dcl +#endif +{ + int len; + va_list ap; +#ifdef USE_STDARG_H + va_start(ap, fmt); +#else + va_start(ap); +#endif + len = xvfprintf(stdout, fmt, ap); + va_end(ap); + return len; +} + +char * +xfgets(str, size, fp) + char *str; + size_t size; + FILE *fp; +{ + char *ibuf, *ibuf0; + size_t ilen; + size_t status; + char *str0; + size_t size0; + + str0 = str; + size0 = size; + + /* The maximum size of input is 4 times larger than size. */ + ilen = size * 4; +#ifdef HAVE_ALLOCA + ibuf0 = ibuf = alloca(ilen+1); +#else + ibuf0 = ibuf = malloc(ilen+1); +#endif + if (ibuf == NULL) + return NULL; + + if (fgets(ibuf, ilen, fp) == NULL) { +#ifndef HAVE_ALLOCA + free(ibuf); +#endif + return NULL; + } + ibuf[ilen]=0; + ilen=strlen(ibuf); + + status = current_to_euc(&ibuf,&ilen,&str,&size); + str0[size0-size]=0; +#ifndef HAVE_ALLOCA + free(ibuf0); +#endif + if (status != CODECONV_ERROR) return str0; + return NULL; +} + +/* ================================================================== */ + +char* +jis_to_euc(euc, jis, len) + char *euc; + const char *jis; + int len; +{ + const char *jis_end; + char *q; + jis_end = jis + len; + /* Remove white space at tail of string */ + while (jis_end >= jis + 2 && + ((jis_end[-1] == '\0' && jis_end[-2] == '\0') || + (jis_end[-1] == 0x21 && jis_end[-2] == 0x21))) + jis_end -= 2; + q = euc; + while (jis < jis_end) + *q++ = (*jis++ | 0x80); + *q = '\0'; + return (char *)euc; +} + +char* +euc_to_jis(jis, euc, len) + char *jis; + const char *euc; + int len; +{ + const char *euc_end; + char *q; + euc_end = euc + len; + /* Remove white space at tail of string */ + while (euc_end >= euc + 2 && + ((euc_end[-1] == '\0' && euc_end[-2] == '\0') || + (euc_end[-1] == 0x21 && euc_end[-2] == 0x21))) + euc_end -= 2; + q = jis; + while (euc < euc_end) + *q++ = (*euc++ & 0x7f); + *q = '\0'; + return (char *)jis; +} + +size_t current_to_euc (in_buf,in_len,out_buf,out_len) + char **in_buf, **out_buf; + size_t *in_len,*out_len; +{ + int c1, c2; + size_t count = 0; + +#ifdef HAVE_ICONV + if (conv_mode == IO_ICONV) { + size_t ret; + if (cur_to_euc == (iconv_t) -1) + return CODECONV_ERROR; + ret = iconv(cur_to_euc,in_buf,in_len,out_buf,out_len); + if (ret != ((size_t)-1)) + ret = iconv(cur_to_euc, NULL, in_len, out_buf, out_len); + if (ret == ((size_t)-1)) { + iconv(cur_to_euc,NULL,NULL,NULL,NULL); +#ifdef E2BIG + if (errno == E2BIG) + return CODECONV_BUFFER_OVERFLOW; + else +#endif /* E2BIG */ + return CODECONV_ERROR; + } + return ret; + } +#endif /* HAVE_ICONV */ + + if (conv_mode == IO_SJIS) { + while(*in_len>0) { + if (*out_len<=0) break; + c1 = *((*in_buf)++) & 0xff; + (*in_len)--; + if (c1 < 0x80) { /* ASCII ʸ»ú */ + (*out_len)--; + count++; + *((*out_buf)++)=c1; + continue; + } else if ((c1 < 0x81 || c1 > 0x9f) && (c1 < 0xe0 || c1 > 0xef)) { + /* Ⱦ³Ñ¥«¥Ê */ + if (0xa1 <= c1 && c1 <= 0xdf) { + c2 = c1 - 0x80; + c1 = 0x8e; + } else { + return -1; + } + } else { + c2 = *((*in_buf)++) & 0xff; + (*in_len)--; + if (c1 > 0x9f) + c1 -= 0x40; + c1 += c1; + if (c2 <= 0x9e) { + c1 -= 0xe1; + if (c2 >= 0x80) + c2 -= 1; + c2 -= 0x1f; + } else { + c1 -= 0xe0; + c2 -= 0x7e; + } + c2 |= 0x80; + } + *((*out_buf)++) = c1 | 0x80; + (*out_len)--; + count++; + if (*out_len <= 0) + return CODECONV_BUFFER_OVERFLOW; + *((*out_buf)++) = c2; + (*out_len)--; + count++; + } + if (*in_len == 0) return count; + if (*out_len == 0) return CODECONV_BUFFER_OVERFLOW; + return CODECONV_ERROR; + } else { /* IO_EUC */ + if (*out_len < *in_len) { + memcpy(*out_buf,*in_buf,*out_len); + count = *out_len; + (*out_buf) += *out_len; + (*in_buf) += *out_len; + (*in_len) -= *out_len; + *out_len = 0; + return CODECONV_BUFFER_OVERFLOW; + } else { + memcpy(*out_buf,*in_buf,*in_len); + count = *in_len; + (*out_buf)+=*in_len; + (*in_buf)+=*in_len; + (*out_len)-=*in_len; + *in_len=0; + return count; + } + } + return CODECONV_ERROR; /* Never */ +} + +size_t euc_to_current (in_buf,in_len,out_buf,out_len) + char **in_buf, **out_buf; + size_t *in_len,*out_len; +{ + int c1, c2; + size_t count = 0; + +#ifdef HAVE_ICONV + if (conv_mode == IO_ICONV) { + size_t ret; + if (euc_to_cur == (iconv_t) -1) + return CODECONV_ERROR; + ret = iconv(euc_to_cur,in_buf,in_len,out_buf,out_len); + if (ret != ((size_t)-1)) + ret = iconv(euc_to_cur,NULL,in_len,out_buf,out_len); + if (ret == ((size_t)-1)) { + iconv(euc_to_cur,NULL,NULL,NULL,NULL); +#ifdef E2BIG + if (errno == E2BIG) + return CODECONV_BUFFER_OVERFLOW; + else +#endif /* E2BIG */ + return CODECONV_ERROR; + } + return ret; + } +#endif /* HAVE_ICONV */ + + if (conv_mode == IO_SJIS) { + while(*in_len>0) { + if (*out_len<=0) break; + c1 = *((*in_buf)++) & 0xff; + (*in_len)--; + if ((c1 & 0x80) == 0) { + *((*out_buf)++) = c1; + (*out_len)--; + count++; + continue; + } + if (0x8e == c1) { + *((*out_buf)++) = *((*in_buf)++) | 0x80; + (*in_len)--; + (*out_len)--; + count++; + continue; + } + c1 &= 0x7f; + c2 = *((*in_buf)++) & 0x7f; + (*in_len)--; + if (c1 & 0x01) { + c2 += 0x1f; + if (c2 > 0x7e) + c2++; + } else { + c2 += 0x7e; + } + c1 = (c1 + 0xe1) >> 1; + if (c1 > 0x9f) + c1 += 0x40; + *((*out_buf)++) = c1; + (*out_len)--; + count++; + if (*out_len <= 0) + return CODECONV_BUFFER_OVERFLOW; + *((*out_buf)++) = c2; + (*out_len)--; + count++; + } + if (*in_len == 0) return count; + if (*out_len == 0) return CODECONV_BUFFER_OVERFLOW; + return CODECONV_ERROR; + } else { /* IO_EUC */ + if (*out_len < *in_len) { + /* There are no needs to convert partially. Because caller + never refer to partially converted string and other + parameters. */ + memcpy(*out_buf,*in_buf,*out_len); + count = *out_len; + (*out_buf)+=*out_len; + (*in_buf)+=*out_len; + (*in_len)-=*out_len; + *out_len=0; + return CODECONV_BUFFER_OVERFLOW; + } else { + memcpy(*out_buf,*in_buf,*in_len); + count = *in_len; + (*out_buf)+=*in_len; + (*in_buf)+=*in_len; + (*out_len)-=*in_len; + *in_len=0; + return count; + } + } + return CODECONV_ERROR; /* Never */ +} + diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/codeconv.h b/lib/ebu/others/eblook-1.6.1+media-20200414/codeconv.h new file mode 100644 index 0000000..91553bd --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/codeconv.h @@ -0,0 +1,55 @@ +/* + * codeconv.h - header file for code conversion + * + * This program 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. + * + * Written by Takashi Nemoto (tnemoto@mvi.biglobe.ne.jp). + * Modified by Kazuhiko + * Modified by Satomi + */ + +#ifndef __CODECONV_H__ +#define __CODECONV_H__ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#define USE_STDARG_H + +#define CODECONV_BUFFER_OVERFLOW ((size_t) -2) +#define CODECONV_ERROR ((size_t) -1) +#define CODECONV_OK ((size_t) 0) + +#ifndef PROTO +#if defined(__STDC__) +#define PROTO(p) p +#else +#define PROTO(p) () +#endif +#endif /* PROTO */ + +extern size_t locale_init PROTO((const char *encoding)); +extern int xvfprintf PROTO((FILE *fp, const char *fmt, va_list ap)); +extern int xfprintf PROTO((FILE *fp, const char *fmt, ...)); +extern int xprintf PROTO((const char *fmt, ...)); +extern int xfputs PROTO((const char *str, FILE *fp)); +extern int xputs PROTO((const char *str)); +extern char *xfgets PROTO((char *str, size_t size, FILE *fp)); + +extern char *euc_to_jis PROTO((char *jis, const char *euc, int len)); +extern char *jis_to_euc PROTO((char *euc, const char *jis, int len)); +extern size_t current_to_euc PROTO((char **current, size_t *in_len, + char **euc, size_t *out_len)); + +#endif diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/compile b/lib/ebu/others/eblook-1.6.1+media-20200414/compile new file mode 100644 index 0000000..2ab71e4 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/compile @@ -0,0 +1,348 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2016-01-11.22; # UTC + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program 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, 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, see . + +# 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. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/config.guess b/lib/ebu/others/eblook-1.6.1+media-20200414/config.guess new file mode 100644 index 0000000..4cd9454 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/config.guess @@ -0,0 +1,1658 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2019 Free Software Foundation, Inc. + +timestamp='2019-04-28' + +# 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 3 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, see . +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2019 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$driver" + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; 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 + +case "$UNAME_SYSTEM" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)` + case "$UNAME_MACHINE_ARCH" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "$UNAME_VERSION" in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "$machine-${os}${release}${abi-}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" + exit ;; + *:ekkoBSD:*:*) + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" + exit ;; + *:SolidBSD:*:*) + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:MirBSD:*:*) + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # 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 "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix"$UNAME_RELEASE" + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-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 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux"$UNAME_RELEASE" + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + 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 ;; + 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 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos"$UNAME_RELEASE" + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos"$UNAME_RELEASE" + ;; + sun4) + echo sparc-sun-sunos"$UNAME_RELEASE" + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos"$UNAME_RELEASE" + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten"$UNAME_RELEASE" + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten"$UNAME_RELEASE" + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix"$UNAME_RELEASE" + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix"$UNAME_RELEASE" + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix"$UNAME_RELEASE" + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #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_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos"$UNAME_RELEASE" + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + then + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$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 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + exit ;; + ????????: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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + 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 ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "$HP_ARCH" = "" ]; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ "$HP_ARCH" = hppa2.0w ] + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" + exit ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + 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_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo "$UNAME_MACHINE"-unknown-osf1mk + else + echo "$UNAME_MACHINE"-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:BSD/OS:*:*) + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + else + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + fi + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case "$UNAME_PROCESSOR" in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + i*:CYGWIN*:*) + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; + *:MINGW64*:*) + echo "$UNAME_MACHINE"-pc-mingw64 + exit ;; + *:MINGW*:*) + echo "$UNAME_MACHINE"-pc-mingw32 + exit ;; + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys + exit ;; + i*:PW*:*) + echo "$UNAME_MACHINE"-pc-pw32 + exit ;; + *:Interix*:*) + case "$UNAME_MACHINE" in + x86) + echo i586-pc-interix"$UNAME_RELEASE" + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix"$UNAME_RELEASE" + exit ;; + IA64) + echo ia64-unknown-interix"$UNAME_RELEASE" + exit ;; + esac ;; + i*:UWIN*:*) + echo "$UNAME_MACHINE"-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-pc-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + *:GNU:*:*) + # the GNU system + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + exit ;; + *:Minix:*:*) + echo "$UNAME_MACHINE"-unknown-minix + exit ;; + aarch64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + else + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + cris:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + crisv32:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + frv:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + hexagon:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + ia64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m32r*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m68*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-"$LIBC" + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-"$LIBC" + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-"$LIBC" + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-"$LIBC" + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + exit ;; + sh64*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sh*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + tile*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + vax:Linux:*:*) + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + exit ;; + x86_64:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + xtensa*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:DYNIX/ptx:4*:*) + # 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. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo "$UNAME_MACHINE"-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo "$UNAME_MACHINE"-unknown-stop + exit ;; + i*86:atheos:*:*) + echo "$UNAME_MACHINE"-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo "$UNAME_MACHINE"-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos"$UNAME_RELEASE" + exit ;; + i*86:*DOS:*:*) + echo "$UNAME_MACHINE"-pc-msdosdjgpp + exit ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + 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 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*: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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + 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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos"$UNAME_RELEASE" + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos"$UNAME_RELEASE" + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv"$UNAME_RELEASE" + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *: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 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo "$UNAME_MACHINE"-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux"$UNAME_RELEASE" + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv"$UNAME_RELEASE" + else + echo mips-unknown-sysv"$UNAME_RELEASE" + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux"$UNAME_RELEASE" + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux"$UNAME_RELEASE" + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux"$UNAME_RELEASE" + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Rhapsody:*:*) + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + # shellcheck disable=SC2154 + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo "$UNAME_MACHINE"-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux"$UNAME_RELEASE" + exit ;; + *:DragonFly:*:*) + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "$UNAME_MACHINE" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" + exit ;; + i*86:rdos:*:*) + echo "$UNAME_MACHINE"-pc-rdos + exit ;; + i*86:AROS:*:*) + echo "$UNAME_MACHINE"-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; + *:Unleashed:*:*) + echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" + exit ;; +esac + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#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 + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#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`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%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) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/config.h.in b/lib/ebu/others/eblook-1.6.1+media-20200414/config.h.in new file mode 100644 index 0000000..8a2ac39 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/config.h.in @@ -0,0 +1,167 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define if EB Library supports remote access. */ +#undef EBCONF_ENABLE_EBNET + +/* Define if EB Library supports native language. */ +#undef EBCONF_ENABLE_NLS + +/* Define if EB Library supports pthread. */ +#undef EBCONF_ENABLE_PTHREAD + +/* Define if EB library with UTF-8 support is requested */ +#undef ENABLE_EBU + +/* definition for Default Char Set */ +#undef FALLBACK_ENCODING + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `iconv' function. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#undef HAVE_ICONV_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `isatty' function. */ +#undef HAVE_ISATTY + +/* Define to 1 if you have the header file. */ +#undef HAVE_LANGINFO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `nl_langinfo' function. */ +#undef HAVE_NL_LANGINFO + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to `1' if printf() recognizes "I64" modifier for __int64 */ +#undef PRINTF_I64_MODIFIER + +/* Define to `1' if printf() recognizes "ll" modifier for long long */ +#undef PRINTF_LL_MODIFIER + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* with pager option */ +#undef USE_PAGER + +/* with GNU readline library */ +#undef USE_READLINE + +/* Version number of package */ +#undef VERSION + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to `long int' if does not define. */ +#undef off_t + +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to `int' if does not define. */ +#undef ssize_t diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/config.sub b/lib/ebu/others/eblook-1.6.1+media-20200414/config.sub new file mode 100644 index 0000000..f53af5a --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/config.sub @@ -0,0 +1,1798 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2019 Free Software Foundation, Inc. + +timestamp='2019-01-05' + +# 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 3 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, see . +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# 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. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# 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. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2019 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ + | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + os=linux-android + ;; + *) + basic_machine=$field1-$field2 + os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | 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 | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + os= + ;; + *) + basic_machine=$field1 + os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + os=bsd + ;; + a29khif) + basic_machine=a29k-amd + os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=scout + ;; + alliant) + basic_machine=fx80-alliant + os= + ;; + altos | altos3068) + basic_machine=m68k-altos + os= + ;; + am29k) + basic_machine=a29k-none + os=bsd + ;; + amdahl) + basic_machine=580-amdahl + os=sysv + ;; + amiga) + basic_machine=m68k-unknown + os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=bsd + ;; + aros) + basic_machine=i386-pc + os=aros + ;; + aux) + basic_machine=m68k-apple + os=aux + ;; + balance) + basic_machine=ns32k-sequent + os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=linux + ;; + cegcc) + basic_machine=arm-unknown + os=cegcc + ;; + 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) + basic_machine=j90-cray + os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + os= + ;; + da30) + basic_machine=m68k-da30 + os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + os= + ;; + delta88) + basic_machine=m88k-motorola + os=sysv3 + ;; + dicos) + basic_machine=i686-pc + os=dicos + ;; + djgpp) + basic_machine=i586-pc + os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=ose + ;; + gmicro) + basic_machine=tron-gmicro + os=sysv + ;; + go32) + basic_machine=i386-pc + os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=xray + ;; + h8500hms) + basic_machine=h8500-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 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=proelf + ;; + i386mach) + basic_machine=i386-mach + os=mach + ;; + vsta) + basic_machine=i386-pc + os=vsta + ;; + isi68 | isi) + basic_machine=m68k-isi + os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=sysv + ;; + merlin) + basic_machine=ns32k-utek + os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + os=coff + ;; + morphos) + basic_machine=powerpc-unknown + os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=moxiebox + ;; + msdos) + basic_machine=i386-pc + os=msdos + ;; + msys) + basic_machine=i686-pc + os=msys + ;; + mvs) + basic_machine=i370-ibm + os=mvs + ;; + nacl) + basic_machine=le32-unknown + os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=newsos + ;; + news1000) + basic_machine=m68030-sony + os=newsos + ;; + necv70) + basic_machine=v70-nec + os=sysv + ;; + nh3000) + basic_machine=m68k-harris + os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=cxux + ;; + nindy960) + basic_machine=i960-intel + os=nindy + ;; + mon960) + basic_machine=i960-intel + os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=ose + ;; + os68k) + basic_machine=m68k-none + os=os68k + ;; + paragon) + basic_machine=i860-intel + os=osf + ;; + parisc) + basic_machine=hppa-unknown + os=linux + ;; + pw32) + basic_machine=i586-unknown + os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=rdos + ;; + rdos32) + basic_machine=i386-pc + os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=coff + ;; + sa29200) + basic_machine=a29k-amd + os=udi + ;; + sei) + basic_machine=mips-sei + os=seiux + ;; + sequent) + basic_machine=i386-sequent + os= + ;; + sps7) + basic_machine=m68k-bull + os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + os= + ;; + stratus) + basic_machine=i860-stratus + os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + os= + ;; + sun2os3) + basic_machine=m68000-sun + os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + os= + ;; + sun3os3) + basic_machine=m68k-sun + os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + os= + ;; + sun4os3) + basic_machine=sparc-sun + os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + os= + ;; + sv1) + basic_machine=sv1-cray + os=unicos + ;; + symmetry) + basic_machine=i386-sequent + os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=unicos + ;; + t90) + basic_machine=t90-cray + os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + os=tpf + ;; + udi29k) + basic_machine=a29k-amd + os=udi + ;; + ultra3) + basic_machine=a29k-nyu + os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=none + ;; + vaxv) + basic_machine=vax-dec + os=sysv + ;; + vms) + basic_machine=vax-dec + os=vms + ;; + vxworks960) + basic_machine=i960-wrs + os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=vxworks + ;; + xbox) + basic_machine=i686-pc + os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + os=unicos + ;; + *) + basic_machine=$1 + os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # 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. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # 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) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + os=${os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + os=${os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $os in + irix*) + ;; + *) + os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + os=nextstep2 + ;; + *) + os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + os=${os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + # shellcheck disable=SC2162 + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=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. + auroraux) + os=auroraux + ;; + bluegene*) + os=cnk + ;; + solaris1 | solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + solaris) + os=solaris2 + ;; + unixware*) + os=sysv4.2uw + ;; + gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # es1800 is here to avoid being matched by es* (a different OS) + es1800*) + os=ose + ;; + # Some version numbers need modification + chorusos*) + os=chorusos + ;; + isc) + os=isc2.2 + ;; + sco6) + os=sco5v6 + ;; + sco5) + os=sco3.2v5 + ;; + sco4) + os=sco3.2v4 + ;; + sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + ;; + sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + scout) + # Don't match below + ;; + sco*) + os=sco3.2v2 + ;; + psos*) + os=psos + ;; + # Now 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* | esix* | aix* | cnk* | sunos | sunos[34]*\ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | kopensolaris* | plan9* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | knetbsd* | mirbsd* | netbsd* \ + | bitrig* | openbsd* | solidbsd* | libertybsd* \ + | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ + | linux-newlib* | linux-musl* | linux-uclibc* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* \ + | morphos* | superux* | rtmk* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + qnx*) + case $cpu in + x86 | i*86) + ;; + *) + os=nto-$os + ;; + esac + ;; + hiux*) + os=hiuxwe2 + ;; + nto-qnx*) + ;; + nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + sim | xray | os68k* | v88r* \ + | windows* | osx | abug | netware* | os9* \ + | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) + ;; + linux-dietlibc) + os=linux-dietlibc + ;; + linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + lynx*178) + os=lynxos178 + ;; + lynx*5) + os=lynxos5 + ;; + lynx*) + os=lynxos + ;; + mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` + ;; + opened*) + os=openedition + ;; + os400*) + os=os400 + ;; + sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; + sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; + wince*) + os=wince + ;; + utek*) + os=bsd + ;; + dynix*) + os=bsd + ;; + acis*) + os=aos + ;; + atheos*) + os=atheos + ;; + syllable*) + os=syllable + ;; + 386bsd) + os=bsd + ;; + ctix* | uts*) + os=sysv + ;; + nova*) + os=rtmk-nova + ;; + ns2) + os=nextstep2 + ;; + nsk*) + os=nsk + ;; + # Preserve the version number of sinix5. + sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + sinix*) + os=sysv4 + ;; + tpf*) + os=tpf + ;; + triton*) + os=sysv3 + ;; + oss*) + os=sysv3 + ;; + svr4*) + os=sysv4 + ;; + svr3) + os=sysv3 + ;; + sysvr4) + os=sysv4 + ;; + # This must come after sysvr4. + sysv*) + ;; + ose*) + os=ose + ;; + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + os=mint + ;; + zvmoe) + os=zvmoe + ;; + dicos*) + os=dicos + ;; + pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $cpu in + arm*) + os=eabi + ;; + *) + os=elf + ;; + esac + ;; + nacl*) + ;; + ios) + ;; + none) + ;; + *-eabi) + ;; + *) + 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 $cpu-$vendor in + score-*) + os=elf + ;; + spu-*) + os=elf + ;; + *-acorn) + os=riscix1.2 + ;; + arm*-rebel) + os=linux + ;; + arm*-semi) + os=aout + ;; + c4x-* | tic4x-*) + os=coff + ;; + c8051-*) + os=elf + ;; + clipper-intergraph) + os=clix + ;; + hexagon-*) + os=elf + ;; + tic54x-*) + os=coff + ;; + tic55x-*) + os=coff + ;; + tic6x-*) + os=coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=tops20 + ;; + pdp11-*) + os=none + ;; + *-dec | vax-*) + os=ultrix4.2 + ;; + m68*-apollo) + os=domain + ;; + i386-sun) + os=sunos4.0.2 + ;; + m68000-sun) + os=sunos3 + ;; + m68*-cisco) + os=aout + ;; + mep-*) + os=elf + ;; + mips*-cisco) + os=elf + ;; + mips*-*) + os=elf + ;; + or32-*) + os=coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=sysv3 + ;; + sparc-* | *-sun) + os=sunos4.1.1 + ;; + pru-*) + os=elf + ;; + *-be) + os=beos + ;; + *-ibm) + os=aix + ;; + *-knuth) + os=mmixware + ;; + *-wec) + os=proelf + ;; + *-winbond) + os=proelf + ;; + *-oki) + os=proelf + ;; + *-hp) + os=hpux + ;; + *-hitachi) + os=hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=sysv + ;; + *-cbm) + os=amigaos + ;; + *-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 + ;; + *-gould) + os=sysv + ;; + *-highlevel) + os=bsd + ;; + *-encore) + os=bsd + ;; + *-sgi) + os=irix + ;; + *-siemens) + os=sysv4 + ;; + *-masscomp) + os=rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=uxpv + ;; + *-rom68k) + os=coff + ;; + *-*bug) + os=coff + ;; + *-apple) + os=macos + ;; + *-atari*) + os=mint + ;; + *-wrs) + os=vxworks + ;; + *) + 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. +case $vendor in + unknown) + case $os in + riscix*) + vendor=acorn + ;; + sunos*) + vendor=sun + ;; + cnk*|-aix*) + vendor=ibm + ;; + beos*) + vendor=be + ;; + hpux*) + vendor=hp + ;; + mpeix*) + vendor=hp + ;; + hiux*) + vendor=hitachi + ;; + unos*) + vendor=crds + ;; + dgux*) + vendor=dg + ;; + luna*) + vendor=omron + ;; + genix*) + vendor=ns + ;; + clix*) + vendor=intergraph + ;; + mvs* | opened*) + vendor=ibm + ;; + os400*) + vendor=ibm + ;; + ptx*) + vendor=sequent + ;; + tpf*) + vendor=ibm + ;; + vxsim* | vxworks* | windiss*) + vendor=wrs + ;; + aux*) + vendor=apple + ;; + hms*) + vendor=hitachi + ;; + mpw* | macos*) + vendor=apple + ;; + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + vendor=atari + ;; + vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor-$os" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/configure b/lib/ebu/others/eblook-1.6.1+media-20200414/configure new file mode 100644 index 0000000..39c0ef1 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/configure @@ -0,0 +1,15305 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for eblook 1.6.1+media-20200414. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='eblook' +PACKAGE_TARNAME='eblook' +PACKAGE_VERSION='1.6.1+media-20200414' +PACKAGE_STRING='eblook 1.6.1+media-20200414' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +ac_unique_file="eblook.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +EBCONF_INTLLIBS +EBCONF_INTLINCS +EBCONF_PTHREAD_LDFLAGS +EBCONF_PTHREAD_CFLAGS +EBCONF_PTHREAD_CPPFLAGS +EBCONF_ZLIBLIBS +EBCONF_ZLIBINCS +EBCONF_EBLIBS +EBCONF_EBINCS +LIBOBJS +ALLOCA +CPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +LIBTOOL +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_largefile +with_fallback_encoding +with_readline +with_pager +enable_ebu +with_ebu_conf +with_eb_conf +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +LT_SYS_LIBRARY_PATH +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +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=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -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_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$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 ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$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 | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$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 ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + 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 | -n) + 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 ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -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_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=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 ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# 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 the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + 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 + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # 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 <<_ACEOF +\`configure' configures eblook 1.6.1+media-20200414 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/eblook] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --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 + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of eblook 1.6.1+media-20200414:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-largefile omit support for large files + --enable-ebu Build with EB Library with UTF-8 support [[auto]] + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-fallback-encoding=encoding (default="EUC-JP" ("SHIFT-JIS" on HP-UX, + Cygwin and MinGW systems)) + --with-readline compile with gnu readline library + --with-pager compile with pager option + --with-ebu-conf=FILE ebu.conf file is FILE [[SYSCONFDIR/ebu.conf]] + --with-eb-conf=FILE eb.conf file is FILE [[SYSCONFDIR/eb.conf]] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +eblook configure 1.6.1+media-20200414 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* 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_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by eblook $as_me 1.6.1+media-20200414, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_config_headers="$ac_config_headers config.h" + +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 + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- +am__api_version='1.15' + +# 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 +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +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. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&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_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='eblook' + VERSION='1.6.1+media-20200414' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_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 $# != 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 + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#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)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + + + +for ac_header in langinfo.h locale.h iconv.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if ${ac_cv_sys_largefile_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if ${ac_cv_sys_large_files+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi + + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ll modifier of printf" >&5 +$as_echo_n "checking for ll modifier of printf... " >&6; } +if ${ac_cv_func_printf_ll+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + int main() { + char buffer[128]; + sprintf(buffer, "%llx", (unsigned long long) 1 << 32); + return (strcmp(buffer, "100000000") == 0) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_printf_ll=yes +else + ac_cv_func_printf_ll=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_printf_ll" >&5 +$as_echo "$ac_cv_func_printf_ll" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for I64 modifier of printf" >&5 +$as_echo_n "checking for I64 modifier of printf... " >&6; } +if ${ac_cv_func_printf_i64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + int main() { + char buffer[128]; + sprintf(buffer, "%I64x", (unsigned __int64) 1 << 32); + return (strcmp(buffer, "100000000") == 0) ? 0 : 1; + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_printf_i64=yes +else + ac_cv_func_printf_i64=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_printf_i64" >&5 +$as_echo "$ac_cv_func_printf_i64" >&6; } +if test "$ac_cv_func_printf_ll" = yes; then + +$as_echo "#define PRINTF_LL_MODIFIER 1" >>confdefs.h + +fi +if test "$ac_cv_func_printf_i64" = yes; then + +$as_echo "#define PRINTF_I64_MODIFIER 1" >>confdefs.h + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if ${ac_cv_working_alloca_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes +else + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if ${ac_cv_func_alloca_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +void *alloca (size_t); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes +else + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +$as_echo "#define C_ALLOCA 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if ${ac_cv_os_cray+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if ${ac_cv_c_stack_direction+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 +else + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +for ac_func in iconv nl_langinfo setlocale vsnprintf isatty +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes; then : + $as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strcasecmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strcasecmp.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes; then : + $as_echo "#define HAVE_STRDUP 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strdup.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strdup.$ac_objext" + ;; +esac + +fi + + + + + + +TARGET=${target} + +case "$target" in + *-*-hpux*) default_fallback="SHIFT-JIS" ;; + *-*-cygwin*) default_fallback="SHIFT-JIS" ;; + *-*-mingw32*) default_fallback="SHIFT-JIS" ;; + *) default_fallback="EUC-JP" ;; +esac + +# Check whether --with-fallback-encoding was given. +if test "${with_fallback_encoding+set}" = set; then : + withval=$with_fallback_encoding; cat >>confdefs.h <<_ACEOF +#define FALLBACK_ENCODING "${fallback_encoding}" +_ACEOF + +else + cat >>confdefs.h <<_ACEOF +#define FALLBACK_ENCODING "${default_fallback}" +_ACEOF + +fi + + + +# Check whether --with-readline was given. +if test "${with_readline+set}" = set; then : + withval=$with_readline; + tcap="" + for termlib in ncurses curses termcap terminfo termlib; do + as_ac_Lib=`$as_echo "ac_cv_lib_$termlib''_tputs" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tputs in -l$termlib" >&5 +$as_echo_n "checking for tputs in -l$termlib... " >&6; } +if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$termlib $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tputs (); +int +main () +{ +return tputs (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$as_ac_Lib=yes" +else + eval "$as_ac_Lib=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +eval ac_res=\$$as_ac_Lib + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : + tcap="-l$termlib" + break + +fi + + termlib="no" + done + if test ! "$termlib" = "no" ; then + ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default" +if test "x$ac_cv_header_readline_readline_h" = xyes; then : + +$as_echo "#define USE_READLINE 1" >>confdefs.h + LIBS="$LIBS -lreadline -l$termlib" +fi + + + fi + +fi + + + +# Check whether --with-pager was given. +if test "${with_pager+set}" = set; then : + withval=$with_pager; +$as_echo "#define USE_PAGER 1" >>confdefs.h + +fi + + +save_sysconfdir=$sysconfdir + if test ! -f $sysconfdir/eb.conf; then + if test -f /etc/eb.conf ; then + sysconfdir=/etc + fi + fi +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF + +fi + +# Check whether --enable-ebu was given. +if test "${enable_ebu+set}" = set; then : + enableval=$enable_ebu; ENABLE_EBU=$enableval +else + ENABLE_EBU=auto +fi + + +if test $ENABLE_EBU != no; then + + + + + + for ac_header in limits.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIMITS_H 1 +_ACEOF + +fi + +done + + ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + + + +# Check whether --with-ebu-conf was given. +if test "${with_ebu_conf+set}" = set; then : + withval=$with_ebu_conf; ebuconf="${withval}" +else + ebuconf=$sysconfdir/ebu.conf +fi + + if test X$prefix = XNONE; then + PREFIX=$ac_default_prefix + else + PREFIX=$prefix + fi + ebuconf=`echo X$ebuconf | sed -e 's/^X//' -e 's;\${prefix};'"$PREFIX;g" \ + -e 's;\$(prefix);'"$PREFIX;g"` + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ebu.conf" >&5 +$as_echo_n "checking for ebu.conf... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ebuconf" >&5 +$as_echo "$ebuconf" >&6; } + if test -f ${ebuconf}; then + . ${ebuconf} + else + if test $ENABLE_EBU = yes; then + as_fn_error $? "$ebuconf not found" "$LINENO" 5 + else + ENABLE_NLS=no + fi + fi +fi + +if test $ENABLE_EBU != no; then + if test X$EBCONF_ENABLE_PTHREAD = Xyes; then + +$as_echo "#define EBCONF_ENABLE_PTHREAD 1" >>confdefs.h + + fi + if test X$EBCONF_ENABLE_NLS = Xyes; then + +$as_echo "#define EBCONF_ENABLE_NLS 1" >>confdefs.h + + fi + if test X$EBCONF_ENABLE_EBNET = Xyes; then + +$as_echo "#define EBCONF_ENABLE_EBNET 1" >>confdefs.h + + fi + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EB Library with UTF-8 support" >&5 +$as_echo_n "checking for EB Library with UTF-8 support... " >&6; } + save_CPPFLAGS=$CPPFLAGS + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + save_LIBS=$LIBS + CPPFLAGS="$CPPFLAGS $EBCONF_PTHREAD_CPPFLAGS $EBCONF_EBINCS $EBCONF_ZLIBINCS $EBCONF_INTLINCS" + CFLAGS="$CFLAGS $EBCONF_PTHREAD_CFLAGS" + LDFLAGS="$LDFAGS $EBCONF_PTHREAD_LDFLAGS" + LIBS="$LIBS $EBCONF_EBLIBS $EBCONF_ZLIBLIBS $EBCONF_INTLLIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +eb_initialize_library(); return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + try_eb=yes +else + try_eb=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS=$save_CPPFLAGS + CFLAGS=$save_CFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try_eb" >&5 +$as_echo "$try_eb" >&6; } + if test ${try_eb} != yes; then + if test $ENABLE_EBU = yes; then + as_fn_error $? "EB Library with UTF-8 support not available" "$LINENO" 5 + else + ENABLE_EBU=no + fi + else + +$as_echo "#define ENABLE_EBU 1" >>confdefs.h + + fi +fi + +if test $ENABLE_EBU = no; then + + + + + +for ac_header in limits.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIMITS_H 1 +_ACEOF + +fi + +done + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + + + +# Check whether --with-eb-conf was given. +if test "${with_eb_conf+set}" = set; then : + withval=$with_eb_conf; ebconf="${withval}" +else + ebconf=$sysconfdir/eb.conf +fi + +if test X$prefix = XNONE; then + PREFIX=$ac_default_prefix +else + PREFIX=$prefix +fi +ebconf=`echo X$ebconf | sed -e 's/^X//' -e 's;\${prefix};'"$PREFIX;g" \ + -e 's;\$(prefix);'"$PREFIX;g"` + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for eb.conf" >&5 +$as_echo_n "checking for eb.conf... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ebconf" >&5 +$as_echo "$ebconf" >&6; } +if test -f ${ebconf}; then + . ${ebconf} +else + as_fn_error $? "$ebconf not found" "$LINENO" 5 +fi + +if test X$EBCONF_ENABLE_PTHREAD = Xyes; then + +$as_echo "#define EBCONF_ENABLE_PTHREAD 1" >>confdefs.h + +fi +if test X$EBCONF_ENABLE_NLS = Xyes; then + +$as_echo "#define EBCONF_ENABLE_NLS 1" >>confdefs.h + +fi +if test X$EBCONF_ENABLE_EBNET = Xyes; then + +$as_echo "#define EBCONF_ENABLE_EBNET 1" >>confdefs.h + +fi + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EB Library" >&5 +$as_echo_n "checking for EB Library... " >&6; } +save_CPPFLAGS=$CPPFLAGS +save_CFLAGS=$CFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $EBCONF_PTHREAD_CPPFLAGS $EBCONF_EBINCS $EBCONF_ZLIBINCS $EBCONF_INTLINCS" +CFLAGS="$CFLAGS $EBCONF_PTHREAD_CFLAGS" +LDFLAGS="$LDFAGS $EBCONF_PTHREAD_LDFLAGS" +LIBS="$LIBS $EBCONF_EBLIBS $EBCONF_ZLIBLIBS $EBCONF_INTLLIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +eb_initialize_library(); return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + try_eb=yes +else + try_eb=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +CPPFLAGS=$save_CPPFLAGS +CFLAGS=$save_CFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $try_eb" >&5 +$as_echo "$try_eb" >&6; } +if test ${try_eb} != yes; then + as_fn_error $? "EB Library not available" "$LINENO" 5 +fi + +fi +sysconfdir=$sysconfdir +CPPFLAGS="$CPPFLAGS $EBCONF_PTHREAD_CPPFLAGS $EBCONF_EBINCS $EBCONF_ZLIBINCS $EBCONF_INTLINCS" +CFLAGS="$CFLAGS $EBCONF_PTHREAD_CFLAGS" +LDFLAGS="$LDFAGS $EBCONF_PTHREAD_LDFLAGS" +LIBS="$LIBS $EBCONF_EBLIBS $EBCONF_ZLIBLIBS $EBCONF_INTLLIBS" + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# 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, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# 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. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by eblook $as_me 1.6.1+media-20200414, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +eblook config.status 1.6.1+media-20200414 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #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. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/configure.ac b/lib/ebu/others/eblook-1.6.1+media-20200414/configure.ac new file mode 100644 index 0000000..8207376 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/configure.ac @@ -0,0 +1,103 @@ +dnl Process this file with autoconf to produce a configure script. +AC_PREREQ(2.63) +AC_INIT(eblook, 1.6.1+media-20200414) +AC_CONFIG_SRCDIR([eblook.c]) +AC_CONFIG_HEADERS([config.h]) +AC_CANONICAL_TARGET +AM_INIT_AUTOMAKE +AH_TEMPLATE([FALLBACK_ENCODING],[definition for Default Char Set]) +AC_CONFIG_MACRO_DIRS([m4]) + +dnl Checks for programs. +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_LIBTOOL +AC_PROG_LN_S + +dnl Checks for libraries. + +dnl Checks for header files. +AC_CHECK_HEADERS(langinfo.h locale.h iconv.h) +dnl AC_CHECK_HEADERS(langinfo.h locale.h iconv.h sys/types.h) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T + +dnl * +dnl * large file support. +dnl * +eb_SYS_LARGEFILE + +dnl Checks for library functions. +AC_FUNC_ALLOCA +AC_CHECK_FUNCS(iconv nl_langinfo setlocale vsnprintf isatty) +AC_REPLACE_FUNCS(strcasecmp strdup) + +dnl * +dnl * System services +dnl * +AC_EXEEXT +AC_OBJEXT + +TARGET=${target} + +dnl * Default Charset +case "$target" in + *-*-hpux*) default_fallback="SHIFT-JIS" ;; + *-*-cygwin*) default_fallback="SHIFT-JIS" ;; + *-*-mingw32*) default_fallback="SHIFT-JIS" ;; + *) default_fallback="EUC-JP" ;; +esac +AC_ARG_WITH(fallback-encoding, + [ --with-fallback-encoding[=encoding] (default="EUC-JP" ("SHIFT-JIS" on HP-UX, + Cygwin and MinGW systems))], + [AC_DEFINE_UNQUOTED(FALLBACK_ENCODING,"${fallback_encoding}")], + [AC_DEFINE_UNQUOTED(FALLBACK_ENCODING,"${default_fallback}")]) + +dnl * +dnl * --with-readline option. +dnl * +AC_ARG_WITH(readline, +[ --with-readline compile with gnu readline library],[ + tcap="" + for termlib in ncurses curses termcap terminfo termlib; do + AC_CHECK_LIB($termlib, tputs, + [tcap="-l$termlib"] + break + ) + termlib="no" + done + if test ! "$termlib" = "no" ; then + AC_CHECK_HEADER(readline/readline.h,[AC_DEFINE(USE_READLINE, 1, [with GNU readline library]) LIBS="$LIBS -lreadline -l$termlib"],) + fi +], ) + +dnl * +dnl * --with-pager option. +dnl * +AC_ARG_WITH(pager, +[ --with-pager compile with pager option], +AC_DEFINE(USE_PAGER, 1, [with pager option]), ) + +dnl EB_CONFIG +save_sysconfdir=$sysconfdir +dnl for linux +[ if test ! -f $sysconfdir/eb.conf; then + if test -f /etc/eb.conf ; then + sysconfdir=/etc + fi + fi ] +eb_LIB_EBU +if test $ENABLE_EBU = no; then + eb_LIB_EB4 +fi +sysconfdir=$sysconfdir +CPPFLAGS="$CPPFLAGS $EBCONF_PTHREAD_CPPFLAGS $EBCONF_EBINCS $EBCONF_ZLIBINCS $EBCONF_INTLINCS" +CFLAGS="$CFLAGS $EBCONF_PTHREAD_CFLAGS" +LDFLAGS="$LDFAGS $EBCONF_PTHREAD_LDFLAGS" +LIBS="$LIBS $EBCONF_EBLIBS $EBCONF_ZLIBLIBS $EBCONF_INTLLIBS" + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/depcomp b/lib/ebu/others/eblook-1.6.1+media-20200414/depcomp new file mode 100644 index 0000000..b39f98f --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2016-01-11.22; # UTC + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. + +# This program 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, 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, see . + +# 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. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/eblook.c b/lib/ebu/others/eblook-1.6.1+media-20200414/eblook.c new file mode 100644 index 0000000..f2e49a3 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/eblook.c @@ -0,0 +1,4473 @@ +/* -*- mode:C; c-basic-offset:2; -*- */ + +/* eblook.c - interactive EB interface command + * + * Copyright (C) 1997,1998,1999 Keisuke Nishida + * + * This program 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, 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#if defined(WIN32) && !defined(DOS_FILE_PATH) +#define DOS_FILE_PATH 1 +#endif + +#include +#include +#include +#include +#include + +#ifdef HAVE_CTYPE_H +#include +#endif + +#ifdef USE_READLINE +#include +#include +#endif + +#include "getopt.h" +#include "codeconv.h" + +#ifdef EBCONF_ENABLE_PTHREAD +#define ENABLE_PTHREAD +#endif + +#ifdef ENABLE_EBU +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#endif + +#ifndef BUFSIZ +#define BUFSIZ 1024 +#endif + +/* + * maximum path length, same as in eb source files. + */ +#ifndef PATH_MAX +#ifdef MAXPATHLEN +#define PATH_MAX MAXPATHLEN +#else /* not MAXPATHLEN */ +#define PATH_MAX 1024 +#endif /* not MAXPATHLEN */ +#endif /* not PATH_MAX */ + +#define MAX_HIT_SIZE 256 +#define MAX_TEXT_SIZE 8192 +#define MAX_DUMP_SIZE 2048 + +#if defined(__DOS__) || defined(MSDOS) +/* DOS only. not for Win32, OS/2 */ +#define USER_INIT_FILE "~/eblookrc" +#else /* UNIX, Windows, OS/2, etc. */ +#define USER_INIT_FILE "~/.eblookrc" +#endif + +#ifdef USE_READLINE +#if defined(__DOS__) || defined(MSDOS) +char HIST_FILE[] = "~/eblkhist.txt"; +#else +char HIST_FILE[] = "~/.eblook_history"; +#endif +#define MAX_INPUT_HISTORY 128 +#endif + + +/* + * String A-list + */ +typedef struct _StringAlist { + char *key; + char *value; + struct _StringAlist *next; +} StringAlist; + +/* + * Internal functions + */ +#ifdef USE_PAGER +FILE *popen_pager (void); +int pclose_pager (FILE *); +#endif + +char *read_command (char *, size_t, FILE *); +int excute_command (char *); +int parse_command_line (char *, char *[]); +#ifdef USE_READLINE +char *read_command2 (char *, size_t, const char *); +char *stripwhite (char *); +char *command_generator (char *, int); +char **fileman_completion (char *,int,int); +#endif + +void command_book (int, char *[]); +void command_info (int, char *[]); +void command_list (int, char *[]); +void command_select (int, char *[]); +void command_subinfo (int, char *[]); +void command_copyright (int, char *[]); +void command_menu (int, char *[]); +void command_image_menu (int, char *[]); +void command_search (int, char *[]); +void command_content (int, char *[]); +void command_dump (int, char *[]); +void command_font (int, char *[]); +void command_show (int, char *[]); +void command_set (int, char *[]); +void command_unset (int, char *[]); +void command_xbm (int, char *[]); +void command_pbm (int, char *[]); +void command_bmp2ppm (int, char *[]); +void command_bmp2tiff (int, char *[]); +void command_jpeg (int, char *[]); +void command_bmp (int, char *[]); +void command_wav (int, char *[]); +void command_mpeg (int, char *[]); +void command_mpeg_path (int, char *[]); +void command_color (int, char *[]); +void command_help (int, char *[]); + +void command_candidate (int, char *[]); +void command_label (int, char *[]); + +void show_entry_candidate ( EB_Book *, int, int ); +void show_label (EB_Book *, int); + +int check_book (); +int check_subbook (); + +int internal_set_font (EB_Book *, char *); +int parse_dict_id (char *, EB_Book *); +int parse_entry_id (char *, EB_Position *); + +int search_pattern (EB_Book *, EB_Appendix *, char *, int, int); +int hitcomp (const void *a, const void *b); +int insert_content (EB_Book *, EB_Appendix *, EB_Position *, int, int); +int insert_dump (EB_Book *, EB_Appendix *, EB_Position *, int); +int insert_font (EB_Book *, const char *); +int insert_font_list (EB_Book *); + +EB_Error_Code hook_font (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +#ifdef EB_HOOK_GB2312 +EB_Error_Code hook_gb2312 (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +#endif +#ifdef EB_HOOK_EBXAC_GAIJI +EB_Error_Code hook_ebxac_gaiji (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +#endif +EB_Error_Code hook_stopcode (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +EB_Error_Code hook_tags (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +EB_Error_Code hook_img (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +EB_Error_Code hook_decoration (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +EB_Error_Code hook_euc_to_ascii (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +EB_Error_Code hook_iso8859_1 (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); + +EB_Error_Code can_menu_narrow_char (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +EB_Error_Code can_menu_wide_char (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +#ifdef EB_HOOK_GB2312 +EB_Error_Code can_menu_gb2312 (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +#endif +EB_Error_Code can_menu_gaiji (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); + +#if 0 +EB_Error_Code can_menu_begin (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +EB_Error_Code can_menu_end (EB_Book *, EB_Appendix *, void *, EB_Hook_Code, int, const unsigned int *); +#endif + +void show_version (void); +void show_help (void); +void show_try_help (void); +void set_error_message (EB_Error_Code); +void unset_error_message (); + +int search_wild_match_pattern(char *key, char *pattern); + +StringAlist *salist_set (StringAlist *, const char *, const char *); +char *salist_ref (StringAlist *, const char *); + +EB_Error_Code eblook_search_keyword (EB_Book *, const char *); +#ifdef EB_MAX_CROSS_ENTRIES +EB_Error_Code eblook_search_cross (EB_Book *, const char *); +#endif +EB_Error_Code eblook_search_multi (EB_Book *, const char *); +static void output_multi_information (EB_Book *); + +int eblook_have_wild_search(EB_Book *book); +EB_Error_Code eblook_search_wild(EB_Book *book, const char *pattern); +EB_Error_Code eblook_hit_list_wild (EB_Book *book, int max_hit_count, EB_Hit *hit_list, int *hit_count); +int search_wild_convert_pattern (unsigned char *query, const unsigned char *pattern, int buff_length); + + +#define variable_set(key, value) \ + variable_alist = salist_set (variable_alist, key, value) +#define variable_ref(key) \ + salist_ref (variable_alist, key) + +#ifdef DOS_FILE_PATH /* in win32.c */ +size_t euc_to_sjis(const char *, char *, size_t); +size_t sjis_to_euc(const char *, char *, size_t); +void dos_fix_path(char *, int); +#endif /* DOS_FILE_PATH */ + +#define uint1(p) (*(const unsigned char *)(p)) + +#define uint2(p) ((*(const unsigned char *)(p) << 8) \ + + (*(const unsigned char *)((p) + 1))) + +#define uint4(p) ((*(const unsigned char *)(p) << 24) \ + + (*(const unsigned char *)((p) + 1) << 16) \ + + (*(const unsigned char *)((p) + 2) << 8) \ + + (*(const unsigned char *)((p) + 3))) + +/* + * Constants + */ +#define DECORATE_OFF 0 +#define DECORATE_ON 1 + +const char *program_name = PACKAGE; +const char *program_version = VERSION; +const char *default_prompt = "eblook> "; +const char *default_method = "glob"; +const char *default_use_narrow_kana = "false"; +const char *default_decorate_mode = "off"; +const char *default_escape_text = "false"; +#ifdef USE_PAGER +const char *default_pager = "off"; +#endif + +/* From EB Library */ +#define EB_INDEX_STYLE_CONVERT 0 + +/* + * Internal variables + */ +const char *invoked_name; + +EB_Book current_book; +EB_Appendix current_appendix; + +EB_Hookset text_hookset, heading_hookset; +StringAlist *variable_alist = NULL; +int last_search_begin = 0; +int last_search_length = 0; +int (*last_search_function) (EB_Book *, const char *) = NULL; +int use_narrow_kana = 0; +int decorate_mode = 0; +int escape_text = 0; +int interactive_mode = 1; +int show_prev_next_flag = 0; + +unsigned char eblook_wild_pattern[EB_MAX_WORD_LENGTH * 2 + 1]; +int eblook_wild_page = 0; +unsigned char eblook_wild_count = 0; + +/* + * Interactive command table + */ +struct command_table_t { + const char *name; + const char *option_string; + void (*func) (int, char *[]); + const char *help; +}; + +struct command_table_t *find_command (); +struct command_table_t command_table[] = { + {"book", "[directory [appendix]]", command_book, "Set a book directory.\n"}, + {"info", "", command_info, "Show information of the selected book.\n"}, + {"list", "", command_list, "List all dictionaries in the selected book.\n"}, + {"select", "subbook", command_select, "Select a subbook.\n"}, + {"subinfo", "", command_subinfo, "Show information of the selected subbook.\n"}, + {"copyright", "", command_copyright, "Show copyright of the selected subbook.\n"}, + {"menu", "", command_menu, "Show the menu of the selected subbook.\n"}, +#ifdef EB_HOOK_BEGIN_IMAGE_PAGE + {"image_menu", "", command_image_menu, "Show the graphic menu of the selected subbook.\n"}, +#endif + {"search", "pattern [offset]", command_search, "Search for a word\n"}, + {"content", "[-]entry [offset]", command_content, "Display contents of entry.\n"}, + {"dump", "entry [offset]", command_dump, "Display dumps of entry.\n"}, + {"pbm", "entry width height", command_pbm, "dump mono image in pbm.\n"}, + {"xbm", "entry width height", command_xbm, "dump mono image in xbm.\n"}, + {"bmp", "entry file", command_bmp, "dump bmp image into file.\n"}, + {"bmp2ppm", "entry file", command_bmp2ppm, "dump bmp image into file in PPM format.\n"}, + {"bmp2tiff", "entry file", command_bmp2tiff, "dump bmp image into file in TIFF format.\n"}, + {"jpg", "entry file", command_jpeg, "dump jpeg image into file.\n"}, + {"jpeg", "entry file", command_jpeg, "dump jpeg image into file.\n"}, + {"font", "[id]", command_font, "Display the bitmap of gaiji.\n"}, + {"show", "[variable]", command_show, "Show the value of variables.\n"}, + {"set", "variable value", command_set, "Set a variable to the value.\n"}, + {"unset", "variable...", command_unset, "Unset variables.\n"}, + {"candidate", "", command_candidate, "Show candidates for multi search\n"}, + {"label", "[id]", command_label, "Show label for multi search\n"}, + {"help", "", command_help, "Show this message.\n"}, + {"quit", "", NULL, "Quit program.\n"}, +#ifdef EB_HOOK_BEGIN_WAVE + {"wave", "entry_start entry_end file", command_wav, "dump wav sound into file.\n"}, + {"wav", "entry_start entry_end file", command_wav, "dump wav sound into file.\n"}, +#endif +#ifdef EB_HOOK_BEGIN_MPEG + {"mpeg", "id0 id1 id2 id3 file", command_mpeg, "dump mpeg1 movie into file.\n"}, + {"mpe", "id0 id1 id2 id3 file", command_mpeg, "dump mpeg1 movie into file.\n"}, + {"mpeg_path", "id0 id1 id2 id3", command_mpeg_path, "show full path name of mpeg1 movie.\n"}, +#endif +#ifdef EB_HOOK_BEGIN_COLOR_CHART + {"color", "number", command_color, "show color chart information.\n"}, +#endif + {NULL, NULL, NULL, NULL} +}; + +/* + * Text hooks + */ +EB_Hook text_hooks[] = { + {EB_HOOK_ISO8859_1, hook_iso8859_1}, + {EB_HOOK_NARROW_JISX0208, hook_euc_to_ascii}, + {EB_HOOK_NARROW_FONT, hook_font}, + {EB_HOOK_WIDE_FONT, hook_font}, +#ifdef EB_HOOK_GB2312 + {EB_HOOK_GB2312, hook_gb2312}, +#endif +#ifdef EB_HOOK_EBXAC_GAIJI + {EB_HOOK_EBXAC_GAIJI, hook_ebxac_gaiji}, +#endif + {EB_HOOK_NEWLINE, eb_hook_newline}, +#ifdef EB_HOOK_STOP_CODE + {EB_HOOK_STOP_CODE, hook_stopcode}, +#endif + {EB_HOOK_BEGIN_MONO_GRAPHIC, hook_img}, + {EB_HOOK_END_MONO_GRAPHIC, hook_img}, + {EB_HOOK_BEGIN_COLOR_JPEG,hook_img}, + {EB_HOOK_BEGIN_COLOR_BMP, hook_img}, + {EB_HOOK_END_COLOR_GRAPHIC, hook_img}, +#ifdef EB_HOOK_BEGIN_IN_COLOR_BMP + {EB_HOOK_BEGIN_IN_COLOR_JPEG,hook_img}, + {EB_HOOK_BEGIN_IN_COLOR_BMP, hook_img}, + {EB_HOOK_END_IN_COLOR_GRAPHIC, hook_img}, +#endif +/* {EB_HOOK_BEGIN_SOUND, hook_tags}, */ +/* {EB_HOOK_END_SOUND, hook_tags}, */ +#ifdef EB_HOOK_BEGIN_WAVE + {EB_HOOK_BEGIN_WAVE, hook_img}, + {EB_HOOK_END_WAVE, hook_img}, +#endif +#ifdef EB_HOOK_BEGIN_MPEG + {EB_HOOK_BEGIN_MPEG, hook_img}, + {EB_HOOK_END_MPEG, hook_img}, +#endif + {EB_HOOK_BEGIN_REFERENCE, hook_tags}, + {EB_HOOK_END_REFERENCE, hook_tags}, + {EB_HOOK_BEGIN_CANDIDATE, hook_tags}, + {EB_HOOK_END_CANDIDATE_GROUP, hook_tags}, +#ifdef EB_HOOK_BEGIN_UNICODE + {EB_HOOK_BEGIN_UNICODE, hook_tags}, + {EB_HOOK_END_UNICODE, hook_tags}, +#endif +#ifdef EB_HOOK_BEGIN_IMAGE_PAGE + {EB_HOOK_BEGIN_IMAGE_PAGE, hook_img}, + {EB_HOOK_END_IMAGE_PAGE, hook_img}, +#endif +#ifdef EB_HOOK_BEGIN_CLICKABLE_AREA + {EB_HOOK_BEGIN_GRAPHIC_REFERENCE, hook_tags}, + {EB_HOOK_END_GRAPHIC_REFERENCE, hook_tags}, + {EB_HOOK_GRAPHIC_REFERENCE, hook_tags}, + {EB_HOOK_BEGIN_CLICKABLE_AREA, hook_tags}, + {EB_HOOK_END_CLICKABLE_AREA, hook_tags}, +#endif +#ifdef EB_HOOK_BEGIN_COLOR_CHART + {EB_HOOK_BEGIN_COLOR_CHART, hook_tags}, + /* {EB_HOOK_END_COLOR_CHART, hook_tags}, */ +#endif + + {EB_HOOK_BEGIN_SUBSCRIPT, hook_decoration}, + {EB_HOOK_END_SUBSCRIPT, hook_decoration}, + {EB_HOOK_BEGIN_SUPERSCRIPT, hook_decoration}, + {EB_HOOK_END_SUPERSCRIPT, hook_decoration}, + {EB_HOOK_BEGIN_NO_NEWLINE, hook_decoration}, + {EB_HOOK_END_NO_NEWLINE, hook_decoration}, + {EB_HOOK_BEGIN_EMPHASIS, hook_decoration}, + {EB_HOOK_END_EMPHASIS, hook_decoration}, + {EB_HOOK_SET_INDENT, hook_decoration}, + {EB_HOOK_BEGIN_DECORATION, hook_decoration}, + {EB_HOOK_END_DECORATION, hook_decoration}, + + {EB_HOOK_NULL, NULL}, +}; + +EB_Hook heading_hooks[] = { + {EB_HOOK_ISO8859_1, hook_iso8859_1}, + {EB_HOOK_NARROW_JISX0208, hook_euc_to_ascii}, + {EB_HOOK_NARROW_FONT, hook_font}, + {EB_HOOK_WIDE_FONT, hook_font}, +#ifdef EB_HOOK_GB2312 + {EB_HOOK_GB2312, hook_gb2312}, +#endif +#ifdef EB_HOOK_EBXAC_GAIJI + {EB_HOOK_EBXAC_GAIJI, hook_ebxac_gaiji}, +#endif + {EB_HOOK_NEWLINE, eb_hook_newline}, +#ifdef EB_HOOK_STOP_CODE + {EB_HOOK_STOP_CODE, hook_stopcode}, +#endif +#ifdef EB_HOOK_BEGIN_UNICODE + {EB_HOOK_BEGIN_UNICODE, hook_tags}, + {EB_HOOK_END_UNICODE, hook_tags}, +#endif + {EB_HOOK_BEGIN_SUBSCRIPT, hook_decoration}, + {EB_HOOK_END_SUBSCRIPT, hook_decoration}, + {EB_HOOK_BEGIN_SUPERSCRIPT, hook_decoration}, + {EB_HOOK_END_SUPERSCRIPT, hook_decoration}, + {EB_HOOK_BEGIN_NO_NEWLINE, hook_decoration}, + {EB_HOOK_END_NO_NEWLINE, hook_decoration}, + {EB_HOOK_BEGIN_EMPHASIS, hook_decoration}, + {EB_HOOK_END_EMPHASIS, hook_decoration}, + {EB_HOOK_BEGIN_DECORATION, hook_decoration}, + {EB_HOOK_END_DECORATION, hook_decoration}, + + {EB_HOOK_NULL, NULL}, +}; + +static const char *short_options = "e:hqiv"; +static struct option long_options[] = { + {"encoding", required_argument, NULL, 'e'}, + {"help", no_argument, NULL, 'h'}, + {"no-init-file", no_argument, NULL, 'q'}, + {"non-interactive", no_argument, NULL, 'i'}, + {"version", no_argument, NULL, 'v'}, + {NULL, no_argument, NULL, 0} +}; + + +int +main (argc, argv) + int argc; + char *const *argv; +{ + int optch; + int no_init = 0; + char buff[BUFSIZ]; + const char *book, *appendix, *s; + FILE *fp; + EB_Error_Code error_code = EB_SUCCESS; + +#ifdef USE_READLINE + char *histfile = NULL; +#endif + + invoked_name = argv[0]; +#ifdef USE_TINY_GETTEXT + set_invoked_name(argv[0]); +#endif + locale_init(NULL); + +#ifdef USE_READLINE + rl_readline_name = "EBlook"; + rl_attempted_completion_function = + (rl_completion_func_t *)fileman_completion; +#endif + + /* parse command line options */ + while ((optch = getopt_long(argc, argv, short_options, long_options, NULL)) + != EOF) { + switch (optch) { + case 'e': + locale_init(optarg); + break; + case 'h': + show_help (); + exit (0); + case 'v': + show_version (); + exit (0); + case 'q': + no_init = 1; + break; + case 'i': + interactive_mode = 0; + break; + default: + show_try_help (); + exit (1); + } + } + + /* check the rest arguments */ + book = appendix = NULL; + switch (argc - optind) { + case 2: + appendix = argv[optind + 1]; + case 1: + book = argv[optind]; + case 0: + break; + + default: + xfprintf (stderr, "%s: too many arguments\n", invoked_name); + show_try_help (); + exit (1); + } + + /* initialize variables */ + eb_initialize_library (); + eb_initialize_book (¤t_book); + eb_initialize_appendix (¤t_appendix); + eb_initialize_hookset (&text_hookset); + eb_initialize_hookset (&heading_hookset); + eb_set_hooks (&text_hookset, text_hooks); + eb_set_hooks (&heading_hookset, heading_hooks); + + if (!isatty(fileno(stdin))) interactive_mode = 0; + + variable_set ("prompt", default_prompt); + variable_set ("search-method", default_method); + variable_set ("use-narrow-kana", default_use_narrow_kana); + variable_set ("decorate-mode", default_decorate_mode); + variable_set ("escape-text", default_escape_text); +#ifdef USE_PAGER + variable_set ("pager", default_pager); +#endif + + sprintf (buff, "%d", MAX_HIT_SIZE); + variable_set ("max-hits", buff); + + sprintf (buff, "%d", MAX_TEXT_SIZE); + variable_set ("max-text", buff); + + sprintf (buff, "%d", MAX_DUMP_SIZE); + variable_set ("max-dump", buff); + + sprintf (buff, "%s %s (with EB %d.%d)", program_name, program_version, + EB_VERSION_MAJOR, EB_VERSION_MINOR); + variable_set ("version", buff); + + variable_set ("multi-search-id", "1"); + + /* load init file */ + if (!no_init) { + buff[0] = 0; + if (!strncmp (USER_INIT_FILE, "~/", 2)) { + char *homedir = getenv ("HOME"); + if (homedir && strlen(homedir) + strlen(USER_INIT_FILE + 1) < BUFSIZ) { + strcpy (buff, homedir); + strcat (buff, USER_INIT_FILE + 1); + } + } else { + if (strlen(USER_INIT_FILE) < BUFSIZ) + strcpy (buff, USER_INIT_FILE); + } + if (buff[0] && (fp = fopen (buff, "r")) != NULL) + while (read_command (buff, BUFSIZ, fp) != NULL) + if (!excute_command (buff)) + break; + } + + /* Read readline history */ +#ifdef USE_READLINE + if (interactive_mode) { + buff[0] = 0; + if (!strncmp (HIST_FILE, "~/", 2)) { + char *homedir = getenv ("HOME"); + if (homedir && strlen(homedir) + strlen(HIST_FILE + 1) < BUFSIZ) { + strcpy (buff, homedir); + strcat (buff, HIST_FILE + 1); + } + } else { + if (strlen(HIST_FILE) < BUFSIZ) + strcpy (buff, HIST_FILE); + } + if (buff[0] && (histfile=strdup(buff)) != NULL) + if (read_history(buff) != 0) + xprintf("Warning: History file %s not found\n",buff); + } +#endif /* USE_READLINE */ + + /* set book and appendix */ + if (book) { +#ifndef DOS_FILE_PATH + error_code = eb_bind (¤t_book, book); + if (EB_SUCCESS != error_code) { + xprintf ("Warning: invalid book directory: %s\n", book); + set_error_message (error_code); + } +#else /* DOS_FILE_PATH */ + strncpy(buff, book, sizeof(buff)); + if (strncmp(buff, "ebnet://", 8) != 0) + dos_fix_path(buff, 0); + error_code = eb_bind (¤t_book, buff); + if (EB_SUCCESS != error_code) { + sjis_to_euc(book, buff, sizeof(buff)); + xprintf ("Warning: invalid book directory: %s\n", buff); + set_error_message (error_code); + } +#endif /* DOS_FILE_PATH */ + } + if (appendix) { +#ifndef DOS_FILE_PATH + error_code = eb_bind_appendix (¤t_appendix, appendix); + if (EB_SUCCESS != error_code) { + xprintf ("Warning: invalid appendix directory: %s\n", appendix); + set_error_message (error_code); + } +#else /* DOS_FILE_PATH */ + strncpy(buff, appendix, sizeof(buff)); + if (strncmp(buff, "ebnet://", 8) != 0) + dos_fix_path(buff, 0); + error_code = eb_bind_appendix (¤t_appendix, buff); + if (EB_SUCCESS != error_code) { + sjis_to_euc(appendix, buff, sizeof(buff)); + xprintf ("Warning: invalid appendix directory: %s\n", buff); + set_error_message (error_code); + } +#endif /* !DOS_FILE_PATH */ + } + + /* check the book directory */ + if (!eb_is_bound (¤t_book)) + xputs ("Warning: you should specify a book directory first\n"); + + /* enter command loop */ + while (1) { + /* kanji code */ + if ((s = variable_ref ("kanji-code")) != NULL) { + if (strcasecmp (s, "JIS") == 0) + locale_init ("JIS"); + else if (strcasecmp (s, "SJIS") == 0) + locale_init ("SJIS"); + else if (strcasecmp (s, "EUC") == 0) + locale_init ("EUC"); + else if (strcasecmp (s, "UTF8") == 0) + locale_init ("UTF8"); + else if (strcasecmp (s, "AUTO") == 0) +#ifndef WIN32 + locale_init (NULL); +#else /* WIN32 - need for Visual C++ ? */ + locale_init ("SJIS"); +#endif /* !WIN32 */ + else { + xprintf ("Invalid kanji code: %s\n", s); + variable_set ("kanji-code", NULL); + } + } + + /* narrow kana */ + s = variable_ref ("use-narrow-kana"); + if (s != NULL && (strcasecmp(s, "true") == 0 || strcasecmp(s, "on") == 0)) + use_narrow_kana = 1; + else + use_narrow_kana = 0; + + /* decorate_mode */ + s = variable_ref ("decorate-mode"); + if (s != NULL && (strcasecmp(s, "true") == 0 || strcasecmp(s, "on") == 0)) + decorate_mode = 1; + else + decorate_mode = 0; + + /* escape text */ + s = variable_ref ("escape-text"); + if (s != NULL && (strcasecmp(s, "true") == 0 || strcasecmp(s, "on") == 0)) + escape_text = 1; + else + escape_text = 0; + + /* prompt */ + if ((s = variable_ref ("prompt")) == NULL) + s = default_prompt; + + /* read and excute */ + unset_error_message (); +#ifdef USE_READLINE + if (interactive_mode) { + if (read_command2 (buff, BUFSIZ, s) == NULL) + break; + } else +#endif + { + xfputs(s, stdout); + fflush(stdout); + if (read_command (buff, BUFSIZ, stdin) == NULL) + break; + } + if (!excute_command (buff)) + break; + } + +#ifdef USE_READLINE + if (interactive_mode && histfile!=NULL) + write_history(histfile); +#endif + + eb_finalize_library (); + return 0; +} + +char * +read_command (command_line, size, stream) + char *command_line; + size_t size; + FILE *stream; +{ + char *p; + + /* read string */ + if (xfgets (command_line, size, stream) == NULL) + return NULL; + + /* delete '\r', '\n' */ + if ((p = strchr (command_line, '\r')) != NULL) { /* Mac, DOS? depend on cc */ + *p = '\0'; + } else if ((p = strchr (command_line, '\n')) != NULL) { + *p = '\0'; + } else if (! feof(stream)) { + xputs ("Input is too long"); + while (xfgets (command_line, BUFSIZ, stream) != NULL && + strchr (command_line, '\r') == NULL && + strchr (command_line, '\n') == NULL); + command_line[0] = '\0'; + } + return command_line; +} + +#ifdef USE_READLINE +char * +read_command2 (buff, buf_len, prompt) + char *buff; + size_t buf_len; + const char *prompt; +{ + static char *line_read; + char *pr; + if (line_read) { + free (line_read); + line_read = NULL; + } + pr=strdup(prompt); + line_read = stripwhite ( readline (pr) ); + free(pr); + if (line_read==NULL) + return NULL; + + if (*line_read!=0) { + size_t status, ilen, size; + char *ibuf, *str; + if (strcmp (line_read, "quit") != 0) { + add_history (line_read); + } + ibuf=line_read; + ilen=strlen(ibuf); + str = buff; + size = buf_len; + status = current_to_euc(&ibuf,&ilen,&str,&size); + buff[buf_len-size]=0; + } else { + *buff = 0; + } + return buff; +} + +#endif /* READLINE */ + + +int +excute_command (command_line) + char *command_line; +{ + int i, argc; + char *argv[BUFSIZ / 2]; /* xxx: no good? */ + + argc = parse_command_line (command_line, argv); + + /* if input is empty, do nothing */ + if (argc == 0) + return 1; + + /* ignore comments in ".eblookrc" */ + if (argv[0][0]=='#' || argv[0][0]==';') + return 1; + + /* if input is "quit", we should quit */ + if (strcmp (argv[0], "quit") == 0) + return 0; + + /* otherwise, search command and execute */ + for (i = 0; command_table[i].name != NULL; i++) { + if (strcmp (argv[0], command_table[i].name) == 0) { + command_table[i].func (argc, argv); + return 1; + } + } + if (command_table[i].name == NULL) + xprintf ("Unknown command: %s\n", argv[0]); + return 1; +} + +int +parse_command_line (command_line, argv) + char *command_line; + char *argv[]; +{ + int num; + int reserved, in_quote; + char *p; + + /* devide string into tokens by white spaces */ + num = reserved = in_quote = 0; + for (p = command_line; *p != '\0'; p++) { + switch (*p) { + case '"': + if (!reserved) { + argv[num++] = p; + reserved = 1; + } + memmove (p, p + 1, strlen(p + 1) + 1); + p--; + in_quote = !in_quote; + break; + + case ' ': + case '\t': + if (!in_quote) { + *p = '\0'; + reserved = 0; + } + break; + + case '\\': + memmove (p, p + 1, strlen(p + 1) + 1); + default: + if (!reserved) { + argv[num++] = p; + reserved = 1; + } + } + } + + return num; +} + +void +command_book (argc, argv) + int argc; + char *argv[]; +{ + EB_Error_Code error_code = EB_SUCCESS; +#ifdef DOS_FILE_PATH + char temp[PATH_MAX]; +#endif /* DOS_FILE_PATH */ + + switch (argc) { + case 3: +#ifndef DOS_FILE_PATH + error_code = eb_bind_appendix (¤t_appendix, argv[2]); + if (EB_SUCCESS != error_code) { + xprintf ("Invalid appendix directory: %s\n", argv[2]); + set_error_message (error_code); + } +#else /* DOS_FILE_PATH */ + strncpy(temp, argv[2], sizeof(temp)); + if (strncmp(temp, "ebnet://", 8) != 0) + dos_fix_path(temp, 1); + error_code = eb_bind_appendix (¤t_appendix, temp); + if (EB_SUCCESS != error_code) { + sjis_to_euc(argv[2], temp, sizeof(temp)); + xprintf ("Invalid appendix directory: %s\n", temp); + set_error_message (error_code); + } +#endif /* !DOS_FILE_PATH */ + case 2: + if (argc == 2) + eb_finalize_appendix (¤t_appendix); +#ifndef DOS_FILE_PATH + error_code = eb_bind (¤t_book, argv[1]); + if (EB_SUCCESS != error_code) { + xprintf ("Invalid book directory: %s\n", argv[1]); + set_error_message (error_code); + } +#else /* DOS_FILE_PATH */ + strncpy(temp, argv[1], sizeof(temp)); + if (strncmp(temp, "ebnet://", 8) != 0) + dos_fix_path(temp, 1); + error_code = eb_bind (¤t_book, temp); + if (EB_SUCCESS != error_code) { + sjis_to_euc(argv[1], temp, sizeof(temp)); + xprintf ("Invalid book directory: %s\n", temp); + set_error_message (error_code); + } +#endif /* !DOS_FILE_PATH */ + break; + + case 1: + if (eb_is_bound (¤t_book)) { +#ifndef DOS_FILE_PATH + char temp[BUFSIZ]; + eb_path (¤t_book, temp); + xprintf ("book\t%s\n", temp); + if (eb_is_appendix_bound (¤t_appendix)) { + eb_appendix_path (¤t_appendix, temp); + xprintf ("appendix\t%s\n", temp); + } +#else /* DOS_FILE_PATH */ + char path[PATH_MAX]; + eb_path (¤t_book, path); + sjis_to_euc(path, temp, sizeof(temp)); + xprintf ("book\t%s\n", temp); + if (eb_is_appendix_bound (¤t_appendix)) { + eb_appendix_path (¤t_appendix, path); + sjis_to_euc(path, temp, sizeof(temp)); + xprintf ("appendix\t%s\n", temp); + } +#endif /* !DOS_FILE_PATH */ + } else { + xputs ("No book is specified"); + } + break; + + default: + xprintf ("%s: too many arguments\n", argv[0]); + } +} + +void +command_info (argc, argv) + int argc; + char *argv[]; +{ + EB_Subbook_Code code[EB_MAX_SUBBOOKS]; + if (argc > 1) { + xprintf ("%s: too many arguments\n", argv[0]); + return; + } + + if (check_book ()) { + int subcount; + EB_Disc_Code disccode; + EB_Character_Code charcode; + + /* disc type */ + eb_disc_type (¤t_book, &disccode); + if (disccode >= 0) { + xfputs (" disc type: ", stdout); + xputs ((disccode == EB_DISC_EB) ? "EB/EBG/EBXA" : "EPWING"); + } + + /* character code */ + eb_character_code (¤t_book, &charcode); + if (charcode != EB_CHARCODE_INVALID) { + xfputs (" character code: ", stdout); + switch (charcode){ + case EB_CHARCODE_ISO8859_1: + xputs ("ISO 8859-1"); + break; + case EB_CHARCODE_JISX0208: + case EB_CHARCODE_JISX0208_GB2312: + xputs ("JIS X 0208"); + break; +#ifdef EB_CHARCODE_UTF8 + case EB_CHARCODE_UTF8: + xputs ("UTF-8"); + break; +#endif + default: + xputs ("UNKNOWN"); + break; + } + } + + /* the number of dictionarys */ + if (EB_SUCCESS == eb_subbook_list (¤t_book, code, &subcount) + && subcount >= 0) + xprintf (" the number of dictionries: %d\n", subcount); + } +} + +void +command_list (argc, argv) + int argc; + char *argv[]; +{ + EB_Error_Code error_code = EB_SUCCESS; + + if (argc > 1) { + xprintf ("%s: too many arguments\n", argv[0]); + return; + } + + if (check_book ()) { + int i, j, num; + char buff[EB_MAX_TITLE_LENGTH + 1]; + char buff2[EB_MAX_SUBBOOKS][PATH_MAX + 4]; + EB_Subbook_Code list[EB_MAX_SUBBOOKS]; + + error_code = eb_subbook_list (¤t_book, list, &num); + if (EB_SUCCESS != error_code) + goto error; + + for (i = 0; i < num; i++) { + xprintf ("%2d. ", i + 1); + + error_code = eb_subbook_directory2 (¤t_book, list[i], buff2[i]); + if (EB_SUCCESS != error_code) + goto error; + for(j = 0; j < i; j++) { + if (strcmp(buff2[j], buff2[i]) == 0) { + sprintf(buff, ".%d", i + 1); + strcat(buff2[i], buff); + break; + } + } + + xprintf ("%s\t", buff2[i]); + error_code = eb_subbook_title2 (¤t_book, list[i], buff); + if (EB_SUCCESS != error_code) + goto error; + + xprintf("%s\n", buff); + } + + return; + + error: + xprintf ("An error occured in command_list: %s\n", + eb_error_message (error_code)); + set_error_message (error_code); + return; + } +} + +void +command_select (argc, argv) + int argc; + char *argv[]; +{ + switch (argc) { + case 1: + eb_unset_subbook (¤t_book); + eb_unset_appendix_subbook (¤t_appendix); + return; + + case 2: + if (check_book ()) { + if (parse_dict_id (argv[1], ¤t_book)) { + if (eb_is_appendix_bound (¤t_appendix)) + { + EB_Subbook_Code code; + + eb_subbook (¤t_book, &code); + eb_set_appendix_subbook (¤t_appendix, code); + } + } + } + return; + + default: + xprintf ("%s: too many arguments\n", argv[0]); + } +} + +void +command_subinfo (argc, argv) + int argc; + char *argv[]; +{ + if (argc > 1) { + xprintf ("%s: too many arguments\n", argv[0]); + return; + } + + if (check_subbook ()) { + int i, num; + char buff[PATH_MAX + 1]; + EB_Font_Code list[EB_MAX_FONTS]; + + /* title */ + if (EB_SUCCESS == eb_subbook_title (¤t_book, buff)) { + xfputs (" title: ", stdout); + xfputs (buff, stdout); + fputc ('\n', stdout); + } + + /* directory */ + if (EB_SUCCESS == eb_subbook_directory (¤t_book, buff)) + xprintf (" directory: %s\n", buff); + + /* search methods */ + xfputs (" search methods:", stdout); + if (eb_have_word_search (¤t_book)) + xfputs (" word", stdout); + if (eb_have_endword_search (¤t_book)) + xfputs (" endword", stdout); + if (eb_have_exactword_search (¤t_book)) + xfputs (" exactword", stdout); + if (eblook_have_wild_search (¤t_book)) + xfputs (" wild", stdout); + if (eb_have_keyword_search (¤t_book)) + xfputs (" keyword", stdout); +#ifdef EB_MAX_CROSS_ENTRIES + if (eb_have_cross_search (¤t_book)) + xfputs (" cross", stdout); +#endif + if (eb_have_multi_search (¤t_book)) + xfputs (" multi", stdout); + if (eb_have_menu (¤t_book)) + xfputs (" menu", stdout); +#ifdef EB_HOOK_BEGIN_IMAGE_PAGE + if (eb_have_image_menu (¤t_book)) + xfputs (" image_menu", stdout); +#endif +#ifdef EB_HOOK_BEGIN_COLOR_CHART + if (eb_have_color_chart (¤t_book)) + xfputs (" color_chart", stdout); +#endif +/* if (eb_have_graphic_search (¤t_book)) */ +/* xfputs (" graphic", stdout); */ + fputc ('\n', stdout); + + /* font size */ + xfputs (" font sizes:", stdout); + + eb_font_list (¤t_book, list, &num); + for (i = 0; i < num; i++) { + switch (list[i]) { + case EB_FONT_16: xprintf (" 16"); break; + case EB_FONT_24: xprintf (" 24"); break; + case EB_FONT_30: xprintf (" 30"); break; + case EB_FONT_48: xprintf (" 48"); break; + default: xprintf (" 0"); break; + } + } + + fputc ('\n', stdout); + } +} + +void +command_copyright (argc, argv) + int argc; + char *argv[]; +{ + if (argc > 1) { + xprintf ("%s: too many arguments\n", argv[0]); + return; + } + + if (check_subbook ()) { + EB_Position pos; + if (EB_SUCCESS != eb_copyright (¤t_book, &pos)) + xputs ("Current dictionary has no copyright information."); + else + insert_content (¤t_book, ¤t_appendix, &pos, 0, 0); + } +} + +void +command_menu (argc, argv) + int argc; + char *argv[]; +{ + if (argc > 1) { + xprintf ("%s: too many arguments\n", argv[0]); + return; + } + + if (check_subbook ()) { + EB_Position pos; + if (EB_SUCCESS != eb_menu (¤t_book, &pos)) + xputs ("Current dictionary has no menu."); + else + insert_content (¤t_book, ¤t_appendix, &pos, 0, 0); + } +} + +#ifdef EB_HOOK_BEGIN_IMAGE_PAGE +void +command_image_menu (argc, argv) + int argc; + char *argv[]; +{ + if (argc > 1) { + xprintf ("%s: too many arguments\n", argv[0]); + return; + } + + if (check_subbook ()) { + EB_Position pos; + if (EB_SUCCESS != eb_image_menu (¤t_book, &pos)) + xputs ("Current dictionary has no graphic menu."); + else + insert_content (¤t_book, ¤t_appendix, &pos, 0, 0); + } +} +#endif + +void +command_search (argc, argv) + int argc; + char *argv[]; +{ + int begin, length; + char *pattern; + + begin = 1; + pattern = variable_ref ("max-hits"); + length = pattern ? atoi (pattern) : 0; + pattern = NULL; + + switch (argc) { + case 3: + begin = atoi (argv[2]); + case 2: + pattern = argv[1]; + case 1: + if (check_subbook ()) + search_pattern (¤t_book, ¤t_appendix, pattern, begin, length); + return; + + default: + xprintf ("%s: too many arguments\n", argv[0]); + } +} + +void +command_content (argc, argv) + int argc; + char *argv[]; +{ + int begin, length; + char *s; + EB_Position pos, pos1, pos2; + int backward = 0; + EB_Book *book = ¤t_book; + EB_Appendix *appendix = ¤t_appendix; + EB_Error_Code error_code; + + begin = 1; + s = variable_ref ("max-text"); + length = s ? (atoi (s) / EB_SIZE_PAGE) : 0; + + switch (argc) { + case 1: + xprintf ("%s: too few arguments\n", argv[0]); + return; + + case 4: + length = atoi (argv[3]); + case 3: + begin = atoi (argv[2]); + case 2: + if (check_subbook ()) { + if (*argv[1] == '-') backward = 1; + + if (parse_entry_id(argv[1] + backward, &pos)) { + if (backward) { + pos1 = pos; + pos1.offset += 4; + if (pos1.offset >= EB_SIZE_PAGE) { + pos1.page++; + pos1.offset -= EB_SIZE_PAGE; + } + + if (eb_seek_text(book, &pos) == EB_SUCCESS) { + error_code = eb_forward_text(book, appendix); + switch (error_code) { + case EB_SUCCESS: + case EB_ERR_END_OF_CONTENT: + pos2 = pos; + do { + if (eb_backward_text(book, appendix) != EB_SUCCESS + || eb_tell_text(book, &pos2) != EB_SUCCESS) { + pos2 = pos; + break; + } + } while (pos1.page < pos2.page + || ((pos1.page == pos2.page) + && (pos1.offset < pos2.offset))); + pos = pos2; + + if (eb_forward_text(book, appendix) == EB_SUCCESS + && eb_tell_text(book, &pos2) == EB_SUCCESS + && (pos2.page < pos1.page + || ((pos2.page == pos1.page) + && (pos2.offset < pos1.offset)))) + pos = pos2; + break; + default: + break; + } + } + } + + insert_content (book, appendix, &pos, begin, length); + } + } + return; + default: + xprintf ("%s: too many arguments\n", argv[0]); + } +} + +char *uc2bit[] = { +"0 0 0 0 ", "0 0 0 1 ", "0 0 1 0 ", "0 0 1 1 ", +"0 1 0 0 ", "0 1 0 1 ", "0 1 1 0 ", "0 1 1 1 ", +"1 0 0 0 ", "1 0 0 1 ", "1 0 1 0 ", "1 0 1 1 ", +"1 1 0 0 ", "1 1 0 1 ", "1 1 1 0 ", "1 1 1 1 " }; + +#define MAX_BITMAP_SIZE 1024*1024 +void +command_pbm(argc, argv) + int argc; + char *argv[]; +{ + static unsigned char buffer[MAX_BITMAP_SIZE]; + EB_Position pos; + ssize_t len; + int ret; + int i; + int j; + int w, h; + + if (argc != 4) + return; + + w = atoi(argv[2]); + h = atoi(argv[3]); + + parse_entry_id(argv[1], &pos); + + ret = eb_seek_text(¤t_book, &pos); + if (ret != EB_SUCCESS) + return; + if (w * h / 8 > MAX_BITMAP_SIZE) return; + ret = eb_read_rawtext(¤t_book, w*h/8, (char *)buffer, &len); + if (ret != EB_SUCCESS || len == 0) + return; + printf("P1\n%d %d\n", w, h); + for (i=0; i>4], stdout); + fputs(uc2bit[buffer[i]&0xF], stdout); + } + fputc('\n', stdout); + } + + return; +} + +unsigned char reversebit[] = { +0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, +0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, +0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, +0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, +0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, +0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, +0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, +0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, +0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, +0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, +0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, +0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, +0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, +0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, +0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, +0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, +0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, +0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, +0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, +0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, +0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, +0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, +0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, +0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, +0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, +0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, +0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, +0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, +0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, +0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, +0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, +0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff +}; + +void +command_xbm(argc, argv) + int argc; + char *argv[]; +{ + static unsigned char buffer[MAX_BITMAP_SIZE]; + EB_Position pos; + ssize_t len; + int ret; + int i; + int j; + int w, h; + + if (argc != 4) + return; + + w = atoi(argv[2]); + h = atoi(argv[3]); + + parse_entry_id(argv[1], &pos); + + ret = eb_seek_text(¤t_book, &pos); + if (ret != EB_SUCCESS) + return; + if (w * h / 8 > MAX_BITMAP_SIZE) return; + ret = eb_read_rawtext(¤t_book, w*h/8, (char *)buffer, &len); + if (ret != EB_SUCCESS || len == 0) + return; + + fprintf(stdout, "#define mono_width %d\n#define mono_height %d\n", w, h); + fprintf(stdout, "static char mono_bits[] = {\n"); + + for (i=0; i= 0) { + error_code = eb_read_binary(¤t_book, EB_SIZE_PAGE, + (char *)binary_data, &read_length); + if (error_code != EB_SUCCESS) { + jpeg_error = "jpeg read error"; + goto jpeg_fail; + /* + printf("eb_read_rawtext: %s\n", + eb_error_message(error_code)); + break;; + */ + } + if (read_length == 0) + break; + file_length -= read_length; + + if (firstpage && + strncmp((char *)binary_data, "data", 4) == 0 && + strncmp((char *)binary_data+14, "JFIF", 4) == 0) { + /* for old eb library ? */ + p = binary_data+8; + read_length -= 8; + } else { + p = binary_data; + } + p = binary_data; + + firstpage = 0; + + if (lastchar == 0xff) { + switch (p[0]) { + case 0xd9: + if (canstop) { + fwrite(p, 1, 1, fp); + goto jpeg_ok; + } else { + canstop = 1; + } + break; + case 0xed: + canstop = 0; + break; + } + } + + lastchar = p[read_length-1]; + for (i=0; i 2) { + xprintf ("%s: too many arguments\n", argv[0]); + return; + } + + if (check_subbook () && internal_set_font (¤t_book, NULL)) { + if (argc == 1) + insert_font_list (¤t_book); + else + insert_font (¤t_book, argv[1]); + } +} + +#ifdef EB_HOOK_BEGIN_COLOR_CHART +/* command_color number */ +void +command_color(argc, argv) + int argc; + char *argv[]; +{ + char *endp = NULL; + int number; + char name[EB_MAX_COLOR_NAME_LENGTH + 1]; + char value[EB_MAX_COLOR_VALUE_LENGTH + 1]; + EB_Error_Code error_code; + + if (argc < 2) { + xprintf ("%s: too few arguments\n", argv[0]); + return; + } else if (argc > 2) { + xprintf ("%s: too many arguments\n", argv[0]); + return; + } + + number = strtol(argv[1], &endp, 0); + if (*endp != 0) { + xprintf ("Illegal argument: %s\n", argv[1]); + return; + } + + if (check_subbook ()) { + if (!eb_have_color_chart (¤t_book)) { + xprintf ("This subbook does not have color chart\n", argv[1]); + return; + } + + error_code = eb_color_name(¤t_book, number, name); + if (error_code != EB_SUCCESS) { + xfputs (eb_error_message(error_code), stdout); + fputc ('\n', stdout); + return; + } + + error_code = eb_color_value(¤t_book, number, value); + if (error_code != EB_SUCCESS) { + xfputs (eb_error_message(error_code), stdout); + fputc ('\n', stdout); + return; + } + + xfputs (name, stdout); + xfputs (" (", stdout); + xfputs (value, stdout); + xfputs (")\n", stdout); + } +} +#endif + +void +command_show (argc, argv) + int argc; + char *argv[]; +{ + char *s; + StringAlist *var; + int showall = 0; + + if (argc == 2 && strcmp(argv[1],"-a") == 0) { + showall = 1; + argc --; + argv ++; + } + + switch (argc) { + case 1: + /* + * Show all variables and their values + */ + for (var = variable_alist; var != NULL; var = var->next) + if (var->key[0] != '_' || showall != 0) + xprintf ("%s\t%s\n", var->key, var->value); + return; + + case 2: + /* + * Show value of variable + */ + if ((s = variable_ref (argv[1])) != NULL) + xputs (s); + else + xprintf ("Unbounded variable: %s\n", argv[1]); + return; + + default: + xprintf ("%s: too many arguments\n", argv[0]); + } +} + +void +command_set (argc, argv) + int argc; + char *argv[]; +{ + switch (argc) { + case 1: + xprintf ("%s: too few arguments\n", argv[0]); + return; + + case 2: + argv[2] = ""; + case 3: + variable_set (argv[1], argv[2]); + return; + + default: + xprintf ("%s: too many arguments\n", argv[0]); + } +} + +void +command_unset (argc, argv) + int argc; + char *argv[]; +{ + int i; + if (argc == 1) { + xprintf ("%s: too few arguments\n", argv[0]); + } else { + for (i = 1; i < argc; i++) + variable_set (argv[i], NULL); + return; + } +} + +void +command_help (argc, argv) + int argc; + char *argv[]; +{ + int i; + char buff[256]; + const char *p; + switch (argc) { + case 1: + /* + * List up all command helps + */ + for (i = 0; command_table[i].name != NULL; i++) { + sprintf (buff, "%s %s", + command_table[i].name, command_table[i].option_string); + xprintf (" %-22s - ", buff); + for (p = command_table[i].help; + *p != '\0' && *p != '.' && *p != '\n'; + p++) + putchar (*p); + putchar ('\n'); + } + return; + + case 2: + /* + * Show command help + */ + for (i = 0; command_table[i].name != NULL; i++) { + if (strcmp (command_table[i].name, argv[1]) == 0) + break; + } + if (command_table[i].name == NULL) { + xprintf ("No such command: %s\n", argv[1]); + } else { + xprintf ("Usage: %s %s\n\n%s", + command_table[i].name, command_table[i].option_string, + command_table[i].help); + } + return; + + default: + xprintf ("%s: too many arguments\n", argv[0]); + } +} + +int +check_book () +{ + if (eb_is_bound (¤t_book)) { + return 1; + } else { + xputs ("You should specify a book directory first"); + return 0; + } +} + +int +check_subbook () +{ + if (check_book ()) { + EB_Subbook_Code code; + if (EB_SUCCESS == eb_subbook (¤t_book, &code)) + return 1; + else + xputs ("You should select a subbook first"); + } + return 0; +} + +int +internal_set_font (book, height) + EB_Book *book; + char *height; +{ + EB_Font_Code font; + EB_Error_Code error_code = EB_SUCCESS; + + if (height == NULL) + if ((height = variable_ref ("font")) == NULL) + height = "16"; + + font = atoi (height); + switch (font) { + case 16: font = EB_FONT_16; break; + case 24: font = EB_FONT_24; break; + case 30: font = EB_FONT_30; break; + case 48: font = EB_FONT_48; break; + default: + xprintf ("Illegal font height: %s\n", height); + return 0; + } + + if (!eb_have_font (book, font) ) { + xprintf ("Invalid font for %s: %s\n", + book->subbook_current->directory_name, + height); + /* set_error_message (); */ + return 0; + } + + error_code = eb_set_font (book, font); + if (EB_SUCCESS != error_code) { + xprintf ("An error occurred in internal_set_font: %s\n", + eb_error_message (error_code)); + set_error_message (error_code); + return 0; + } + return 1; +} + +int +parse_dict_id (name, book) + char *name; + EB_Book *book; +{ + int i, num; + EB_Subbook_Code sublist[EB_MAX_SUBBOOKS]; + EB_Error_Code error_code = EB_SUCCESS; + +#ifdef _DEBUG + /* to avoid strange behavior in VC++ 6.0 debug mode. */ + memset (sublist, -1, sizeof (sublist)); +#endif /* !DEBUG */ + error_code = eb_subbook_list (book, sublist, &num); + if (EB_SUCCESS != error_code) + goto error; + + if (strchr (name, '.') != NULL) { + /* + * repeated directory, different index page + */ + name = strchr(name, '.') + 1; + } + if ((i = atoi (name)) > 0) { + /* + * Numbered dictionary + */ + if (--i < num) { + error_code = eb_set_subbook (book, sublist[i]); + if (EB_SUCCESS != error_code) + goto error; + return 1; + } else { + xprintf ("No such numberd dictionary : %s\n", name); + return 0; + } + } else { + /* + * Named dictionary + */ + char dir[PATH_MAX + 1]; + + for (i = 0; i < num; i++) { + error_code = eb_subbook_directory2 (book, sublist[i], dir); + if (EB_SUCCESS != error_code) + goto error; + + if (strcmp (name, dir) == 0) { + error_code = eb_set_subbook (book, sublist[i]); + if (EB_SUCCESS != error_code) + goto error; + return 1; + } + } + xprintf ("No such dictionary: %s\n", name); + return 0; + } + + error: + xprintf ("An error occurred in parse_dict_id: %s\n", + eb_error_message (error_code)); + set_error_message (error_code); + return 0; +} + +int +parse_entry_id (code, pos) + char *code; + EB_Position *pos; +{ + EB_Error_Code error_code = EB_SUCCESS; + EB_Error_Code (*hit_list) (EB_Book *, int, EB_Hit *, int *); + + if (strchr (code, ':') != NULL) { + /* + * Encoded position + */ + char *endp; + pos->page = strtol (code, &endp, 0); + if (*endp != ':') + goto illegal; + + pos->offset = strtol (endp + 1, &endp, 0); + if (*endp != '\0') + goto illegal; + + return 1; + + illegal: + xprintf ("Illegal position: %s\n", code); + return 0; + + } else { + /* + * Numbered entry + */ + int num, count; + const char *pattern = variable_ref ("_last_search_pattern"); + EB_Hit list[MAX_HIT_SIZE]; + + if (!pattern) { + xputs ("No search has been executed yet."); + return 0; + } + if ((count = atoi (code) - 1) < 0) { + xprintf ("Invalid entry number: %s\n", code); + return 0; + } + if (check_subbook ()) { + error_code = last_search_function (¤t_book, pattern); + if (EB_SUCCESS != error_code) { + xprintf ("An error occured in parse_entry_id: %s\n", + eb_error_message (error_code)); + set_error_message (error_code); + return 0; + } + if (last_search_function == eblook_search_wild) { + hit_list = eblook_hit_list_wild; + } + else + hit_list = eb_hit_list; + while (EB_SUCCESS == hit_list (¤t_book, MAX_HIT_SIZE, list, + &num) && 0 < num) { + if (count < num) { + qsort(list, num, sizeof(EB_Hit), hitcomp); + pos->page = list[count].text.page; + pos->offset = list[count].text.offset; + return 1; + } + count -= num; + pattern = NULL; + } + if (num == 0) + xprintf ("Too big: %s\n", code); + } + return 0; + } +} + + +int hitcomp(a, b) + const void *a; + const void *b; +{ + const EB_Hit *x, *y; + x = (EB_Hit *)a; + y = (EB_Hit *)b; + if (x->heading.page < y->heading.page) return -1; + if (x->heading.page == y->heading.page) { + if (x->heading.offset < y->heading.offset) return -1; + if (x->heading.offset == y->heading.offset) { + if (x->text.page < y->text.page) return -1; + if (x->text.page == y->text.page) { + if (x->text.offset < y->text.offset) return -1; + if (x->text.offset == y->text.offset) return 0; + } + } + } + return 1; +} + + +int +search_pattern (book, appendix, pattern, begin, length) + EB_Book *book; + EB_Appendix *appendix; + char *pattern; + int begin; + int length; +{ + int i, num, point; + char headbuf1[BUFSIZ]; + char headbuf2[BUFSIZ]; + char headbuf3[BUFSIZ]; + char *head; + const char *s; + EB_Error_Code (*search) (EB_Book *, const char *); + EB_Error_Code (*hit_list) (EB_Book *, int, EB_Hit *, int *); + EB_Hit hitlist[MAX_HIT_SIZE]; + EB_Error_Code error_code = EB_SUCCESS; + + char* prevhead; + int prevpage; + int prevoffset; + ssize_t heading_len; + + if (pattern == NULL) { + /* check last search */ + begin = last_search_begin; + length = last_search_length; + search = last_search_function; + pattern = variable_ref ("_last_search_pattern"); + if (pattern == NULL) { + xputs ("No search has been executed yet."); + return 0; + } + if (last_search_begin == 0) { + xprintf ("Last search had finished\n"); + return 0; + } + } else { + /* get search method */ + if ((s = variable_ref ("search-method")) == NULL) + s = default_method; + + if (strcmp (s, "exact") == 0) + search = eb_search_exactword; + else if (strcmp (s, "word") == 0) + search = eb_search_word; + else if (strcmp (s, "endword") == 0) + search = eb_search_endword; + else if (strcmp (s, "glob") == 0) { + search = eb_search_exactword; + + i = strlen (pattern) - 1; + if (strchr(pattern, '=') && eb_have_keyword_search(book)) + /* check for keyword search */ + search = eblook_search_keyword; +#ifdef EB_MAX_CROSS_ENTRIES + else if (strchr(pattern, '&') && eb_have_cross_search(book)) + /* check for cross search */ + search = eblook_search_cross; +#endif + else if (strchr(pattern, ':') && eb_have_multi_search(book)) + /* check for multi search */ + search = eblook_search_multi; + if (pattern[i] == '*') { + /* check for word search */ + pattern[i] = '\0'; + search = eb_search_word; + } else if (pattern[0] == '*') { + /* check for endword search */ + pattern++; + search = eb_search_endword; + } + } else if (strcmp (s, "keyword") == 0) + search = eblook_search_keyword; +#ifdef EB_MAX_CROSS_ENTRIES + else if (strcmp (s, "cross") == 0) + search = eblook_search_cross; +#endif + else if (strcmp (s, "multi") == 0) + search = eblook_search_multi; + else if (strcmp (s, "wild") == 0) + search = eblook_search_wild; + else { + xprintf ("Invalid search method: %s\n", s); + return 0; + } + /* reserve search information */ + /* use EB_Book structure directly here so as not to use more buffer. */ + variable_set ("_last_search_book", book->path); + variable_set ("_last_search_dict", book->subbook_current->directory_name); + variable_set ("_last_search_pattern", pattern); + last_search_begin = 0; + last_search_length = length; + last_search_function = search; + } + + /* search */ + error_code = search (book, pattern); + if (EB_SUCCESS != error_code) { + xprintf ("An error occured in search_pattern: %s\n", + eb_error_message (error_code)); + set_error_message (error_code); + return 0; + } + + point = 0; + head = headbuf1; + prevhead = headbuf2; + *prevhead = '\0'; + prevpage = 0; + prevoffset = 0; + + if (search == eblook_search_wild) { + hit_list = eblook_hit_list_wild; + } else + hit_list = eb_hit_list; + + while (EB_SUCCESS == hit_list (book, MAX_HIT_SIZE, hitlist, &num) + && 0 < num) { + qsort(hitlist, num, sizeof(EB_Hit), hitcomp); + for (i = 0; i < num; i++) { + point++; + if (point >= begin + length && length > 0) { + xprintf ("\n", point); + last_search_begin = point; + goto exit; + } + + if (point >= begin) { + error_code = eb_seek_text (book, &hitlist[i].heading); + if (error_code != EB_SUCCESS) + continue; + error_code = eb_read_heading (book, appendix, &heading_hookset, NULL, + BUFSIZ - 1, head, &heading_len); + if (error_code != EB_SUCCESS || heading_len == 0) + continue; + *(head + heading_len) = '\0'; + + if (prevpage == hitlist[i].text.page && + prevoffset == hitlist[i].text.offset && + strcmp (head, prevhead) == 0) + continue; + + xprintf ("%2d. %d:%d\t", point, + hitlist[i].text.page, hitlist[i].text.offset); + xfputs (head, stdout); + while (eb_read_heading (book, appendix, &heading_hookset, + NULL, BUFSIZ - 1, headbuf3, + &heading_len) == EB_SUCCESS && + heading_len > 0) { + *(headbuf3 + heading_len) = '\0'; + xfputs (headbuf3, stdout); + } + fputc ('\n', stdout); + } + + if (head == headbuf1) { + head = headbuf2; + prevhead = headbuf1; + } else { + head = headbuf1; + prevhead = headbuf2; + } + prevpage = hitlist[i].text.page; + prevoffset = hitlist[i].text.offset; + } + if (num < MAX_HIT_SIZE) + break; + } + + exit: + return 1; +} + +static EB_Error_Code insert_prev_next(book, appendix, pos, fp) + EB_Book *book; + EB_Appendix *appendix; + EB_Position *pos; + FILE *fp; +{ + EB_Error_Code error_code; + EB_Position pos_temp; + char head[BUFSIZ]; + ssize_t heading_len; + + error_code = eb_seek_text(book, pos); + if (error_code != EB_SUCCESS) + return error_code; + error_code = eb_seek_text(book, pos); + if (error_code != EB_SUCCESS) + return error_code; + + if (eb_backward_text(book, appendix) == EB_SUCCESS) { + error_code = eb_tell_text(book, &pos_temp); + if (error_code != EB_SUCCESS) + return error_code; + error_code = eb_seek_text(book, &pos_temp); + if (error_code != EB_SUCCESS) + return error_code; + fprintf(fp, ""); + while (eb_read_heading (book, appendix, &heading_hookset, NULL, + BUFSIZ - 1, head, &heading_len) == EB_SUCCESS && + heading_len > 0) { + *(head + heading_len) = '\0'; + xfputs (head, fp); + } + fprintf(fp, "\n", pos_temp.page, pos_temp.offset); + } + error_code = eb_seek_text(book, pos); + if (error_code != EB_SUCCESS) + return error_code; + if (eb_forward_text(book, appendix) == EB_SUCCESS) { + error_code = eb_tell_text(book, &pos_temp); + if (error_code != EB_SUCCESS) + return error_code; + error_code = eb_seek_text(book, &pos_temp); + if (error_code != EB_SUCCESS) + return error_code; + fprintf(fp, ""); + while (eb_read_heading (book, appendix, &heading_hookset, NULL, + BUFSIZ - 1, head, &heading_len) == EB_SUCCESS && + heading_len > 0) { + *(head + heading_len) = '\0'; + xfputs (head, fp); + } + fprintf(fp, "\n", pos_temp.page, pos_temp.offset); + } + error_code = eb_seek_text(book, pos); + return error_code; +}; + +int +insert_content (book, appendix, pos, begin, length) + EB_Book *book; + EB_Appendix *appendix; + EB_Position *pos; + int begin; + int length; +{ + int point; + ssize_t len; + char last = '\n'; + char buff[EB_SIZE_PAGE]; + EB_Error_Code error_code = EB_SUCCESS; + FILE *outFP = stdout; + + show_prev_next_flag = 1; + + /* insert */ + point = 0; + error_code = eb_seek_text(book, pos); + if (error_code != EB_SUCCESS) { + xprintf("An error occured in seek_position: %s\n", + eb_error_message(error_code)); + set_error_message (error_code); + return 0; + } + +#ifdef USE_PAGER + if (interactive_mode) { + outFP = popen_pager(); + if (outFP == NULL) outFP = stdout; + } +#endif + + while (EB_SUCCESS == eb_read_text (book, appendix, &text_hookset, NULL, + EB_SIZE_PAGE - 1, buff, &len) && + 0 < len) { + *(buff + len) = '\0'; + /* count up */ + point++; + if (point >= begin + length && length > 0) { + xfprintf (outFP, "\n", point); + goto exit; + } + + /* insert */ + if (point >= begin) { + xfputs (buff, outFP); + last = buff[len - 1]; + } + } + + /* insert a newline securely */ + if (last != '\n') + putc('\n', outFP); + + if (show_prev_next_flag != 0) { + insert_prev_next(book, appendix, pos, outFP); + } + + exit: + +#ifdef USE_PAGER + if (interactive_mode) { + if (outFP != stdout) + pclose_pager(outFP); + } +#endif + return 1; +} + +int +insert_dump (book, appendix, pos, length) + EB_Book *book; + EB_Appendix *appendix; + EB_Position *pos; + int length; +{ + int page; + ssize_t len; + unsigned char buff[EB_SIZE_PAGE]; + EB_Error_Code error_code = EB_SUCCESS; + int i, count; + long position; + FILE *outFP = stdout; + int ret_code = 0; + +#ifdef USE_PAGER + if (interactive_mode) { + outFP = popen_pager(); + if (outFP == NULL) outFP = stdout; + } +#endif + + /* insert */ + for (page = 0; page < length; page++) { + error_code = eb_seek_text(book, pos); + if (error_code != EB_SUCCESS) { + xprintf("An error occured in seek_position: %s\n", + eb_error_message(error_code)); + set_error_message (error_code); + goto exit; + } + + position = (pos->page - 1) * 2048 + pos->offset; + + error_code = eb_read_rawtext (book, EB_SIZE_PAGE, (char *)buff, &len); + if ((error_code != EB_SUCCESS) || len <= 0) { + xprintf ("An error occured in command_dump: %s\n", + eb_error_message (error_code)); + set_error_message (error_code); + goto exit; + } + + /* insert */ + count = 0; + while (count < EB_SIZE_PAGE) { + xfprintf(outFP, "%08d:%04d ", position / 2048 + 1, position % 2048); + for (i = 0; i < 16; i+= 2) { + xfprintf(outFP, "%02x%02x", buff[count+i], buff[count+i+1]); + } + xfprintf(outFP, " "); + for (i = 0; i < 16; i+= 2) { + if (0x21 <= buff[count+i] && buff[count+i] <=0x7e && + 0x21 <= buff[count+i+1] && buff[count+i+1] <= 0x7e) { + xfprintf(outFP, "[%c%c]", buff[count+i] | 0x80, + buff[count+i+1] | 0x80); + } else { + xfprintf(outFP, "%02x%02x", buff[count+i], buff[count+i+1]); + } + } + xfprintf(outFP, "\n"); + position += 16; + count += 16; + } + pos->page ++; + } + ret_code = 1; + + exit: +#ifdef USE_PAGER + if (interactive_mode) { + if (outFP != stdout) + pclose_pager(outFP); + } +#endif + + return ret_code; +} + +int +insert_font (book, id) + EB_Book *book; + const char *id; +{ + int ch, width, height, start, end; + size_t size; + char bitmap[EB_SIZE_WIDE_FONT_48]; + char xbm[EB_SIZE_WIDE_FONT_48_XBM]; + EB_Error_Code error_code = EB_SUCCESS; + + switch (*id) { + case 'h': + ch = strtol (id + 1, NULL, 16); + eb_narrow_font_start (book, &start); + eb_narrow_font_end (book, &end); + if (start <= ch && ch <= end) { + eb_narrow_font_width (book, &width); + error_code = eb_narrow_font_character_bitmap (book, ch, bitmap); + if (EB_SUCCESS != error_code) + goto error; + } else { + xprintf ("No such character font: %s\n", id); + return 0; + } + break; + + case 'z': + ch = strtol (id + 1, NULL, 16); + eb_wide_font_start (book, &start); + eb_wide_font_end (book, &end); + if (start <= ch && ch <= end) { + eb_wide_font_width (book, &width); + error_code = eb_wide_font_character_bitmap (book, ch, bitmap); + if (EB_SUCCESS != error_code) + goto error; + } else { + xprintf ("No such character font: %s\n", id); + return 0; + } + break; + + default: + xprintf ("Invalid font id: %s\n", id); + return 0; + } + + eb_font_height (book, &height); + eb_bitmap_to_xbm (bitmap, width, height, xbm, &size); + xbm[size] = '\0'; + xfputs (xbm, stdout); + return 1; + + error: + xprintf ("An error occured in insert_font: %s\n", + eb_error_message (error_code)); + set_error_message (error_code); + return 0; +} + +int +insert_font_list (book) + EB_Book *book; +{ + int ch, width, height, start, end; + size_t size; + char bitmap[EB_SIZE_WIDE_FONT_48]; + char xbm[EB_SIZE_WIDE_FONT_48_XBM]; + + eb_font_height (book, &height); + + eb_narrow_font_width (book, &width); + eb_narrow_font_start (book, &start); + eb_narrow_font_end (book, &end); + + for (ch = start; ch < end; ch++) + if (EB_SUCCESS == eb_narrow_font_character_bitmap (book, ch, bitmap)) { + eb_bitmap_to_xbm (bitmap, width, height, xbm, &size); + xbm[size] = '\0'; + xfprintf (stdout, "\nid = h%04x\n", ch); + xfputs (xbm, stdout); + } + + eb_wide_font_width (book, &width); + eb_wide_font_start (book, &start); + eb_wide_font_end (book, &end); + for (ch = start; ch < end; ch++) + if (EB_SUCCESS == eb_wide_font_character_bitmap (book, ch, bitmap)) { + eb_bitmap_to_xbm (bitmap, width, height, xbm, &size); + xbm[size] = '\0'; + xfprintf (stdout, "\nid = z%04x\n", ch); + xfputs (xbm, stdout); + } + return 1; +} + +void +command_candidate(argc, argv) + int argc; + char *argv[]; +{ + switch (argc) { + case 3: + show_entry_candidate(¤t_book, atoi(argv[1])-1, atoi(argv[2])-1); + break; + default: + output_multi_information(¤t_book); + break; + } +} + +void +command_label(argc, argv) + int argc; + char *argv[]; +{ + if (argc == 1) { + show_label(¤t_book, -1); + } else { + show_label(¤t_book, atoi(argv[1]) - 1); + } + +} + + + +EB_Error_Code +hook_font (book, appendix, container, code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code code; + int argc; + const unsigned int *argv; +{ + char buff[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; + EB_Error_Code result = EB_SUCCESS; + + switch (code) { + case EB_HOOK_NARROW_FONT: + if (EB_SUCCESS != eb_narrow_alt_character_text (appendix, argv[0], buff)) + sprintf (buff, "", argv[0]); + result = eb_write_text_string(book, buff); + break; + + case EB_HOOK_WIDE_FONT: + if (EB_SUCCESS != eb_wide_alt_character_text (appendix, argv[0], buff)) + sprintf (buff, "", argv[0]); + result = eb_write_text_string(book, buff); + break; + } + return result; +} + +#ifdef EB_HOOK_GB2312 +EB_Error_Code +hook_gb2312 (book, appendix, container, code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code code; + int argc; + const unsigned int *argv; +{ + char buff[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; + sprintf (buff, "", argv[0]); + eb_write_text_string(book, buff); + return 0; +} +#endif + +#ifdef EB_HOOK_EBXAC_GAIJI +EB_Error_Code +hook_ebxac_gaiji (book, appendix, container, code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code code; + int argc; + const unsigned int *argv; +{ + char buff[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; + sprintf (buff, "", (argv[0] & 0x7f7f)); + eb_write_text_string(book, buff); + return 0; +} +#endif + +EB_Error_Code +hook_decoration (book, appendix, container, code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code code; + int argc; + const unsigned int *argv; +{ + char buff[256]; + EB_Error_Code result = EB_SUCCESS; + + if (decorate_mode == DECORATE_OFF) + return EB_SUCCESS; + switch (code) { + case EB_HOOK_BEGIN_SUBSCRIPT: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_END_SUBSCRIPT: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_BEGIN_SUPERSCRIPT: + result = eb_write_text_string(book,""); + break; + case EB_HOOK_END_SUPERSCRIPT: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_BEGIN_NO_NEWLINE: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_END_NO_NEWLINE: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_BEGIN_EMPHASIS: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_END_EMPHASIS: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_SET_INDENT: + sprintf (buff, "", argv[1] > 8 ? 9 : argv[1]); + result = eb_write_text_string(book, buff); + break; + case EB_HOOK_BEGIN_DECORATION: + switch (argv[1]) { + case 3: + result = eb_write_text_string(book, ""); + break; + default: + result = eb_write_text_string(book, ""); + break; + } + break; + case EB_HOOK_END_DECORATION: + result = eb_write_text_string(book, ""); + break; + } + return result; +} + +#ifdef EB_HOOK_STOP_CODE +EB_Error_Code +hook_stopcode (book, appendix, container, code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code code; + int argc; + const unsigned int *argv; +{ + const char *stop = variable_ref ("stop-code"); + + if (stop) { + unsigned int c; + c = strtol (stop, NULL, 0); + if (c == (argv[0] << 16) + argv[1]) + return EB_ERR_STOP_CODE; + else + return EB_SUCCESS; + } + + return (eb_hook_stop_code (book, appendix, container, code, argc, argv)); +} +#endif + +EB_Error_Code +hook_img (book, appendix, container, code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code code; + int argc; + const unsigned int *argv; +{ + static int imgW, imgH, page, offset; + static char buff[256]; + EB_Error_Code result = EB_SUCCESS; + + switch (code) { + case EB_HOOK_BEGIN_MONO_GRAPHIC: + imgW = argv[3]; + imgH = argv[2]; + if (imgW && imgH) { + sprintf (buff, "", argv[3], argv[2]); + result = eb_write_text_string(book, buff); + } + break; + + case EB_HOOK_END_MONO_GRAPHIC: + if (imgW && imgH) { + sprintf (buff, "", argv[1], argv[2]); + imgW = imgH = 0; + result = eb_write_text_string(book, buff); + } + break; + + case EB_HOOK_BEGIN_COLOR_JPEG: + page = argv[2]; + offset = argv[3]; + result = eb_write_text_string(book, ""); + break; + + case EB_HOOK_BEGIN_COLOR_BMP: + page = argv[2]; + offset = argv[3]; + result = eb_write_text_string(book, ""); + break; + + case EB_HOOK_END_COLOR_GRAPHIC: + sprintf (buff, "", page, offset); + result = eb_write_text_string(book, buff); + break; + +#ifdef EB_HOOK_BEGIN_IN_COLOR_JPEG /* eb-3.3 */ + case EB_HOOK_BEGIN_IN_COLOR_JPEG: + page = argv[2]; + offset = argv[3]; + result = eb_write_text_string(book, ""); + break; +#endif + +#ifdef EB_HOOK_BEGIN_IN_COLOR_BMP /* eb-3.3 */ + case EB_HOOK_BEGIN_IN_COLOR_BMP: + page = argv[2]; + offset = argv[3]; + result = eb_write_text_string(book, ""); + break; +#endif + +#ifdef EB_HOOK_END_IN_COLOR_GRAPHIC + case EB_HOOK_END_IN_COLOR_GRAPHIC: + sprintf (buff, "", page, offset); + result = eb_write_text_string(book, buff); + break; +#endif + +#ifdef EB_HOOK_BEGIN_IMAGE_PAGE + case EB_HOOK_BEGIN_IMAGE_PAGE: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_END_IMAGE_PAGE: + show_prev_next_flag = 0; + result = eb_write_text_string(book, ""); + break; +#endif +#ifdef EB_HOOK_BEGIN_WAVE + case EB_HOOK_BEGIN_WAVE: + sprintf (buff, "", argv[2], argv[3], argv[4], argv[5]); + result = eb_write_text_string(book, buff); + break; + case EB_HOOK_END_WAVE: + result = eb_write_text_string(book, ""); + break; +#endif +#ifdef EB_HOOK_BEGIN_MPEG + case EB_HOOK_BEGIN_MPEG: + sprintf (buff, "", argv[2], argv[3], argv[4], argv[5]); + result = eb_write_text_string(book, buff); + break; + case EB_HOOK_END_MPEG: + result = eb_write_text_string(book, ""); + break; +#endif + } + return result; +} + + +EB_Error_Code +hook_tags (book, appendix, container, code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code code; + int argc; + const unsigned int *argv; +{ + char buff[256]; + EB_Error_Code result = EB_SUCCESS; + + switch (code) { + case EB_HOOK_BEGIN_REFERENCE: + case EB_HOOK_BEGIN_CANDIDATE: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_END_REFERENCE: + case EB_HOOK_END_CANDIDATE_GROUP: + sprintf (buff, "", argv[1], argv[2]); + result = eb_write_text_string(book, buff); + break; +#ifdef EB_HOOK_BEGIN_UNICODE + case EB_HOOK_BEGIN_UNICODE: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_END_UNICODE: + result = eb_write_text_string(book, ""); + break; +#endif +#ifdef EB_HOOK_BEGIN_CLICKABLE_AREA + case EB_HOOK_BEGIN_GRAPHIC_REFERENCE: + sprintf (buff, "", argv[1], argv[2]); + result = eb_write_text_string(book, buff); + break; + case EB_HOOK_END_GRAPHIC_REFERENCE: + result = eb_write_text_string(book, ""); + break; + case EB_HOOK_GRAPHIC_REFERENCE: + sprintf (buff, "", + argv[1], argv[2]); + result = eb_write_text_string(book, buff); + show_prev_next_flag = 0; + break; + case EB_HOOK_BEGIN_CLICKABLE_AREA: + sprintf (buff, + "", + argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]); + result = eb_write_text_string(book, buff); + break; + case EB_HOOK_END_CLICKABLE_AREA: + result = eb_write_text_string(book, ""); + break; +#endif +#ifdef EB_HOOK_BEGIN_COLOR_CHART + case EB_HOOK_BEGIN_COLOR_CHART: + sprintf (buff, "", argv[1]); + result = eb_write_text_string(book, buff); + break; +#endif + } + return result; +} + + +void +show_version () +{ + xprintf ("%s %s (with EB %d.%d)\n", program_name, program_version, + EB_VERSION_MAJOR, EB_VERSION_MINOR); + xputs ("Copyright (C) 1997,1998,1999,2000 NISHIDA Keisuke"); + xputs ("Copyright (C) 2000-2002 Satomi"); + xputs ("Copyright (C) 2000,2001 Kazuhiko"); + xputs ("Copyright (C) 2000-2002 NEMOTO Takashi"); + xputs ("Copyright (C) 2000,2001 YAMAGATA"); + xputs ("Copyright (C) 2006-2020 Kazuhiro Ito"); + xputs ("eblook may be distributed under the terms of the GNU General Public Licence;"); + xputs ("certain other uses are permitted as well. For details, see the file"); + xputs ("`COPYING'."); + xputs ("There is no warranty, to the extent permitted by law."); +} + +void +show_help () +{ + xfprintf (stderr, "Usage: %s [option...] [book-directory [appendix-directory]]\n", program_name); + xfprintf (stderr, "Options:\n"); + xfprintf (stderr, " -e, --encoding=NAME specify input/output encoding\n"); + xfprintf (stderr, " -q, --no-init-file ignore user init file\n"); + xfprintf (stderr, " -i, --non-interactive enter non interactive mode\n"); + xfprintf (stderr, " -h, --help show this message\n"); + xfprintf (stderr, " -v, --version show version number\n"); + fflush (stderr); +} + +void +show_try_help () +{ + xfprintf (stderr, "Try `%s --help' for more information.\n", invoked_name); + fflush (stderr); +} + +void +set_error_message (error_code) + EB_Error_Code error_code; +{ + variable_set ("_error", strerror (errno)); + variable_set ("_eb_error", eb_error_message (error_code)); +} + +void +unset_error_message () +{ + variable_set ("_error", NULL); + variable_set ("_eb_error", NULL); +} + +EB_Error_Code +eblook_search_keyword(book, pattern) + EB_Book *book; + const char *pattern; +{ + char *keyword[EB_MAX_KEYWORDS+2]; + EB_Error_Code error_code; + char *p = strdup(pattern); + int i; + + keyword[0] = strtok(p, "="); + + for (i=1; isubbook_current == NULL) { + error_code = EB_ERR_NO_CUR_SUB; + goto failed; + } + + if (eblook_have_wild_search(book) == 0) { + error_code = EB_ERR_NO_SUCH_SEARCH; + goto failed; + } + + search_wild_convert_pattern(eblook_wild_pattern, (const unsigned char *)pattern, EB_MAX_WORD_LENGTH * 2); + eblook_wild_page = 0; + eblook_wild_count = 0; + error_code = EB_SUCCESS; + + failed: + return error_code; +} + +EB_Error_Code eblook_hit_list_wild (book, max_hit_count, hit_list, hit_count) + EB_Book *book; + int max_hit_count; + EB_Hit *hit_list; + int *hit_count; +{ + int start, end, current; + int i, pos, key_length; + unsigned char count, current_count = 0; + static unsigned char buff[EB_SIZE_PAGE]; + unsigned char key[EB_MAX_WORD_LENGTH+1]; + EB_Position eb_pos, content_pos, heading_pos; + EB_Error_Code error_code; + ssize_t read_length; + + start = book->subbook_current->word_asis.start_page; + end = book->subbook_current->word_asis.end_page; + if (eblook_wild_page != 0) { + current = eblook_wild_page; + } else { + current = start; + } + count = 0; + + *hit_count = 0; + eb_pos.offset = 0; + while (current <= end) { + eb_pos.page = current; + error_code = eb_seek_text(book, &eb_pos); + if ( error_code != EB_SUCCESS ) + goto failed; + + error_code = eb_read_rawtext(book, EB_SIZE_PAGE, (char *)buff, &read_length); + if (error_code != EB_SUCCESS || read_length != EB_SIZE_PAGE) + goto failed; + + i = 0; + switch (buff[0]) { + case 0x80: + case 0xa0: + case 0xc0: + case 0xe0: + pos = 4; + for (i = uint2(buff + 2); i > 0; i--) { + key_length = uint1(buff + pos); + jis_to_euc((char *)key, (char *)buff+pos+1, key_length); + pos += key_length + 1; + + if (search_wild_match_pattern (key, eblook_wild_pattern)) { + count++; + if (eblook_wild_count < count) { + content_pos.page = uint4(buff + pos); + content_pos.offset = uint2(buff + pos + 4); + heading_pos.page = uint4(buff + pos + 6); + heading_pos.offset = uint2(buff + pos + 10); + + hit_list[*hit_count].heading = heading_pos; + hit_list[*hit_count].text = content_pos; + (*hit_count)++; + if (*hit_count >= max_hit_count) + break; + } + } + pos += 12; + } + default: + break; + } + + if (i==0) { + current++; + count = 0; + eblook_wild_count = 0; + } else { + eblook_wild_count = count - 1; + break; + } + } + + eblook_wild_page = current; + return EB_SUCCESS; + failed: + eblook_wild_page = 0; + return error_code; +} + +void search_wild_insert_euc_char (pos, ch) + unsigned char *pos; + unsigned char ch; +{ + /*¾®Ê¸»ú¤ÏÂçʸ»ú¤ËÊÑ´¹¤µ¤ì¤ë*/ + static const unsigned char ascii_euc_table_u[] = { + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, + 0xa3, 0xa3, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, + 0xa1, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, + 0xa3, 0xa3, 0xa3, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, + 0xa1, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, + 0xa3, 0xa3, 0xa3, 0xa1, 0xa1, 0xa1, 0xa1 + }; + + static const unsigned char ascii_euc_table_l[] = { + 0xa1, 0xaa, 0xc9, 0xf4, 0xf0, 0xf3, 0xf5, 0xc7, + 0xca, 0xcb, 0xf6, 0xdc, 0xa4, 0xdd, 0xa5, 0xbf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xa7, 0xa8, 0xe3, 0xe1, 0xe4, 0xa9, + 0xf7, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xce, 0xef, 0xcf, 0xb0, 0xb2, + 0xae, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xd0, 0xc3, 0xd1, 0xc1 + }; + + if (ch >=0x7f || ch < 0x20) + ch = 0x20; + ch -= 0x20; + *pos = ascii_euc_table_u[ch]; + *(pos + 1) = ascii_euc_table_l[ch]; +} + +int search_wild_convert_pattern (query, pattern, buff_length) + unsigned char *query; + const unsigned char *pattern; + int buff_length; +{ + int length = 0, read = 0; + int escaped = 0; + + while (length < buff_length) { + if (pattern[read] == 0) + break; + + if (pattern[read] >= 0x80) { + escaped = 0; + if (length + 1 < buff_length) { + query[length] = pattern[read]; + query[length+1] = pattern[read+1]; + length += 2; + read += 2; + } else + break; + } else { + switch (pattern[read]) { + case '\\': + if (escaped == 0) + escaped = 1; + else { + escaped = 0; + if (length + 1 < buff_length) { + search_wild_insert_euc_char(query+length, '\\'); + length += 2; + } + } + read++; + break; + case '*': + case '?': + if (escaped==0) { + query[length++] = pattern[read++]; + break; + } + default: + escaped = 0; + if (length + 1 < buff_length) { + search_wild_insert_euc_char(query+length, pattern[read]); + length += 2; + read++; + } + } + } + } + query[length] = 0; + + /* remove spaces */ + length = 0; + read = 0; + while (query[read] != 0) { + if (query[read] < 0x80) { + if (read != length) { + query[length] = query[read]; + } + read++; + length++; + } else if (query[read] == 0xa1 || query[read+1] == 0xa1) { + read += 2; + } else if (read != length) { + query[length++] = query[read++]; + query[length++] = query[read++]; + } else { + read += 2; + length += 2; + } + if (query[length - 1] == 0) { + length--; + break; + } + } + query[length] = 0; + + /* convert lower case to upper as required. */ + if (current_book.subbook_current->word_asis.lower == EB_INDEX_STYLE_CONVERT) { + read = 0; + while (read < length) { + if(query[read] < 0x80) { + read++; + } else if (query[read] == 0xa3 + && query[read + 1] >= 0xe1 + && query[read + 1] <= 0xfa) { + query[read + 1] -= 0x20; + read += 2; + } else { + read += 2; + } + } + } + + return length; +} + + +int search_wild_match_pattern(char *key, char *pattern) { + char *s; + + while (*key != 0) { + switch (*pattern) { + case '?': + key += 2; + pattern++; + break; + case '*': + if (pattern + 1 == 0) { + return 1; + } + s = key; + for (;;) { + if (search_wild_match_pattern(s, pattern + 1)) + return 1; + if (*s == 0) + break; + s += 2; + } + case 0: + return 0; + default: + if (*key != *pattern || key[1] != pattern[1]) + return 0; + key += 2; + pattern += 2; + break; + } + } + if (*pattern == 0 || (*pattern == '*' && pattern[1] == 0)) + return 1; + return 0; +} + +int eblook_have_wild_search (book) + EB_Book *book; +{ + if (book->subbook_current == NULL || + book->subbook_current->word_asis.start_page == 0 || + book->character_code != EB_CHARCODE_JISX0208) + return 0; + return 1; +} + + +StringAlist * +salist_set (alist, key, value) + StringAlist *alist; + const char *key; + const char *value; +{ + StringAlist *var; + + if (value) { + /* + * Set KEY to VALUE + */ + StringAlist *prev = NULL; + for (var = alist; var != NULL; var = var->next) { + if (strcmp (key, var->key) == 0) { + /* update original value */ + char *p = strdup (value); + if (p != NULL) { + free (var->value); + var->value = p; + } else { + xputs ("memory full"); + if (prev) + prev->next = var->next; + else + alist = var->next; + + free (var->key); + free (var->value); + free (var); + } + break; + } + prev = var; + } + if (var == NULL) { + /* add new element */ + if ((var = malloc (sizeof (StringAlist))) == NULL) { + xputs ("memory full"); + } else if ((var->key = strdup (key)) == NULL || + (var->value = strdup (value)) == NULL) { + xputs ("memory full"); + free (var->key); + free (var); + } else { + var->next = alist; + alist = var; + } + } + } else { + /* + * Delete element + */ + StringAlist *prev = NULL; + for (var = alist; var != NULL; var = var->next) { + if (strcmp (key, var->key) == 0) { + /* delete from alist */ + if (prev) + prev->next = var->next; + else + alist = var->next; + + /* free */ + free (var->key); + free (var->value); + free (var); + break; + } + prev = var; + } + } + + return alist; +} + +char * +salist_ref (alist, key) + StringAlist *alist; + const char *key; +{ + StringAlist *var; + for (var = alist; var != NULL; var = var->next) + if (strcmp (key, var->key) == 0) + return var->value; + + return NULL; +} + +const EB_Position zero_pos = { 0, 0 }; + +struct multi_can { + char text[256]; + struct multi_can *child; + EB_Position child_pos; + struct multi_can *next; + int terminated; +}; + +struct multi_can *head = 0, *tail = 0; + +char can_word[256]; + +EB_Error_Code +can_menu_begin(book, appendix, workbuf, hook_code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *workbuf; + EB_Hook_Code hook_code; + int argc; + const unsigned int *argv; +{ + memset(can_word, 0, sizeof(can_word)); + return EB_SUCCESS; +} + +EB_Error_Code +can_menu_end(book, appendix, workbuf, hook_code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *workbuf; + EB_Hook_Code hook_code; + int argc; + const unsigned int *argv; +{ +#if MULTI_DEBUG + xprintf(">> can_word = %s\n", can_word); +#endif + + if (head == 0) { + head = malloc(sizeof(struct multi_can)); + tail = head; + } else { +#if MULTI_DEBUG + xprintf(">> current tail %s:%d->next %s:%d\n", + tail->text, tail, + tail->next->text, tail->next); +#endif + tail->next = malloc(sizeof(struct multi_can)); +#if MULTI_DEBUG + xprintf(">> %s:%d->next = %s:%d\n", tail->text, tail, can_word, tail->next); +#endif + tail = tail->next; + } + + memset(tail, 0, sizeof(struct multi_can)); + strcpy(tail->text, can_word); + memset(can_word, 0, sizeof(can_word)); + +#if MULTI_DEBUG + xprintf(">> %s:%d\n", tail->text, tail); +#endif + + if (argv[1] || argv[2]) { + tail->child_pos.page = argv[1]; + tail->child_pos.offset = argv[2]; + } else { +#if MULTI_DEBUG + xprintf(">> %s\n", tail->text); +#endif + } + return EB_SUCCESS; +} + +/* + * EUC JP to ASCII conversion table. + */ +static const unsigned char euc_a1_to_ascii_table[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98 */ + 0x00, 0x20, 0x00, 0x00, 0x2c, 0x2e, 0x00, 0x3a, /* 0xa0 */ + 0x3b, 0x3f, 0x21, 0x00, 0x00, 0x00, 0x60, 0x00, /* 0xa8 */ + 0x5e, 0x7e, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x2f, /* 0xb8 */ + 0x5c, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x27, /* 0xc0 */ + 0x00, 0x22, 0x28, 0x29, 0x00, 0x00, 0x5b, 0x5d, /* 0xc8 */ + 0x7b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0 */ + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x2d, 0x00, 0x00, /* 0xd8 */ + 0x00, 0x3d, 0x00, 0x3c, 0x3e, 0x00, 0x00, 0x00, /* 0xe0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, /* 0xe8 */ + 0x24, 0x00, 0x00, 0x25, 0x23, 0x26, 0x2a, 0x40, /* 0xf0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8 */ +}; + +static const unsigned char euc_a3_to_ascii_table[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8 */ + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0xb0 */ + 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8 */ + 0x00, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0xc0 */ + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0xc8 */ + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0xd0 */ + 0x58, 0x59, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8 */ + 0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0xe0 */ + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0xe8 */ + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0xf0 */ + 0x78, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8 */ +}; + +/* + * Convert the `workbuf' string from EUC to ASCII. + */ +EB_Error_Code +can_menu_narrow_char(book, appendix, container, hook_code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code hook_code; + int argc; + const unsigned int *argv; +{ + int in_code1, in_code2; + int out_code = 0; + unsigned char outchars[3]; + + in_code1 = argv[0] >> 8; + in_code2 = argv[0] & 0xFF; + + if (in_code1 == 0xa1) + out_code = euc_a1_to_ascii_table[in_code2]; + else if (in_code1 == 0xa3) + out_code = euc_a3_to_ascii_table[in_code2]; + + if (out_code == 0) { + outchars[0] = in_code1; + outchars[1] = in_code2; + outchars[2] = 0; + } else { + outchars[0] = out_code; + outchars[1] = 0; + } + + strcat(can_word, (char *)outchars); + + return EB_SUCCESS; +} + +EB_Error_Code +can_menu_wide_char(book, appendix, container, hook_code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code hook_code; + int argc; + const unsigned int *argv; +{ + unsigned char outchars[3]; + + outchars[0] = argv[0] >> 8; + outchars[1] = argv[0] & 0xFF; + outchars[2] = 0; + + strcat(can_word, (char *)outchars); + + return EB_SUCCESS; +} + +EB_Error_Code +can_menu_gaiji(book, appendix, container, hook_code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code hook_code; + int argc; + const unsigned int *argv; +{ + char workbuf[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; + char c; + + switch (hook_code) { + case EB_HOOK_NARROW_FONT: + c = 'h'; + break; + case EB_HOOK_WIDE_FONT: + c = 'z'; + break; + default: + c = '?'; + } + sprintf(workbuf, "", c, argv[0]); + strcat(can_word, workbuf); + return EB_SUCCESS; +} + +#ifdef EB_HOOK_GB2312 +EB_Error_Code +can_menu_gb2312(book, appendix, container, hook_code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code hook_code; + int argc; + const unsigned int *argv; +{ + char workbuf[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; + sprintf(workbuf, "", argv[0]); + strcat(can_word, workbuf); + return EB_SUCCESS; +} +#endif + +EB_Hookset multi_candidate_hookset; +EB_Hook +multi_candidate_hooks [] = { + {EB_HOOK_NARROW_FONT, can_menu_gaiji}, + {EB_HOOK_WIDE_FONT, can_menu_gaiji}, + {EB_HOOK_NARROW_JISX0208, can_menu_narrow_char}, + {EB_HOOK_WIDE_JISX0208, can_menu_wide_char}, +#ifdef EB_HOOK_GB2312 + {EB_HOOK_GB2312, can_menu_gb2312}, +#endif + {EB_HOOK_BEGIN_CANDIDATE, can_menu_begin}, + {EB_HOOK_END_CANDIDATE_LEAF, can_menu_end}, + {EB_HOOK_END_CANDIDATE_GROUP, can_menu_end}, + {EB_HOOK_NULL, NULL}, +}; + +struct multi_can * +find_child(can) + struct multi_can * can; +{ + while (can) { + if (can->child_pos.page == 0 && can->child_pos.offset == 0) { +#if MULTI_DEBUG + xprintf(">> %s noref skip\n", can->text); +#endif + can = can->next; + } else if (can->child != 0) { +#if MULTI_DEBUG + xprintf(">> %s has processed child skip\n", can->text); +#endif + can = can->next; + } else { +#if MULTI_DEBUG + xprintf(">> unprocessed child found %d\n", can); + xprintf(">> %s[\n", can->text); +#endif + return can; + } + } + return 0; +} + +int +process_child(book, can) + EB_Book *book; + struct multi_can * can; +{ + EB_Error_Code error_code; + char buf[2048]; + ssize_t buflen; + +#if MULTI_DEBUG + xprintf(">> seeking %d:%d\n", can->child_pos.page, can->child_pos.offset); +#endif + error_code = eb_seek_text(book, &can->child_pos); +#if MULTI_DEBUG + xprintf(">> eb_seek_text %s\n", eb_error_message(error_code)); +#endif + error_code = eb_read_text(book, 0, &multi_candidate_hookset, NULL, 2047, buf, &buflen); +#if MULTI_DEBUG + xprintf(">> eb_read_text %s\n", eb_error_message(error_code)); + xprintf(">> buflen = %ld\n", (long)buflen); + xprintf(">> ]\n"); +#endif + + tail->terminated = 1; + return(0); +} + +void +show_candidates_level(can, level) + struct multi_can * can; + int level; +{ + char * indent; + + indent = malloc(level+1); + if (!indent) { + xputs("memory full"); + return; + } + memset(indent, '\t', level); + *(indent + level) = '\0'; + + while (1) { + xprintf("%s%c%s\n", indent, can->child ? ' ': '*', can->text); + if (can->child) { + show_candidates_level(can->child, level+1); + } + if (can->terminated) + break; + can = can->next; + } + + free(indent); +} + +void +free_candidates_tree(can) + struct multi_can * can; +{ + struct multi_can * next; + + do { + next = can->next; +#if MULTI_DEBUG + xfprintf(stderr, ">> freeing %s:%d\n", can->text, can); + xfprintf(stderr, ">> next is %s:%d\n", next->text, next); +#endif + free(can); + can = next; + } while (next); +} + +int +show_candidate(book, pos0) + EB_Book *book; + EB_Position pos0; +{ + char buf[2048]; + ssize_t buflen; + struct multi_can *child, *ptail; + EB_Error_Code error_code = EB_SUCCESS; + + eb_initialize_hookset (&multi_candidate_hookset); + eb_set_hooks (&multi_candidate_hookset, multi_candidate_hooks); + + error_code = eb_seek_text(book, &pos0); + if (error_code != EB_SUCCESS) { + xprintf("An error occured in seek_position: %s\n", + eb_error_message(error_code)); + set_error_message (error_code); + return 0; + } + error_code = eb_read_text(book, 0, &multi_candidate_hookset, NULL, + 2047, buf, &buflen); + if (error_code != EB_SUCCESS) { + xprintf("An error occured in read_text: %s\n", + eb_error_message(error_code)); + set_error_message (error_code); + return 0; + } +#if MULTI_DEBUG + xprintf(">> buflen = %ld\n", (long)buflen); +#endif + + tail->terminated = 1; + + while ((child = find_child(head)) != 0) { + ptail = tail; +#if MULTI_DEBUG + xprintf(">> current tail %s:%d->next %s:%d\n", + tail->text, tail, + tail->next->text, tail->next); +#endif + process_child(book, child); + child->child = ptail->next; + } + + show_candidates_level(head, 0); + + free_candidates_tree(head); + head = 0; + tail = 0; + + return 1; +} + + +/* + * Output information about multi searches. + */ +static void +output_multi_information(book) + EB_Book *book; +{ + EB_Error_Code error_code; + EB_Multi_Search_Code multi_list[EB_MAX_MULTI_SEARCHES]; + EB_Multi_Entry_Code entry_list[EB_MAX_MULTI_ENTRIES]; + int multi_count; + int entry_count; + char entry_label[EB_MAX_MULTI_LABEL_LENGTH + 1]; + int i, j; + + error_code = eb_multi_search_list(book, multi_list, &multi_count); + if (error_code != EB_SUCCESS) { + xprintf("eb_multi_search_list %s\n", eb_error_message(error_code)); + return; + } + for (i = 0; i < multi_count; i++) { + xprintf(" multi search %d:\n", i + 1); + error_code = eb_multi_entry_list(book, multi_list[i], entry_list, + &entry_count); + if (error_code != EB_SUCCESS) { + xprintf("eb_multi_entry_list %s\n", eb_error_message(error_code)); + continue; + } + for (j = 0; j < entry_count; j++) { + error_code = eb_multi_entry_label(book, multi_list[i], + entry_list[j], entry_label); + if (error_code != EB_SUCCESS) { + xprintf("eb_multi_entry_label %s\n", + eb_error_message(error_code)); + continue; + } + + xprintf(" label %d: %s\n", j + 1, entry_label); + xfputs(" candidates: ", stdout); + if (eb_multi_entry_have_candidates(book, multi_list[i], + entry_list[j])) { + EB_Position pos; + + xfputs("exist\n", stdout); + + eb_multi_entry_candidates(book, + multi_list[i], entry_list[j], &pos); +#if MULTI_DEBUG + xprintf(">> candidate = %d:%d\n", pos.page, pos.offset); +#endif + + show_candidate(book, pos); + + } + else + xfputs("not-exist\n", stdout); + } + } + fflush(stdout); +} + + + +void +show_entry_candidate(book, search_id, entry_id) + EB_Book *book; + int search_id; + int entry_id; +{ + EB_Error_Code error_code; + EB_Multi_Search_Code multi_list[EB_MAX_MULTI_SEARCHES]; + EB_Multi_Entry_Code entry_list[EB_MAX_MULTI_ENTRIES]; + EB_Position candidate_pos; + /* char entry_label[EB_MAX_MULTI_LABEL_LENGTH + 1]; */ + int multi_count; + int entry_count; + + if (!eb_have_multi_search(book)) + return; + + error_code = eb_multi_search_list(book, multi_list, &multi_count); + if (error_code != EB_SUCCESS) { + xprintf("eb_multi_search_list: %s\n", eb_error_message(error_code)); + return; + } + + if (search_id >= multi_count || search_id < 0) + return; + error_code = eb_multi_entry_list(book, multi_list[search_id], + entry_list, &entry_count); + if (error_code != EB_SUCCESS) { + xprintf("eb_multi_entry_list %s\n", eb_error_message(error_code)); + return; + } + + if (entry_id >= entry_count || entry_count < 0) + return; + if (!eb_multi_entry_have_candidates(book, multi_list[search_id], entry_list[entry_id])) { + xprintf(" no-candidate\n"); + return; + } + + + if ((error_code = eb_multi_entry_candidates(book, multi_list[search_id], + entry_list[entry_id], &candidate_pos)) != EB_SUCCESS) { + xprintf("eb_multi_entry_candidates %s\n", eb_error_message(error_code)); + return; + } + + show_candidate(book, candidate_pos); +} + +void +show_label(book, id) + EB_Book *book; + int id; +{ + EB_Error_Code error_code; + EB_Multi_Search_Code multi_list[EB_MAX_MULTI_SEARCHES]; + EB_Multi_Entry_Code entry_list[EB_MAX_MULTI_ENTRIES]; + char entry_label[EB_MAX_MULTI_LABEL_LENGTH + 1]; + int multi_count; + int entry_count; + int i, j; + + + if (!eb_have_multi_search(book)) + return; + + error_code = eb_multi_search_list(book, multi_list, &multi_count); + if (error_code != EB_SUCCESS) { + xprintf("eb_multi_search_list: %s\n", eb_error_message(error_code)); + return; + } + + for (i=0; i" */ + return eb_write_text_string(book, ">"); + } + } + + if (use_narrow_kana == 0) + return eb_hook_euc_to_ascii (book, appendix, container, code, argc, argv); + high = (argv[0] >> 8) & 0x7f; + low = (argv[0] & 0xff) & 0x7f; + + if (high == 0x25) { + int x; + x = table25[low-0x21]; + if (x != 'Z') { + if (x & 0x80) { /* Japanese Hankaku Kana (JISX0201.1978) */ + return eb_write_text_byte2(book, 0x8e, x); + } else if (x & 0x40) { /* Japanese Hankaku Dakuon */ + if (x >= 0x60) x -= 0x40; + eb_write_text_byte2(book, 0x8e, x + 0x80); + return eb_write_text_byte2(book, 0x8e, 0xde); + } else { + if (x < 0x20) x += 0x40; + eb_write_text_byte2(book, 0x8e, x+0x80); + return eb_write_text_byte2(book, 0x8e, 0xdf); + } + } + } else if (high == 0x21) { + if (table21[low-0x21] & 0x80) { + return eb_write_text_byte2(book, 0x8e, table21[low-0x21]); + } + + } + return eb_hook_euc_to_ascii (book, appendix, container, code, argc, argv); +} + +EB_Error_Code +hook_iso8859_1 (book, appendix, container, code, argc, argv) + EB_Book *book; + EB_Appendix *appendix; + void *container; + EB_Hook_Code code; + int argc; + const unsigned int *argv; +{ + if (escape_text) { + switch (argv[0]) { + case '&': + return eb_write_text_string(book, "&"); + case '<': + return eb_write_text_string(book, "<"); + case '>': + return eb_write_text_string(book, ">"); + } + } + + switch (argv[0]) { + case 0xa0: + return eb_write_text_byte1(book, 0x20); + default: + return eb_write_text_byte1(book, argv[0]); + } +} + +#ifdef USE_PAGER +FILE *popen_pager() +{ + char *pager; + pager = variable_ref("pager"); + if (pager == NULL || strcasecmp(pager,"off")==0 ) return NULL; + if (strcasecmp(pager,"on") == 0) { + pager = getenv("PAGER"); + } + if (pager == NULL) return NULL; + return popen(pager, "w"); +} + +int pclose_pager(FILE *stream) +{ + fflush(stream); + return pclose(stream); +} + +#endif /* USE_PAGER */ + +#ifdef USE_READLINE +static int issp (char); +static int +issp(ch) + char ch; +{ + if (ch=='\t' || ch==' ' || ch=='\r' || ch=='\n') return 1; + return 0; +} + +char * +stripwhite (string) + char *string; +{ + unsigned char *s, *t; + if (string == NULL) return NULL; + s = string; + while (issp(*s)) + s++; + if (*s == 0) + return (s); + + t = s + strlen (s) - 1; + while (t > s && issp(*t)) + t--; + *++t = '\0'; + return s; +} + +char ** +fileman_completion (text, start, end) + char *text; + int start, end; +{ + char **matches; + + matches = NULL; + + /* If this word is at the start of the line, then it is a command + to complete. Otherwise it is the name of a file in the current + directory. */ + if (start == 0) + matches = + rl_completion_matches (text, (rl_compentry_func_t *) command_generator); + return matches; +} + +/* Generator function for command completion. STATE lets us know whether + to start from scratch; without any state (i.e. STATE == 0), then we + start at the top of the list. */ +char * +command_generator (text, state) + char *text; + int state; +{ + static int list_index, len; + const char *name; + + /* If this is a new word to complete, initialize now. This includes + saving the length of TEXT for efficiency, and initializing the index + variable to 0. */ + if (!state) { + list_index = 0; + len = strlen (text); + } + + /* Return the next name which partially matches from the command list. */ + while ((name = command_table[list_index].name) != NULL) { + list_index++; + if (strncmp (name, text, len) == 0) + return (strdup(name)); + } + + /* If no names matched, then return NULL. */ + return NULL; +} +#endif diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/eblook.info b/lib/ebu/others/eblook-1.6.1+media-20200414/eblook.info new file mode 100644 index 0000000..f7485d5 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/eblook.info @@ -0,0 +1,755 @@ +¤³¤ì¤Ï eblook.info¡¢eblook.texi ¤è¤ê makeinfo ¥Ð¡¼¥¸¥ç¥ó 4.5 +¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤Þ¤·¤¿¡£ + +INFO-DIR-SECTION CD-ROM Book Utilities +START-INFO-DIR-ENTRY +* eblook: (eblook). Interactive EB interface command. +END-INFO-DIR-ENTRY + + This file documents eblook, an interactive EB interface command. + + Copyright (C) 1997,1998,1999,2000 Keisuke Nishida Copyright (C) +2000-2002 Satomi Copyright (C) 2000,2001 Kazuhiko Copyright (C) +2000-2002 NEMOTO Takashi + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided that the +entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + + Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that this permission notice may be stated in a +translation approved by the Free Software Foundation. + + +File: eblook.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) + +eblook +****** + + eblook ¤Ï¡¢EB +¥é¥¤¥Ö¥é¥ê¤òÍѤ¤¤¿ÂÐÏ÷¿¤ÎÅŻҼ­½ñ¸¡º÷¥³¥Þ¥ó¥É¤Ç¤¹¡£´Êñ¤Ê +ÀßÄê¤È¥³¥Þ¥ó¥É¤Ë¤è¤ê CD-ROM ½ñÀÒ¤¬ÍøÍѽÐÍè¤Þ¤¹¡£ + + Ëܽñ¤Ï eblook 1.6 ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£ + +* Menu: + +* Introduction:: ¤Ï¤¸¤á¤Ë +* Overview:: Âç¤Þ¤«¤Ê»È¤¤Êý +* Starting:: eblook ¤Îµ¯Æ° +* Setting:: ¼­½ñ¤ÎÁªÂò¤ÈÀßÄê +* Search:: ¸¡º÷Ë¡ +* Information:: ³Æ¼ï¾ðÊó +* Commands:: ¥³¥Þ¥ó¥É°ìÍ÷ +* Variables:: ÊÑ¿ô°ìÍ÷ +* Compile:: ¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë +* How To Get:: ºÇ¿·¾ðÊó¤ÎÆþ¼ê + + +File: eblook.info, Node: Introduction, Next: Overview, Prev: Top, Up: Top + +¤Ï¤¸¤á¤Ë +******** + + eblook ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê(*note EB: (eb)Top)¤òÍѤ¤¤¿ÂÐÏ÷¿¤ÎÅŻҼ­½ñ +¸¡º÷¥³¥Þ¥ó¥É¤Ç¤¹¡£´Êñ¤ÊÀßÄê¤È¥³¥Þ¥ó¥É¤Ë¤è¤ê CD-ROM ½ñÀÒ¤¬ÍøÍѽÐÍè¤Þ¤¹¡£ + + eblook +¤Ï¼ê·Ú¤µ¤ò½Å»ë¤·¤¿¥Ä¡¼¥ë¤Ç¤¢¤ê¡¢¥æ¡¼¥¶¡¦¥¢¥¯¥»¥¹¤Î´ÉÍý¤Ê¤É¡¢¥Í¥Ã +¥È¥ï¡¼¥¯ÍøÍѤòÁÛÄꤷ¤¿Ê£»¨¤Êµ¡Ç½¤ÏÄ󶡤·¤Æ¤¤¤Þ¤»¤ó¡£¤½¤Î¤è¤¦¤ÊÌÜŪ¤Ë¤Ï +NDTPD ¤È¤¤¤¦¥½¥Õ¥È¥¦¥§¥¢¤¬¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤¬ÍøÍѤˤʤì¤Þ¤¹¡£ +( ¤ò»²¾È) + + eblook ¤Ï¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¤¢¤Ê¤¿¤Ï¡¢Free Software +Foundation ¤¬ ¸øɽ¤·¤¿ GNU General Public License (GNU +°ìÈ̸øÍ­»ÈÍѵöÂú)¤Î¥Ð¡¼¥¸¥ç¥ó 2 +¤¢¤ë¤¤¤Ï¤½¤ì°Ê¹ß¤Î³Æ¥Ð¡¼¥¸¥ç¥ó¤ÎÃ椫¤é¤¤¤º¤ì¤«¤òÁªÂò¤·¡¢¤½¤Î¥Ð¡¼¥¸¥ç¥ó¤¬ +Äê¤á¤ë¾ò¹à¤Ë½¾¤Ã¤Æ eblook ¤òºÆÇÛÉÛ¤Þ¤¿¤ÏÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ + + eblook +¤ÏÍ­ÍѤȤϻפ¤¤Þ¤¹¤¬¡¢ÈÒÉۤˤ¢¤¿¤Ã¤Æ¤Ï¡¢»Ô¾ìÀ­µÚ¤ÓÆÃÄêÌÜŪŬ¹çÀ­ +¤Ë¤Ä¤¤¤Æ¤Î°ÅÌÛ¤ÎÊݾڤò´Þ¤á¤Æ¡¢¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤Ê¤¤¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï +GNU General Public License ¤ò¤ªÆɤߤ¯¤À¤µ¤¤¡£ + + ²Ã¤¨¤Æ¤¢¤Ê¤¿¤Ï¡¢eblook ¤È¶¦¤ËÍøÍѤ¹¤ë CD-ROM +½ñÀҤλÈÍѵöÂú¤â¼é¤é¤Ê¤±¤ì ¤Ð¤Ê¤ê¤Þ¤»¤ó¡£½ñÀÒ¤ÎÍøÍѤ¬µö¤µ¤ì¤Ê¤¤¾ì¹ç¤Ë¤â +eblook ¤òÍѤ¤¤ë¤³¤È¤Ï²Äǽ¤« ¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ë eblook +¤òÍѤ¤¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ + + +File: eblook.info, Node: Overview, Next: Starting, Prev: Introduction, Up: Top + +Âç¤Þ¤«¤Ê»È¤¤Êý +************** + + ¼­½ñ¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò°ú¿ô¤Ë¡¢eblook ¤ò¥·¥§¥ë¤«¤éµ¯Æ°¤·¤Þ¤¹¡£ + + % eblook /cdrom + eblook> -!- + + `help' ¤Ç¥³¥Þ¥ó¥É°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£ + + eblook> help + book [directory [appendix]] - Set a book directory + info - Show information of the selected book + list - List all dictionaries in the selected book + select subbook - Select a subbook + subinfo - Show information of the selected subbook + copyright - Show copyright of the selected subbook + menu - Show the menu of the selected subbook + search pattern [offset] - Search for a word + content entry [offset] - Display contents of entry + dump entry [offset] - Display dumps of entry + font [id] - Display the bitmap of gaiji + show [variable] - Show the value of variables + set variable value - Set a variable to the value + unset variable... - Unset variables + candidate - Show candidates for multi search + label [id] - Show label for multi search + help - Show this message + quit - Quit program + + `list' ¤Ç¼­½ñ°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£ + + eblook> list + 1. KOKUGO ¹ñ¸ì¼­Åµ + 2. EIWA ±Ñϼ­Åµ + + `select' ¤Ç¼­½ñÁªÂò¤·¡¢`search' ¤Ç¸¡º÷¤·¤Þ¤¹¡£ + + eblook> select 2 + eblook> search test + 1. 1234:567 test + + `content' ¤ÇÆâÍÆɽ¼¨¤·¤Þ¤¹¡£ + + eblook> content 1 + test /t'est/ + [̾] 1. »î¸³... + + `quit' ¤Ç½ªÎ»¤·¤Þ¤¹¡£ + + eblook> quit + % -!- + + +File: eblook.info, Node: Starting, Next: Setting, Prev: Overview, Up: Top + +eblook ¤Îµ¯Æ° +************* + + eblook ¤Îµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ + + eblook [option...] [BOOK-DIRECTORY [APPENDIX-DIRECTORY]] + + BOOK-DIRECTORY ¤Ï½ñÀҤΤ¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£¾Êά¤µ¤ì¤¿¾ì +¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤¬½ñÀҥǥ£¥ì¥¯¥È¥ê¤È¤ß¤Ê¤µ¤ì¤Þ¤¹¡£ + + APPENDIX-DIRECTORY ¤Ë¤Ï Appendix ¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢Appendix ¤ÏÍøÍѤµ¤ì¤Þ¤»¤ó¡£(*note Appendix::) + + ¤³¤ì¤é°ú¿ô¤ÎÃͤϡ¢¤É¤Á¤é¤âµ¯Æ°¸å¤ËÊѹ¹¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ *note +Setting:: ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ + + ¥ª¥×¥·¥ç¥ó¤Ë¤Ï¼¡¤Î¤â¤Î¤¬Í­¸ú¤Ç¤¹¡£ + +`-e' +`--encoding=NAME' + ʸ»ú¥³¡¼¥É¤ò»ØÄꤷ¤Þ¤¹ (euc, sjis, jis, + utf8)¡£¥Ç¥Õ¥©¥ë¥È¤Ï¼«Æ°È½ÊÌ¡£ »ÈÍѤǤ­¤ëʸ»ú¥³¡¼¥É¤Ï¥·¥¹¥Æ¥à¤Î + iconv ¥é¥¤¥Ö¥é¥ê¤Ë°Í¸¤·¤Þ¤¹¡£ iconv ¤Î̵¤¤¥·¥¹¥Æ¥à¤Ç¤Ï euc, sjis + ¤¬»ÈÍѲÄǽ¤Ç¤¹¡£ + +`-q' +`--no-init-file' + ½é´ü²½¥Õ¥¡¥¤¥ë(`~/.eblookrc')¤òÆɤ߹þ¤ß¤Þ¤»¤ó¡£ + +`-v' +`--version' + ¥³¥Þ¥ó¥É¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ + +`-h' +`--help' + ¥³¥Þ¥ó¥É¤Î¥Ø¥ë¥×¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ + + +File: eblook.info, Node: Setting, Next: Search, Prev: Starting, Up: Top + +¼­½ñ¤ÎÁªÂò¤ÈÀßÄê +**************** + + eblook ¤òµ¯Æ°¤¹¤ë¤È¡¢ºÇ½é¤Ë¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë½é´ü²½¥Õ¥¡¥¤¥ë +(`~/.eblookrc', DOSÈÇ ¤Î¾ì¹ç¤Ï `%HOME%/eblookrc') ¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï°Ê²¼¤Ëµ­ºÜ¤µ¤ì¤¿Ç¤°Õ¤Î¥³¥Þ¥ó¥É¤òµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢ÀèƬ¤«¤é½ç¤Ë²ò¼á¤µ¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤Î¥³¥Þ¥ó¥É¼Â¹Ô¤Ï½ñÀÒ¥Õ¥¡¥¤¥ë¤ò³«¤¯Á°¤Ë¼Â¹Ô¤µ¤ì¤ë¤¿¤á¡¢¸¡º÷¥³¥Þ¥ó¥ÉÅù¤Ï¥¨¥é¡¼¤È¤Ê¤ê¤Þ¤¹¡£ + + ¥³¥Þ¥ó¥É `book' ¤Ë¤è¤ê½ñÀҤΤ¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ + + eblook> book `/cdrom' `/usr/local/share/eb/appendix' + + ½ñÀҥǥ£¥ì¥¯¥È¥ê¤Ë´Þ¤Þ¤ì¤ë¼­½ñ¤Î°ìÍ÷¤Ï¡¢¥³¥Þ¥ó¥É `list' ¤Ë¤è¤ê¸«¤ë +¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ + + eblook> list + 1. KOKUGO ¹ñ¸ì¼­Åµ + 2. EIWA ±Ñϼ­Åµ + + ¼­½ñ¤Ï¥³¥Þ¥ó¥É `select' ¤Ë¤è¤ê¥»¥Ã¥È¤¹¤ë¤³¤È¤Ç¡¢ÍøÍѲÄǽ¤È¤Ê¤ê¤Þ¤¹¡£ + + eblook> select 1 + + ¤¢¤ë¤¤¤Ï + + eblook> select KOKUGO + + ¥³¥Þ¥ó¥É `set' ¤Ë¤è¤ê¡¢¥ª¥×¥·¥ç¥ó¤ÎÀßÄ꤬²Äǽ¤Ç¤¹¡£Î㤨¤Ð¥×¥í¥ó¥×¥È +¤òÊѹ¹¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ + + eblook> set prompt "eblook$ " + eblook$ -!- + +¾å¤Î¤è¤¦¤Ë¡¢°ú¿ô¤Ë¶õÇò¤ò´Þ¤á¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢Ãͤò¥À¥Ö¥ë¥¯¥ª¡¼¥È¤Ç°ú +ÍѽÐÍè¤Þ¤¹¡£ + + ÊÑ¿ô¤ÎÃͤϥ³¥Þ¥ó¥É `show' ¤Ç¸«¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +Ãͤò̵¸ú¤Ë¤¹¤ë¤Ë¤Ï¥³¥Þ¥ó¥É `unset' ¤¬¤¢¤ê¤Þ¤¹¡£ + + eblook$ show prompt + eblook$ + eblook$ unset prompt + eblook> show + version eblook 1.0 + max-text 8192 + max-hits 256 + eblook> -!- + + ÀßÄꡦ»²¾È¤Ç¤­¤ëÊÑ¿ô¤Î°ìÍ÷¤Ï *Note Variables:: ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ + + +File: eblook.info, Node: Search, Next: Information, Prev: Setting, Up: Top + +¸¡º÷ÊýË¡ +******** + + ¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î eblook +¤Ç¤Ï¡¢¸¡º÷Êý¼°¤È¤·¤Æñ¸ì¸¡º÷(Á°Êý°ìÃ׸¡º÷¡¢¸åÊý +°ìÃ׸¡º÷¡¢´°Á´°ìÃ׸¡º÷)¤È¡¢¥á¥Ë¥å¡¼¤Î»²¾È¤ò¹Ô¤Ê¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿¡¢ +³°»ú¤ò°·¤¦¤³¤È¤â½ÐÍè¤Þ¤¹¡£ + +* Menu: + +* Word Search:: ñ¸ì¸¡º÷ +* Keyword Search:: ¾ò·ï¸¡º÷ +* Multiple Search:: Ê£¹ç¸¡º÷ +* Menu:: ¥á¥Ë¥å¡¼ +* Content:: ÆâÍÆɽ¼¨ +* Appendix:: ³°»ú¤ÎÃÖ´¹ + + +File: eblook.info, Node: Word Search, Next: Keyword Search, Prev: Search, Up: Search + +ñ¸ì¸¡º÷ +======== + + ¥³¥Þ¥ó¥É `search' ¤Ç¸¡º÷¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£¤¢¤é¤«¤¸¤á¼­½ñ¤òÁªÂò¤·¤Æ¤ª¤¯ +ɬÍפ¬¤¢¤ê¤Þ¤¹¡£ + + eblook> select EIWA + eblook> search test + 1. 1234:567 test + + ÊÑ¿ô `search-method' ¤Ë¤è¤ê¸¡º÷Êý¼°¤òÊѹ¹½ÐÍè¤Þ¤¹¡£¸½ºß¡¢¼¡¤Î¤â¤Î¤ò +»ØÄê²Äǽ¤Ç¤¹¡£(¥Ç¥Õ¥©¥ë¥È¤Ï `glob') + +`word' + Á°Êý°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¦¡£ + +`endword' + ¸åÊý°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¦¡£ + +`exact' + ´°Á´°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¦¡£ + +`glob' + ʸ»úÎó¤ò¸«¤Æ¡¢¸¡º÷Ë¡¤ò·èÄꤷ¤Þ¤¹¡£¸¡º÷¸ì¤¬ `foo*' ¤Ê¤é¤Ð `foo' + ¤ò¥­¡¼¤ËÁ°Êý°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¤¡¢Æ±ÍÍ¤Ë `*foo' ¤Ê¤é¤Ð¸åÊý°ìÃ׸¡º÷¤ò¹Ô + ¤¤¡¢`foo' ¤Ê¤é¤Ð´°Á´°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ + + eblook> show search-method + glob + eblook> search test* + 1. 1234:567 test + 2. 2345:678 testament + eblook> search *test + 1. 1234:567 test + 2. 3456:789 latest + eblook> set search-method word + eblook> search test + 1. 1234:567 test + 2. 2345:678 testament + +½ÐÎϤΰì·åÌܤϥ¨¥ó¥È¥ê¤ÎÈÖ¹æ¤Ç¡¢Æó·åÌܤϥ¨¥ó¥È¥ê¤ò·èÄꤹ¤ë¤¿¤á¤Î¥³¡¼¥ÉÈÖ +¹æ¤Ç¤¹¡£¤¤¤º¤ì¤«¤ò¥³¥Þ¥ó¥É `content' ¤ËÅϤ¹¤³¤È¤Ç¡¢¥¨¥ó¥È¥ê¤ÎÆâÍƤ¬ +½ÐÎϤµ¤ì¤Þ¤¹¡£(*note Content::) + + ÊÑ¿ô `max-hits' ¤Ë¤è¤ê¡¢½ÐÎϤ¹¤ë¸«½Ð¤·¸ì¤Î¿ô¤òÀ©¸Â½ÐÍè¤Þ¤¹¡£ + + eblook> show max-hits + 256 + eblook> search t* + 1. 1263:25 t + 2. 1273:832 t. + : + 255. 1312:684 tabu + + + ³¤­¤òɽ¼¨¤¹¤ë¤Ë¤Ï¡¢`search' ¤ËÂèÆó°ú¿ô¤òÅϤ·¤Æ²¼¤µ¤¤¡£ + + eblook> search t* 256 + 256. 1336:32 tantalization + 257. 1358:2ab tantalize + : + 511. 14c6:233 tea shop + + + °ú¿ô¤ä `max-hits' ¤Ë 0 ¤ò»ØÄꤹ¤ë¤È¡¢Á´¤Æ¤Î¥¨¥ó¥È¥ê¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ + + +File: eblook.info, Node: Keyword Search, Next: Multiple Search, Prev: Word Search, Up: Search + +¾ò·ï¸¡º÷ +======== + + ¥³¥Þ¥ó¥É `search' ¤Ç¸¡º÷¤ò¹Ô¤Ê¤¦ºÝ¤Ë `=foo' ¤Î¤è¤¦¤Ë `=' +¤Ë³¤¤¤Æ¥­¡¼¥ï¡¼¥É¤ò»ØÄꤹ¤ì¤Ð¾ò·ï¸¡º÷¤ò¹Ô¤¤¤Þ¤¹¡£`=foo=bar' ¤Î¤è¤¦ +¤Ë¡¢Ê£¿ô¤Î¥­¡¼¥ï¡¼¥É¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ + + eblook> search =ÆüËÜ=Ãã + 1. 54a:56a ¤¦¤°¤¤¤¹¡Úòô¡Û¥¦¥°¥Ò¥¹ + 2. 658:2ce ¤¦¤ì¤·¤Î¡¾¤Á¤ã¡Ú´òÌîÃã¡Û + 3. 129e:256 ¥°¥ê¡¼¥ó¡¾¥Æ¥£¡¼¡Úgreen tea¡Û + 4. 1577:166 ¤³¤¦¡¾¤Á¤ã¡Ú¹ÈÃã¡Û + 5. 28a9:bc ¤Á¤ã¤Î¤Û¤ó¡ÚÃã¤ÎËÜ¡Û + 6. 3323:29e ¤Ï¤Ö¡¾¤½¤¦¡ÚÇÈÉÛÁð¡Û¡Å¥µ¥¦ + + (°Ê¾å¡¢Îã¤Ï¹­¼­±ñÂè»ÍÈǤè¤ê) + + +File: eblook.info, Node: Multiple Search, Next: Menu, Prev: Keyword Search, Up: Search + +Ê£¹ç¸¡º÷ +======== + + ¥³¥Þ¥ó¥É `label' ¤Ë¤è¤ê¡¢¤½¤Î¼­½ñ¤Ç¤ÎÊ£¹ç¸¡º÷¤Î¥é¥Ù¥ë¤òÁ´¤Æɽ¼¨¤·¤Þ +¤¹¡£ÈÖ¹æ¤ÏÊ£¹ç¸¡º÷ ID ¤Ç¤¹¡£`label 1' ¤È¤¹¤ë¤È¡¢¤½¤ÎÈÖ¹æ¤Î ID ¤Î¥é +¥Ù¥ë¤Î¤ß½ÐÎϤ·¤Þ¤¹¡£ + + eblook> label + 1. ÃÏ°è¡Ê¢ª»²¾È¡Ë:»þÂå¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: + 2. ¹ñ̾¡¦ÃÏ°è̾¡Ê¢ª»²¾È¡Ë:ÃÏÊý̾¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: + 3. ¹ñ̾¤Ê¤É¡Ê¢ª»²¾È¡Ë:¥¸¥ã¥ó¥ë¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: + 4. µ¨Àá¡Ê¢ª»²¾È¡Ë:¥¸¥ã¥ó¥ë¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: + + ¥³¥Þ¥ó¥É `candidate' ¤Ë¤è¤ê¡¢Ê£¹ç¸¡º÷¤Î¥­¡¼¥ï¡¼¥É¤Î¸õÊä¤òɽ¼¨¤·¤Þ¤¹¡£ + + eblook> candidate + multi search 1: + label 1: ÃÏ°è¡Ê¢ª»²¾È¡Ë + candidates: exist + *ÆüËÜ + *Ãæ¹ñ¡¦Ä«Á¯ + *¥è¡¼¥í¥Ã¥Ñ¡¦ËÌ¥¢¥á¥ê¥« + *¥¤¥ó¥É¡¦¥¢¥Õ¥ê¥«¤Ê¤É + label 2: »þÂå¡Ê¢ª»²¾È¡Ë + candidates: exist + *¶áÂå°ÊÁ° + *¶á¸½Âå + label 3: ¥­¡¼¥ï¡¼¥É + candidates: not-exist + label 4: ¥­¡¼¥ï¡¼¥É + candidates: not-exist + multi search 2: + label 1: ¹ñ̾¡¦ÃÏ°è̾¡Ê¢ª»²¾È¡Ë + candidates: exist + (¸åά) + + ¼ÂºÝ¤ËÊ£¹ç¸¡º÷¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢¥³¥Þ¥ó¥É `search' ¤Ç¸¡º÷¤ò¹Ô¤Ê¤¦ºÝ¤Ë +`:Ãæ¹ñ¡¦Ä«Á¯:¶á¸½Âå:¤Ò¤È:*:' ¤Î¤è¤¦¤Ë `:' ¤Ç¶èÀڤäƥ­¡¼¥ï¡¼¥É +¤ò»ØÄꤷ¤Þ¤¹¡£ + + eblook> search :Ãæ¹ñ¡¦Ä«Á¯:¶á¸½Âå:¤Ò¤È:*: + 1. 2fa:36 ¤¤¤¯¡¾¤¿¤Ä¤Õ¡Ú°êãÉ×¡Û + 2. 759:636 ¤¨¤ó¡¾¤»¤¤¤¬¤¤¡ÚêÏÀ¤³®¡Û¥ó¡Å + 3. 7a7:25e ¤ª¤¦¡¾¤³¤¯¤¤¡Ú²¦¹ñ°Ý¡Û¥ï¥¦¡Å + 4. 7ba:6ec ¤ª¤¦¡¾¤Á¤ç¤¦¤á¤¤¡ÚÝêÃûÌáۥ復¥Æ¥¦¡Å + (¸åά) + + ¥³¥Þ¥ó¥É `set multi-search-id 2' ¤Ê¤É¤È¤¹¤ë¤È¡¢Ê£¹ç¸¡º÷ ID ¤òÀÚ¤êÂØ +¤¨¤é¤ì¤Þ¤¹¡£ + + eblook> set multi-search-id 2 + eblook> label 2 + 2. ¹ñ̾¡¦ÃÏ°è̾¡Ê¢ª»²¾È¡Ë:ÃÏÊý̾¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: + eblook> search :ÆüËÜ:Ë̳¤Æ»:*:*: + 1. 7b:3ac ¤¢¤«¤Ó¤é¡ÚÀÖÊ¿¡Û + 2. 8b:218 ¤¢¤«¤ó¡Ú°¤´¨¡Û + 3. 8b:31a ¤¢¤«¤ó¡¾¤³¡Ú°¤´¨¸Ð¡Û + 4. 8b:434 ¤¢¤«¤ó¡¾¤³¤¯¤ê¤Ä¤³¤¦¤¨¤ó¡Ú°¤´¨¹ñΩ¸ø±à¡Û¡Å¥ó + (¸åά) + + (°Ê¾å¡¢Îã¤Ï¹­¼­±ñÂè»ÍÈǤè¤ê) + + +File: eblook.info, Node: Menu, Next: Content, Prev: Multiple Search, Up: Search + +¥á¥Ë¥å¡¼ +======== + + ¼­½ñ¤¬¥á¥Ë¥å¡¼¤ò»ý¤Ä¾ì¹ç¡¢¥³¥Þ¥ó¥É `menu' ¤Ë¤è¤ê½ÐÎϤµ¤ì¤Þ¤¹¡£ + + eblook> menu + ¡Ø¹ñ¸ì¼­Åµ¡Ù¤Ë¤Ä¤¤¤Æ + ËÞÎã + + ³Ñ³ç¸Ì¤Ë¶´¤Þ¤ì¤¿¥¿¥°¤Î¤¦¤Á¡¢`/reference=' ¤È¤Ê¤Ã¤Æ¤¤¤ëÉôʬ¤Î¸å¤í¤¬ +¥á¥Ë¥å¡¼¤ÎÆâÍƤȤʤäƤª¤ê¡¢¥³¥Þ¥ó¥É `content' ¤Ë¤è¤ê¤½¤ÎÀè¤òÆÀ¤ë¤³ +¤È¤¬½ÐÍè¤Þ¤¹¡£(*note Content::) + + eblook> content 2a18:2 + ¡Ø¹ñ¸ì¼­Åµ Âè°ìÈÇ¡Ù + + 19xxǯxx·îxxÆü Âè°ìÈÇÂè°ìºþ + + +File: eblook.info, Node: Content, Next: Appendix, Prev: Menu, Up: Search + +ÆâÍÆɽ¼¨ +======== + + ¥³¥Þ¥ó¥É `content' ¤Ë¤è¤ê¡¢¥¨¥ó¥È¥ê¤ÎÆâÍƤ¬ÆÀ¤é¤ì¤Þ¤¹¡£ + + eblook> search test + 1. 1234:567 test + 2. 2345:678 testament + eblook> content 1 + test /t'est/ + [̾] 1. »î¸³... + eblook> content 1234:567 + test /t'est/ + [̾] 1. »î¸³... + +ÆâÍƤ¬¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»ý¤Ä¾ì¹ç¡¢¤½¤ÎÉôʬ¤¬Àè¤Î¥á¥Ë¥å¡¼¤ÈƱ¤¸¥¿¥°¤Ë¤è¤Ã¤Æɽ +¤ï¤µ¤ì¤Þ¤¹¡£ + + `search' ¤ÈƱÍͤˡ¢½ÐÎϤ¹¤ë¥Ð¥¤¥È¿ô¤òÊÑ¿ô `max-text' ¤Ë¤è¤Ã¤Æ +Ä´Àá½ÐÍè¤Þ¤¹¡£Â³¤­¤òÆÀ¤ë¾ì¹ç¤Ë¤Ï `content' ¤ËÂèÆó°ú¿ô¤òÍ¿¤¨¤ë¤Î¤âƱ +¤¸¤Ç¤¹¡£0 ¤òÍ¿¤¨¤ë¤ÈºÇ¸å¤Þ¤Ç½ÐÎϤµ¤ì¤Þ¤¹¡£ + + ½ÐÎÏÆâÍƤγ°»úÉôʬ¤òÄ̾ï¤Î¥Æ¥­¥¹¥Èʸ»ú¤ÇÃÖ¤­´¹¤¨¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ +*Note Appendix:: ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ + + +File: eblook.info, Node: Appendix, Prev: Content, Up: Search + +Appendix ¥Õ¥¡¥¤¥ë¤ÎÍøÍÑ +======================= + + eblook ¤¬ÆâÉô¤ÇÍøÍѤ·¤Æ¤¤¤ë EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢Appendix ¤È¸Æ¤Ð¤ì¤ë +³Æ¼­½ñ¤Ë¸ÇÍ­¤Î¹àÌܶèÀڤ국¹æ¤ä³°»úÂåÂØË¡¤ò»ØÄꤹ¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£ +eblook ¤òñÂλÈÍѤ¹¤ë¾ì¹ç¤Ê¤É¡¢³°»ú bitmap ¤¬É½¼¨¤Ç¤­¤Ê¤¤¾ì¹ç¤ä +¹àÌܶèÀڤ꤬¤¦¤Þ¤¯¼«Æ°ÀßÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢Á°¸å¹àÌܤؤΰÜÆ°µ¡Ç½¤¬Àµ¾ï¤Ë +Æ°ºî¤·¤Ê¤¤¾ì¹ç¤Ë¤´ÍøÍѲ¼¤µ¤¤¡£ + + ¼çÍפʼ­½ñ¤Ë¤Ä¤¤¤Æ¤Ï´û¤Ë¾¤Î¿Í¤¬ Appendix ¥Õ¥¡¥¤¥ë¤òºîÀ½¤·¤Æ¤¯¤ì¤Æ +¤¤¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¾ì¹ç¤Ë¤Ï Appendix ¥Ñ¥Ã¥±¡¼¥¸¤òÆþ¼ê¤·¡¢Å¬Åö¤Ê +¥Ç¥£¥ì¥¯¥È¥ê¤ËŸ³«¤·¤Æ²¼¤µ¤¤¡£ + +NDTPD + + + eblook ¥³¥Þ¥ó¥É¤ÎÂèÆó°ú¿ô¤«¡¢¤â¤·¤¯¤Ï¥³¥Þ¥ó¥É `book' ¤ÎÂèÆó°ú¿ô¤È¤· +¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤êµ¡Ç½¤·¤Þ¤¹¡£ (*note Starting::) + + ¼«Ê¬¤Ç Appendix ¤òºîÀ½¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¸½ºß¤Î¤È¤³¤íÌÀʸ²½¤µ¤ì¤¿ +ÀâÌÀʸ¤¬¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢´û¸¤ÎŬÅö¤Ê appendix ¥Õ¥¡¥¤¥ëÃæ¤Î `*.app' +¤ò»²¹Í¤ËºîÀ½¤·¤Æ²¼¤µ¤¤¡£ + +¹àÌܶèÀÚ¤ê¤Î»ØÄê +---------------- + + ¹àÌܴ֤ζèÀڤ국¹æ¤¬Àµ¾ï¤Ëǧ¼±¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë»ØÄꤷ¤Þ¤¹¡£ +¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¾ì¹ç¡¢¤¿¤¤¤Æ¤¤¤Ï appendix ¥Õ¥¡¥¤¥ëÃæ¤Ç + + `stop-code 0x1f09 0x0001' + + ¤ò»ØÄꤹ¤ì¤ÐÎɤ¤¤È»×¤¤¤Þ¤¹¤Î¤Ç¤ª»î¤·²¼¤µ¤¤¡£ + +³°»ú¤ÎÃÖ´¹ +---------- + + EB ¥é¥¤¥Ö¥é¥ê¤Îµ¡Ç½¤È¤·¤Æ¡¢CD-ROM +½ñÀҤ˴ޤޤì¤ëÆüì¤Ê³°»ú¤òÄ̾ï¤Îʸ»úÎó +¤ÇÃÖ¤­´¹¤¨¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£²¿¤â¤·¤Ê¤¤¤È¡¢³°»ú¤Ï¼¡¤Î¤è¤¦¤Ëɽ¤ï¤µ¤ì¤Þ¤¹¡£ + + eblook> content 1234:567 + test /tst/ + 1. »î¸³... + + ³°»ú¤ÎÃÖ¤­´¹¤¨¤ò¹Ô¤Ê¤¦¤È¡¢°Ê²¼¤Î¤è¤¦¤Ëɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +(lookup ¤ÈÁȤ߹ç¤ï¤»¤Æ»ÈÍѤ¹¤ë¤È¤­¤Ï¡¢³°»ú¤ò bitmap ɽ¼¨¤¹¤ë¤³¤È +¤¬²Äǽ¤Ê¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¹¥¤ß¤ÎÊýË¡¤òÁªÂò¤·¤Æ²¼¤µ¤¤¡£) + + eblook> book /cdrom /usr/local/share/eb/appendix + eblook> content 1234:567 + test /t'est/ + [̾] 1. »î¸³... + eblook> -!- + + ¤¢¤ë¤¤¤Ï¥³¥Þ¥ó¥É `font' ¤Ë¤è¤ê¡¢³°»ú¤Î¥Ç¡¼¥¿¤ò xbm ·Á¼°¤Î¥Ó¥Ã¥È¥Þ¥Ã +¥×¥Ç¡¼¥¿¤È¤·¤ÆÆÀ¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ + + eblook> font ha123 + #define default_width 8 + #define default_height 16 + static unsigned char default_bits[] = { + 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0x18, 0x24, 0x42, 0x7e, 0x02, 0x02, + 0x44, 0x38, 0x00, 0x00}; + + +File: eblook.info, Node: Information, Next: Commands, Prev: Search, Up: Top + +³Æ¼ï¾ðÊó +******** + + ¥³¥Þ¥ó¥É `info' ¤Ë¤è¤ê¡¢½ñÀҤξðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ + + eblook> info + disc type: EPWING + character code: JIS X 0208 + the number of dictionaries: 4 + + ¥³¥Þ¥ó¥É `subinfo' ¤Ë¤è¤ê¡¢ÁªÂò¤·¤Æ¤¤¤ë¼­½ñ¤Î¾ðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ + + eblook> select EIWA + eblook> subinfo + title: ±Ñϼ­Åµ + directory: EIWA + search methods: word endword exact menu + font sizes: 16 24 30 48 + widw font characters: 0xa123 -- 0xa456 + + ¥³¥Þ¥ó¥É `copyright' ¤Ë¤è¤ê¡¢ÁªÂò¤·¤Æ¤¤¤ë¼­½ñ¤ÎÃøºî¸¢¾ðÊ󤬽ÐÎϤµ¤ì +¤Þ¤¹¡£ + + eblook> copyright + ¡Ö±Ñϼ­Åµ¡× Copyright (C) 1998 Keisuke Nishida + + ¥³¥Þ¥ó¥É `help' ¤Ë¤è¤ê¡¢¥³¥Þ¥ó¥É¤Î°ìÍ÷¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ + + +File: eblook.info, Node: Commands, Next: Variables, Prev: Information, Up: Top + +¥³¥Þ¥ó¥É°ìÍ÷ +************ + +`book [DIRECTORY [APPENDIX]]' + ¼­½ñ¤òÁªÂò¤·¤Þ¤¹¡£Âè°ì°ú¿ô¤Ë¤Ï½ñÀҤΤ¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¡¢ÂèÆó°ú¿ô¤Ë¤Ï + Appendix + ¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£Á´¤Æ¾Êά¤·¤¿¾ì¹ç¤Ë¤Ï¡¢¸½ºß¤ÎÀß + Ä꤬ɽ¼¨¤µ¤ì¤Þ¤¹¡£ + +`info' + ÁªÂò¤µ¤ì¤Æ¤¤¤ë½ñÀҤ˴ؤ¹¤ë¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ + +`list' + ÁªÂò¤µ¤ì¤Æ¤¤¤ë½ñÀҤμ­½ñ°ìÍ÷¤ò½ÐÎϤ·¤Þ¤¹¡£ + +`select DICTIONARY' + ¼­½ñ¤òÁªÂò¤·¤Þ¤¹¡£ÀßÄꤹ¤Ù¤­Ãͤϡ¢`list' + ¥³¥Þ¥ó¥É¤Î½ÐÎϤ«¤éÆÀ¤é¤ì¤Þ¤¹¡£ + +`subinfo' + ÁªÂò¤µ¤ì¤Æ¤¤¤ë¼­½ñ¤Ë´Ø¤¹¤ë¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ + +`copyright' + ÁªÂò¤µ¤ì¤Æ¤¤¤ë¼­½ñ¤ÎÃøºî¸¢¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ + +`menu' + ÁªÂò¤µ¤ì¤Æ¤¤¤ë¼­½ñ¤¬¥á¥Ë¥å¡¼¤ò»ý¤Ä¾ì¹ç¡¢¤½¤ì¤ò½ÐÎϤ·¤Þ¤¹¡£(*note + Menu::) + +`search PATTERN [OFFSET]' + ¸¡º÷¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ÂèÆó°ú¿ô¤Ï½ÐÎϤγ«»Ï°ÌÃÖ¡£(*note Search::) + +`content ENTRY [OFFSET]' + ¥¨¥ó¥È¥ê¤ÎÆâÍƤò½ÐÎϤ·¤Þ¤¹¡£ÂèÆó°ú¿ô¤Ï½ÐÎϤγ«»Ï°ÌÃÖ¡£(*note + Content::) + +`font [ID]' + ³°»ú¥Ç¡¼¥¿¤ò xbm + ·Á¼°¤Ç½ÐÎϤ·¤Þ¤¹¡£°ú¿ô¤ò¾Êά¤·¤¿¾ì¹ç¡¢Á´¤Æ¤Î³°»ú¤Î¾ðÊó¤ò + ½ÐÎϤ·¤Þ¤¹¡£³°»ú¤Î¹â¤µ¤ÏÊÑ¿ô `font' ¤Ë¤è¤êÍ¿¤¨¤é¤ì¤Þ¤¹¡£ + +`show [`-a'] [VARIABLE]' + ÊÑ¿ô¤ÎÃͤò½ÐÎϤ·¤Þ¤¹¡£°ú¿ô¤ò¾Êά¤·¤¿¾ì¹ç¡¢¤¹¤Ù¤Æ¤ÎÊÑ¿ô¤Î°ìÍ÷¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ + `-a' ¤ò»ØÄꤹ¤ë¤È¡¢Ä̾ïɽ¼¨¤µ¤ì¤Ê¤¤ÆâÉôÊÑ¿ô¤âɽ¼¨¤·¤Þ¤¹¡£ + +`set VARIABLE VALUE' + ÊÑ¿ô¤ÎÃͤò¥»¥Ã¥È¤·¤Þ¤¹¡£ + +`unset VARIALBE...' + ÊÑ¿ô¤ò¥¯¥ê¥¢¤·¤Þ¤¹¡£ + +`help' + ¥³¥Þ¥ó¥É¤Î°ìÍ÷¤ò½ÐÎϤ·¤Þ¤¹¡£ + +`quit' + eblook ¤ò½ªÎ»¤·¤Þ¤¹¡£ + + +File: eblook.info, Node: Variables, Next: Compile, Prev: Commands, Up: Top + +ÊÑ¿ô°ìÍ÷ +******** + +`search-method' + `search' ¥³¥Þ¥ó¥É¤Î¸¡º÷Ë¡¡£`exact', `word', `endword', `glob' + ¤Î¤¤¤º¤ì¤«¤¬²Äǽ¡£¥Ç¥Õ¥©¥ë¥È¤Ï `glob'¡£ + +`max-hits' + `search' ¥³¥Þ¥ó¥É¤¬½ÐÎϤ¹¤ëºÇÂç¤Î¹àÌÜ¿ô¡£0 ¤Î¤È¤­ÌµÀ©¸Â¡£ + ¥Ç¥Õ¥©¥ë¥È¤Ï 256¡£ + +`max-text' + `content' ¥³¥Þ¥ó¥É¤¬½ÐÎϤ¹¤ëɽ¼¨¥Ð¥¤¥È¿ô(¤ÎÌÜ°Â)¡£0 ¤Î¤È¤­ÌµÀ©¸Â¡£ + ¥Ç¥Õ¥©¥ë¥È¤Ï 8192¡£ + +`font' + ³°»ú¥Ç¡¼¥¿¤Î¹â¤µ¡£¥Ç¥Õ¥©¥ë¥È¤Ï 16¡£ + +`kanji-code' + Æþ½ÐÎϤÎʸ»ú¥³¡¼¥É¡£ÀßÄê½ÐÍè¤ëÃÍ¤Ï `jis', `sjis', `euc', `utf8', + `auto' ¤Ê¤É¡£(Âçʸ»ú¡¢¾®Ê¸»ú¤Î¶èÊ̤ʤ·)¡£»ÈÍѤǤ­¤ë¥³¡¼¥É¤Ï OS + ¤Ë°Í¸¤·¤Þ¤¹¡£ + +`prompt' + ¥×¥í¥ó¥×¥È¡£¥Ç¥Õ¥©¥ë¥È¤Ï "eblook> "¡£ + +`version' + eblook ¤Î¥Ð¡¼¥¸¥ç¥óÈֹ档 + +`use-narrow-kana' + "true" ¤ò»ØÄꤹ¤ë¤È½ÐÎϤËȾ³Ñ¥«¥Êʸ»ú¤ò´Þ¤á¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ï + "off" ¤Ç¡¢ Ⱦ³Ñ¥«¥Êʸ»ú¤ÏÁ´³Ñʸ»ú¤È¤·¤Æ½ÐÎϤµ¤ì¤Þ¤¹¡£ + +`stop-code' + [ÇÑ]¥Æ¥­¥¹¥È½ÐÎϤνªÎ»¥³¡¼¥É¡£"set stop-code 0x1f090000" + ¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ + ¼­½ñ¤Ë¤è¤Ã¤Æ¤Ï¡¢¤³¤ì¤ò»ØÄꤷ¤Ê¤¤¤È½ÐÎϤ¬Å¬ÀڤʸĽê¤Ç½ªÎ»¤·¤Þ¤»¤ó¡£ + ºÇ¶á¤Î eb library (Version 3.x) + ¤È¤ÎÁȤ߹ç¤ï¤»¤Ç¤Ïµ¡Ç½¤·¤Þ¤»¤ó¡£¤«¤ï¤ê¤Ë appendix file + ¤ò»ØÄꤷ¤Æ²¼¤µ¤¤¡£(*note Appendix::) + +`pager' + [²¾] "on" ¤òÀßÄꤹ¤ë¤È¸¡º÷·ë²Ìɽ¼¨»þ (content ¥³¥Þ¥ó¥É)¤Ë ´Ä¶­ÊÑ¿ô + PAGER ¤Ç + »ØÄꤷ¤¿¥Ú¡¼¥¸¥ã¡¼¤¬»ÈÍѤµ¤ì¤ë¡£¤³¤Îµ¡Ç½¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë»þ¤Ë + -with-pager ¥ª¥×¥·¥ç¥ó¤ò¤Ä¤±¤Æ configure ¤¹¤ëɬÍפ¬¤¢¤ë¡£ + (Ãí)¤³¤ÎÊÑ¿ô¤Ï¾­ÍèÊѹ¹¤µ¤ì¤ë²ÄǽÀ­¤¬¹â¤¤ + +`decorate-mode' + [²¾] "on" ¤òÀßÄꤹ¤ë¤Èʸ»úÁõ¾þ¤Î¤¿¤á¤Î¥¿¥°¤ò½ÐÎϤ·¤Þ¤¹¡£ + (Ãí)¤³¤ÎÊÑ¿ô¤Ï¾­ÍèÊѹ¹¤µ¤ì¤ë²ÄǽÀ­¤¬¹â¤¤ + + +File: eblook.info, Node: Compile, Next: How To Get, Prev: Variables, Up: Top + +¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë +************************ + + Ä̾ï¤Î UNIX ´Ä¶­¤Ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë¤Ï¤½¤ì¤Û¤ÉÆñ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +°Ê²¼¤Î¼ê½ç¤Ç¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤Ê¤Ã¤Æ²¼¤µ¤¤¡£ + 1. ¤Þ¤º¡¢eb library ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ²¼¤µ¤¤¡£ eb library ¤Ï + ¤è¤êÆþ¼ê²Äǽ¤Ç¤¹¡£ + + 2. `configure' ¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤Þ¤¹¡£ `./configure --prefix=/usr + --with-eb-conf=/etc/eb.conf ' + ¤Ê¤É¤È¤·¤Þ¤¹¡£»ØÄê¤Ç¤­¤ë¥ª¥×¥·¥ç¥ó¤Ï°Ê²¼¤Î°ìÍ÷¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ + + 3. `make' ¤ò¼Â¹Ô¤·¤Þ¤¹¡£ + + 4. `make install' ¤ò¼Â¹Ô¤·¤Þ¤¹¡£¥¤¥ó¥¹¥È¡¼¥ëÀè¤Ë¤è¤Ã¤Æ¤Ï root + ¸¢¸Â¤¬É¬Íפˤʤê¤Þ¤¹¡£ + + ¼çÍפÊÀßÄꥪ¥×¥·¥ç¥ó + +`--prefix' + ¥¤¥ó¥¹¥È¡¼¥ëÀè¤ò»ØÄꤷ¤Þ¤¹¡£²¿¤â»ØÄꤷ¤Ê¤¤¤È¡¢ + `--prefix=/usr/local' ¤ò »ØÄꤷ¤¿¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£ + +`--with-eb-conf=FILE' + eb library ¤ÎÀßÄê¾ðÊó¥Õ¥¡¥¤¥ë¤Î¤¢¤ê¤«¤ò»ØÄꤷ¤Þ¤¹¡£Ä̾¼«Æ°Åª¤Ë + $(prefix)/etc/eb.conf ($(sysconfdir)/eb.conf)¤¬²¾Äꤵ¤ì¤ë¤Î¤Ç¡¢ + ¤½¤ì°Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¾ì¹ç¤Ë¤Ï + `--with-eb-conf=/etc/eb.conf' ¤¢¤ë¤¤¤Ï `--sysconfdir=/etc' + ¤Ê¤É¤È¤·¤ÆÌÀ¼¨Åª¤Ë»ØÄꤷ¤Æ²¼¤µ¤¤¡£ + +`--with-readline' + GNU readline ¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤Æ¹ÔÊÔ½¸¤ò¹Ô¤¦¾ì¹ç¤Ë»ØÄꤷ¤Þ¤¹¡£ + +`--with-pager' + ¸¡º÷·ë²Ì¤ò³°Éô pager + ¤òÍøÍѤ·¤Æɽ¼¨¤·¤Þ¤¹¡£¼ÂºÝ¤Î»ÈÍѤˤ¢¤¿¤Ã¤Æ¤Ï¡¢´Ä¶­ÊÑ¿ô `PAGER' + ¤Î»ØÄê (`setenv PAGER less' Åù) ¤È eblook ÊÑ¿ô¤Î»ØÄê `set pager + on'"¤¬É¬ÍפǤ¹¡£ + + +File: eblook.info, Node: How To Get, Prev: Compile, Up: Top + +ºÇ¿·¾ðÊó¤ÎÆþ¼ê +************** + + ºÇ¿·¤Î eblook ¤Ï¡¤¼¡¤Î¤È¤³¤í¤«¤éÆþ¼ê²Äǽ¤Ç¤¹¡£ + +eblook + + + eblook ¤Ë´Ø¤¹¤ë¾ðÊó¸ò´¹¤Ï¡¢edict ¤ä NDTPD +¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ë¤Æ¹Ô¤ï¤ì ¤Æ¤¤¤Þ¤¹¡£ + +edict + + +NDTPD + + + eblook ¤Ï edict ³«È¯¥Á¡¼¥à () ¤Ë¤è¤ê´ÉÍý¤µ +¤ì¤Æ¤¤¤Þ¤¹¡£eblook ¤Ë´Ø¤¹¤ëÌ䤤¹ç¤ï¤»¤Ï¤³¤Á¤é¤Þ¤Ç¤ª´ê¤¤¤·¤Þ¤¹¡£ + + + +Tag Table: +Node: Top1133 +Node: Introduction1864 +Node: Overview3079 +Node: Starting4814 +Node: Setting5862 +Node: Search7313 +Node: Word Search7847 +Node: Keyword Search9551 +Node: Multiple Search10181 +Node: Menu12259 +Node: Content12813 +Node: Appendix13557 +Node: Information15689 +Node: Commands16455 +Node: Variables17916 +Node: Compile19536 +Node: How To Get20949 + +End Tag Table diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/eblook.texi b/lib/ebu/others/eblook-1.6.1+media-20200414/eblook.texi new file mode 100644 index 0000000..6ac724e --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/eblook.texi @@ -0,0 +1,798 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename eblook.info +@settitle eblook +@setchapternewpage off +@c %**end of header + +@set UPDATED 23 Oct. 2002 +@set EDITION 1.6 +@set VERSION 1.6 + +@ifinfo +@dircategory CD-ROM Book Utilities +@direntry +* eblook: (eblook). Interactive EB interface command. +@end direntry + +This file documents eblook, an interactive EB interface command. + +Copyright @copyright{} 1997,1998,1999,2000 Keisuke Nishida +Copyright @copyright{} 2000-2002 Satomi +Copyright @copyright{} 2000,2001 Kazuhiko +Copyright @copyright{} 2000-2002 NEMOTO Takashi + +Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + +@ignore +Permission is granted to process this file through TeX and print the +results, provided the printed document carries a copying permission +notice identical to this one except for the removal of this paragraph +(this paragraph not being relevant to the printed manual). + +@end ignore +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the +entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation +approved by the Free Software Foundation. +@end ifinfo + +@titlepage +@title eblook +@subtitle for eblook @value{VERSION} +@author Keisuke Nishida +@author Kazuhiko +@author Satomi +@author NEMOTO Takashi + +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 1997,1998,1999,2000 Keisuke Nishida +Copyright @copyright{} 2000-2002 Satomi +Copyright @copyright{} 2000,2001 Kazuhiko +Copyright @copyright{} 2000-2002 NEMOTO Takashi + +Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the +entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation +approved by the Free Software Foundation. +@end titlepage + +@contents + +@ifinfo +@c ********************************************************************* +@node Top, Introduction, (dir), (dir) +@top eblook + +eblook ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê¤òÍѤ¤¤¿ÂÐÏ÷¿¤ÎÅŻҼ­½ñ¸¡º÷¥³¥Þ¥ó¥É¤Ç¤¹¡£´Êñ¤Ê +ÀßÄê¤È¥³¥Þ¥ó¥É¤Ë¤è¤ê CD-ROM ½ñÀÒ¤¬ÍøÍѽÐÍè¤Þ¤¹¡£ + +Ëܽñ¤Ï eblook @value{VERSION} ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£ +@end ifinfo + +@menu +* Introduction:: ¤Ï¤¸¤á¤Ë +* Overview:: Âç¤Þ¤«¤Ê»È¤¤Êý +* Starting:: eblook ¤Îµ¯Æ° +* Setting:: ¼­½ñ¤ÎÁªÂò¤ÈÀßÄê +* Search:: ¸¡º÷Ë¡ +* Information:: ³Æ¼ï¾ðÊó +* Commands:: ¥³¥Þ¥ó¥É°ìÍ÷ +* Variables:: ÊÑ¿ô°ìÍ÷ +* Compile:: ¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë +* How To Get:: ºÇ¿·¾ðÊó¤ÎÆþ¼ê +@end menu + +@c ********************************************************************* +@node Introduction, Overview, Top, Top +@chapter ¤Ï¤¸¤á¤Ë + +eblook ¤Ï¡¢EB ¥é¥¤¥Ö¥é¥ê(@inforef{Top, EB, eb})¤òÍѤ¤¤¿ÂÐÏ÷¿¤ÎÅŻҼ­½ñ +¸¡º÷¥³¥Þ¥ó¥É¤Ç¤¹¡£´Êñ¤ÊÀßÄê¤È¥³¥Þ¥ó¥É¤Ë¤è¤ê CD-ROM ½ñÀÒ¤¬ÍøÍѽÐÍè¤Þ¤¹¡£ + +eblook ¤Ï¼ê·Ú¤µ¤ò½Å»ë¤·¤¿¥Ä¡¼¥ë¤Ç¤¢¤ê¡¢¥æ¡¼¥¶¡¦¥¢¥¯¥»¥¹¤Î´ÉÍý¤Ê¤É¡¢¥Í¥Ã +¥È¥ï¡¼¥¯ÍøÍѤòÁÛÄꤷ¤¿Ê£»¨¤Êµ¡Ç½¤ÏÄ󶡤·¤Æ¤¤¤Þ¤»¤ó¡£¤½¤Î¤è¤¦¤ÊÌÜŪ¤Ë¤Ï +NDTPD ¤È¤¤¤¦¥½¥Õ¥È¥¦¥§¥¢¤¬¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤¬ÍøÍѤˤʤì¤Þ¤¹¡£ +(@url{http://www.sra.co.jp/people/m-kasahr/ndtpd/} ¤ò»²¾È) + +eblook ¤Ï¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£¤¢¤Ê¤¿¤Ï¡¢Free Software Foundation ¤¬ +¸øɽ¤·¤¿ GNU General Public License (GNU °ìÈ̸øÍ­»ÈÍѵöÂú)¤Î¥Ð¡¼¥¸¥ç¥ó 2 +¤¢¤ë¤¤¤Ï¤½¤ì°Ê¹ß¤Î³Æ¥Ð¡¼¥¸¥ç¥ó¤ÎÃ椫¤é¤¤¤º¤ì¤«¤òÁªÂò¤·¡¢¤½¤Î¥Ð¡¼¥¸¥ç¥ó¤¬ +Äê¤á¤ë¾ò¹à¤Ë½¾¤Ã¤Æ eblook ¤òºÆÇÛÉÛ¤Þ¤¿¤ÏÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ + +eblook ¤ÏÍ­ÍѤȤϻפ¤¤Þ¤¹¤¬¡¢ÈÒÉۤˤ¢¤¿¤Ã¤Æ¤Ï¡¢»Ô¾ìÀ­µÚ¤ÓÆÃÄêÌÜŪŬ¹çÀ­ +¤Ë¤Ä¤¤¤Æ¤Î°ÅÌÛ¤ÎÊݾڤò´Þ¤á¤Æ¡¢¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤Ê¤¤¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï +GNU General Public License ¤ò¤ªÆɤߤ¯¤À¤µ¤¤¡£ + +²Ã¤¨¤Æ¤¢¤Ê¤¿¤Ï¡¢eblook ¤È¶¦¤ËÍøÍѤ¹¤ë CD-ROM ½ñÀҤλÈÍѵöÂú¤â¼é¤é¤Ê¤±¤ì +¤Ð¤Ê¤ê¤Þ¤»¤ó¡£½ñÀÒ¤ÎÍøÍѤ¬µö¤µ¤ì¤Ê¤¤¾ì¹ç¤Ë¤â eblook ¤òÍѤ¤¤ë¤³¤È¤Ï²Äǽ¤« +¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ë eblook ¤òÍѤ¤¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ + +@c ********************************************************************* +@node Overview, Starting, Introduction, Top +@chapter Âç¤Þ¤«¤Ê»È¤¤Êý + +¼­½ñ¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò°ú¿ô¤Ë¡¢eblook ¤ò¥·¥§¥ë¤«¤éµ¯Æ°¤·¤Þ¤¹¡£ + +@example +% @kbd{eblook /cdrom} +eblook> @point{} +@end example + +@code{help} ¤Ç¥³¥Þ¥ó¥É°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£ + +@example +eblook> @kbd{help} + book [directory [appendix]] - Set a book directory + info - Show information of the selected book + list - List all dictionaries in the selected book + select subbook - Select a subbook + subinfo - Show information of the selected subbook + copyright - Show copyright of the selected subbook + menu - Show the menu of the selected subbook + search pattern [offset] - Search for a word + content entry [offset] - Display contents of entry + dump entry [offset] - Display dumps of entry + font [id] - Display the bitmap of gaiji + show [variable] - Show the value of variables + set variable value - Set a variable to the value + unset variable... - Unset variables + candidate - Show candidates for multi search + label [id] - Show label for multi search + help - Show this message + quit - Quit program +@end example + +@code{list} ¤Ç¼­½ñ°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£ + +@example +eblook> @kbd{list} + 1. KOKUGO ¹ñ¸ì¼­Åµ + 2. EIWA ±Ñϼ­Åµ +@end example + +@code{select} ¤Ç¼­½ñÁªÂò¤·¡¢@code{search} ¤Ç¸¡º÷¤·¤Þ¤¹¡£ + +@example +eblook> @kbd{select 2} +eblook> @kbd{search test} + 1. 1234:567 test +@end example + +@code{content} ¤ÇÆâÍÆɽ¼¨¤·¤Þ¤¹¡£ + +@example +eblook> @kbd{content 1} +test /t'est/ +[̾] 1. »î¸³... +@end example + +@code{quit} ¤Ç½ªÎ»¤·¤Þ¤¹¡£ + +@example +eblook> @kbd{quit} +% @point{} +@end example + +@c ********************************************************************* +@node Starting, Setting, Overview, Top +@chapter eblook ¤Îµ¯Æ° + +eblook ¤Îµ¯Æ°ÊýË¡¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ + +@example +eblook [option...] [@var{book-directory} [@var{appendix-directory}]] +@end example + +@var{book-directory} ¤Ï½ñÀҤΤ¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£¾Êά¤µ¤ì¤¿¾ì +¹ç¤Ï¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤¬½ñÀҥǥ£¥ì¥¯¥È¥ê¤È¤ß¤Ê¤µ¤ì¤Þ¤¹¡£ + +@var{appendix-directory} ¤Ë¤Ï Appendix ¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ +¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢Appendix ¤ÏÍøÍѤµ¤ì¤Þ¤»¤ó¡£(@pxref{Appendix}) + +¤³¤ì¤é°ú¿ô¤ÎÃͤϡ¢¤É¤Á¤é¤âµ¯Æ°¸å¤ËÊѹ¹¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ +@pxref{Setting} ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ + +¥ª¥×¥·¥ç¥ó¤Ë¤Ï¼¡¤Î¤â¤Î¤¬Í­¸ú¤Ç¤¹¡£ + +@table @code +@item -e +@itemx --encoding=NAME +ʸ»ú¥³¡¼¥É¤ò»ØÄꤷ¤Þ¤¹ (euc, sjis, jis, utf8)¡£¥Ç¥Õ¥©¥ë¥È¤Ï¼«Æ°È½ÊÌ¡£ +»ÈÍѤǤ­¤ëʸ»ú¥³¡¼¥É¤Ï¥·¥¹¥Æ¥à¤Î iconv ¥é¥¤¥Ö¥é¥ê¤Ë°Í¸¤·¤Þ¤¹¡£ +iconv ¤Î̵¤¤¥·¥¹¥Æ¥à¤Ç¤Ï euc, sjis ¤¬»ÈÍѲÄǽ¤Ç¤¹¡£ + +@item -q +@itemx --no-init-file +½é´ü²½¥Õ¥¡¥¤¥ë(@file{~/.eblookrc})¤òÆɤ߹þ¤ß¤Þ¤»¤ó¡£ + +@item -v +@itemx --version +¥³¥Þ¥ó¥É¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ + +@item -h +@itemx --help +¥³¥Þ¥ó¥É¤Î¥Ø¥ë¥×¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ +@end table + +@c ********************************************************************* +@node Setting, Search, Starting, Top +@chapter ¼­½ñ¤ÎÁªÂò¤ÈÀßÄê +eblook ¤òµ¯Æ°¤¹¤ë¤È¡¢ºÇ½é¤Ë¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë½é´ü²½¥Õ¥¡¥¤¥ë +(@file{~/.eblookrc}, DOSÈÇ ¤Î¾ì¹ç¤Ï @file{%HOME%/eblookrc}) ¤òÆɤ߹þ¤ß¤Þ¤¹¡£ +¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï°Ê²¼¤Ëµ­ºÜ¤µ¤ì¤¿Ç¤°Õ¤Î¥³¥Þ¥ó¥É¤òµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢ÀèƬ¤«¤é½ç¤Ë²ò¼á¤µ¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢¤³¤Î¥³¥Þ¥ó¥É¼Â¹Ô¤Ï½ñÀÒ¥Õ¥¡¥¤¥ë¤ò³«¤¯Á°¤Ë¼Â¹Ô¤µ¤ì¤ë¤¿¤á¡¢¸¡º÷¥³¥Þ¥ó¥ÉÅù¤Ï¥¨¥é¡¼¤È¤Ê¤ê¤Þ¤¹¡£ + +¥³¥Þ¥ó¥É @code{book} ¤Ë¤è¤ê½ñÀҤΤ¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ + +@example +eblook> @kbd{book} @file{/cdrom} @file{/usr/local/share/eb/appendix} +@end example + +½ñÀҥǥ£¥ì¥¯¥È¥ê¤Ë´Þ¤Þ¤ì¤ë¼­½ñ¤Î°ìÍ÷¤Ï¡¢¥³¥Þ¥ó¥É @code{list} ¤Ë¤è¤ê¸«¤ë +¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ + +@example +eblook> @kbd{list} + 1. KOKUGO ¹ñ¸ì¼­Åµ + 2. EIWA ±Ñϼ­Åµ +@end example + +¼­½ñ¤Ï¥³¥Þ¥ó¥É @code{select} ¤Ë¤è¤ê¥»¥Ã¥È¤¹¤ë¤³¤È¤Ç¡¢ÍøÍѲÄǽ¤È¤Ê¤ê¤Þ¤¹¡£ + +@example +eblook> @kbd{select 1} +@end example + +¤¢¤ë¤¤¤Ï + +@example +eblook> @kbd{select KOKUGO} +@end example + +¥³¥Þ¥ó¥É @code{set} ¤Ë¤è¤ê¡¢¥ª¥×¥·¥ç¥ó¤ÎÀßÄ꤬²Äǽ¤Ç¤¹¡£Î㤨¤Ð¥×¥í¥ó¥×¥È +¤òÊѹ¹¤¹¤ë¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ + +@example +eblook> @kbd{set prompt "eblook$ "} +eblook$ @point{} +@end example + +¾å¤Î¤è¤¦¤Ë¡¢°ú¿ô¤Ë¶õÇò¤ò´Þ¤á¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢Ãͤò¥À¥Ö¥ë¥¯¥ª¡¼¥È¤Ç°ú +ÍѽÐÍè¤Þ¤¹¡£ + +ÊÑ¿ô¤ÎÃͤϥ³¥Þ¥ó¥É @code{show} ¤Ç¸«¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ +Ãͤò̵¸ú¤Ë¤¹¤ë¤Ë¤Ï¥³¥Þ¥ó¥É @code{unset} ¤¬¤¢¤ê¤Þ¤¹¡£ + +@example +eblook$ @kbd{show prompt} +eblook$ +eblook$ @kbd{unset prompt} +eblook> @kbd{show} +version eblook 1.0 +max-text 8192 +max-hits 256 +eblook> @point{} +@end example + +ÀßÄꡦ»²¾È¤Ç¤­¤ëÊÑ¿ô¤Î°ìÍ÷¤Ï @ref{Variables} ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ + +@c ********************************************************************* +@node Search, Information, Setting, Top +@chapter ¸¡º÷ÊýË¡ + +¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î eblook ¤Ç¤Ï¡¢¸¡º÷Êý¼°¤È¤·¤Æñ¸ì¸¡º÷(Á°Êý°ìÃ׸¡º÷¡¢¸åÊý +°ìÃ׸¡º÷¡¢´°Á´°ìÃ׸¡º÷)¤È¡¢¥á¥Ë¥å¡¼¤Î»²¾È¤ò¹Ô¤Ê¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤Þ¤¿¡¢ +³°»ú¤ò°·¤¦¤³¤È¤â½ÐÍè¤Þ¤¹¡£ + +@menu +* Word Search:: ñ¸ì¸¡º÷ +* Keyword Search:: ¾ò·ï¸¡º÷ +* Multiple Search:: Ê£¹ç¸¡º÷ +* Menu:: ¥á¥Ë¥å¡¼ +* Content:: ÆâÍÆɽ¼¨ +* Appendix:: ³°»ú¤ÎÃÖ´¹ +@end menu + +@c ===================================================================== +@node Word Search, Keyword Search, Search, Search +@section ñ¸ì¸¡º÷ + +¥³¥Þ¥ó¥É @code{search} ¤Ç¸¡º÷¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£¤¢¤é¤«¤¸¤á¼­½ñ¤òÁªÂò¤·¤Æ¤ª¤¯ +ɬÍפ¬¤¢¤ê¤Þ¤¹¡£ + +@example +eblook> @kbd{select EIWA} +eblook> @kbd{search test} + 1. 1234:567 test +@end example + +ÊÑ¿ô @code{search-method} ¤Ë¤è¤ê¸¡º÷Êý¼°¤òÊѹ¹½ÐÍè¤Þ¤¹¡£¸½ºß¡¢¼¡¤Î¤â¤Î¤ò +»ØÄê²Äǽ¤Ç¤¹¡£(¥Ç¥Õ¥©¥ë¥È¤Ï @code{glob}) + +@table @code +@item word +Á°Êý°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¦¡£ +@item endword +¸åÊý°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¦¡£ +@item exact +´°Á´°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¦¡£ +@item glob +ʸ»úÎó¤ò¸«¤Æ¡¢¸¡º÷Ë¡¤ò·èÄꤷ¤Þ¤¹¡£¸¡º÷¸ì¤¬ @samp{foo*} ¤Ê¤é¤Ð @samp{foo} +¤ò¥­¡¼¤ËÁ°Êý°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¤¡¢Æ±ÍÍ¤Ë @samp{*foo} ¤Ê¤é¤Ð¸åÊý°ìÃ׸¡º÷¤ò¹Ô +¤¤¡¢@samp{foo} ¤Ê¤é¤Ð´°Á´°ìÃ׸¡º÷¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ +@end table + +@example +eblook> @kbd{show search-method} +glob +eblook> @kbd{search test*} + 1. 1234:567 test + 2. 2345:678 testament +eblook> @kbd{search *test} + 1. 1234:567 test + 2. 3456:789 latest +eblook> @kbd{set search-method word} +eblook> @kbd{search test} + 1. 1234:567 test + 2. 2345:678 testament +@end example + +½ÐÎϤΰì·åÌܤϥ¨¥ó¥È¥ê¤ÎÈÖ¹æ¤Ç¡¢Æó·åÌܤϥ¨¥ó¥È¥ê¤ò·èÄꤹ¤ë¤¿¤á¤Î¥³¡¼¥ÉÈÖ +¹æ¤Ç¤¹¡£¤¤¤º¤ì¤«¤ò¥³¥Þ¥ó¥É @code{content} ¤ËÅϤ¹¤³¤È¤Ç¡¢¥¨¥ó¥È¥ê¤ÎÆâÍƤ¬ +½ÐÎϤµ¤ì¤Þ¤¹¡£(@pxref{Content}) + +ÊÑ¿ô @code{max-hits} ¤Ë¤è¤ê¡¢½ÐÎϤ¹¤ë¸«½Ð¤·¸ì¤Î¿ô¤òÀ©¸Â½ÐÍè¤Þ¤¹¡£ + +@example +eblook> @kbd{show max-hits} +256 +eblook> @kbd{search t*} + 1. 1263:25 t + 2. 1273:832 t. + : +255. 1312:684 tabu + +@end example + +³¤­¤òɽ¼¨¤¹¤ë¤Ë¤Ï¡¢@code{search} ¤ËÂèÆó°ú¿ô¤òÅϤ·¤Æ²¼¤µ¤¤¡£ + +@example +eblook> @kbd{search t* 256} +256. 1336:32 tantalization +257. 1358:2ab tantalize + : +511. 14c6:233 tea shop + +@end example + +°ú¿ô¤ä @code{max-hits} ¤Ë 0 ¤ò»ØÄꤹ¤ë¤È¡¢Á´¤Æ¤Î¥¨¥ó¥È¥ê¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ + +@c ===================================================================== +@node Keyword Search, Multiple Search, Word Search, Search +@section ¾ò·ï¸¡º÷ + +¥³¥Þ¥ó¥É @code{search} ¤Ç¸¡º÷¤ò¹Ô¤Ê¤¦ºÝ¤Ë @samp{=foo} ¤Î¤è¤¦¤Ë @samp{=} +¤Ë³¤¤¤Æ¥­¡¼¥ï¡¼¥É¤ò»ØÄꤹ¤ì¤Ð¾ò·ï¸¡º÷¤ò¹Ô¤¤¤Þ¤¹¡£@samp{=foo=bar} ¤Î¤è¤¦ +¤Ë¡¢Ê£¿ô¤Î¥­¡¼¥ï¡¼¥É¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ + +@example +eblook> @kbd{search =ÆüËÜ=Ãã} + 1. 54a:56a ¤¦¤°¤¤¤¹¡Úòô¡Û¥¦¥°¥Ò¥¹ + 2. 658:2ce ¤¦¤ì¤·¤Î¡¾¤Á¤ã¡Ú´òÌîÃã¡Û + 3. 129e:256 ¥°¥ê¡¼¥ó¡¾¥Æ¥£¡¼¡Úgreen tea¡Û + 4. 1577:166 ¤³¤¦¡¾¤Á¤ã¡Ú¹ÈÃã¡Û + 5. 28a9:bc ¤Á¤ã¤Î¤Û¤ó¡ÚÃã¤ÎËÜ¡Û + 6. 3323:29e ¤Ï¤Ö¡¾¤½¤¦¡ÚÇÈÉÛÁð¡Û¡Å¥µ¥¦ +@end example + +(°Ê¾å¡¢Îã¤Ï¹­¼­±ñÂè»ÍÈǤè¤ê) + +@c ===================================================================== +@node Multiple Search, Menu, Keyword Search, Search +@section Ê£¹ç¸¡º÷ + +¥³¥Þ¥ó¥É @code{label} ¤Ë¤è¤ê¡¢¤½¤Î¼­½ñ¤Ç¤ÎÊ£¹ç¸¡º÷¤Î¥é¥Ù¥ë¤òÁ´¤Æɽ¼¨¤·¤Þ +¤¹¡£ÈÖ¹æ¤ÏÊ£¹ç¸¡º÷ ID ¤Ç¤¹¡£@code{label 1} ¤È¤¹¤ë¤È¡¢¤½¤ÎÈÖ¹æ¤Î ID ¤Î¥é +¥Ù¥ë¤Î¤ß½ÐÎϤ·¤Þ¤¹¡£ + +@example +eblook> @kbd{label} + 1. ÃÏ°è¡Ê¢ª»²¾È¡Ë:»þÂå¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: + 2. ¹ñ̾¡¦ÃÏ°è̾¡Ê¢ª»²¾È¡Ë:ÃÏÊý̾¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: + 3. ¹ñ̾¤Ê¤É¡Ê¢ª»²¾È¡Ë:¥¸¥ã¥ó¥ë¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: + 4. µ¨Àá¡Ê¢ª»²¾È¡Ë:¥¸¥ã¥ó¥ë¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: +@end example + +¥³¥Þ¥ó¥É @code{candidate} ¤Ë¤è¤ê¡¢Ê£¹ç¸¡º÷¤Î¥­¡¼¥ï¡¼¥É¤Î¸õÊä¤òɽ¼¨¤·¤Þ¤¹¡£ + +@example +eblook> @kbd{candidate} + multi search 1: + label 1: ÃÏ°è¡Ê¢ª»²¾È¡Ë + candidates: exist +*ÆüËÜ +*Ãæ¹ñ¡¦Ä«Á¯ +*¥è¡¼¥í¥Ã¥Ñ¡¦ËÌ¥¢¥á¥ê¥« +*¥¤¥ó¥É¡¦¥¢¥Õ¥ê¥«¤Ê¤É + label 2: »þÂå¡Ê¢ª»²¾È¡Ë + candidates: exist +*¶áÂå°ÊÁ° +*¶á¸½Âå + label 3: ¥­¡¼¥ï¡¼¥É + candidates: not-exist + label 4: ¥­¡¼¥ï¡¼¥É + candidates: not-exist + multi search 2: + label 1: ¹ñ̾¡¦ÃÏ°è̾¡Ê¢ª»²¾È¡Ë + candidates: exist +(¸åά) +@end example + +¼ÂºÝ¤ËÊ£¹ç¸¡º÷¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¢¥³¥Þ¥ó¥É @code{search} ¤Ç¸¡º÷¤ò¹Ô¤Ê¤¦ºÝ¤Ë +@samp{:Ãæ¹ñ¡¦Ä«Á¯:¶á¸½Âå:¤Ò¤È:*:} ¤Î¤è¤¦¤Ë @samp{:} ¤Ç¶èÀڤäƥ­¡¼¥ï¡¼¥É +¤ò»ØÄꤷ¤Þ¤¹¡£ + +@example +eblook> @kbd{search :Ãæ¹ñ¡¦Ä«Á¯:¶á¸½Âå:¤Ò¤È:*:} + 1. 2fa:36 ¤¤¤¯¡¾¤¿¤Ä¤Õ¡Ú°êãÉ×¡Û + 2. 759:636 ¤¨¤ó¡¾¤»¤¤¤¬¤¤¡ÚêÏÀ¤³®¡Û¥ó¡Å + 3. 7a7:25e ¤ª¤¦¡¾¤³¤¯¤¤¡Ú²¦¹ñ°Ý¡Û¥ï¥¦¡Å + 4. 7ba:6ec ¤ª¤¦¡¾¤Á¤ç¤¦¤á¤¤¡ÚÝêÃûÌáۥ復¥Æ¥¦¡Å +(¸åά) +@end example + +¥³¥Þ¥ó¥É @code{set multi-search-id 2} ¤Ê¤É¤È¤¹¤ë¤È¡¢Ê£¹ç¸¡º÷ ID ¤òÀÚ¤êÂØ +¤¨¤é¤ì¤Þ¤¹¡£ + +@example +eblook> @kbd{set multi-search-id 2} +eblook> @kbd{label 2} + 2. ¹ñ̾¡¦ÃÏ°è̾¡Ê¢ª»²¾È¡Ë:ÃÏÊý̾¡Ê¢ª»²¾È¡Ë:¥­¡¼¥ï¡¼¥É:¥­¡¼¥ï¡¼¥É: +eblook> @kbd{search :ÆüËÜ:Ë̳¤Æ»:*:*:} + 1. 7b:3ac ¤¢¤«¤Ó¤é¡ÚÀÖÊ¿¡Û + 2. 8b:218 ¤¢¤«¤ó¡Ú°¤´¨¡Û + 3. 8b:31a ¤¢¤«¤ó¡¾¤³¡Ú°¤´¨¸Ð¡Û + 4. 8b:434 ¤¢¤«¤ó¡¾¤³¤¯¤ê¤Ä¤³¤¦¤¨¤ó¡Ú°¤´¨¹ñΩ¸ø±à¡Û¡Å¥ó +(¸åά) +@end example + +(°Ê¾å¡¢Îã¤Ï¹­¼­±ñÂè»ÍÈǤè¤ê) + +@c ===================================================================== +@node Menu, Content, Multiple Search, Search +@section ¥á¥Ë¥å¡¼ + +¼­½ñ¤¬¥á¥Ë¥å¡¼¤ò»ý¤Ä¾ì¹ç¡¢¥³¥Þ¥ó¥É @code{menu} ¤Ë¤è¤ê½ÐÎϤµ¤ì¤Þ¤¹¡£ + +@example +eblook> @kbd{menu} +¡Ø¹ñ¸ì¼­Åµ¡Ù¤Ë¤Ä¤¤¤Æ +ËÞÎã +@end example + +³Ñ³ç¸Ì¤Ë¶´¤Þ¤ì¤¿¥¿¥°¤Î¤¦¤Á¡¢@samp{/reference=} ¤È¤Ê¤Ã¤Æ¤¤¤ëÉôʬ¤Î¸å¤í¤¬ +¥á¥Ë¥å¡¼¤ÎÆâÍƤȤʤäƤª¤ê¡¢¥³¥Þ¥ó¥É @code{content} ¤Ë¤è¤ê¤½¤ÎÀè¤òÆÀ¤ë¤³ +¤È¤¬½ÐÍè¤Þ¤¹¡£(@pxref{Content}) + +@example +eblook> @kbd{content 2a18:2} +¡Ø¹ñ¸ì¼­Åµ Âè°ìÈÇ¡Ù + +19xxǯxx·îxxÆü Âè°ìÈÇÂè°ìºþ +@end example + +@c ===================================================================== +@node Content, Appendix, Menu, Search +@section ÆâÍÆɽ¼¨ + +¥³¥Þ¥ó¥É @code{content} ¤Ë¤è¤ê¡¢¥¨¥ó¥È¥ê¤ÎÆâÍƤ¬ÆÀ¤é¤ì¤Þ¤¹¡£ + +@example +eblook> @kbd{search test} + 1. 1234:567 test + 2. 2345:678 testament +eblook> @kbd{content 1} +test /t'est/ +[̾] 1. »î¸³... +eblook> @kbd{content 1234:567} +test /t'est/ +[̾] 1. »î¸³... +@end example + +ÆâÍƤ¬¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»ý¤Ä¾ì¹ç¡¢¤½¤ÎÉôʬ¤¬Àè¤Î¥á¥Ë¥å¡¼¤ÈƱ¤¸¥¿¥°¤Ë¤è¤Ã¤Æɽ +¤ï¤µ¤ì¤Þ¤¹¡£ + +@code{search} ¤ÈƱÍͤˡ¢½ÐÎϤ¹¤ë¥Ð¥¤¥È¿ô¤òÊÑ¿ô @code{max-text} ¤Ë¤è¤Ã¤Æ +Ä´Àá½ÐÍè¤Þ¤¹¡£Â³¤­¤òÆÀ¤ë¾ì¹ç¤Ë¤Ï @code{content} ¤ËÂèÆó°ú¿ô¤òÍ¿¤¨¤ë¤Î¤âƱ +¤¸¤Ç¤¹¡£0 ¤òÍ¿¤¨¤ë¤ÈºÇ¸å¤Þ¤Ç½ÐÎϤµ¤ì¤Þ¤¹¡£ + +½ÐÎÏÆâÍƤγ°»úÉôʬ¤òÄ̾ï¤Î¥Æ¥­¥¹¥Èʸ»ú¤ÇÃÖ¤­´¹¤¨¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£ +@ref{Appendix} ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ + +@c ===================================================================== +@node Appendix, , Content, Search +@section Appendix ¥Õ¥¡¥¤¥ë¤ÎÍøÍÑ + +eblook ¤¬ÆâÉô¤ÇÍøÍѤ·¤Æ¤¤¤ë EB ¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¢Appendix ¤È¸Æ¤Ð¤ì¤ë +³Æ¼­½ñ¤Ë¸ÇÍ­¤Î¹àÌܶèÀڤ국¹æ¤ä³°»úÂåÂØË¡¤ò»ØÄꤹ¤ëµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¡£ +eblook ¤òñÂλÈÍѤ¹¤ë¾ì¹ç¤Ê¤É¡¢³°»ú bitmap ¤¬É½¼¨¤Ç¤­¤Ê¤¤¾ì¹ç¤ä +¹àÌܶèÀڤ꤬¤¦¤Þ¤¯¼«Æ°ÀßÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢Á°¸å¹àÌܤؤΰÜÆ°µ¡Ç½¤¬Àµ¾ï¤Ë +Æ°ºî¤·¤Ê¤¤¾ì¹ç¤Ë¤´ÍøÍѲ¼¤µ¤¤¡£ + +¼çÍפʼ­½ñ¤Ë¤Ä¤¤¤Æ¤Ï´û¤Ë¾¤Î¿Í¤¬ Appendix ¥Õ¥¡¥¤¥ë¤òºîÀ½¤·¤Æ¤¯¤ì¤Æ +¤¤¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¾ì¹ç¤Ë¤Ï Appendix ¥Ñ¥Ã¥±¡¼¥¸¤òÆþ¼ê¤·¡¢Å¬Åö¤Ê +¥Ç¥£¥ì¥¯¥È¥ê¤ËŸ³«¤·¤Æ²¼¤µ¤¤¡£ + +@table @asis +@item NDTPD +@url{http://www.sra.co.jp/people/m-kasahr/ndtpd/} +@end table + +eblook ¥³¥Þ¥ó¥É¤ÎÂèÆó°ú¿ô¤«¡¢¤â¤·¤¯¤Ï¥³¥Þ¥ó¥É @code{book} ¤ÎÂèÆó°ú¿ô¤È¤· +¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤êµ¡Ç½¤·¤Þ¤¹¡£ +(@pxref{Starting}) + +¼«Ê¬¤Ç Appendix ¤òºîÀ½¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¸½ºß¤Î¤È¤³¤íÌÀʸ²½¤µ¤ì¤¿ +ÀâÌÀʸ¤¬¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢´û¸¤ÎŬÅö¤Ê appendix ¥Õ¥¡¥¤¥ëÃæ¤Î +@file{*.app} ¤ò»²¹Í¤ËºîÀ½¤·¤Æ²¼¤µ¤¤¡£ + +@subsection ¹àÌܶèÀÚ¤ê¤Î»ØÄê +¹àÌܴ֤ζèÀڤ국¹æ¤¬Àµ¾ï¤Ëǧ¼±¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë»ØÄꤷ¤Þ¤¹¡£ +¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¾ì¹ç¡¢¤¿¤¤¤Æ¤¤¤Ï appendix ¥Õ¥¡¥¤¥ëÃæ¤Ç + +@code{stop-code 0x1f09 0x0001} + +¤ò»ØÄꤹ¤ì¤ÐÎɤ¤¤È»×¤¤¤Þ¤¹¤Î¤Ç¤ª»î¤·²¼¤µ¤¤¡£ + +@subsection ³°»ú¤ÎÃÖ´¹ + +EB ¥é¥¤¥Ö¥é¥ê¤Îµ¡Ç½¤È¤·¤Æ¡¢CD-ROM ½ñÀҤ˴ޤޤì¤ëÆüì¤Ê³°»ú¤òÄ̾ï¤Îʸ»úÎó +¤ÇÃÖ¤­´¹¤¨¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£²¿¤â¤·¤Ê¤¤¤È¡¢³°»ú¤Ï¼¡¤Î¤è¤¦¤Ëɽ¤ï¤µ¤ì¤Þ¤¹¡£ + +@example +eblook> @kbd{content 1234:567} +test /tst/ + 1. »î¸³... +@end example + +³°»ú¤ÎÃÖ¤­´¹¤¨¤ò¹Ô¤Ê¤¦¤È¡¢°Ê²¼¤Î¤è¤¦¤Ëɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ +(lookup ¤ÈÁȤ߹ç¤ï¤»¤Æ»ÈÍѤ¹¤ë¤È¤­¤Ï¡¢³°»ú¤ò bitmap ɽ¼¨¤¹¤ë¤³¤È +¤¬²Äǽ¤Ê¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¹¥¤ß¤ÎÊýË¡¤òÁªÂò¤·¤Æ²¼¤µ¤¤¡£) + +@example +eblook> @kbd{book /cdrom /usr/local/share/eb/appendix} +eblook> @kbd{content 1234:567} +test /t'est/ +[̾] 1. »î¸³... +eblook> @point{} +@end example + +¤¢¤ë¤¤¤Ï¥³¥Þ¥ó¥É @code{font} ¤Ë¤è¤ê¡¢³°»ú¤Î¥Ç¡¼¥¿¤ò xbm ·Á¼°¤Î¥Ó¥Ã¥È¥Þ¥Ã +¥×¥Ç¡¼¥¿¤È¤·¤ÆÆÀ¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ + +@example +eblook> font ha123 +#define default_width 8 +#define default_height 16 +static unsigned char default_bits[] = @{ + 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0x18, 0x24, 0x42, 0x7e, 0x02, 0x02, + 0x44, 0x38, 0x00, 0x00@}; +@end example + +@c ********************************************************************* +@node Information, Commands, Search, Top +@chapter ³Æ¼ï¾ðÊó + +¥³¥Þ¥ó¥É @code{info} ¤Ë¤è¤ê¡¢½ñÀҤξðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ + +@example +eblook> @kbd{info} + disc type: EPWING + character code: JIS X 0208 + the number of dictionaries: 4 +@end example + +¥³¥Þ¥ó¥É @code{subinfo} ¤Ë¤è¤ê¡¢ÁªÂò¤·¤Æ¤¤¤ë¼­½ñ¤Î¾ðÊ󤬽ÐÎϤµ¤ì¤Þ¤¹¡£ + +@example +eblook> @kbd{select EIWA} +eblook> @kbd{subinfo} + title: ±Ñϼ­Åµ + directory: EIWA + search methods: word endword exact menu + font sizes: 16 24 30 48 + widw font characters: 0xa123 -- 0xa456 +@end example + +¥³¥Þ¥ó¥É @code{copyright} ¤Ë¤è¤ê¡¢ÁªÂò¤·¤Æ¤¤¤ë¼­½ñ¤ÎÃøºî¸¢¾ðÊ󤬽ÐÎϤµ¤ì +¤Þ¤¹¡£ + +@example +eblook> @kbd{copyright} +¡Ö±Ñϼ­Åµ¡× Copyright (C) 1998 Keisuke Nishida +@end example + +¥³¥Þ¥ó¥É @code{help} ¤Ë¤è¤ê¡¢¥³¥Þ¥ó¥É¤Î°ìÍ÷¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ + +@c ********************************************************************* +@node Commands, Variables, Information, Top +@chapter ¥³¥Þ¥ó¥É°ìÍ÷ + +@table @code +@item book [@var{directory} [@var{appendix}]] +¼­½ñ¤òÁªÂò¤·¤Þ¤¹¡£Âè°ì°ú¿ô¤Ë¤Ï½ñÀҤΤ¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¡¢ÂèÆó°ú¿ô¤Ë¤Ï +Appendix ¤Î¤¢¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£Á´¤Æ¾Êά¤·¤¿¾ì¹ç¤Ë¤Ï¡¢¸½ºß¤ÎÀß +Ä꤬ɽ¼¨¤µ¤ì¤Þ¤¹¡£ + +@item info +ÁªÂò¤µ¤ì¤Æ¤¤¤ë½ñÀҤ˴ؤ¹¤ë¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ + +@item list +ÁªÂò¤µ¤ì¤Æ¤¤¤ë½ñÀҤμ­½ñ°ìÍ÷¤ò½ÐÎϤ·¤Þ¤¹¡£ + +@item select @var{dictionary} +¼­½ñ¤òÁªÂò¤·¤Þ¤¹¡£ÀßÄꤹ¤Ù¤­Ãͤϡ¢@code{list} ¥³¥Þ¥ó¥É¤Î½ÐÎϤ«¤éÆÀ¤é¤ì¤Þ¤¹¡£ + +@item subinfo +ÁªÂò¤µ¤ì¤Æ¤¤¤ë¼­½ñ¤Ë´Ø¤¹¤ë¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ + +@item copyright +ÁªÂò¤µ¤ì¤Æ¤¤¤ë¼­½ñ¤ÎÃøºî¸¢¾ðÊó¤ò½ÐÎϤ·¤Þ¤¹¡£ + +@item menu +ÁªÂò¤µ¤ì¤Æ¤¤¤ë¼­½ñ¤¬¥á¥Ë¥å¡¼¤ò»ý¤Ä¾ì¹ç¡¢¤½¤ì¤ò½ÐÎϤ·¤Þ¤¹¡£(@pxref{Menu}) + +@item search @var{pattern} [@var{offset}] +¸¡º÷¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ÂèÆó°ú¿ô¤Ï½ÐÎϤγ«»Ï°ÌÃÖ¡£(@pxref{Search}) + +@item content @var{entry} [@var{offset}] +¥¨¥ó¥È¥ê¤ÎÆâÍƤò½ÐÎϤ·¤Þ¤¹¡£ÂèÆó°ú¿ô¤Ï½ÐÎϤγ«»Ï°ÌÃÖ¡£(@pxref{Content}) + +@item font [@var{id}] +³°»ú¥Ç¡¼¥¿¤ò xbm ·Á¼°¤Ç½ÐÎϤ·¤Þ¤¹¡£°ú¿ô¤ò¾Êά¤·¤¿¾ì¹ç¡¢Á´¤Æ¤Î³°»ú¤Î¾ðÊó¤ò +½ÐÎϤ·¤Þ¤¹¡£³°»ú¤Î¹â¤µ¤ÏÊÑ¿ô @code{font} ¤Ë¤è¤êÍ¿¤¨¤é¤ì¤Þ¤¹¡£ + +@item show [@code{-a}] [@var{variable}] +ÊÑ¿ô¤ÎÃͤò½ÐÎϤ·¤Þ¤¹¡£°ú¿ô¤ò¾Êά¤·¤¿¾ì¹ç¡¢¤¹¤Ù¤Æ¤ÎÊÑ¿ô¤Î°ìÍ÷¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£ +@code{-a} ¤ò»ØÄꤹ¤ë¤È¡¢Ä̾ïɽ¼¨¤µ¤ì¤Ê¤¤ÆâÉôÊÑ¿ô¤âɽ¼¨¤·¤Þ¤¹¡£ + +@item set @var{variable} @var{value} +ÊÑ¿ô¤ÎÃͤò¥»¥Ã¥È¤·¤Þ¤¹¡£ + +@item unset @var{varialbe}... +ÊÑ¿ô¤ò¥¯¥ê¥¢¤·¤Þ¤¹¡£ + +@item help +¥³¥Þ¥ó¥É¤Î°ìÍ÷¤ò½ÐÎϤ·¤Þ¤¹¡£ + +@item quit +eblook ¤ò½ªÎ»¤·¤Þ¤¹¡£ +@end table + +@c ********************************************************************* +@node Variables, Compile, Commands, Top +@chapter ÊÑ¿ô°ìÍ÷ + +@table @code +@item search-method +@code{search} ¥³¥Þ¥ó¥É¤Î¸¡º÷Ë¡¡£@code{exact}, @code{word}, +@code{endword}, @code{glob} ¤Î¤¤¤º¤ì¤«¤¬²Äǽ¡£¥Ç¥Õ¥©¥ë¥È¤Ï @code{glob}¡£ + +@item max-hits +@code{search} ¥³¥Þ¥ó¥É¤¬½ÐÎϤ¹¤ëºÇÂç¤Î¹àÌÜ¿ô¡£0 ¤Î¤È¤­ÌµÀ©¸Â¡£ +¥Ç¥Õ¥©¥ë¥È¤Ï 256¡£ + +@item max-text +@code{content} ¥³¥Þ¥ó¥É¤¬½ÐÎϤ¹¤ëɽ¼¨¥Ð¥¤¥È¿ô(¤ÎÌÜ°Â)¡£0 ¤Î¤È¤­ÌµÀ©¸Â¡£ +¥Ç¥Õ¥©¥ë¥È¤Ï 8192¡£ + +@item font +³°»ú¥Ç¡¼¥¿¤Î¹â¤µ¡£¥Ç¥Õ¥©¥ë¥È¤Ï 16¡£ + +@item kanji-code +Æþ½ÐÎϤÎʸ»ú¥³¡¼¥É¡£ÀßÄê½ÐÍè¤ëÃÍ¤Ï @code{jis}, @code{sjis}, @code{euc}, +@code{utf8}, @code{auto} ¤Ê¤É¡£(Âçʸ»ú¡¢¾®Ê¸»ú¤Î¶èÊ̤ʤ·)¡£»ÈÍѤǤ­¤ë¥³¡¼¥É¤Ï OS ¤Ë°Í¸¤·¤Þ¤¹¡£ + +@item prompt +¥×¥í¥ó¥×¥È¡£¥Ç¥Õ¥©¥ë¥È¤Ï "eblook> "¡£ + +@item version +eblook ¤Î¥Ð¡¼¥¸¥ç¥óÈֹ档 + +@item use-narrow-kana +"true" ¤ò»ØÄꤹ¤ë¤È½ÐÎϤËȾ³Ñ¥«¥Êʸ»ú¤ò´Þ¤á¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ï "off" ¤Ç¡¢ +Ⱦ³Ñ¥«¥Êʸ»ú¤ÏÁ´³Ñʸ»ú¤È¤·¤Æ½ÐÎϤµ¤ì¤Þ¤¹¡£ + +@item stop-code +[ÇÑ]¥Æ¥­¥¹¥È½ÐÎϤνªÎ»¥³¡¼¥É¡£"set stop-code 0x1f090000" ¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ +¼­½ñ¤Ë¤è¤Ã¤Æ¤Ï¡¢¤³¤ì¤ò»ØÄꤷ¤Ê¤¤¤È½ÐÎϤ¬Å¬ÀڤʸĽê¤Ç½ªÎ»¤·¤Þ¤»¤ó¡£ +ºÇ¶á¤Î eb library (Version 3.x) ¤È¤ÎÁȤ߹ç¤ï¤»¤Ç¤Ïµ¡Ç½¤·¤Þ¤»¤ó¡£¤«¤ï¤ê¤Ë +appendix file ¤ò»ØÄꤷ¤Æ²¼¤µ¤¤¡£(@pxref{Appendix}) + +@item pager +[²¾] "on" ¤òÀßÄꤹ¤ë¤È¸¡º÷·ë²Ìɽ¼¨»þ (content ¥³¥Þ¥ó¥É)¤Ë ´Ä¶­ÊÑ¿ô PAGER ¤Ç +»ØÄꤷ¤¿¥Ú¡¼¥¸¥ã¡¼¤¬»ÈÍѤµ¤ì¤ë¡£¤³¤Îµ¡Ç½¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë»þ¤Ë +--with-pager ¥ª¥×¥·¥ç¥ó¤ò¤Ä¤±¤Æ configure ¤¹¤ëɬÍפ¬¤¢¤ë¡£ +(Ãí)¤³¤ÎÊÑ¿ô¤Ï¾­ÍèÊѹ¹¤µ¤ì¤ë²ÄǽÀ­¤¬¹â¤¤ + +@item decorate-mode +[²¾] "on" ¤òÀßÄꤹ¤ë¤Èʸ»úÁõ¾þ¤Î¤¿¤á¤Î¥¿¥°¤ò½ÐÎϤ·¤Þ¤¹¡£ +(Ãí)¤³¤ÎÊÑ¿ô¤Ï¾­ÍèÊѹ¹¤µ¤ì¤ë²ÄǽÀ­¤¬¹â¤¤ +@end table + +@c ********************************************************************* +@node Compile, How To Get,Variables, Top +@chapter ¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë +Ä̾ï¤Î UNIX ´Ä¶­¤Ç¤Ï¡¢¥³¥ó¥Ñ¥¤¥ë¤Ï¤½¤ì¤Û¤ÉÆñ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ +°Ê²¼¤Î¼ê½ç¤Ç¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤Ê¤Ã¤Æ²¼¤µ¤¤¡£ +@enumerate +@item ¤Þ¤º¡¢eb library ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ²¼¤µ¤¤¡£ eb library ¤Ï +@url{http://www.sra.co.jp/people/m-kasahr/eb/} ¤è¤êÆþ¼ê²Äǽ¤Ç¤¹¡£ +@item @kbd{configure} ¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +@kbd{./configure --prefix=/usr --with-eb-conf=/etc/eb.conf } +¤Ê¤É¤È¤·¤Þ¤¹¡£»ØÄê¤Ç¤­¤ë¥ª¥×¥·¥ç¥ó¤Ï°Ê²¼¤Î°ìÍ÷¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ +@item @kbd{make} ¤ò¼Â¹Ô¤·¤Þ¤¹¡£ +@item @kbd{make install} ¤ò¼Â¹Ô¤·¤Þ¤¹¡£¥¤¥ó¥¹¥È¡¼¥ëÀè¤Ë¤è¤Ã¤Æ¤Ï +root ¸¢¸Â¤¬É¬Íפˤʤê¤Þ¤¹¡£ +@end enumerate + +¼çÍפÊÀßÄꥪ¥×¥·¥ç¥ó + +@table @code +@item --prefix +¥¤¥ó¥¹¥È¡¼¥ëÀè¤ò»ØÄꤷ¤Þ¤¹¡£²¿¤â»ØÄꤷ¤Ê¤¤¤È¡¢ @kbd{--prefix=/usr/local} ¤ò +»ØÄꤷ¤¿¾ì¹ç¤ÈƱ¤¸¤Ç¤¹¡£ +@item --with-eb-conf=FILE +eb library ¤ÎÀßÄê¾ðÊó¥Õ¥¡¥¤¥ë¤Î¤¢¤ê¤«¤ò»ØÄꤷ¤Þ¤¹¡£Ä̾¼«Æ°Åª¤Ë +$(prefix)/etc/eb.conf ($(sysconfdir)/eb.conf)¤¬²¾Äꤵ¤ì¤ë¤Î¤Ç¡¢ +¤½¤ì°Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¾ì¹ç¤Ë¤Ï @kbd{--with-eb-conf=/etc/eb.conf} +¤¢¤ë¤¤¤Ï @kbd{--sysconfdir=/etc} ¤Ê¤É¤È¤·¤ÆÌÀ¼¨Åª¤Ë»ØÄꤷ¤Æ²¼¤µ¤¤¡£ +@item --with-readline +GNU readline ¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ·¤Æ¹ÔÊÔ½¸¤ò¹Ô¤¦¾ì¹ç¤Ë»ØÄꤷ¤Þ¤¹¡£ +@item --with-pager +¸¡º÷·ë²Ì¤ò³°Éô pager ¤òÍøÍѤ·¤Æɽ¼¨¤·¤Þ¤¹¡£¼ÂºÝ¤Î»ÈÍѤˤ¢¤¿¤Ã¤Æ¤Ï¡¢´Ä¶­ÊÑ¿ô +@kbd{PAGER} ¤Î»ØÄê (@kbd{setenv PAGER less} Åù) ¤È eblook ÊÑ¿ô¤Î»ØÄê @kbd{set pager on}"¤¬É¬ÍפǤ¹¡£ +@end table + +@c ********************************************************************* +@node How To Get, , Compile, Top +@chapter ºÇ¿·¾ðÊó¤ÎÆþ¼ê + +ºÇ¿·¤Î eblook ¤Ï¡¤¼¡¤Î¤È¤³¤í¤«¤éÆþ¼ê²Äǽ¤Ç¤¹¡£ + +@table @asis +@item eblook +@url{http://openlab.ring.gr.jp/edict/eblook/} +@end table + +eblook ¤Ë´Ø¤¹¤ë¾ðÊó¸ò´¹¤Ï¡¢edict ¤ä NDTPD ¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ë¤Æ¹Ô¤ï¤ì +¤Æ¤¤¤Þ¤¹¡£ + +@table @asis +@item edict +@url{http://openlab.ring.gr.jp/edict/} +@item NDTPD +@url{http://www.sra.co.jp/people/m-kasahr/ndtpd/} +@end table + +eblook ¤Ï edict ³«È¯¥Á¡¼¥à (@email{edict@@ring.gr.jp}) ¤Ë¤è¤ê´ÉÍý¤µ +¤ì¤Æ¤¤¤Þ¤¹¡£eblook ¤Ë´Ø¤¹¤ëÌ䤤¹ç¤ï¤»¤Ï¤³¤Á¤é¤Þ¤Ç¤ª´ê¤¤¤·¤Þ¤¹¡£ + +@bye diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/getopt.c b/lib/ebu/others/eblook-1.6.1+media-20200414/getopt.c new file mode 100644 index 0000000..b853559 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/getopt.c @@ -0,0 +1,1031 @@ +/* Getopt for GNU. + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu + before changing it! + + Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 + Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This tells Alpha OSF/1 not to define a getopt prototype in . + Ditto for AIX 3.2 and . */ +#ifndef _NO_PROTO +#define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 +#include +#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +#define ELIDE_CODE +#endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +#include +#include +#endif /* GNU C library. */ + +#ifdef VMS +#include +#if HAVE_STRING_H - 0 +#include +#endif +#else +#if HAVE_STRING_H +#include +#endif +#endif + +#if defined (WIN32) && !defined (__CYGWIN32__) +/* It's not Unix, really. See? Capital letters. */ +#include +#define getpid() GetCurrentProcessId() +#endif + +#ifndef _ +/* This is for other GNU distributions with internationalized messages. + When compiling libc, the _ macro is predefined. */ +#ifdef HAVE_LIBINTL_H +# include +# define _(msgid) gettext (msgid) +#else +# define _(msgid) (msgid) +#endif +#endif + +/* This version of `getopt' appears to the caller like standard Unix `getopt' + but it behaves differently for the user, since it allows the user + to intersperse the options with the other arguments. + + As `getopt' works, it permutes the elements of ARGV so that, + when it is done, all the options precede everything else. Thus + all application programs are extended to handle flexible argument order. + + Setting the environment variable POSIXLY_CORRECT disables permutation. + Then the behavior is completely standard. + + GNU application programs can use a third alternative mode in which + they can distinguish the relative order of options and other arguments. */ + +#include "getopt.h" + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +char *optarg = NULL; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* 1003.2 says this must be 1 before any call. */ +int optind = 1; + +/* Formerly, initialization of getopt depended on optind==0, which + causes problems with re-calling getopt as programs generally don't + know that. */ + +int __getopt_initialized = 0; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int optopt = '?'; + +/* Describe how to deal with options that follow non-option ARGV-elements. + + If the caller did not specify anything, + the default is REQUIRE_ORDER if the environment variable + POSIXLY_CORRECT is defined, PERMUTE otherwise. + + REQUIRE_ORDER means don't recognize them as options; + stop option processing when the first non-option is seen. + This is what Unix does. + This mode of operation is selected by either setting the environment + variable POSIXLY_CORRECT, or using `+' as the first character + of the list of option characters. + + PERMUTE is the default. We permute the contents of ARGV as we scan, + so that eventually all the non-options are at the end. This allows options + to be given in any order, even with programs that were not written to + expect this. + + RETURN_IN_ORDER is an option available to programs that were written + to expect options and other ARGV-elements in any order and that care about + the ordering of the two. We describe each non-option ARGV-element + as if it were the argument of an option with character code 1. + Using `-' as the first character of the list of option characters + selects this mode of operation. + + The special argument `--' forces an end of option-scanning regardless + of the value of `ordering'. In the case of RETURN_IN_ORDER, only + `--' can cause `getopt' to return -1 with `optind' != ARGC. */ + +static enum +{ + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER +} ordering; + +/* Value of POSIXLY_CORRECT environment variable. */ +static char *posixly_correct; + +#ifdef __GNU_LIBRARY__ +/* We want to avoid inclusion of string.h with non-GNU libraries + because there are many ways it can cause trouble. + On some systems, it contains special magic macros that don't work + in GCC. */ +#include +#define my_index strchr +#else + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +char *getenv (); + +static char * +my_index (str, chr) + const char *str; + int chr; +{ + while (*str) + { + if (*str == chr) + return (char *) str; + str++; + } + return 0; +} + +#endif /* not __GNU_LIBRARY__ */ + +/* Handle permutation of arguments. */ + +/* Describe the part of ARGV that contains non-options that have + been skipped. `first_nonopt' is the index in ARGV of the first of them; + `last_nonopt' is the index after the last of them. */ + +static int first_nonopt; +static int last_nonopt; + +#ifdef _LIBC +/* Bash 2.0 gives us an environment variable containing flags + indicating ARGV elements that should not be considered arguments. */ + +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; + +static int nonoption_flags_max_len; +static int nonoption_flags_len; + +static int original_argc; +static char *const *original_argv; + +extern pid_t __libc_pid; + +/* Make sure the environment variable bash 2.0 puts in the environment + is valid for the getopt call we must make sure that the ARGV passed + to getopt is that one passed to the process. */ +static void +__attribute__ ((unused)) +store_args_and_env (int argc, char *const *argv) +{ + /* XXX This is no good solution. We should rather copy the args so + that we can compare them later. But we must not use malloc(3). */ + original_argc = argc; + original_argv = argv; +} +text_set_element (__libc_subinit, store_args_and_env); + +#define SWAP_FLAGS(ch1, ch2) \ + if (nonoption_flags_len > 0) \ + { \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ + } +#else /* !_LIBC */ +#define SWAP_FLAGS(ch1, ch2) +#endif /* _LIBC */ + +/* Exchange two adjacent subsequences of ARGV. + One subsequence is elements [first_nonopt,last_nonopt) + which contains all the non-options that have been skipped so far. + The other is elements [last_nonopt,optind), which contains all + the options processed since those non-options were skipped. + + `first_nonopt' and `last_nonopt' are relocated so that they describe + the new indices of the non-options in ARGV after they are moved. */ + +static void exchange (char **); + +static void +exchange (argv) + char **argv; +{ + int bottom = first_nonopt; + int middle = last_nonopt; + int top = optind; + char *tem; + + /* Exchange the shorter segment with the far end of the longer segment. + That puts the shorter segment into the right place. + It leaves the longer segment in the right place overall, + but it consists of two parts that need to be swapped next. */ + +#ifdef _LIBC + /* First make sure the handling of the `__getopt_nonoption_flags' + string can work normally. Our top argument must be in the range + of the string. */ + if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) + { + /* We must extend the array. The user plays games with us and + presents new arguments. */ + char *new_str = malloc (top + 1); + if (new_str == NULL) + nonoption_flags_len = nonoption_flags_max_len = 0; + else + { + memcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len); + memset (&new_str[nonoption_flags_max_len], '\0', + top + 1 - nonoption_flags_max_len); + nonoption_flags_max_len = top + 1; + __getopt_nonoption_flags = new_str; + } + } +#endif + + while (top > middle && middle > bottom) + { + if (top - middle > middle - bottom) + { + /* Bottom segment is the short one. */ + int len = middle - bottom; + register int i; + + /* Swap it with the top part of the top segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); + } + /* Exclude the moved bottom segment from further swapping. */ + top -= len; + } + else + { + /* Top segment is the short one. */ + int len = top - middle; + register int i; + + /* Swap it with the bottom part of the bottom segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + SWAP_FLAGS (bottom + i, middle + i); + } + /* Exclude the moved top segment from further swapping. */ + bottom += len; + } + } + + /* Update records for the slots the non-options now occupy. */ + + first_nonopt += (optind - last_nonopt); + last_nonopt = optind; +} + +/* Initialize the internal data when the first call is made. */ + +static const char *_getopt_initialize (int, char *const *, const char *); + +static const char * +_getopt_initialize (argc, argv, optstring) + int argc; + char *const *argv; + const char *optstring; +{ + /* Start processing options with ARGV-element 1 (since ARGV-element 0 + is the program name); the sequence of previously skipped + non-option ARGV-elements is empty. */ + + first_nonopt = last_nonopt = optind; + + nextchar = NULL; + + posixly_correct = getenv ("POSIXLY_CORRECT"); + + /* Determine how to handle the ordering of options and nonoptions. */ + + if (optstring[0] == '-') + { + ordering = RETURN_IN_ORDER; + ++optstring; + } + else if (optstring[0] == '+') + { + ordering = REQUIRE_ORDER; + ++optstring; + } + else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; + +#ifdef _LIBC + if (posixly_correct == NULL + && argc == original_argc && argv == original_argv) + { + if (nonoption_flags_max_len == 0) + { + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') + nonoption_flags_max_len = -1; + else + { + const char *orig_str = __getopt_nonoption_flags; + int len = nonoption_flags_max_len = strlen (orig_str); + if (nonoption_flags_max_len < argc) + nonoption_flags_max_len = argc; + __getopt_nonoption_flags = + (char *) malloc (nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) + nonoption_flags_max_len = -1; + else + { + memcpy (__getopt_nonoption_flags, orig_str, len); + memset (&__getopt_nonoption_flags[len], '\0', + nonoption_flags_max_len - len); + } + } + } + nonoption_flags_len = nonoption_flags_max_len; + } + else + nonoption_flags_len = 0; +#endif + + return optstring; +} + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `getopt' finds another option character, it returns that character, + updating `optind' and `nextchar' so that the next call to `getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `getopt' returns -1. + Then `optind' is the index in ARGV of the first ARGV-element + that is not an option. (The ARGV-elements have been permuted + so that those that are not options now come last.) + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `optarg'. Two colons mean an option that + wants an optional arg; if there is text in the current ARGV-element, + it is returned in `optarg', otherwise `optarg' is set to zero. + + If OPTSTRING starts with `-' or `+', it requests different methods of + handling the non-option ARGV-elements. + See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. + + Long-named options begin with `--' instead of `-'. + Their names may be abbreviated as long as the abbreviation is unique + or is an exact match for some defined option. If they have an + argument, it follows the option name in the same ARGV-element, separated + from the option name by a `=', or else the in next ARGV-element. + When `getopt' finds a long-named option, it returns 0 if that option's + `flag' field is nonzero, the value of the option's `val' field + if the `flag' field is zero. + + The elements of ARGV aren't really const, because we permute them. + But we pretend they're const in the prototype to be compatible + with other systems. + + LONGOPTS is a vector of `struct option' terminated by an + element containing a name which is zero. + + LONGIND returns the index in LONGOPT of the long-named option found. + It is only valid when a long-named option has been found by the most + recent call. + + If LONG_ONLY is nonzero, '-' as well as '--' can introduce + long-named options. */ + +int +_getopt_internal (argc, argv, optstring, longopts, longind, long_only) + int argc; + char *const *argv; + const char *optstring; + const struct option *longopts; + int *longind; + int long_only; +{ + optarg = NULL; + + if (optind == 0 || !__getopt_initialized) + { + if (optind == 0) + optind = 1; /* Don't scan ARGV[0], the program name. */ + optstring = _getopt_initialize (argc, argv, optstring); + __getopt_initialized = 1; + } + + /* Test whether ARGV[optind] points to a non-option argument. + Either it does not have option syntax, or there is an environment flag + from the shell indicating it is not an option. The later information + is only used when the used in the GNU libc. */ +#ifdef _LIBC +#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ + || (optind < nonoption_flags_len \ + && __getopt_nonoption_flags[optind] == '1')) +#else +#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') +#endif + + if (nextchar == NULL || *nextchar == '\0') + { + /* Advance to the next ARGV-element. */ + + /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been + moved back by the user (who may also have changed the arguments). */ + if (last_nonopt > optind) + last_nonopt = optind; + if (first_nonopt > optind) + first_nonopt = optind; + + if (ordering == PERMUTE) + { + /* If we have just processed some options following some non-options, + exchange them so that the options come first. */ + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (last_nonopt != optind) + first_nonopt = optind; + + /* Skip any additional non-options + and extend the range of non-options previously skipped. */ + + while (optind < argc && NONOPTION_P) + optind++; + last_nonopt = optind; + } + + /* The special ARGV-element `--' means premature end of options. + Skip it like a null option, + then exchange with previous non-options as if it were an option, + then skip everything else like a non-option. */ + + if (optind != argc && !strcmp (argv[optind], "--")) + { + optind++; + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = optind; + last_nonopt = argc; + + optind = argc; + } + + /* If we have done all the ARGV-elements, stop the scan + and back over any non-options that we skipped and permuted. */ + + if (optind == argc) + { + /* Set the next-arg-index to point at the non-options + that we previously skipped, so the caller will digest them. */ + if (first_nonopt != last_nonopt) + optind = first_nonopt; + return -1; + } + + /* If we have come to a non-option and did not permute it, + either stop the scan or describe it to the caller and pass it by. */ + + if (NONOPTION_P) + { + if (ordering == REQUIRE_ORDER) + return -1; + optarg = argv[optind++]; + return 1; + } + + /* We have found another option-ARGV-element. + Skip the initial punctuation. */ + + nextchar = (argv[optind] + 1 + + (longopts != NULL && argv[optind][1] == '-')); + } + + /* Decode the current option-ARGV-element. */ + + /* Check whether the ARGV-element is a long option. + + If long_only and the ARGV-element has the form "-f", where f is + a valid short option, don't consider it an abbreviated form of + a long option that starts with f. Otherwise there would be no + way to give the -f short option. + + On the other hand, if there's a long option "fubar" and + the ARGV-element is "-fu", do consider that an abbreviation of + the long option, just like "--fu", and not "-f" with arg "u". + + This distinction seems to be the most useful approach. */ + + if (longopts != NULL + && (argv[optind][1] == '-' + || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = -1; + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) + == (unsigned int) strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + optopt = 0; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + optind++; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + _("%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fprintf (stderr, + _("%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + + nextchar += strlen (nextchar); + + optopt = pfound->val; + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + optopt = pfound->val; + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + + /* Can't find it as a long option. If this is not getopt_long_only, + or the option starts with '--' or is not a valid short + option, then it's an error. + Otherwise interpret it as a short option. */ + if (!long_only || argv[optind][1] == '-' + || my_index (optstring, *nextchar) == NULL) + { + if (opterr) + { + if (argv[optind][1] == '-') + /* --option */ + fprintf (stderr, _("%s: unrecognized option `--%s'\n"), + argv[0], nextchar); + else + /* +option or -option */ + fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[optind][0], nextchar); + } + nextchar = (char *) ""; + optind++; + optopt = 0; + return '?'; + } + } + + /* Look at and handle the next short option-character. */ + + { + char c = *nextchar++; + char *temp = my_index (optstring, c); + + /* Increment `optind' when we start to process its last character. */ + if (*nextchar == '\0') + ++optind; + + if (temp == NULL || c == ':') + { + if (opterr) + { + if (posixly_correct) + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: illegal option -- %c\n"), + argv[0], c); + else + fprintf (stderr, _("%s: invalid option -- %c\n"), + argv[0], c); + } + optopt = c; + return '?'; + } + /* Convenience. Treat POSIX -W foo same as long option --foo */ + if (temp[0] == 'W' && temp[1] == ';') + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; + int option_index; + + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + return c; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + + /* optarg is now the argument, see if it's in the + table of longopts. */ + + for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) == strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + return '?'; + } + if (pfound != NULL) + { + option_index = indfound; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + fprintf (stderr, _("\ +%s: option `-W %s' doesn't allow an argument\n"), + argv[0], pfound->name); + + nextchar += strlen (nextchar); + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + nextchar = NULL; + return 'W'; /* Let the application handle it. */ + } + if (temp[1] == ':') + { + if (temp[2] == ':') + { + /* This is an option that accepts an argument optionally. */ + if (*nextchar != '\0') + { + optarg = nextchar; + optind++; + } + else + optarg = NULL; + nextchar = NULL; + } + else + { + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + nextchar = NULL; + } + } + return c; + } +} + +int +getopt (argc, argv, optstring) + int argc; + char *const *argv; + const char *optstring; +{ + return _getopt_internal (argc, argv, optstring, + (const struct option *) 0, + (int *) 0, + 0); +} + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + + c = getopt (argc, argv, "abc:d:0123456789"); + if (c == -1) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/getopt.h b/lib/ebu/others/eblook-1.6.1+media-20200414/getopt.h new file mode 100644 index 0000000..d68b6d6 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/getopt.h @@ -0,0 +1,119 @@ +/* Declarations for getopt. + Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _GETOPT_H +#define _GETOPT_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +extern char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +extern int optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + +extern int opterr; + +/* Set to an option character which was unrecognized. */ + +extern int optopt; + +/* Describe the long-named options requested by the application. + The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector + of `struct option' terminated by an element containing a name which is + zero. + + The field `has_arg' is: + no_argument (or 0) if the option does not take an argument, + required_argument (or 1) if the option requires an argument, + optional_argument (or 2) if the option takes an optional argument. + + If the field `flag' is not NULL, it points to a variable that is set + to the value given in the field `val' when the option is found, but + left unchanged if the option is not found. + + To have a long-named option do something other than set an `int' to + a compiled-in constant, such as set a value from `optarg', set the + option's `flag' field to zero and its `val' field to a nonzero + value (the equivalent single-letter option character, if there is + one). For long options that have a zero `flag' field, `getopt' + returns the contents of the `val' field. */ + +struct option +{ + const char *name; + /* has_arg can't be an enum because some compilers complain about + type mismatches in all the code that assumes it is an int. */ + int has_arg; + int *flag; + int val; +}; + +/* Names for the values of the `has_arg' field of `struct option'. */ + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +#ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ +extern int getopt (int argc, char *const *argv, const char *shortopts); +#else /* not __GNU_LIBRARY__ */ +extern int getopt (); +#endif /* __GNU_LIBRARY__ */ +extern int getopt_long (int argc, char *const *argv, const char *shortopts, + const struct option *longopts, int *longind); +extern int getopt_long_only (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind); + +/* Internal only. Users should not call this directly. */ +extern int _getopt_internal (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind, + int long_only); + +#ifdef __cplusplus +} +#endif + +#endif /* _GETOPT_H */ diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/getopt1.c b/lib/ebu/others/eblook-1.6.1+media-20200414/getopt1.c new file mode 100644 index 0000000..ca15582 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/getopt1.c @@ -0,0 +1,179 @@ +/* getopt_long and getopt_long_only entry points for GNU getopt. + Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "getopt.h" + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 +#include +#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +#define ELIDE_CODE +#endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +#include +#endif + +#ifndef NULL +#define NULL 0 +#endif + +int +getopt_long (argc, argv, options, long_options, opt_index) + int argc; + char *const *argv; + const char *options; + const struct option *long_options; + int *opt_index; +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 0); +} + +/* Like getopt_long, but '-' as well as '--' can indicate a long option. + If an option that starts with '-' (not '--') doesn't match a long option, + but does match a short option, it is parsed as a short option + instead. */ + +int +getopt_long_only (argc, argv, options, long_options, opt_index) + int argc; + char *const *argv; + const char *options; + const struct option *long_options; + int *opt_index; +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 1); +} + + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +#include + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + int option_index = 0; + static struct option long_options[] = + { + {"add", 1, 0, 0}, + {"append", 0, 0, 0}, + {"delete", 1, 0, 0}, + {"verbose", 0, 0, 0}, + {"create", 0, 0, 0}, + {"file", 1, 0, 0}, + {0, 0, 0, 0} + }; + + c = getopt_long (argc, argv, "abc:d:0123456789", + long_options, &option_index); + if (c == -1) + break; + + switch (c) + { + case 0: + printf ("option %s", long_options[option_index].name); + if (optarg) + printf (" with arg %s", optarg); + printf ("\n"); + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", optarg); + break; + + case 'd': + printf ("option d with value `%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/install-sh b/lib/ebu/others/eblook-1.6.1+media-20200414/install-sh new file mode 100644 index 0000000..0360b79 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/install-sh @@ -0,0 +1,501 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2016-01-11.22; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# 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. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # 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 $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/ltmain.sh b/lib/ebu/others/eblook-1.6.1+media-20200414/ltmain.sh new file mode 100644 index 0000000..a87bb19 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/ltmain.sh @@ -0,0 +1,11150 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from /usr/src/ports/libtool/libtool-2.4.6-7.x86_64/src/libtool-2.4.6/build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.6 +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program 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 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES 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, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program 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 3 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, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -stdlib=* select c++ std lib with clang + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -fopenacc|-fopenmp|-ftree-parallelize-loops=*|-fcilkplus|-fgnu-tm| \ + -ffast-math|-funsafe-math-optimizations|-fvtable-verify*| \ + -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/m4/eb4.m4 b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/eb4.m4 new file mode 100644 index 0000000..5817a1f --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/eb4.m4 @@ -0,0 +1,116 @@ +dnl * +dnl * Make ready to link EB Library 3.x or 4.x. +dnl * +dnl * Copyright (c) 2000-2006 Motoyuki Kasahara +dnl * +dnl * Redistribution and use in source and binary forms, with or without +dnl * modification, are permitted provided that the following conditions +dnl * are met: +dnl * 1. Redistributions of source code must retain the above copyright +dnl * notice, this list of conditions and the following disclaimer. +dnl * 2. Redistributions in binary form must reproduce the above copyright +dnl * notice, this list of conditions and the following disclaimer in the +dnl * documentation and/or other materials provided with the distribution. +dnl * 3. Neither the name of the project nor the names of its contributors +dnl * may be used to endorse or promote products derived from this software +dnl * without specific prior written permission. +dnl * +dnl * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +dnl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +dnl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +dnl * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +dnl * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +dnl * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +dnl * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +dnl * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +dnl * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +dnl * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +dnl * SUCH DAMAGE. +dnl * + +AC_DEFUN([eb_LIB_EB4], +[dnl +dnl * +dnl * Requirements. +dnl * +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_LIBTOOL]) +AC_REQUIRE([AC_TYPE_OFF_T]) +AC_REQUIRE([AC_TYPE_SIZE_T]) + +AC_CHECK_HEADERS(limits.h) +AC_CHECK_TYPE(ssize_t, int) + +dnl * +dnl * --with-eb-conf option. +dnl * +AC_ARG_WITH(eb-conf, +AC_HELP_STRING([--with-eb-conf=FILE], + [eb.conf file is FILE [[SYSCONFDIR/eb.conf]]]), +[ebconf="${withval}"], [ebconf=$sysconfdir/eb.conf]) +if test X$prefix = XNONE; then + PREFIX=$ac_default_prefix +else + PREFIX=$prefix +fi +ebconf=`echo X$ebconf | sed -e 's/^X//' -e 's;\${prefix};'"$PREFIX;g" \ + -e 's;\$(prefix);'"$PREFIX;g"` + +dnl * +dnl * Read eb.conf +dnl * +AC_MSG_CHECKING(for eb.conf) +AC_MSG_RESULT($ebconf) +if test -f ${ebconf}; then + . ${ebconf} +else + AC_MSG_ERROR($ebconf not found) +fi + +if test X$EBCONF_ENABLE_PTHREAD = Xyes; then + AC_DEFINE(EBCONF_ENABLE_PTHREAD, 1, + [Define if EB Library supports pthread.]) +fi +if test X$EBCONF_ENABLE_NLS = Xyes; then + AC_DEFINE(EBCONF_ENABLE_NLS, 1, + [Define if EB Library supports native language.]) +fi +if test X$EBCONF_ENABLE_EBNET = Xyes; then + AC_DEFINE(EBCONF_ENABLE_EBNET, 1, + [Define if EB Library supports remote access.]) +fi + +AC_SUBST(EBCONF_EBINCS) +AC_SUBST(EBCONF_EBLIBS) +AC_SUBST(EBCONF_ZLIBINCS) +AC_SUBST(EBCONF_ZLIBLIBS) +AC_SUBST(EBCONF_PTHREAD_CPPFLAGS) +AC_SUBST(EBCONF_PTHREAD_CFLAGS) +AC_SUBST(EBCONF_PTHREAD_LDFLAGS) +AC_SUBST(EBCONF_INTLINCS) +AC_SUBST(EBCONF_INTLLIBS) + +dnl * +dnl * Check for EB Library. +dnl * +AC_MSG_CHECKING(for EB Library) +save_CPPFLAGS=$CPPFLAGS +save_CFLAGS=$CFLAGS +save_LDFLAGS=$LDFLAGS +save_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $EBCONF_PTHREAD_CPPFLAGS $EBCONF_EBINCS $EBCONF_ZLIBINCS $EBCONF_INTLINCS" +CFLAGS="$CFLAGS $EBCONF_PTHREAD_CFLAGS" +LDFLAGS="$LDFAGS $EBCONF_PTHREAD_LDFLAGS" +LIBS="$LIBS $EBCONF_EBLIBS $EBCONF_ZLIBLIBS $EBCONF_INTLLIBS" +AC_TRY_LINK([#include ], +[eb_initialize_library(); return 0;], +try_eb=yes, try_eb=no) +CPPFLAGS=$save_CPPFLAGS +CFLAGS=$save_CFLAGS +LDFLAGS=$save_LDFLAGS +LIBS=$save_LIBS +AC_MSG_RESULT($try_eb) +if test ${try_eb} != yes; then + AC_MSG_ERROR(EB Library not available) +fi +]) diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ebu.m4 b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ebu.m4 new file mode 100644 index 0000000..1f11ebc --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ebu.m4 @@ -0,0 +1,138 @@ +dnl * +dnl * Make ready to link EB Library with UTF-8 support. +dnl * +dnl * Copyright (c) 2000-2006 Motoyuki Kasahara +dnl * Copyright (c) 2011 Kazuhiro Ito +dnl * +dnl * Redistribution and use in source and binary forms, with or without +dnl * modification, are permitted provided that the following conditions +dnl * are met: +dnl * 1. Redistributions of source code must retain the above copyright +dnl * notice, this list of conditions and the following disclaimer. +dnl * 2. Redistributions in binary form must reproduce the above copyright +dnl * notice, this list of conditions and the following disclaimer in the +dnl * documentation and/or other materials provided with the distribution. +dnl * 3. Neither the name of the project nor the names of its contributors +dnl * may be used to endorse or promote products derived from this software +dnl * without specific prior written permission. +dnl * +dnl * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +dnl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +dnl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +dnl * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +dnl * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +dnl * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +dnl * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +dnl * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +dnl * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +dnl * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +dnl * SUCH DAMAGE. +dnl * + +AC_DEFUN([eb_LIB_EBU], +[dnl +dnl * +dnl * --enable-ebu option +dnl * +AC_ARG_ENABLE(ebu, + AC_HELP_STRING([--enable-ebu], [Build with EB Library with UTF-8 support [[auto]]]), + ENABLE_EBU=$enableval, ENABLE_EBU=auto) + +if test $ENABLE_EBU != no; then + dnl * + dnl * Requirements. + dnl * + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_PROG_LIBTOOL]) + AC_REQUIRE([AC_TYPE_OFF_T]) + AC_REQUIRE([AC_TYPE_SIZE_T]) + + AC_CHECK_HEADERS(limits.h) + AC_CHECK_TYPE(ssize_t, int) + + dnl * + dnl * --with-ebu-conf option. + dnl * + AC_ARG_WITH(ebu-conf, + AC_HELP_STRING([--with-ebu-conf=FILE], + [ebu.conf file is FILE [[SYSCONFDIR/ebu.conf]]]), + [ebuconf="${withval}"], [ebuconf=$sysconfdir/ebu.conf]) + if test X$prefix = XNONE; then + PREFIX=$ac_default_prefix + else + PREFIX=$prefix + fi + ebuconf=`echo X$ebuconf | sed -e 's/^X//' -e 's;\${prefix};'"$PREFIX;g" \ + -e 's;\$(prefix);'"$PREFIX;g"` + + dnl * + dnl * Read ebu.conf + dnl * + AC_MSG_CHECKING(for ebu.conf) + AC_MSG_RESULT($ebuconf) + if test -f ${ebuconf}; then + . ${ebuconf} + else + if test $ENABLE_EBU = yes; then + AC_MSG_ERROR($ebuconf not found) + else + ENABLE_NLS=no + fi + fi +fi + +if test $ENABLE_EBU != no; then + if test X$EBCONF_ENABLE_PTHREAD = Xyes; then + AC_DEFINE(EBCONF_ENABLE_PTHREAD, 1, + [Define if EB Library supports pthread.]) + fi + if test X$EBCONF_ENABLE_NLS = Xyes; then + AC_DEFINE(EBCONF_ENABLE_NLS, 1, + [Define if EB Library supports native language.]) + fi + if test X$EBCONF_ENABLE_EBNET = Xyes; then + AC_DEFINE(EBCONF_ENABLE_EBNET, 1, + [Define if EB Library supports remote access.]) + fi + + AC_SUBST(EBCONF_EBINCS) + AC_SUBST(EBCONF_EBLIBS) + AC_SUBST(EBCONF_ZLIBINCS) + AC_SUBST(EBCONF_ZLIBLIBS) + AC_SUBST(EBCONF_PTHREAD_CPPFLAGS) + AC_SUBST(EBCONF_PTHREAD_CFLAGS) + AC_SUBST(EBCONF_PTHREAD_LDFLAGS) + AC_SUBST(EBCONF_INTLINCS) + AC_SUBST(EBCONF_INTLLIBS) + + dnl * + dnl * Check for EB Library with UTF-8 support. + dnl * + AC_MSG_CHECKING(for EB Library with UTF-8 support) + save_CPPFLAGS=$CPPFLAGS + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + save_LIBS=$LIBS + CPPFLAGS="$CPPFLAGS $EBCONF_PTHREAD_CPPFLAGS $EBCONF_EBINCS $EBCONF_ZLIBINCS $EBCONF_INTLINCS" + CFLAGS="$CFLAGS $EBCONF_PTHREAD_CFLAGS" + LDFLAGS="$LDFAGS $EBCONF_PTHREAD_LDFLAGS" + LIBS="$LIBS $EBCONF_EBLIBS $EBCONF_ZLIBLIBS $EBCONF_INTLLIBS" + AC_TRY_LINK([#include ], + [eb_initialize_library(); return 0;], + try_eb=yes, try_eb=no) + CPPFLAGS=$save_CPPFLAGS + CFLAGS=$save_CFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + AC_MSG_RESULT($try_eb) + if test ${try_eb} != yes; then + if test $ENABLE_EBU = yes; then + AC_MSG_ERROR(EB Library with UTF-8 support not available) + else + ENABLE_EBU=no + fi + else + AC_DEFINE(ENABLE_EBU, 1, [Define if EB library with UTF-8 support is requested]) + fi +fi +]) diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/m4/largefile.m4 b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/largefile.m4 new file mode 100644 index 0000000..a0dd034 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/largefile.m4 @@ -0,0 +1,63 @@ +dnl * +dnl * Copyright (c) 2009 Motoyuki Kasahara +dnl * +dnl * Redistribution and use in source and binary forms, with or without +dnl * modification, are permitted provided that the following conditions +dnl * are met: +dnl * 1. Redistributions of source code must retain the above copyright +dnl * notice, this list of conditions and the following disclaimer. +dnl * 2. Redistributions in binary form must reproduce the above copyright +dnl * notice, this list of conditions and the following disclaimer in the +dnl * documentation and/or other materials provided with the distribution. +dnl * 3. Neither the name of the project nor the names of its contributors +dnl * may be used to endorse or promote products derived from this software +dnl * without specific prior written permission. +dnl * +dnl * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND +dnl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +dnl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +dnl * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE +dnl * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +dnl * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +dnl * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +dnl * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +dnl * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +dnl * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +dnl * SUCH DAMAGE. +dnl * + +dnl * +dnl * Check for large file support. +dnl * +AC_DEFUN([eb_SYS_LARGEFILE], [dnl +AC_REQUIRE([AC_SYS_LARGEFILE]) +AC_CACHE_CHECK([for ll modifier of printf], ac_cv_func_printf_ll, +[AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #include + #include + int main() { + char buffer[[128]]; + sprintf(buffer, "%llx", (unsigned long long) 1 << 32); + return (strcmp(buffer, "100000000") == 0) ? 0 : 1; + } +])], [ac_cv_func_printf_ll=yes], [ac_cv_func_printf_ll=no])]) +AC_CACHE_CHECK([for I64 modifier of printf], ac_cv_func_printf_i64, +[AC_RUN_IFELSE([AC_LANG_SOURCE([ + #include + #include + #include + int main() { + char buffer[[128]]; + sprintf(buffer, "%I64x", (unsigned __int64) 1 << 32); + return (strcmp(buffer, "100000000") == 0) ? 0 : 1; + } +])], [ac_cv_func_printf_i64=yes], [ac_cv_func_printf_i64=no])]) +if test "$ac_cv_func_printf_ll" = yes; then + AC_DEFINE(PRINTF_LL_MODIFIER, 1, +[Define to `1' if printf() recognizes "ll" modifier for long long]) +fi +if test "$ac_cv_func_printf_i64" = yes; then + AC_DEFINE(PRINTF_I64_MODIFIER, 1, +[Define to `1' if printf() recognizes "I64" modifier for __int64]) +fi]) diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/m4/libtool.m4 b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/libtool.m4 new file mode 100644 index 0000000..a3bc337 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/libtool.m4 @@ -0,0 +1,8369 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool 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, see . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltoptions.m4 b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltoptions.m4 new file mode 100644 index 0000000..94b0829 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltoptions.m4 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltsugar.m4 b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltsugar.m4 new file mode 100644 index 0000000..9000a05 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltversion.m4 b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltversion.m4 new file mode 100644 index 0000000..fa04b52 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/m4/lt~obsolete.m4 b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/lt~obsolete.m4 new file mode 100644 index 0000000..c6b26f8 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/m4/lt~obsolete.m4 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/missing b/lib/ebu/others/eblook-1.6.1+media-20200414/missing new file mode 100644 index 0000000..c6e3795 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2016-01-11.22; # UTC + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program 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, 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, see . + +# 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. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/mkinstalldirs b/lib/ebu/others/eblook-1.6.1+media-20200414/mkinstalldirs new file mode 100644 index 0000000..a31ce6d --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/mkinstalldirs @@ -0,0 +1,162 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2016-01-11.22; # UTC + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' +IFS=" "" $nl" +errstatus=0 +dirmode= + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the 'mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because '.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file + shift + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp=$pathcomp/ + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/strcasecmp.c b/lib/ebu/others/eblook-1.6.1+media-20200414/strcasecmp.c new file mode 100644 index 0000000..e535cb4 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/strcasecmp.c @@ -0,0 +1,154 @@ +/* + * Copyright (c) 1997, 98, 2000 Motoyuki Kasahara + * + * This programs 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, 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. + */ + +/* + * This program requires the following Autoconf macros: + * AC_C_CONST + * AC_TYPE_SIZE_T + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include + +/* for DOS16 size_t definition */ +#include + +/* + * Character comparison table used in strcasecmp() and strncasecmp(). + */ +static const unsigned char comparison_table[] = { + /* 0x00 -- 0x0f */ + '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', + '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', + + /* 0x10 -- 0x1f */ + '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', + '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', + + /* 0x20 -- 0x2f */ + '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', + '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', + + /* 0x30 -- 0x3f */ + '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', + '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', + + /* 0x40 -- 0x4f */ + '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + + /* 0x50 -- 0x5f */ + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', + + /* 0x60 -- 0x6f */ + '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + + /* 0x70 -- 0x7f */ + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', + + /* 0x80 -- 0x8f */ + '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', + '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', + + /* 0x90 -- 0x9f */ + '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', + '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', + + /* 0xa0 -- 0xaf */ + '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', + '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', + + /* 0xb0 -- 0xbf */ + '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', + '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', + + /* 0xc0 -- 0xcf */ + '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', + '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', + + /* 0xd0 -- 0xdf */ + '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', + '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', + + /* 0xe0 -- 0xef */ + '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', + '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', + + /* 0xf0 -- 0xff */ + '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', + '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', +}; + + +/* + * Compare strings. + * Cases in the strings are insensitive. + */ +int +strcasecmp(string1, string2) + const char *string1; + const char *string2; +{ + const unsigned char *string1_p = (const unsigned char *)string1; + const unsigned char *string2_p = (const unsigned char *)string2; + int comparison_result; + + while (*string1_p != '\0') { + comparison_result + = comparison_table[*string1_p++] - comparison_table[*string2_p++]; + if (comparison_result != 0) + return comparison_result; + } + + return -comparison_table[*string2_p]; +} + + +/* + * Compare strings within `n' characters. + * Cases in the strings are insensitive. + */ +int +strncasecmp(string1, string2, n) + const char *string1; + const char *string2; + size_t n; +{ + const unsigned char *string1_p = (const unsigned char *)string1; + const unsigned char *string2_p = (const unsigned char *)string2; + size_t i = n; + int comparison_result; + + if (i == 0) + return 0; + + while (*string1_p != '\0') { + if (i-- <= 0) + return 0; + comparison_result + = comparison_table[*string1_p++] - comparison_table[*string2_p++]; + if (comparison_result != 0) + return comparison_result; + } + + return -comparison_table[*string2_p]; +} + + diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/strdup.c b/lib/ebu/others/eblook-1.6.1+media-20200414/strdup.c new file mode 100644 index 0000000..9f271fe --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/strdup.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "@(#)strdup.c 8.1 (Berkeley) 6/4/93"; +#endif /* LIBC_SCCS and not lint */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* HAVE_CONFIG_H */ + +#include +#include +#include +#include + +char * +strdup(str) + const char *str; +{ + size_t len; + char *copy; + + len = strlen(str) + 1; + if ((copy = malloc(len)) == NULL) + return (NULL); + memcpy(copy, str, len); + return (copy); +} diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/texinfo.tex b/lib/ebu/others/eblook-1.6.1+media-20200414/texinfo.tex new file mode 100644 index 0000000..b40a6e2 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/texinfo.tex @@ -0,0 +1,11685 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% +% Load plain if necessary, i.e., if running under initex. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi +% +\def\texinfoversion{2017-06-04.19} +% +% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, +% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +% Free Software Foundation, Inc. +% +% This texinfo.tex 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 3 of the +% License, or (at your option) any later version. +% +% This texinfo.tex file 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, see . +% +% As a special exception, when this file is read by TeX when processing +% a Texinfo source document, you may use the result without +% restriction. This Exception is an additional permission under section 7 +% of the GNU General Public License, version 3 ("GPLv3"). +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or +% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or +% http://www.gnu.org/software/texinfo/ (the Texinfo home page) +% The texinfo.tex in any given distribution could well be out +% of date, so if that's what you're using, please check. +% +% Send bug reports to bug-texinfo@gnu.org. Please include including a +% complete document in each bug report with which we can reproduce the +% problem. Patches are, of course, greatly appreciated. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For a simple +% manual foo.texi, however, you can get away with this: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever; this makes foo.ps. +% The extra TeX runs get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. +% +% It is possible to adapt texinfo.tex for other languages, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is http://www.gnu.org/software/texinfo. + + +\message{Loading texinfo [version \texinfoversion]:} + +% If in a .fmt file, print the version number +% and turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +\everyjob{\message{[Texinfo version \texinfoversion]}% + \catcode`+=\active \catcode`\_=\active} + +% LaTeX's \typeout. This ensures that the messages it is used for +% are identical in format to the corresponding ones from latex/pdflatex. +\def\typeout{\immediate\write17}% + +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros whose names we will redefine. +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexraggedright=\raggedright +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexsp=\sp +\let\ptexstar=\* +\let\ptexsup=\sup +\let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% Set up fixed words for English if not already set. +\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi +\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putworderror\undefined \gdef\putworderror{error}\fi +\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi +\ifx\putwordin\undefined \gdef\putwordin{in}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi +\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi +\ifx\putwordof\undefined \gdef\putwordof{of}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi +\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi +% +\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi +\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi +\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi +\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi +\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi +\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi +\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi +\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi +\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi +\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi +\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi +\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi +% +\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi +\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi +\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi +\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% Give the space character the catcode for a space. +\def\spaceisspace{\catcode`\ =10\relax} + +% Likewise for ^^M, the end of line character. +\def\endlineisspace{\catcode13=10\relax} + +\chardef\dashChar = `\- +\chardef\slashChar = `\/ +\chardef\underChar = `\_ + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 +}% + +% @errormsg{MSG}. Do the index-like expansions on MSG, but if things +% aren't perfect, it's not the end of the world, being an error message, +% after all. +% +\def\errormsg{\begingroup \indexnofonts \doerrormsg} +\def\doerrormsg#1{\errmessage{#1}} + +% add check for \lastpenalty to plain's definitions. If the last thing +% we did was a \nobreak, we don't want to insert more space. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + +% Output routine +% + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt } + +% Do @cropmarks to get crop marks. +% +\newif\ifcropmarks +\let\cropmarks = \cropmarkstrue +% +% Dimensions to add cropmarks at corners. +% Added by P. A. MacKay, 12 Nov. 1986 +% +\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines +\newdimen\cornerlong \cornerlong=1pc +\newdimen\cornerthick \cornerthick=.3pt +\newdimen\topandbottommargin \topandbottommargin=.75in + +% Output a mark which sets \thischapter, \thissection and \thiscolor. +% We dump everything together because we only have one kind of mark. +% This works because we only use \botmark / \topmark, not \firstmark. +% +% A mark contains a subexpression of the \ifcase ... \fi construct. +% \get*marks macros below extract the needed part using \ifcase. +% +% Another complication is to let the user choose whether \thischapter +% (\thissection) refers to the chapter (section) in effect at the top +% of a page, or that at the bottom of a page. + +% \domark is called twice inside \chapmacro, to add one +% mark before the section break, and one after. +% In the second call \prevchapterdefs is the same as \lastchapterdefs, +% and \prevsectiondefs is the same as \lastsectiondefs. +% Then if the page is not broken at the mark, some of the previous +% section appears on the page, and we can get the name of this section +% from \firstmark for @everyheadingmarks top. +% @everyheadingmarks bottom uses \botmark. +% +% See page 260 of The TeXbook. +\def\domark{% + \toks0=\expandafter{\lastchapterdefs}% + \toks2=\expandafter{\lastsectiondefs}% + \toks4=\expandafter{\prevchapterdefs}% + \toks6=\expandafter{\prevsectiondefs}% + \toks8=\expandafter{\lastcolordefs}% + \mark{% + \the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top + \noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom + \noexpand\else \the\toks8 % 2: color marks + }% +} + +% \gettopheadingmarks, \getbottomheadingmarks, +% \getcolormarks - extract needed part of mark. +% +% \topmark doesn't work for the very first chapter (after the title +% page or the contents), so we use \firstmark there -- this gets us +% the mark with the chapter defs, unless the user sneaks in, e.g., +% @setcolor (or @url, or @link, etc.) between @contents and the very +% first @chapter. +\def\gettopheadingmarks{% + \ifcase0\topmark\fi + \ifx\thischapter\empty \ifcase0\firstmark\fi \fi +} +\def\getbottomheadingmarks{\ifcase1\botmark\fi} +\def\getcolormarks{\ifcase2\topmark\fi} + +% Avoid "undefined control sequence" errors. +\def\lastchapterdefs{} +\def\lastsectiondefs{} +\def\lastsection{} +\def\prevchapterdefs{} +\def\prevsectiondefs{} +\def\lastcolordefs{} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\txipagewidth \newdimen\txipageheight + +% Main output routine. +% +\chardef\PAGE = 255 +\output = {\onepageout{\pagecontents\PAGE}} + +\newbox\headlinebox +\newbox\footlinebox + +% \onepageout takes a vbox as an argument. +% \shipout a vbox for a single page, adding an optional header, footer, +% cropmarks, and footnote. This also causes index entries for this page +% to be written to the auxiliary files. +% +\def\onepageout#1{% + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + % Common context changes for both heading and footing. + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \def\commmonheadfootline{\let\hsize=\txipagewidth \texinfochars} + % + % Retrieve the information for the headings from the marks in the page, + % and call Plain TeX's \makeheadline and \makefootline, which use the + % values in \headline and \footline. + % + % This is used to check if we are on the first page of a chapter. + \ifcase1\topmark\fi + \let\prevchaptername\thischaptername + \ifcase0\firstmark\fi + \let\curchaptername\thischaptername + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + % + \ifx\curchaptername\prevchaptername + \let\thischapterheading\thischapter + \else + % \thischapterheading is the same as \thischapter except it is blank + % for the first page of a chapter. This is to prevent the chapter name + % being shown twice. + \def\thischapterheading{}% + \fi + % + \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% + \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}% + % + {% + % Set context for writing to auxiliary files like index files. + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + % We don't want .vr (or whatever) entries like this: + % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}} + % "\acronym" won't work when it's read back in; + % it needs to be + % {\code {{\backslashcurfont }acronym} + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \vskip-\topandbottommargin + \vtop to0pt{% + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vss}% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \vbox to0pt{\vss + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + }% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \indexdummies + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +% Main part of page, including any footnotes +\def\pagebody#1{\vbox to\txipageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1\relax \unvbox#1\relax +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\ifr@ggedbottom \kern-\dimen@ \vfil \fi} +} + +% Here are the rules for the cropmarks. Note that they are +% offset so that the space between them is truly \outerhsize or \outervsize +% (P. A. MacKay, 12 November, 1986) +% +\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} +\def\nstop{\vbox + {\hrule height\cornerthick depth\cornerlong width\cornerthick}} +\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} +\def\nsbot{\vbox + {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + + +% Argument parsing + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% For example, \def\foo{\parsearg\fooxxx}. +% +\def\parsearg{\parseargusing{}} +\def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. Also remove a @texinfoc +% comment (see \scanmacro for details). Pass the result on to \argcheckspaces. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm} +\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} + +% Each occurrence of `\^^M' or `\^^M' is replaced by a single space. +% +% \argremovec might leave us with trailing space, e.g., +% @end itemize @c foo +% This space token undergoes the same procedure and is eventually removed +% by \finishparsearg. +% +\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} +\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} +\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% + \def\temp{#3}% + \ifx\temp\empty + % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: + \let\temp\finishparsearg + \else + \let\temp\argcheckspaces + \fi + % Put the space token in: + \temp#1 #3\ArgTerm +} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it now, +% just before passing the control to \argtorun. +% (Similarly, we have to think about #3 of \argcheckspacesY above: it is +% either the null string, or it ends with \^^M---thus there is no danger +% that a pair of braces would be stripped. +% +% But first, we have to remove the trailing space token. +% +\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + + +% \parseargdef - define a command taking an argument on the line +% +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as environments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At run-time, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Environment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + outside of any environment% + \else + in environment \expandafter\string#1% + \fi +} + +% @end foo executes the definition of \Efoo. +% But first, it executes a specialized version of \checkenv +% +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal. + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\unskip\hfil\break\hbox{}\ignorespaces} + +% @/ allows a line break. +\let\/=\allowbreak + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=\endofsentencespacefactor\space} + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=\endofsentencespacefactor\space} + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \plainfrenchspacing + \else\ifx\temp\offword \plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi +} + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% The \vtop produces a box with normal height and large depth; thus, TeX puts +% \baselineskip glue before it, and (when the next line of text is done) +% \lineskip glue after it. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + \addgroupbox + \prevdepth = \dimen1 + \checkinserts +} + +\def\addgroupbox{ + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \txipageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\txipageheight + \page + \fi + \fi + \box\groupbox +} + +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +\parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % + % Do a \strut just to make the height of this box be normal, so the + % normal leading is inserted relative to the preceding line. + % And a page break here is fine. + \vtop to #1\mil{\strut\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak + \fi +} + +% @br forces paragraph break (and is undocumented). + +\let\br = \par + +% @page forces the start of a new page. +% +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. Not documented, written for gawk manual. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @include FILE -- \input text of FILE. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @include of #1^^J}% + \edef\temp{\noexpand\input #1 }% + % + % This trickery is to read FILE outside of a group, in case it makes + % definitions, etc. + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} +% +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\centersub\centerH + \else + \let\centersub\centerV + \fi + \centersub{\hfil \ignorespaces#1\unskip \hfil}% + \let\centersub\relax % don't let the definition persist, just in case +} +\def\centerH#1{{% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break +}} +% +\newcount\centerpenalty +\def\centerV#1{% + % The idea here is the same as in \startdefun, \cartouche, etc.: if + % @center is the first thing after a section heading, we need to wipe + % out the negative parskip inserted by \sectionheading, but still + % prevent a page break here. + \centerpenalty = \lastpenalty + \ifnum\centerpenalty>10000 \vskip\parskip \fi + \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi + \line{\kern\leftskip #1\kern\rightskip}% +} + +% @sp n outputs n lines of vertical space +% +\parseargdef\sp{\vskip #1\baselineskip} + +% @comment ...line which is ignored... +% @c is the same as @comment +% @ignore ... @end ignore is another way to write a comment + + +\def\c{\begingroup \catcode`\^^M=\active% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\cxxx} +{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} +% +\let\comment\c + +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent +} + +% @exampleindent NCHARS +% We'll use ems for NCHARS like @paragraphindent. +% It seems @exampleindent asis isn't necessary, but +% I preserve it to make it similar to @paragraphindent. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent {\restorefirstparagraphindent \indent}% + \gdef\noindent{\restorefirstparagraphindent \noindent}% + \global\everypar = {\kern -\parindent \restorefirstparagraphindent}% +} +% +\gdef\restorefirstparagraphindent{% + \global\let\indent = \ptexindent + \global\let\noindent = \ptexnoindent + \global\everypar = {}% +} + + +% @refill is a no-op. +\let\refill=\relax + +% @setfilename INFO-FILENAME - ignored +\let\setfilename=\comment + +% @bye. +\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + + +\message{pdf,} +% adobe `portable' document format +\newcount\tempnum +\newcount\lnkcount +\newtoks\filename +\newcount\filenamelength +\newcount\pgn +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newbox\boxA +\newbox\boxB +\newcount\countA +\newif\ifpdf +\newif\ifpdfmakepagedest + +% +% For LuaTeX +% + +\newif\iftxiuseunicodedestname +\txiuseunicodedestnamefalse % For pdfTeX etc. + +\ifx\luatexversion\thisisundefined +\else + % Use Unicode destination names + \txiuseunicodedestnametrue + % Escape PDF strings with converting UTF-16 from UTF-8 + \begingroup + \catcode`\%=12 + \directlua{ + function UTF16oct(str) + tex.sprint(string.char(0x5c) .. '376' .. string.char(0x5c) .. '377') + for c in string.utfvalues(str) do + if c < 0x10000 then + tex.sprint( + string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o', + (c / 256), (c % 256))) + else + c = c - 0x10000 + local c_hi = c / 1024 + 0xd800 + local c_lo = c % 1024 + 0xdc00 + tex.sprint( + string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o', + (c_hi / 256), (c_hi % 256), + (c_lo / 256), (c_lo % 256))) + end + end + end + } + \endgroup + \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}} + % Escape PDF strings without converting + \begingroup + \directlua{ + function PDFescstr(str) + for c in string.bytes(str) do + if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then + tex.sprint( + string.format(string.char(0x5c) .. string.char(0x25) .. '03o', + c)) + else + tex.sprint(string.char(c)) + end + end + end + } + \endgroup + \def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}} + \ifnum\luatexversion>84 + % For LuaTeX >= 0.85 + \def\pdfdest{\pdfextension dest} + \let\pdfoutput\outputmode + \def\pdfliteral{\pdfextension literal} + \def\pdfcatalog{\pdfextension catalog} + \def\pdftexversion{\numexpr\pdffeedback version\relax} + \let\pdfximage\saveimageresource + \let\pdfrefximage\useimageresource + \let\pdflastximage\lastsavedimageresourceindex + \def\pdfendlink{\pdfextension endlink\relax} + \def\pdfoutline{\pdfextension outline} + \def\pdfstartlink{\pdfextension startlink} + \def\pdffontattr{\pdfextension fontattr} + \def\pdfobj{\pdfextension obj} + \def\pdflastobj{\numexpr\pdffeedback lastobj\relax} + \let\pdfpagewidth\pagewidth + \let\pdfpageheight\pageheight + \edef\pdfhorigin{\pdfvariable horigin} + \edef\pdfvorigin{\pdfvariable vorigin} + \fi +\fi + +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as being undefined. +\ifx\pdfoutput\thisisundefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi + +% PDF uses PostScript string constants for the names of xref targets, +% for display in the outlines, and in other places. Thus, we have to +% double any backslashes. Otherwise, a name like "\node" will be +% interpreted as a newline (\n), followed by o, d, e. Not good. +% +% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and +% related messages. The final outcome is that it is up to the TeX user +% to double the backslashes and otherwise make the string valid, so +% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to +% do this reliably, so we use it. + +% #1 is a control sequence in which to do the replacements, +% which we \xdef. +\def\txiescapepdf#1{% + \ifx\pdfescapestring\thisisundefined + % No primitive available; should we give a warning or log? + % Many times it won't matter. + \xdef#1{#1}% + \else + % The expandable \pdfescapestring primitive escapes parentheses, + % backslashes, and other special chars. + \xdef#1{\pdfescapestring{#1}}% + \fi +} +\def\txiescapepdfutfsixteen#1{% + \ifx\pdfescapestrutfsixteen\thisisundefined + % No UTF-16 converting macro available. + \txiescapepdf{#1}% + \else + \xdef#1{\pdfescapestrutfsixteen{#1}}% + \fi +} + +\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images +with PDF output, and none of those formats could be found. (.eps cannot +be supported due to the design of the PDF format; use regular TeX (DVI +output) for that.)} + +\ifpdf + % + % Color manipulation macros using ideas from pdfcolor.tex, + % except using rgb instead of cmyk; the latter is said to render as a + % very dark gray on-screen and a very dark halftone in print, instead + % of actual black. The dark red here is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. We use + % black by default, though. + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + % rg sets the color for filling (usual text, etc.); + % RG sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\setcolor#1{% + \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + } + % + \def\maincolor{\rgbBlack} + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\lastcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % + \pdfcatalog{/PageMode /UseOutlines} + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % pdftex (and the PDF format) support .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\pdfimgext=\empty + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errhelp = \nopdfimagehelp + \errmessage{Could not find image file #1 for pdf}% + \else \gdef\pdfimgext{JPG}% + \fi + \else \gdef\pdfimgext{jpeg}% + \fi + \else \gdef\pdfimgext{jpg}% + \fi + \else \gdef\pdfimgext{png}% + \fi + \else \gdef\pdfimgext{PDF}% + \fi + \else \gdef\pdfimgext{pdf}% + \fi + \closein 1 + \endgroup + % + % without \immediate, ancient pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \pdfimagewidth \fi + \ifdim \wd2 >0pt height \pdfimageheight \fi + \ifnum\pdftexversion<13 + #1.\pdfimgext + \else + {#1.\pdfimgext}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + % + \def\setpdfdestname#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \makevalueexpandable + \turnoffactive + \iftxiuseunicodedestname + \ifx \declaredencoding \latone + % Pass through Latin-1 characters. + % LuaTeX with byte wise I/O converts Latin-1 characters to Unicode. + \else + \ifx \declaredencoding \utfeight + % Pass through Unicode characters. + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \fi + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + }} + % + \def\setpdfoutlinetext#1{{% + \indexnofonts + \makevalueexpandable + \turnoffactive + \ifx \declaredencoding \latone + % The PDF format can use an extended form of Latin-1 in bookmark + % strings. See Appendix D of the PDF Reference, Sixth Edition, for + % the "PDFDocEncoding". + \passthroughcharstrue + % Pass through Latin-1 characters. + % LuaTeX: Convert to Unicode + % pdfTeX: Use Latin-1 as PDFDocEncoding + \def\pdfoutlinetext{#1}% + \else + \ifx \declaredencoding \utfeight + \ifx\luatexversion\thisisundefined + % For pdfTeX with UTF-8. + % TODO: the PDF format can use UTF-16 in bookmark strings, + % but the code for this isn't done yet. + % Use ASCII approximations. + \passthroughcharsfalse + \def\pdfoutlinetext{#1}% + \else + % For LuaTeX with UTF-8. + % Pass through Unicode characters for title texts. + \passthroughcharstrue + \def\pdfoutlinetext{#1}% + \fi + \else + % For non-Latin-1 or non-UTF-8 encodings. + % Use ASCII approximations. + \passthroughcharsfalse + \def\pdfoutlinetext{#1}% + \fi + \fi + % LuaTeX: Convert to UTF-16 + % pdfTeX: Use Latin-1 as PDFDocEncoding + \txiescapepdfutfsixteen\pdfoutlinetext + }} + % + \def\pdfmkdest#1{% + \setpdfdestname{#1}% + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + } + % + % used to mark target names; must be expandable. + \def\pdfmkpgn#1{#1} + % + % by default, use black for everything. + \def\urlcolor{\rgbBlack} + \def\linkcolor{\rgbBlack} + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \setpdfoutlinetext{#1} + \setpdfdestname{#3} + \ifx\pdfdestname\empty + \def\pdfdestname{#4}% + \fi + % + \pdfoutline goto name{\pdfmkpgn{\pdfdestname}}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + % + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + % + % PDF outlines are displayed using system fonts, instead of + % document fonts. Therefore we cannot use special characters, + % since the encoding is unknown. For example, the eogonek from + % Latin 2 (0xea) gets translated to a | character. Info from + % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. + % + % TODO this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Too + % much work for too little return. Just use the ASCII equivalents + % we use for the index sort strings. + % + \indexnofonts + \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% + \catcode`\\=\active \otherbackslash + \input \tocreadfilename + \endgroup + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + \endgroup} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} + \setcolor{\linkcolor}#1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\else + % non-pdf mode + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\setcolor = \gobble + \let\pdfsetcolor = \gobble + \let\pdfmakeoutlines = \relax +\fi % \ifx\pdfoutput + +% +% For XeTeX +% +\ifx\XeTeXrevision\thisisundefined +\else + % + % XeTeX version check + % + \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1 + % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307. + % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941). + % For avoiding PDF destination name replacement, we use this special + % instead of xdvipdfmx's command line option `-C 0x0010'. + \special{dvipdfmx:config C 0x0010} + % XeTeX 0.99995+ comes with xdvipdfmx 20160307+. + % It can handle Unicode destination names for PDF. + \txiuseunicodedestnametrue + \else + % XeTeX < 0.99996 (TeX Live < 2016) cannot use the + % `dvipdfmx:config' special. + % So for avoiding PDF destination name replacement, + % xdvipdfmx's command line option `-C 0x0010' is necessary. + % + % XeTeX < 0.99995 can not handle Unicode destination names for PDF + % because xdvipdfmx 20150315 has a UTF-16 conversion issue. + % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). + \txiuseunicodedestnamefalse + \fi + % + % Color support + % + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + \def\pdfsetcolor#1{\special{pdf:scolor [#1]}} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\setcolor#1{% + \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + } + % + \def\maincolor{\rgbBlack} + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\lastcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % PDF outline support + % + % Emulate pdfTeX primitive + \def\pdfdest name#1 xyz{% + \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}% + } + % + \def\setpdfdestname#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \makevalueexpandable + \turnoffactive + \iftxiuseunicodedestname + % Pass through Unicode characters. + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + }} + % + \def\setpdfoutlinetext#1{{% + \turnoffactive + % Always use Unicode characters in title texts. + \def\pdfoutlinetext{#1}% + % For XeTeX, xdvipdfmx converts to UTF-16. + % So we do not convert. + \txiescapepdf\pdfoutlinetext + }} + % + \def\pdfmkdest#1{% + \setpdfdestname{#1}% + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + } + % + % by default, use black for everything. + \def\urlcolor{\rgbBlack} + \def\linkcolor{\rgbBlack} + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + \def\dopdfoutline#1#2#3#4{% + \setpdfoutlinetext{#1} + \setpdfdestname{#3} + \ifx\pdfdestname\empty + \def\pdfdestname{#4}% + \fi + % + \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A + << /S /GoTo /D (\pdfdestname) >> >> }% + } + % + \def\pdfmakeoutlines{% + \begingroup + % + % For XeTeX, counts of subentries are not necessary. + % Therefore, we read toc only once. + % + % We use node names as destinations. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##1}{1}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{2}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{3}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{4}{##3}{##4}}% + % + \let\appentry\numchapentry% + \let\appsecentry\numsecentry% + \let\appsubsecentry\numsubsecentry% + \let\appsubsubsecentry\numsubsubsecentry% + \let\unnchapentry\numchapentry% + \let\unnsecentry\numsecentry% + \let\unnsubsecentry\numsubsecentry% + \let\unnsubsubsecentry\numsubsubsecentry% + % + % For XeTeX, xdvipdfmx converts strings to UTF-16. + % Therefore, the encoding and the language may not be considered. + % + \indexnofonts + \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% + \catcode`\\=\active \otherbackslash + \input \tocreadfilename + \endgroup + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + + \special{pdf:docview << /PageMode /UseOutlines >> } + % ``\special{pdf:tounicode ...}'' is not necessary + % because xdvipdfmx converts strings from UTF-8 to UTF-16 without it. + % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315, + % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings. + % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). +% + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \special{pdf:bann << /Border [0 0 0] + /Subtype /Link /A << /S /URI /URI (#1) >> >>}% + \endgroup} + \def\endlink{\setcolor{\maincolor}\special{pdf:eann}} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \special{pdf:bann << /Border [0 0 0] + /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}% + \setcolor{\linkcolor}#1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +% + % + % @image support + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\doxeteximage#1#2#3{% + \def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % XeTeX (and the PDF format) supports .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\xeteximgext=\empty + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errmessage{Could not find image file #1 for XeTeX}% + \else \gdef\xeteximgext{JPG}% + \fi + \else \gdef\xeteximgext{jpeg}% + \fi + \else \gdef\xeteximgext{jpg}% + \fi + \else \gdef\xeteximgext{png}% + \fi + \else \gdef\xeteximgext{PDF}% + \fi + \else \gdef\xeteximgext{pdf}% + \fi + \closein 1 + \endgroup + % + \def\xetexpdfext{pdf}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else + \def\xetexpdfext{PDF}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else + \XeTeXpicfile "#1".\xeteximgext "" + \fi + \fi + \ifdim \wd0 >0pt width \xeteximagewidth \fi + \ifdim \wd2 >0pt height \xeteximageheight \fi \relax + } +\fi + + +% +\message{fonts,} + +% Set the baselineskip to #1, and the lineskip and strut size +% correspondingly. There is no deep meaning behind these magic numbers +% used as factors; they just match (closely enough) what Knuth defined. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +% can get a sort of poor man's double spacing by redefining this. +\def\baselinefactor{1} +% +\newdimen\textleading +\def\setleading#1{% + \dimen0 = #1\relax + \normalbaselineskip = \baselinefactor\dimen0 + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% PDF CMaps. See also LaTeX's t1.cmap. +% +% do nothing with this by default. +\expandafter\let\csname cmapOT1\endcsname\gobble +\expandafter\let\csname cmapOT1IT\endcsname\gobble +\expandafter\let\csname cmapOT1TT\endcsname\gobble + +% if we are producing pdf, and we have \pdffontattr, then define cmaps. +% (\pdffontattr was introduced many years ago, but people still run +% older pdftex's; it's easy to conditionalize, so we do.) +\ifpdf \ifx\pdffontattr\thisisundefined \else + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1-0) +%%Title: (TeX-OT1-0 TeX OT1 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1) +/Supplement 0 +>> def +/CMapName /TeX-OT1-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<23> <26> <0023> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +40 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1IT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1IT-0) +%%Title: (TeX-OT1IT-0 TeX OT1IT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1IT) +/Supplement 0 +>> def +/CMapName /TeX-OT1IT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<25> <26> <0025> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +42 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<23> <0023> +<24> <00A3> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1IT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1TT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1TT-0) +%%Title: (TeX-OT1TT-0 TeX OT1TT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1TT) +/Supplement 0 +>> def +/CMapName /TeX-OT1TT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +5 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<21> <26> <0021> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +32 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1TT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +\fi\fi + + +% Set the font macro #1 to the font named \fontprefix#2. +% #3 is the font's design size, #4 is a scale factor, #5 is the CMap +% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). +% Example: +% #1 = \textrm +% #2 = \rmshape +% #3 = 10 +% #4 = \mainmagstep +% #5 = OT1 +% +\def\setfont#1#2#3#4#5{% + \font#1=\fontprefix#2#3 scaled #4 + \csname cmap#5\endcsname#1% +} +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% +% (end of cmaps) + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\ifx\fontprefix\thisisundefined +\def\fontprefix{cm} +\fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} % where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +% Definitions for a main text size of 11pt. (The default in Texinfo.) +% +\def\definetextfontsizexi{% +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1095} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1}{OT1} +\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defsl\slshape{10}{\magstep1}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} +\def\df{\let\ttfont=\deftt \let\bffont = \defbf +\let\ttslfont=\defttsl \let\slfont=\defsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} +\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep3}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} +\setfont\chapsf\sfbshape{17}{1000}{OT1} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3}{OT1} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 +\def\chapecsize{1728} + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} +\setfont\secit\itbshape{10}{\magstep2}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep2}{OT1} +\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\secsf\sfbshape{12}{\magstep1}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2}{OT1} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 +\def\sececsize{1440} + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} +\setfont\ssecit\itbshape{10}{1315}{OT1IT} +\setfont\ssecsl\slbshape{10}{1315}{OT1} +\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} +\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315}{OT1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +\def\ssececsize{1200} + +% Reduced fonts for @acronym in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000}{OT1} +\setfont\reducedtt\ttshape{10}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{1000}{OT1} +\setfont\reducedit\itshape{10}{1000}{OT1IT} +\setfont\reducedsl\slshape{10}{1000}{OT1} +\setfont\reducedsf\sfshape{10}{1000}{OT1} +\setfont\reducedsc\scshape{10}{1000}{OT1} +\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 +\def\reducedecsize{1000} + +\textleading = 13.2pt % line spacing for 11pt CM +\textfonts % reset the current fonts +\rm +} % end of 11pt text font size definitions, \definetextfontsizexi + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit. This is for the GNU +% Press printing of the Emacs 22 manual. Maybe other manuals in the +% future. Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1000} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf}{OT1} +\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defsl\slshape{10}{\magstephalf}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} +\def\df{\let\ttfont=\deftt \let\bffont = \defbf +\let\slfont=\defsl \let\ttslfont=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} +\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep2}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2}{OT1} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 +\def\chapecsize{1440} + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000}{OT1} +\setfont\secit\itbshape{10}{\magstep1}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep1}{OT1} +\setfont\sectt\ttbshape{12}{1000}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} +\setfont\secsf\sfbshape{12}{1000}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1}{OT1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 +\def\sececsize{1200} + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000}{OT1} +\setfont\ssecit\itbshape{10}{1000}{OT1IT} +\setfont\ssecsl\slbshape{10}{1000}{OT1} +\setfont\ssectt\ttbshape{10}{1000}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} +\setfont\ssecsf\sfbshape{10}{1000}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000}{OT1} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 +\def\ssececsize{1000} + +% Reduced fonts for @acronym in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000}{OT1} +\setfont\reducedtt\ttshape{9}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{900}{OT1} +\setfont\reducedit\itshape{9}{1000}{OT1IT} +\setfont\reducedsl\slshape{9}{1000}{OT1} +\setfont\reducedsf\sfshape{9}{1000}{OT1} +\setfont\reducedsc\scshape{10}{900}{OT1} +\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 +\def\reducedecsize{0900} + +\divide\parskip by 2 % reduce space between paragraphs +\textleading = 12pt % line spacing for 10pt CM +\textfonts % reset the current fonts +\rm +} % end of 10pt text font size definitions, \definetextfontsizex + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + + +% We provide the user-level command +% @fonttextsize 10 +% (or 11) to redefine the text font size. pt is assumed. +% +\def\xiword{11} +\def\xword{10} +\def\xwordpt{10pt} +% +\parseargdef\fonttextsize{% + \def\textsizearg{#1}% + %\wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup +} + +% +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname #1font\endcsname % change the current font +} + +\def\rm{\fam=0 \setfontstyle{rm}} +\def\it{\fam=\itfam \setfontstyle{it}} +\def\sl{\fam=\slfam \setfontstyle{sl}} +\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +\def\tt{\fam=\ttfam \setfontstyle{tt}} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. We don't +% bother to reset \scriptfont and \scriptscriptfont; awaiting user need. +% +\def\resetmathfonts{% + \textfont0=\rmfont \textfont1=\ifont \textfont2=\syfont + \textfont\itfam=\itfont \textfont\slfam=\slfont \textfont\bffam=\bffont + \textfont\ttfam=\ttfont \textfont\sffam=\sffont +} + +% + +% The font-changing commands (all called \...fonts) redefine the meanings +% of \STYLEfont, instead of just \STYLE. We do this because \STYLE needs +% to also set the current \fam for math mode. Our \STYLE (e.g., \rm) +% commands hardwire \STYLEfont to set the current font. +% +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used +% in, e.g., the LaTeX logo and acronyms. +% +% This all needs generalizing, badly. +% + +\def\assignfonts#1{% + \expandafter\let\expandafter\rmfont\csname #1rm\endcsname + \expandafter\let\expandafter\itfont\csname #1it\endcsname + \expandafter\let\expandafter\slfont\csname #1sl\endcsname + \expandafter\let\expandafter\bffont\csname #1bf\endcsname + \expandafter\let\expandafter\ttfont\csname #1tt\endcsname + \expandafter\let\expandafter\smallcaps\csname #1sc\endcsname + \expandafter\let\expandafter\sffont \csname #1sf\endcsname + \expandafter\let\expandafter\ifont \csname #1i\endcsname + \expandafter\let\expandafter\syfont \csname #1sy\endcsname + \expandafter\let\expandafter\ttslfont\csname #1ttsl\endcsname +} + +\newif\ifrmisbold + +% Select smaller font size with the current style. Used to change font size +% in, e.g., the LaTeX logo and acronyms. If we are using bold fonts for +% normal roman text, also use bold fonts for roman text in the smaller size. +\def\switchtolllsize{% + \expandafter\assignfonts\expandafter{\lllsize}% + \ifrmisbold + \let\rmfont\bffont + \fi + \csname\curfontstyle\endcsname +}% + +\def\switchtolsize{% + \expandafter\assignfonts\expandafter{\lsize}% + \ifrmisbold + \let\rmfont\bffont + \fi + \csname\curfontstyle\endcsname +}% + +\def\definefontsetatsize#1#2#3#4#5{% +\expandafter\def\csname #1fonts\endcsname{% + \def\curfontsize{#1}% + \def\lsize{#2}\def\lllsize{#3}% + \csname rmisbold#5\endcsname + \assignfonts{#1}% + \resetmathfonts + \setleading{#4}% +}} + +\definefontsetatsize{text} {reduced}{smaller}{\textleading}{false} +\definefontsetatsize{title} {chap} {subsec} {27pt} {true} +\definefontsetatsize{chap} {sec} {text} {19pt} {true} +\definefontsetatsize{sec} {subsec} {reduced}{17pt} {true} +\definefontsetatsize{ssec} {text} {small} {15pt} {true} +\definefontsetatsize{reduced}{small} {smaller}{10.5pt}{false} +\definefontsetatsize{small} {smaller}{smaller}{10.5pt}{false} +\definefontsetatsize{smaller}{smaller}{smaller}{9.5pt} {false} + +\def\titlefont#1{{\titlefonts\rm #1}} +\let\subsecfonts = \ssecfonts +\let\subsubsecfonts = \ssecfonts + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% --karl, 24jan03. + +% Set up the default fonts, so we can use them for creating boxes. +% +\definetextfontsizexi + + +\message{markup,} + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will +% define and register \INITMACRO to be called on markup style changes. +% \INITMACRO can check \currentmarkupstyle for the innermost +% style and the set of \ifmarkupSTYLE switches for all styles +% currently in effect. +\newif\ifmarkupvar +\newif\ifmarkupsamp +\newif\ifmarkupkey +%\newif\ifmarkupfile % @file == @samp. +%\newif\ifmarkupoption % @option == @samp. +\newif\ifmarkupcode +\newif\ifmarkupkbd +%\newif\ifmarkupenv % @env == @code. +%\newif\ifmarkupcommand % @command == @code. +\newif\ifmarkuptex % @tex (and part of @math, for now). +\newif\ifmarkupexample +\newif\ifmarkupverb +\newif\ifmarkupverbatim + +\let\currentmarkupstyle\empty + +\def\setupmarkupstyle#1{% + \csname markup#1true\endcsname + \def\currentmarkupstyle{#1}% + \markupstylesetup +} + +\let\markupstylesetup\empty + +\def\defmarkupstylesetup#1{% + \expandafter\def\expandafter\markupstylesetup + \expandafter{\markupstylesetup #1}% + \def#1% +} + +% Markup style setup for left and right quotes. +\defmarkupstylesetup\markupsetuplq{% + \expandafter\let\expandafter \temp + \csname markupsetuplq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuplqdefault \else \temp \fi +} + +\defmarkupstylesetup\markupsetuprq{% + \expandafter\let\expandafter \temp + \csname markupsetuprq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuprqdefault \else \temp \fi +} + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\markupsetuplqdefault{\let`\lq} +\gdef\markupsetuprqdefault{\let'\rq} + +\gdef\markupsetcodequoteleft{\let`\codequoteleft} +\gdef\markupsetcodequoteright{\let'\codequoteright} +} + +\let\markupsetuplqcode \markupsetcodequoteleft +\let\markupsetuprqcode \markupsetcodequoteright +% +\let\markupsetuplqexample \markupsetcodequoteleft +\let\markupsetuprqexample \markupsetcodequoteright +% +\let\markupsetuplqkbd \markupsetcodequoteleft +\let\markupsetuprqkbd \markupsetcodequoteright +% +\let\markupsetuplqsamp \markupsetcodequoteleft +\let\markupsetuprqsamp \markupsetcodequoteright +% +\let\markupsetuplqverb \markupsetcodequoteleft +\let\markupsetuprqverb \markupsetcodequoteright +% +\let\markupsetuplqverbatim \markupsetcodequoteleft +\let\markupsetuprqverbatim \markupsetcodequoteright + +% Allow an option to not use regular directed right quote/apostrophe +% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). +% The undirected quote is ugly, so don't make it the default, but it +% works for pasting with more pdf viewers (at least evince), the +% lilypond developers report. xpdf does work with the regular 0x27. +% +\def\codequoteright{% + \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax + \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + '% + \else \char'15 \fi + \else \char'15 \fi +} +% +% and a similar option for the left quote char vs. a grave accent. +% Modern fonts display ASCII 0x60 as a grave accent, so some people like +% the code environments to do likewise. +% +\def\codequoteleft{% + \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax + \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + % [Knuth] pp. 380,381,391 + % \relax disables Spanish ligatures ?` and !` of \tt font. + \relax`% + \else \char'22 \fi + \else \char'22 \fi +} + +% Commands to set the quote options. +% +\parseargdef\codequoteundirected{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% + \fi\fi +} +% +\parseargdef\codequotebacktick{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% + \fi\fi +} + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Font commands. + +% #1 is the font command (\sl or \it), #2 is the text to slant. +% If we are in a monospaced environment, however, 1) always use \ttsl, +% and 2) do not add an italic correction. +\def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + \next +} +\def\smartslanted{\dosmartslant\sl} +\def\smartitalic{\dosmartslant\it} + +% Output an italic correction unless \next (presumed to be the following +% character) is such as not to need one. +\def\smartitaliccorrection{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ifx\next\.% + \else\ifx\next\comma% + \else\ptexslash + \fi\fi\fi\fi\fi + \aftersmartic +} + +% Unconditional use \ttsl, and no ic. @var is set to this for defuns. +\def\ttslanted#1{{\ttsl #1}} + +% @cite is like \smartslanted except unconditionally use \sl. We never want +% ttsl for book titles, do we? +\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} + +\def\aftersmartic{} +\def\var#1{% + \let\saveaftersmartic = \aftersmartic + \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% + \smartslanted{#1}% +} + +\let\i=\smartitalic +\let\slanted=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% Explicit font changes: @r, @sc, undocumented @ii. +\def\r#1{{\rm #1}} % roman font +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @b, explicit bold. Also @strong. +\def\b#1{{\bf #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +% We can't just use \exhyphenpenalty, because that only has effect at +% the end of a paragraph. Restore normal hyphenation at the end of the +% group within which \nohyphenation is presumably called. +% +\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} +\def\restorehyphenation{\hyphenchar\font = `- } + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\plainfrenchspacing{% + \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m + \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m + \def\endofsentencespacefactor{1000}% for @. and friends + } + \def\plainnonfrenchspacing{% + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + } +\catcode`@=\other +\def\endofsentencespacefactor{3000}% default + +% @t, explicit typewriter. +\def\t#1{% + {\tt \rawbackslash \plainfrenchspacing #1}% + \null +} + +% @samp. +\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} + +% @indicateurl is \samp, that is, with quotes. +\let\indicateurl=\samp + +% @code (and similar) prints in typewriter, but with spaces the same +% size as normal in the surrounding text, without hyphenation, etc. +% This is a subroutine for that. +\def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \rawbackslash + \plainfrenchspacing + #1% + }% + \null % reset spacefactor to 1000 +} + +% We *must* turn on hyphenation at `-' and `_' in @code. +% (But see \codedashfinish below.) +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. +% +% Unfortunately, TeX uses one parameter (\hyphenchar) to control +% both hyphenation at - and hyphenation within words. +% We must therefore turn them both off (\tclose does that) +% and arrange explicitly to hyphenate at a dash. -- rms. +{ + \catcode`\-=\active \catcode`\_=\active + \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup + \setupmarkupstyle{code}% + % The following should really be moved into \setupmarkupstyle handlers. + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\normaldash + \let_\realunder + \fi + % Given -foo (with a single dash), we do not want to allow a break + % after the hyphen. + \global\let\codedashprev=\codedash + % + \codex + } + % + \gdef\codedash{\futurelet\next\codedashfinish} + \gdef\codedashfinish{% + \normaldash % always output the dash character itself. + % + % Now, output a discretionary to allow a line break, unless + % (a) the next character is a -, or + % (b) the preceding character is a -. + % E.g., given --posix, we do not want to allow a break after either -. + % Given --foo-bar, we do want to allow a break between the - and the b. + \ifx\next\codedash \else + \ifx\codedashprev\codedash + \else \discretionary{}{}{}\fi + \fi + % we need the space after the = for the case when \next itself is a + % space token; it would get swallowed otherwise. As in @code{- a}. + \global\let\codedashprev= \next + } +} +\def\normaldash{-} +% +\def\codex #1{\tclose{#1}\endgroup} + +\def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} + +% An additional complication: the above will allow breaks after, e.g., +% each of the four underscores in __typeof__. This is bad. +% @allowcodebreaks provides a document-level way to turn breaking at - +% and _ on and off. +% +\newif\ifallowcodebreaks \allowcodebreakstrue + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% + \fi\fi +} + +% For @command, @env, @file, @option quotes seem unnecessary, +% so use \code rather than \samp. +\let\command=\code +\let\env=\code +\let\file=\code +\let\option=\code + +% @uref (abbreviation for `urlref') aka @url takes an optional +% (comma-separated) second argument specifying the text to display and +% an optional third arg as text to display instead of (rather than in +% addition to) the url itself. First (mandatory) arg is the url. + +% TeX-only option to allow changing PDF output to show only the second +% arg (if given), and not the url (which is then just the link target). +\newif\ifurefurlonlylink + +% The main macro is \urefbreak, which allows breaking at expected +% places within the url. (There used to be another version, which +% didn't support automatic breaking.) +\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} +\let\uref=\urefbreak +% +\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} +\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% look for second arg + \ifdim\wd0 > 0pt + \ifpdf + % For pdfTeX and LuaTeX + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi + \else + \ifx\XeTeXrevision\thisisundefined + \unhbox0\ (\urefcode{#1})% DVI, always show arg and url + \else + % For XeTeX + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi + \fi + \fi + \else + \urefcode{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% Allow line breaks around only a few characters (only). +\def\urefcatcodes{% + \catcode`\&=\active \catcode`\.=\active + \catcode`\#=\active \catcode`\?=\active + \catcode`\/=\active +} +{ + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setupmarkupstyle{code}% + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot + \let#\urefcodehash + \let?\urefcodequest + \let/\urefcodeslash + \codex + } + % + % By default, they are just regular characters. + \global\def&{\normalamp} + \global\def.{\normaldot} + \global\def#{\normalhash} + \global\def?{\normalquest} + \global\def/{\normalslash} +} + +% we put a little stretch before and after the breakable chars, to help +% line breaking of long url's. The unequal skips make look better in +% cmtt at least, especially for dots. +\def\urefprestretchamount{.13em} +\def\urefpoststretchamount{.1em} +\def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax} +\def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax} +% +\def\urefcodeamp{\urefprestretch \&\urefpoststretch} +\def\urefcodedot{\urefprestretch .\urefpoststretch} +\def\urefcodehash{\urefprestretch \#\urefpoststretch} +\def\urefcodequest{\urefprestretch ?\urefpoststretch} +\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} +{ + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprestretch \slashChar + % Allow line break only after the final / in a sequence of + % slashes, to avoid line break between the slashes in http://. + \ifx\next/\else \urefpoststretch \fi + } +} + +% One more complication: by default we'll break after the special +% characters, but some people like to break before the special chars, so +% allow that. Also allow no breaking at all, for manual control. +% +\parseargdef\urefbreakstyle{% + \def\txiarg{#1}% + \ifx\txiarg\wordnone + \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordbefore + \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\wordafter{after} +\def\wordbefore{before} +\def\wordnone{none} + +\urefbreakstyle after + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdf + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \ifx\XeTeXrevision\thisisundefined + \let\email=\uref + \else + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} + \fi +\fi + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct'. +\kbdinputstyle distinct + +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. +\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} + +\def\xkey{\key} +\def\kbdsub#1#2#3\par{% + \def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +} + +% definition of @key that produces a lozenge. Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\font\keysy=cmsy9 +%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% +% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% +% \vbox{\hrule\kern-0.4pt +% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% +% \kern-0.4pt\hrule}% +% \kern-.06em\raise0.4pt\hbox{\angleright}}}} + +% definition of @key with no lozenge. If the current font is already +% monospace, don't change it; that way, we respect @kbdinputstyle. But +% if it isn't monospace, then use \tt. +% +\def\key#1{{\setupmarkupstyle{key}% + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} + +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} + +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. +% +\def\dmn#1{\thinspace #1} + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\switchtolsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a math (or tt) \. +% FYI, plain.tex uses \\ as a temporary control sequence (for no +% particular reason), but this is not advertised and we don't care. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \ifmmode\else % only go into math if not in math mode already + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + % have to provide another name for sup operator + \let\mathopsup=\sup + $\expandafter\finishmath\fi +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% for @sub and @sup, if in math mode, just do a normal sub/superscript. +% If in text, use math to place as sub/superscript, but switch +% into text mode, with smaller fonts. This is a different font than the +% one used for real math sub/superscripts (8pt vs. 7pt), but let's not +% fix it (significant additions to font machinery) until someone notices. +% +\def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi} +\def\finishsub#1{$\sb{\hbox{\switchtolllsize #1}}$}% +% +\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} +\def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% + +% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. +% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, +% except specified as a normal braced arg, so no newlines to worry about. +% +\def\outfmtnametex{tex} +% +\long\def\inlinefmt#1{\doinlinefmt #1,\finish} +\long\def\doinlinefmt#1,#2,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi +} +% +% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if +% FMTNAME is tex, else ELSE-TEXT. +\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish} +\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi +} +% +% For raw, must switch into @tex before parsing the argument, to avoid +% setting catcodes prematurely. Doing it this way means that, for +% example, @inlineraw{html, foo{bar} gets a parse error instead of being +% ignored. But this isn't important because if people want a literal +% *right* brace they would have to use a command anyway, so they may as +% well use a command to get a left brace too. We could re-use the +% delimiter character idea from \verb, but it seems like overkill. +% +\long\def\inlineraw{\tex \doinlineraw} +\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} +\def\doinlinerawtwo#1,#2,\finish{% + \def\inlinerawname{#1}% + \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi + \endgroup % close group opened by \tex. +} + +% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set. +% +\long\def\inlineifset#1{\doinlineifset #1,\finish} +\long\def\doinlineifset#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax + \else\ignorespaces#2\fi +} + +% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set. +% +\long\def\inlineifclear#1{\doinlineifclear #1,\finish} +\long\def\doinlineifclear#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi +} + + +\message{glyphs,} +% and logos. + +% @@ prints an @, as does @atchar{}. +\def\@{\char64 } +\let\atchar=\@ + +% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. +\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}} +\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}} +\let\{=\lbracechar +\let\}=\rbracechar + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \ptexc +\let\dotaccent = \ptexdot +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \ptext +\let\ubaraccent = \ptexb +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \switchtolllsize A% + \fi + }% + \vss + }}% + \kern-.15em + \TeX +} + +% Some math mode symbols. Define \ensuremath to switch into math mode +% unless we are already there. Expansion tricks may not be needed here, +% but safer, and can't hurt. +\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi} +\def\ensuredmath#1{$\relax#1$} +% +\def\bullet{\ensuremath\ptexbullet} +\def\geq{\ensuremath\ge} +\def\leq{\ensuremath\le} +\def\minus{\ensuremath-} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\ttfont \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{{\it\$}} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% +\def\guillemetleft{{\ecfont \char"13}} +\def\guillemotleft{\guillemetleft} +\def\guillemetright{{\ecfont \char"14}} +\def\guillemotright{\guillemetright} +\def\guilsinglleft{{\ecfont \char"0E}} +\def\guilsinglright{{\ecfont \char"0F}} +\def\quotedblbase{{\ecfont \char"12}} +\def\quotesinglbase{{\ecfont \char"0D}} +% +% This positioning is not perfect (see the ogonek LaTeX package), but +% we have the precomposed glyphs for the most common cases. We put the +% tests to use those glyphs in the single \ogonek macro so we have fewer +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the European Computer Modern fonts (cm-super in outline format) +% for non-CM glyphs. That is ec* for regular text and tc* for the text +% companion symbols (LaTeX TS1 encoding). Both are part of the ec +% package and follow the same conventions. +% +\def\ecfont{\etcfont{e}} +\def\tcfont{\etcfont{t}} +% +\def\etcfont#1{% + % We can't distinguish serif/sans and italic/slanted, but this + % is used for crude hacks anyway (like adding French and German + % quotes to documents typeset with CM, where we lose kerning), so + % hopefully nobody will notice/care. + \edef\ecsize{\csname\curfontsize ecsize\endcsname}% + \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% + \ifmonospace + % typewriter: + \font\thisecfont = #1ctt\ecsize \space at \nominalsize + \else + \ifx\curfontstyle\bfstylename + % bold: + \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize + \else + % regular: + \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \fi + \fi + \thisecfont +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\switchtolllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% @textdegree - the normal degrees sign. +% +\def\textdegree{$^\circ$} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\thisisundefined +\def\Orb{\mathhexbox20D} +\fi + +% Quotes. +\chardef\quotedblleft="5C +\chardef\quotedblright=`\" +\chardef\quoteleft=`\` +\chardef\quoteright=`\' + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +% @setcontentsaftertitlepage used to do an implicit @contents or +% @shortcontents after @end titlepage, but it is now obsolete. +\def\setcontentsaftertitlepage{% + \errmessage{@setcontentsaftertitlepage has been removed as a Texinfo + command; move your @contents command if you want the contents + after the title page.}}% +\def\setshortcontentsaftertitlepage{% + \errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo + command; move your @shortcontents and @contents commands if you + want the contents after the title page.}}% + +\parseargdef\shorttitlepage{% + \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + % + % Need this before the \...aftertitlepage checks so that if they are + % in effect the toc pages will come out with page numbers. + \HEADINGSon +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +% Settings used for typesetting titles: no hyphenation, no indentation, +% don't worry much about spacing, ragged right. This should be used +% inside a \vbox, and fonts need to be set appropriately first. \par should +% be specified before the end of the \vbox, since a vbox is a group. +% +\def\raggedtitlesettings{% + \rm + \hyphenpenalty=10000 + \parindent=0pt + \tolerance=5000 + \ptexraggedright +} + +% Macros to be used within @titlepage: + +\let\subtitlerm=\rmfont +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\parseargdef\title{% + \checkenv\titlepage + \vbox{\titlefonts \raggedtitlesettings #1\par}% + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\secfonts\rm \leftline{#1}}% + \fi +} + + +% Set up page headings and footings. + +\let\thispage=\folio + +\newtoks\evenheadline % headline on even pages +\newtoks\oddheadline % headline on odd pages +\newtoks\evenfootline % footline on even pages +\newtoks\oddfootline % footline on odd pages + +% Now make \makeheadline and \makefootline in Plain TeX use those variables +\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline + \else \the\evenheadline \fi}} +\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + + +\def\evenheading{\parsearg\evenheadingxxx} +\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} +\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% +\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddheading{\parsearg\oddheadingxxx} +\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} +\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% +\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\txipageheight by -12pt + \global\advance\vsize by -12pt +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + +% @evenheadingmarks top \thischapter <- chapter at the top of a page +% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page +% +% The same set of arguments for: +% +% @oddheadingmarks +% @evenfootingmarks +% @oddfootingmarks +% @everyheadingmarks +% @everyfootingmarks + +% These define \getoddheadingmarks, \getevenheadingmarks, +% \getoddfootingmarks, and \getevenfootingmarks, each to one of +% \gettopheadingmarks, \getbottomheadingmarks. +% +\def\evenheadingmarks{\headingmarks{even}{heading}} +\def\oddheadingmarks{\headingmarks{odd}{heading}} +\def\evenfootingmarks{\headingmarks{even}{footing}} +\def\oddfootingmarks{\headingmarks{odd}{footing}} +\parseargdef\everyheadingmarks{\headingmarks{even}{heading}{#1} + \headingmarks{odd}{heading}{#1} } +\parseargdef\everyfootingmarks{\headingmarks{even}{footing}{#1} + \headingmarks{odd}{footing}{#1} } +% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. +\def\headingmarks#1#2#3 {% + \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname + \global\expandafter\let\csname get#1#2marks\endcsname \temp +} + +\everyheadingmarks bottom +\everyfootingmarks bottom + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\parseargdef\headings{\csname HEADINGS#1\endcsname} + +\def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}% +} + +\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting +\HEADINGSoff % it's the default + +% When we turn headings on, set the page number to 1. +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSdouble{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} +\let\contentsalignmacro = \chappager + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingle{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} +\def\HEADINGSon{\HEADINGSdouble} + +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdoublex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} +\def\HEADINGSsinglex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% Subroutines used in generating headings +% This produces Day Month Year style of output. +% Only define if not already defined, in case a txi-??.tex file has set +% up a different format (e.g., txi-cs.tex does this). +\ifx\today\thisisundefined +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil\relax + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi +} + +\def\item{\errmessage{@item while not in a list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark so that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. + \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % + \ifinner\else + \vadjust{\penalty 1200}% not good to break after first line of item. + \fi + % We can be in inner vertical mode in a footnote, although an + % @itemize looks awful there. + }% + \flushcr +} + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call \doitemize, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr +} + +% @alphaenumerate and @capsenumerate are abbreviations for giving an arg +% to @enumerate. +% +\def\alphaenumerate{\enumerate{a}} +\def\capsenumerate{\enumerate{A}} +\def\Ealphaenumerate{\Eenumerate} +\def\Ecapsenumerate{\Eenumerate} + + +% @multitable macros +% Amy Hendrickson, 8/18/94, 3/6/96 +% +% @multitable ... @end multitable will make as many columns as desired. +% Contents of each column will wrap at width given in preamble. Width +% can be specified either with sample text given in a template line, +% or in percent of \hsize, the current width of text on page. + +% Table can continue over pages but will only break between lines. + +% To make preamble: +% +% Either define widths of columns in terms of percent of \hsize: +% @multitable @columnfractions .25 .3 .45 +% @item ... +% +% Numbers following @columnfractions are the percent of the total +% current hsize to be used for each column. You may use as many +% columns as desired. + + +% Or use a template: +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item ... +% using the widest term desired in each column. + +% Each new table line starts with @item, each subsequent new column +% starts with @tab. Empty columns may be produced by supplying @tab's +% with nothing between them for as many times as empty columns are needed, +% ie, @tab@tab@tab will produce two empty columns. + +% @item, @tab do not need to be on their own lines, but it will not hurt +% if they are. + +% Sample multitable: + +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item first col stuff @tab second col stuff @tab third col +% @item +% first col stuff +% @tab +% second col stuff +% @tab +% third col +% @item first col stuff @tab second col stuff +% @tab Many paragraphs of text may be used in any column. +% +% They will wrap at the width determined by the template. +% @item@tab@tab This will be in third column. +% @end multitable + +% Default dimensions may be reset by user. +% @multitableparskip is vertical space between paragraphs in table. +% @multitableparindent is paragraph indent in table. +% @multitablecolmargin is horizontal space to be left between columns. +% @multitablelinespace is space to leave between table items, baseline +% to baseline. +% 0pt means it depends on current normal line spacing. +% +\newskip\multitableparskip +\newskip\multitableparindent +\newdimen\multitablecolspace +\newskip\multitablelinespace +\multitableparskip=0pt +\multitableparindent=6pt +\multitablecolspace=12pt +\multitablelinespace=0pt + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% #1 is the @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable +} + +\newcount\colcount +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go +} + +% multitable-only commands. +% +% @headitem starts a heading row, which we typeset in bold. Assignments +% have to be global since we are inside the implicit group of an +% alignment entry. \everycr below resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \checkenv\multitable + \crcr + \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% +% +% default for tables with no headings. +\let\headitemcrhook=\relax +% +% A \tab used to include \hskip1sp. But then the space in a template +% line is not enough. That is bad. So let's go back to just `&' until +% we again encounter the problem the 1sp was intended to solve. +% --karl, nathan@acm.org, 20apr99. +\def\tab{\checkenv\multitable &\the\everytab}% + +% @multitable ... @end multitable definitions: +% +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% Reset from possible headitem. + \global\colcount=0 % Reset the column counter. + % + % Check for saved footnotes, etc.: + \checkinserts + % + % Perhaps a \nobreak, then reset: + \headitemcrhook + \global\let\headitemcrhook=\relax + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \multistrut + \vtop{% + % Use the current \colcount to find the correct column width: + \hsize=\expandafter\csname col\the\colcount\endcsname + % + % In order to keep entries from bumping into each other + % we will add a \leftskip of \multitablecolspace to all columns after + % the first one. + % + % If a template has been used, we will add \multitablecolspace + % to the width of each template entry. + % + % If the user has set preamble in terms of percent of \hsize we will + % use that dimension as the width of the column, and the \leftskip + % will keep entries from bumping into each other. Table will start at + % left margin and final column will justify at right margin. + % + % Make sure we don't inherit \rightskip from the outer environment. + \rightskip=0pt + \ifnum\colcount=1 + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip + \else + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi + % In either case we will make \leftskip=\multitablecolspace: + \leftskip=\multitablecolspace + \fi + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively + % marking characters. + \noindent\ignorespaces##\unskip\multistrut + }\cr +} +\def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + +\def\setmultitablespacing{% + \def\multistrut{\strut}% just use the standard line spacing + % + % Compute \multitablelinespace (if not defined by user) for use in + % \multitableparskip calculation. We used define \multistrut based on + % this, but (ironically) that caused the spacing to be off. + % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +\fi +% Test to see if parskip is larger than space between lines of +% table. If not, do nothing. +% If so, set to same dimension as multitablelinespace. +\ifdim\multitableparskip>\multitablelinespace +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. +\fi% +\ifdim\multitableparskip=0pt +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. +\fi} + + +\message{conditionals,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +{ \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +} + + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\-=\active \catcode`\_=\active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\normaldash \let_\normalunderscore + } +} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we call \makevalueexpandable in \indexdummies). +% The command has to be fully expandable (if the variable is set), since +% the result winds up in the index file. This means that if the +% variable's value contains other Texinfo commands, it's almost certain +% it will fail (although perhaps we could fix that with sufficient work +% to do a one-level expansion on the result, instead of complete). +% +% Unfortunately, this has the consequence that when _ is in the *value* +% of an @set, it does not print properly in the roman fonts (get the cmr +% dot accent at position 126 instead). No fix comes to mind, and it's +% been this way since 2003 or earlier, so just ignore it. +% +\def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% Like \expandablevalue, but completely expandable (the \message in the +% definition above operates at the execution level of TeX). Used when +% writing to auxiliary files, due to the expansion that \write does. +% If flag is undefined, pass through an unexpanded @value command: maybe it +% will be set by the time it is read back in. +% +% NB flag names containing - or _ may not work here. +\def\dummyvalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \noexpand\value{#1}% + \else + \csname SET#1\endcsname + \fi +} + +% Used for @value's in index entries to form the sort key: expand the @value +% if possible, otherwise sort late. +\def\indexnofontsvalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + ZZZZZZZ + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% To get the special treatment we need for `@end ifset,' we call +% \makecond and then redefine. +% +\makecond{ifset} +\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @ifclear VAR ... @end executes the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +% The `\else' inside the `\doifset' parameter is a trick to reuse the +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} +\def\ifclearfail{\doignore{ifclear}} + +% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written +% without the @) is in fact defined. We can only feasibly check at the +% TeX level, so something like `mathcode' is going to considered +% defined even though it is not a Texinfo command. +% +\makecond{ifcommanddefined} +\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} +% +\def\doifcmddefined#1#2{{% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname #2\endcsname\relax + #1% If not defined, \let\next as above. + \fi + \expandafter + }\next +} +\def\ifcmddefinedfail{\doignore{ifcommanddefined}} + +% @ifcommandnotdefined CMD ... handled similar to @ifclear above. +\makecond{ifcommandnotdefined} +\def\ifcommandnotdefined{% + \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} +\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} + +% Set the `txicommandconditionals' variable, so documents have a way to +% test if the @ifcommand...defined conditionals are available. +\set txicommandconditionals + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory=\comment + +% @defininfoenclose. +\let\definfoenclose=\comment + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \newindex {foo} defines an index named IX. +% It automatically defines \IXindex such that +% \IXindex ...rest of line... puts an entry in the index IX. +% It also defines \IXindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is IX. +% The name of an index should be no more than 2 characters long +% for the sake of vms. +% +\def\newindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} +} + +% @defindex foo == \newindex{foo} +% +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. +% +\def\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + +% The default indices: +\newindex{cp}% concepts, +\newcodeindex{fn}% functions, +\newcodeindex{vr}% variables, +\newcodeindex{tp}% types, +\newcodeindex{ky}% keys +\newcodeindex{pg}% and programs. + + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + \requireopenindexfile{#3}% + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% Define \doindex, the driver for all index macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it is the two-letter name of the index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} +\def\doindexxxx #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} +\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} + + +% Used when writing an index entry out to an index file to prevent +% expansion of Texinfo commands that can appear in an index entry. +% +\def\indexdummies{% + \escapechar = `\\ % use backslash in output files. + \definedummyletter\@% + \definedummyletter\ % + % + % For texindex which always views { and } as separators. + \def\{{\lbracechar{}}% + \def\}{\rbracechar{}}% + % + % Do the redefinitions. + \definedummies +} + +% Used for the aux and toc files, where @ is the escape character. +% +\def\atdummies{% + \definedummyletter\@% + \definedummyletter\ % + \definedummyletter\{% + \definedummyletter\}% + % + % Do the redefinitions. + \definedummies + \otherbackslash +} + +% \definedummyword defines \#1 as \string\#1\space, thus effectively +% preventing its expansion. This is used only for control words, +% not control letters, because the \space would be incorrect for +% control characters, but is needed to separate the control word +% from whatever follows. +% +% These can be used both for control words that take an argument and +% those that do not. If it is followed by {arg} in the input, then +% that will dutifully get written to the index (or wherever). +% +% For control letters, we have \definedummyletter, which omits the +% space. +% +\def\definedummyword #1{\def#1{\string#1\space}}% +\def\definedummyletter#1{\def#1{\string#1}}% +\let\definedummyaccent\definedummyletter + +% Called from \indexdummies and \atdummies, to effectively prevent +% the expansion of commands. +% +\def\definedummies{% + % + \let\commondummyword\definedummyword + \let\commondummyletter\definedummyletter + \let\commondummyaccent\definedummyaccent + \commondummiesnofonts + % + \definedummyletter\_% + \definedummyletter\-% + % + % Non-English letters. + \definedummyword\AA + \definedummyword\AE + \definedummyword\DH + \definedummyword\L + \definedummyword\O + \definedummyword\OE + \definedummyword\TH + \definedummyword\aa + \definedummyword\ae + \definedummyword\dh + \definedummyword\exclamdown + \definedummyword\l + \definedummyword\o + \definedummyword\oe + \definedummyword\ordf + \definedummyword\ordm + \definedummyword\questiondown + \definedummyword\ss + \definedummyword\th + % + % Although these internal commands shouldn't show up, sometimes they do. + \definedummyword\bf + \definedummyword\gtr + \definedummyword\hat + \definedummyword\less + \definedummyword\sf + \definedummyword\sl + \definedummyword\tclose + \definedummyword\tt + % + \definedummyword\LaTeX + \definedummyword\TeX + % + % Assorted special characters. + \definedummyword\atchar + \definedummyword\arrow + \definedummyword\bullet + \definedummyword\comma + \definedummyword\copyright + \definedummyword\registeredsymbol + \definedummyword\dots + \definedummyword\enddots + \definedummyword\entrybreak + \definedummyword\equiv + \definedummyword\error + \definedummyword\euro + \definedummyword\expansion + \definedummyword\geq + \definedummyword\guillemetleft + \definedummyword\guillemetright + \definedummyword\guilsinglleft + \definedummyword\guilsinglright + \definedummyword\lbracechar + \definedummyword\leq + \definedummyword\mathopsup + \definedummyword\minus + \definedummyword\ogonek + \definedummyword\pounds + \definedummyword\point + \definedummyword\print + \definedummyword\quotedblbase + \definedummyword\quotedblleft + \definedummyword\quotedblright + \definedummyword\quoteleft + \definedummyword\quoteright + \definedummyword\quotesinglbase + \definedummyword\rbracechar + \definedummyword\result + \definedummyword\sub + \definedummyword\sup + \definedummyword\textdegree + % + % We want to disable all macros so that they are not expanded by \write. + \macrolist + \let\value\dummyvalue + % + \normalturnoffactive +} + +% \commondummiesnofonts: common to \definedummies and \indexnofonts. +% Define \commondummyletter, \commondummyaccent and \commondummyword before +% using. Used for accents, font commands, and various control letters. +% +\def\commondummiesnofonts{% + % Control letters and accents. + \commondummyletter\!% + \commondummyaccent\"% + \commondummyaccent\'% + \commondummyletter\*% + \commondummyaccent\,% + \commondummyletter\.% + \commondummyletter\/% + \commondummyletter\:% + \commondummyaccent\=% + \commondummyletter\?% + \commondummyaccent\^% + \commondummyaccent\`% + \commondummyaccent\~% + \commondummyword\u + \commondummyword\v + \commondummyword\H + \commondummyword\dotaccent + \commondummyword\ogonek + \commondummyword\ringaccent + \commondummyword\tieaccent + \commondummyword\ubaraccent + \commondummyword\udotaccent + \commondummyword\dotless + % + % Texinfo font commands. + \commondummyword\b + \commondummyword\i + \commondummyword\r + \commondummyword\sansserif + \commondummyword\sc + \commondummyword\slanted + \commondummyword\t + % + % Commands that take arguments. + \commondummyword\abbr + \commondummyword\acronym + \commondummyword\anchor + \commondummyword\cite + \commondummyword\code + \commondummyword\command + \commondummyword\dfn + \commondummyword\dmn + \commondummyword\email + \commondummyword\emph + \commondummyword\env + \commondummyword\file + \commondummyword\image + \commondummyword\indicateurl + \commondummyword\inforef + \commondummyword\kbd + \commondummyword\key + \commondummyword\math + \commondummyword\option + \commondummyword\pxref + \commondummyword\ref + \commondummyword\samp + \commondummyword\strong + \commondummyword\tie + \commondummyword\U + \commondummyword\uref + \commondummyword\url + \commondummyword\var + \commondummyword\verb + \commondummyword\w + \commondummyword\xref +} + +% For testing: output @{ and @} in index sort strings as \{ and \}. +\newif\ifusebracesinindexes + +\let\indexlbrace\relax +\let\indexrbrace\relax + +{\catcode`\@=0 +\catcode`\\=13 + @gdef@backslashdisappear{@def\{}} +} + +{ +\catcode`\<=13 +\catcode`\-=13 +\catcode`\`=13 + \gdef\indexnonalnumdisappear{% + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else + % @set txiindexlquoteignore makes us ignore left quotes in the sort term. + % (Introduced for FSFS 2nd ed.) + \let`=\empty + \fi + % + \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else + \backslashdisappear + \fi + % + \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else + \def-{}% + \fi + \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else + \def<{}% + \fi + \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else + \def\@{}% + \fi + } + + \gdef\indexnonalnumreappear{% + \useindexbackslash + \let-\normaldash + \let<\normalless + \def\@{@}% + } +} + + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + % Accent commands should become @asis. + \def\commondummyaccent##1{\let##1\asis}% + % We can just ignore other control letters. + \def\commondummyletter##1{\let##1\empty}% + % All control words become @asis by default; overrides below. + \let\commondummyword\commondummyaccent + \commondummiesnofonts + % + % Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |, etc. + % Likewise with the other plain tex font commands. + %\let\tt=\asis + % + \def\ { }% + \def\@{@}% + \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + \uccode`\1=`\{ \uppercase{\def\{{1}}% + \uccode`\1=`\} \uppercase{\def\}{1}}% + \let\lbracechar\{% + \let\rbracechar\}% + % + % Non-English letters. + \def\AA{AA}% + \def\AE{AE}% + \def\DH{DZZ}% + \def\L{L}% + \def\OE{OE}% + \def\O{O}% + \def\TH{TH}% + \def\aa{aa}% + \def\ae{ae}% + \def\dh{dzz}% + \def\exclamdown{!}% + \def\l{l}% + \def\oe{oe}% + \def\ordf{a}% + \def\ordm{o}% + \def\o{o}% + \def\questiondown{?}% + \def\ss{ss}% + \def\th{th}% + % + \def\LaTeX{LaTeX}% + \def\TeX{TeX}% + % + % Assorted special characters. \defglyph gives the control sequence a + % definition that removes the {} that follows its use. + \defglyph\atchar{@}% + \defglyph\arrow{->}% + \defglyph\bullet{bullet}% + \defglyph\comma{,}% + \defglyph\copyright{copyright}% + \defglyph\dots{...}% + \defglyph\enddots{...}% + \defglyph\equiv{==}% + \defglyph\error{error}% + \defglyph\euro{euro}% + \defglyph\expansion{==>}% + \defglyph\geq{>=}% + \defglyph\guillemetleft{<<}% + \defglyph\guillemetright{>>}% + \defglyph\guilsinglleft{<}% + \defglyph\guilsinglright{>}% + \defglyph\leq{<=}% + \defglyph\lbracechar{\{}% + \defglyph\minus{-}% + \defglyph\point{.}% + \defglyph\pounds{pounds}% + \defglyph\print{-|}% + \defglyph\quotedblbase{"}% + \defglyph\quotedblleft{"}% + \defglyph\quotedblright{"}% + \defglyph\quoteleft{`}% + \defglyph\quoteright{'}% + \defglyph\quotesinglbase{,}% + \defglyph\rbracechar{\}}% + \defglyph\registeredsymbol{R}% + \defglyph\result{=>}% + \defglyph\textdegree{o}% + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % makeinfo does not expand macros in the argument to @deffn, which ends up + % writing an index entry, and texindex isn't prepared for an index sort entry + % that starts with \. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \macrolist + \let\value\indexnofontsvalue +} +\def\defglyph#1#2{\def#1##1{#2}} % see above + + + + +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + +% Most index entries go through here, but \dosubind is the general case. +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{\dosubind{#1}{#2}{}} + +% There is also \dosubind {index}{topic}{subtopic} +% which makes an entry in a two-level index such as the operation index. +% TODO: Two-level index? Operation index? + +% Workhorse for all indexes. +% #1 is name of index, #2 is stuff to put there, #3 is subentry -- +% empty if called from \doind, as we usually are (the main exception +% is with most defuns, which call us directly). +% +\def\dosubind#1#2#3{% + \iflinks + {% + \requireopenindexfile{#1}% + % Store the main index entry text (including the third arg). + \toks0 = {#2}% + % If third arg is present, precede it with a space. + \def\thirdarg{#3}% + \ifx\thirdarg\empty \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + \edef\writeto{\csname#1indfile\endcsname}% + % + \safewhatsit\dosubindwrite + }% + \fi +} + +% Check if an index file has been opened, and if not, open it. +\def\requireopenindexfile#1{% +\ifnum\csname #1indfile\endcsname=0 + \expandafter\newwrite \csname#1indfile\endcsname + \edef\suffix{#1}% + % A .fls suffix would conflict with the file extension for the output + % of -recorder, so use .f1s instead. + \ifx\suffix\indexisfl\def\suffix{f1}\fi + % Open the file + \immediate\openout\csname#1indfile\endcsname \jobname.\suffix + % Using \immediate above here prevents an object entering into the current + % box, which could confound checks such as those in \safewhatsit for + % preceding skips. + \typeout{Writing index file \jobname.\suffix}% +\fi} +\def\indexisfl{fl} + +% Output \ as {\indexbackslash}, because \ is an escape character in +% the index files. +\let\indexbackslash=\relax +{\catcode`\@=0 \catcode`\\=\active + @gdef@useindexbackslash{@def\{{@indexbackslash}}} +} + +% Definition for writing index entry text. +\def\sortas#1{\ignorespaces}% + +% Definition for writing index entry sort key. Should occur at the at +% the beginning of the index entry, like +% @cindex @sortas{september} \september +% The \ignorespaces takes care of following space, but there's no way +% to remove space before it. +{ +\catcode`\-=13 +\gdef\indexwritesortas{% + \begingroup + \indexnonalnumreappear + \indexwritesortasxxx} +\gdef\indexwritesortasxxx#1{% + \xdef\indexsortkey{#1}\endgroup} +} + + +% Write the entry in \toks0 to the index file. +% +\def\dosubindwrite{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \fi + % + % Remember, we are within a group. + \indexdummies % Must do this here, since \bf, etc expand at this stage + \useindexbackslash % \indexbackslash isn't defined now so it will be output + % as is; and it will print as backslash. + % The braces around \indexbrace are recognized by texindex. + % + % Get the string to sort by, by processing the index entry with all + % font commands turned off. + {\indexnofonts + \def\lbracechar{{\indexlbrace}}% + \def\rbracechar{{\indexrbrace}}% + \let\{=\lbracechar + \let\}=\rbracechar + \indexnonalnumdisappear + \xdef\indexsortkey{}% + \let\sortas=\indexwritesortas + \edef\temp{\the\toks0}% + \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas + \ifx\indexsortkey\empty + \xdef\indexsortkey{\temp}% + \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi + \fi + }% + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + \edef\temp{% + \write\writeto{% + \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}% + }% + \temp +} +\newbox\dummybox % used above + +% Take care of unwanted page breaks/skips around a whatsit: +% +% If a skip is the last thing on the list now, preserve it +% by backing up by \lastskip, doing the \write, then inserting +% the skip again. Otherwise, the whatsit generated by the +% \write or \pdfdest will make \lastskip zero. The result is that +% sequences like this: +% @end defun +% @tindex whatever +% @defun ... +% will have extra space inserted, because the \medbreak in the +% start of the @defun won't see the skip inserted by the @end of +% the previous defun. +% +% But don't do any of this if we're not in vertical mode. We +% don't want to do a \vskip and prematurely end a paragraph. +% +% Avoid page breaks due to these extra skips, too. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +\newskip\whatsitskip +\newcount\whatsitpenalty +% +% ..., ready, GO: +% +\def\safewhatsit#1{\ifhmode + #1% + \else + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \whatsitskip = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \whatsitpenalty = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\whatsitskip glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\whatsitskip + \fi + % + #1% + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\whatsitskip + \fi +\fi} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +\def\cindexsub {\begingroup\obeylines\cindexsub} +{\obeylines % +\gdef\cindexsub "#1" #2^^M{\endgroup % +\dosubind{cp}{#2}{#1}}} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \plainfrenchspacing + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 12 + % See comment in \requireopenindexfile. + \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi + \openin 1 \jobname.\indexname s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \typeout{No file \jobname.\indexname s.}% + \else + \catcode`\\ = 0 + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \thisline + \ifeof 1 + \putwordIndexIsEmpty + \else + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\ttbackslash}% + \let\indexlbrace\{ % Likewise, set these sequences for braces + \let\indexrbrace\} % used in the sort key. + \begindoublecolumns + \let\dotheinsertentrybox\dotheinsertentryboxwithpenalty + % + % Read input from the index file line by line. + \loopdo + \ifeof1 \else + \read 1 to \nextline + \fi + % + \indexinputprocessing + \thisline + % + \ifeof1\else + \let\thisline\nextline + \repeat + %% + \enddoublecolumns + \fi + \fi + \closein 1 +\endgroup} +\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} +\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} + +\def\indexinputprocessing{% + \ifeof1 + \let\firsttoken\relax + \else + \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% + \act + \fi +} +\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} +\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} + + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 +\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 +\catcode`\$=3 +\gdef\initialglyphs{% + % Some changes for non-alphabetic characters. Using the glyphs from the + % math fonts looks more consistent than the typewriter font used elsewhere + % for these characters. + \def\indexbackslash{\math{\backslash}}% + \let\\=\indexbackslash + % + % Can't get bold backslash so don't use bold forward slash + \catcode`\/=13 + \def/{{\secrmnotbold \normalslash}}% + \def-{{\normaldash\normaldash}}% en dash `--' + \def^{{\chapbf \normalcaret}}% + \def~{{\chapbf \normaltilde}}% + \def\_{% + \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% + \def|{$\vert$}% + \def<{$\less$}% + \def>{$\gtr$}% + \def+{$\normalplus$}% +}} + +\def\initial{% + \bgroup + \initialglyphs + \initialx +} + +\def\initialx#1{% + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + % The glue before the bonus allows a little bit of space at the + % bottom of a column to reduce an increase in inter-line spacing. + \nobreak + \vskip 0pt plus 5\baselineskip + \penalty -300 + \vskip 0pt plus -5\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus 1\baselineskip + \leftline{\secfonts \kern-0.05em \secbf #1}% + % \secfonts is inside the argument of \leftline so that the change of + % \baselineskip will not affect any glue inserted before the vbox that + % \leftline creates. + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip + \egroup % \initialglyphs +} + +\newdimen\entryrightmargin +\entryrightmargin=0pt + +% \entry typesets a paragraph consisting of the text (#1), dot leaders, and +% then page number (#2) flushed to the right margin. It is used for index +% and table of contents entries. The paragraph is indented by \leftskip. +% +\def\entry{% + \begingroup + % + % For pdfTeX and XeTeX. + % The redefinition of \domark stops marks being added in \pdflink to + % preserve coloured links across page boundaries. Otherwise the marks + % would get in the way of \lastbox in \insertentrybox. + \let\domark\relax + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % No extra space above this paragraph. + \parskip = 0in + % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% An undocumented command + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\entrybreak{\unskip\space\ignorespaces}% +\def\doentry{% + % Save the text of the entry + \global\setbox\boxA=\hbox\bgroup + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. + % Not absorbing as a macro argument reduces the chance of problems + % with catcodes occurring. +} +{\catcode`\@=11 +\gdef\finishentry#1{% + \egroup % end box A + \dimen@ = \wd\boxA % Length of text of entry + \global\setbox\boxA=\hbox\bgroup\unhbox\boxA + % #1 is the page number. + % + % Get the width of the page numbers, and only use + % leaders if they are present. + \global\setbox\boxB = \hbox{#1}% + \ifdim\wd\boxB = 0pt + \null\nobreak\hfill\ % + \else + % + \null\nobreak\indexdotfill % Have leaders before the page number. + % + \ifpdf + \pdfgettoks#1.% + \hskip\skip\thinshrinkable\the\toksA + \else + \ifx\XeTeXrevision\thisisundefined + \hskip\skip\thinshrinkable #1% + \else + \pdfgettoks#1.% + \hskip\skip\thinshrinkable\the\toksA + \fi + \fi + \fi + \egroup % end \boxA + \ifdim\wd\boxB = 0pt + \global\setbox\entrybox=\vbox{\unhbox\boxA}% + \else + \global\setbox\entrybox=\vbox\bgroup + % We want the text of the entries to be aligned to the left, and the + % page numbers to be aligned to the right. + % + \parindent = 0pt + \advance\leftskip by 0pt plus 1fil + \advance\leftskip by 0pt plus -1fill + \rightskip = 0pt plus -1fil + \advance\rightskip by 0pt plus 1fill + % Cause last line, which could consist of page numbers on their own + % if the list of page numbers is long, to be aligned to the right. + \parfillskip=0pt plus -1fill + % + \advance\rightskip by \entryrightmargin + % Determine how far we can stretch into the margin. + % This allows, e.g., "Appendix H GNU Free Documentation License" to + % fit on one line in @letterpaper format. + \ifdim\entryrightmargin>2.1em + \dimen@i=2.1em + \else + \dimen@i=0em + \fi + \advance \parfillskip by 0pt minus 1\dimen@i + % + \dimen@ii = \hsize + \advance\dimen@ii by -1\leftskip + \advance\dimen@ii by -1\entryrightmargin + \advance\dimen@ii by 1\dimen@i + \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line + \ifdim\dimen@ > 0.8\dimen@ii % due to long index text + \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly + \dimen@ii = \hsize + \ifnum\dimen@>\dimen@ii + % If the entry is too long, use the whole line + \dimen@ = \dimen@ii + \fi + \advance\leftskip by 0pt plus 1fill % ragged right + \advance \dimen@ by 1\rightskip + \parshape = 2 0pt \dimen@ 0em \dimen@ii + % Ideally we'd add a finite glue at the end of the first line only, + % instead of using \parshape with explicit line lengths, but TeX + % doesn't seem to provide a way to do such a thing. + % + \leftskip = 1em + \parindent = -1em + \fi\fi + \indent % start paragraph + \unhbox\boxA + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % Word spacing - no stretch + \spaceskip=\fontdimen2\font minus \fontdimen4\font + % + \linepenalty=1000 % Discourage line breaks. + \hyphenpenalty=5000 % Discourage hyphenation. + % + \par % format the paragraph + \egroup % The \vbox + \fi + \endgroup + \dotheinsertentrybox +}} + +\newskip\thinshrinkable +\skip\thinshrinkable=.15em minus .15em + +\newbox\entrybox +\def\insertentrybox{% + \ourunvbox\entrybox +} + +% default definition +\let\dotheinsertentrybox\insertentrybox + +% Use \lastbox to take apart vbox box by box, and add each sub-box +% to the current vertical list. +\def\ourunvbox#1{% +\bgroup % for local binding of \delayedbox + % Remove the last box from box #1 + \global\setbox#1=\vbox{% + \unvbox#1% + \unskip % remove any glue + \unpenalty + \global\setbox\interbox=\lastbox + }% + \setbox\delayedbox=\box\interbox + \ifdim\ht#1=0pt\else + \ourunvbox#1 % Repeat on what's left of the box + \nobreak + \fi + \box\delayedbox +\egroup +} +\newbox\delayedbox +\newbox\interbox + +% Used from \printindex. \firsttoken should be the first token +% after the \entry. If it's not another \entry, we are at the last +% line of a group of index entries, so insert a penalty to discourage +% widowed index entries. +\def\dotheinsertentryboxwithpenalty{% + \ifx\firsttoken\isentry + \else + \penalty 9000 + \fi + \insertentrybox +} +\def\isentry{\entry}% + +% Like plain.tex's \dotfill, except uses up at least 1 em. +% The filll stretch here overpowers both the fil and fill stretch to push +% the page number to the right. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll} + + +\def\primary #1{\line{#1\hfil}} + +\newskip\secondaryindent \secondaryindent=0.5cm +\def\secondary#1#2{{% + \parfillskip=0in + \parskip=0in + \hangindent=1in + \hangafter=1 + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + \ifx\XeTeXrevision\thisisundefined + #2 + \else + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \fi + \fi + \par +}} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 % private names + +\newbox\partialpage +\newdimen\doublecolumnhsize + +% Use inside an output routine to save \topmark and \firstmark +\def\savemarks{% + \global\savedtopmark=\expandafter{\topmark }% + \global\savedfirstmark=\expandafter{\firstmark }% +} +\newtoks\savedtopmark +\newtoks\savedfirstmark + +% Set \topmark and \firstmark for next time \output runs. +% Can't be run from withinside \output (because any material +% added while an output routine is active, including +% penalties, is saved for after it finishes). The page so far +% should be empty, otherwise what's on it will be thrown away. +\def\restoremarks{% + \mark{\the\savedtopmark}% + \bgroup\output = {% + \setbox\dummybox=\box\PAGE + }abc\eject\egroup + % "abc" because output routine doesn't fire for a completely empty page. + \mark{\the\savedfirstmark}% +} + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % If not much space left on page, start a new page. + \ifdim\pagetotal>0.8\vsize\vfill\eject\fi + % + % Grab any single-column material above us. + \output = {% + % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case we just ship out what is in \partialpage with the normal + % output routine. Generally, \partialpage will be empty when this + % runs and this will be a no-op. See the indexspread.tex test case. + \ifvoid\partialpage \else + \onepageout{\pagecontents\partialpage}% + \fi + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + \savemarks + }% + \eject % run that output routine to set \partialpage + \restoremarks + % + % We recover the two marks that the last output routine saved in order + % to propagate the information in marks added around a chapter heading, + % which could be otherwise be lost by the time the final page is output. + % + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Double the \vsize as well. + \advance\vsize by -\ht\partialpage + \vsize = 2\vsize + % + % For the benefit of balancing columns + \advance\baselineskip by 0pt plus 0.5pt +} + +% The double-column output routine for all double-column pages except +% the last, which is done by \balancecolumns. +% +\def\doublecolumnout{% + % + \splittopskip=\topskip \splitmaxdepth=\maxdepth + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@ = \vsize + \divide\dimen@ by 2 + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit\PAGE to\dimen@ \setbox2=\vsplit\PAGE to\dimen@ + \global\advance\vsize by 2\ht\partialpage + \onepageout\pagesofar + \unvbox\PAGE + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\txipagewidth{\box0\hfil\box2}% +} + + +% Finished with with double columns. +\def\enddoublecolumns{% + % The following penalty ensures that the page builder is exercised + % _before_ we change the output routine. This is necessary in the + % following situation: + % + % The last section of the index consists only of a single entry. + % Before this section, \pagetotal is less than \pagegoal, so no + % break occurs before the last section starts. However, the last + % section, consisting of \initial and the single \entry, does not + % fit on the page and has to be broken off. Without the following + % penalty the page builder will not be exercised until \eject + % below, and by that time we'll already have changed the output + % routine to the \balancecolumns version, so the next-to-last + % double-column page will be processed with \balancecolumns, which + % is wrong: The two columns will go to the main vertical list, with + % the broken-off section in the recent contributions. As soon as + % the output routine finishes, TeX starts reconsidering the page + % break. The two columns and the broken-off section both fit on the + % page, because the two columns now take up only half of the page + % goal. When TeX sees \eject from below which follows the final + % section, it invokes the new output routine that we've set after + % \balancecolumns below; \onepageout will try to fit the two columns + % and the final section into the vbox of \txipageheight (see + % \pagebody), causing an overfull box. + % + % Note that glue won't work here, because glue does not exercise the + % page builder, unlike penalties (see The TeXbook, pp. 280-281). + \penalty0 + % + \output = {% + % Split the last of the double-column material. + \savemarks + \balancecolumns + % + % Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. + \global\output = {\onepageout{\pagecontents\PAGE}}% + }% + \eject + \endgroup % started in \begindoublecolumns + \restoremarks + % Leave the double-column material on the current page, no automatic + % page break. + \box\balancedcolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize. + \global\vsize = \txipageheight % + \pagegoal = \txipageheight % +} +\newbox\balancedcolumns +\setbox\balancedcolumns=\vbox{shouldnt see this}% +% +% Only called for the last of the double column material. \doublecolumnout +% does the others. +\def\balancecolumns{% + \setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \ifdim\dimen@<5\baselineskip + % Don't split a short final column in two. + \setbox2=\vbox{}% + \else + \divide\dimen@ by 2 % target to split to + \dimen@ii = \dimen@ + \splittopskip = \topskip + % Loop until left column is at least as high as the right column. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht1<\ht3 + \global\advance\dimen@ by 1pt + \repeat + }% + % Now the left column is in box 1, and the right column in box 3. + % Check whether the left column has come out higher than the page itself. + % (Note that we have doubled \vsize for the double columns, so + % the actual height of the page is 0.5\vsize). + \ifdim2\ht1>\vsize + % Just split the last of the double column material roughly in half. + \setbox2=\box0 + \setbox0 = \vsplit2 to \dimen@ii + \setbox0=\vbox to \dimen@ii {\unvbox0\vfill}% + \setbox2=\vbox to \dimen@ii {\unvbox2\vfill}% + \else + % Compare the heights of the two columns. + \ifdim4\ht1>5\ht3 + % Column heights are too different, so don't make their bottoms + % flush with each other. + \setbox2=\vbox to \ht1 {\unvbox3\vfill}% + \setbox0=\vbox to \ht1 {\unvbox1\vfill}% + \else + % Make column bottoms flush with each other. + \setbox2=\vbox to\ht1{\unvbox3\unskip}% + \setbox0=\vbox to\ht1{\unvbox1\unskip}% + \fi + \fi + \fi + % + \global\setbox\balancedcolumns=\vbox{\pagesofar}% +} +\catcode`\@ = \other + + +\message{sectioning,} +% Chapters, sections, etc. + +% Let's start with @part. +\outer\parseargdef\part{\partzzz{#1}} +\def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rm #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + % This outputs a mark at the end of the page that clears \thischapter + % and \thissection, as is done in \startcontents. + \let\pchapsepmacro\relax + \chapmacro{}{Yomitfromtoc}{}% + \chapoddpage + \endgroup +} + +% \unnumberedno is an oxymoron. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +% +% \def\appendixletter{\char\the\appendixno} +% We do the following ugly conditional instead of the above simple +% construct for the sake of pdftex, which needs the actual +% letter in the expansion, not just typeset. +% +\def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +% Each @chapter defines these (using marks) as the number+name, number +% and name of the chapter. Page headings and footings can use +% these. @section does likewise. +\def\thischapter{} +\def\thischapternum{} +\def\thischaptername{} +\def\thissection{} +\def\thissectionnum{} +\def\thissectionname{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} +\let\up=\raisesections % original BFox name + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} +\let\down=\lowersections % original BFox name + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achieve this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unnlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unnlevel + \def\headtype{U}% + \else + \chardef\unnlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +% normally unnmhead0 calls unnumberedzzz: +\outer\parseargdef\unnumbered{\unnmhead0{#1}} +\def\unnumberedzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\let\top\unnumbered + +% Sections. +% +\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz +\def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% +} + +% normally calls appendixsectionzzz: +\outer\parseargdef\appendixsection{\apphead1{#1}} +\def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% +} +\let\appendixsec\appendixsection + +% normally calls unnumberedseczzz: +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} +\def\unnumberedseczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% +} + +% Subsections. +% +% normally calls numberedsubseczzz: +\outer\parseargdef\numberedsubsec{\numhead2{#1}} +\def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% +} + +% normally calls appendixsubseczzz: +\outer\parseargdef\appendixsubsec{\apphead2{#1}} +\def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% +} + +% normally calls unnumberedsubseczzz: +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} +\def\unnumberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno}% +} + +% Subsubsections. +% +% normally numberedsubsubseczzz: +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} +\def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally appendixsubsubseczzz: +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} +\def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally unnumberedsubsubseczzz: +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} +\def\unnumberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +\def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip \nobreak + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +% Parameter controlling skip before chapter headings (if needed) +\newskip\chapheadingskip + +% Define plain chapter starts, and page on/off switching for it. +\def\chapbreak{\dobreak \chapheadingskip {-4000}} + +% Start a new page +\def\chappager{\par\vfill\supereject} + +% \chapoddpage - start on an odd page for a new chapter +% Because \domark is called before \chapoddpage, the filler page will +% get the headings for the next chapter, which is wrong. But we don't +% care -- we just disable all headings on the filler page. +\def\chapoddpage{% + \chappager + \ifodd\pageno \else + \begingroup + \headingsoff + \null + \chappager + \endgroup + \fi +} + +\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname} + +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\let\pagealignmacro=\chappager} + +\def\CHAPPAGon{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\let\pagealignmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{% +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\let\pagealignmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\CHAPPAGon + +% \chapmacro - Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% Not used for @heading series. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yappendixkeyword{Yappendix} +\def\Yomitfromtockeyword{Yomitfromtoc} +% +\def\chapmacro#1#2#3{% + \expandafter\ifx\thisenv\titlepage\else + \checkenv{}% chapters, etc., should not start inside an environment. + \fi + % FIXME: \chapmacro is currently called from inside \titlepage when + % \setcontentsaftertitlepage to print the "Table of Contents" heading, but + % this should probably be done by \sectionheading with an option to print + % in chapter size. + % + % Insert the first mark before the heading break (see notes for \domark). + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% + \gdef\thissection{}}% + % + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{\thischaptername}}% + \else\ifx\temptype\Yomitfromtockeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{}}% + \else\ifx\temptype\Yappendixkeyword + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\appendixletter}% + % \noexpand\putwordAppendix avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \else + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\the\chapno}% + % \noexpand\putwordChapter avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordChapter{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \fi\fi\fi + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert the chapter heading break. + \pchapsepmacro + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \domark + % + {% + \chapfonts \rm + \let\footnote=\errfootnoteheading % give better error message + % + % Have to define \lastsection before calling \donoderef, because the + % xref code eventually uses it. On the other hand, it has to be called + % after \pchapsepmacro, or the headline will change too soon. + \gdef\lastsection{#1}% + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}% + % + % Typeset the actual heading. + \nobreak % Avoid page breaks at the interline glue. + \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + + +% Print any size, any type, section title. +% +% #1 is the text of the title, +% #2 is the section level (sec/subsec/subsubsec), +% #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc), +% #4 is the section number. +% +\def\seckeyword{sec} +% +\def\sectionheading#1#2#3#4{% + {% + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % It is ok for the @heading series commands to appear inside an + % environment (it's been historically allowed, though the logic is + % dubious), but not the others. + \ifx\temptype\Yomitfromtockeyword\else + \checkenv{}% non-@*heading should not be in an environment. + \fi + \let\footnote=\errfootnoteheading + % + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rm + % + % Insert first mark before the heading break (see notes for \domark). + \let\prevsectiondefs=\lastsectiondefs + \ifx\temptype\Ynothingkeyword + \ifx\sectionlevel\seckeyword + \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% + \gdef\thissection{\thissectionname}}% + \fi + \else\ifx\temptype\Yomitfromtockeyword + % Don't redefine \thissection. + \else\ifx\temptype\Yappendixkeyword + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \else + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \fi\fi\fi + % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \global\let\prevsectiondefs=\lastsectiondefs + \domark + % + % Only insert the space after the number if we have a section number. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \gdef\lastsection{#1}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc, + % and don't redefine \lastsection. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \gdef\lastsection{#1}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \gdef\lastsection{#1}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) However, when a paragraph is not started next + % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out + % or the negative glue will cause weirdly wrong output, typically + % obscuring the section heading with something else. + \vskip-\parskip + % + % This is so the last item on the main vertical list is a known + % \penalty > 10000, so \startdefun, etc., can recognize the situation + % and do the needful. + \penalty 10001 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdf + \global\pdfmakepagedesttrue + \else + \ifx\XeTeXrevision\thisisundefined + \else + \global\pdfmakepagedesttrue + \fi + \fi +} + + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care. This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% + \setupdatafile + \activecatcodes + \input \tocreadfilename +} + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Prepare to read what we've written to \tocfile. +% +\def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. Thus, we maintain + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund + \contentsalignmacro + \immediate\closeout\tocfile + % + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \raggedbottom % Worry more about breakpoints than the bottom. + \entryrightmargin=\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi +} + +% redefined for the two-volume lispref. We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc} + +% Normal (long) toc. +% +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\partentry = \shortpartentry + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} +\let\shortcontents = \summarycontents + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `A' for an appendix, or `3' for a chapter. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% These macros generate individual entries in the table of contents. +% The first argument is the chapter or section name. +% The last argument is the page number. +% The arguments in between are the chapter number, section number, ... + +% Parts, in the main contents. Replace the part number, which doesn't +% exist, with an empty box. Let's hope all the numbers have the same width. +% Also ignore the page number, which is conventionally not printed. +\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} +\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} +% +% Parts, in the short toc. +\def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% +} + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} + +% Chapters, in the short toc. +% See comments in \dochapentry re vbox and related settings. +\def\shortchapentry#1#2#3#4{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} + +% Sections. +\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} + +% Subsections. +\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% Now for the actual typesetting. In all these, #1 is the text and #2 is the +% page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + % Move the page numbers slightly to the right + \advance\entryrightmargin by -0.05em + \chapentryfonts + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +% We use the same \entry macro as for the index entries. +\let\tocentry = \entry + +% Space between chapter (or whatever) number and the title. +\def\labelspace{\hskip1em \relax} + +\def\dopageno#1{{\rm #1}} +\def\doshortpageno#1{{\rm #1}} + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @tex ... @end tex escapes into raw TeX temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain @ character. + +\envdef\tex{% + \setupmarkupstyle{tex}% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \catcode `\`=\other + \catcode `\'=\other + % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % + % Inverse of the list at the beginning of the file. + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\sp=\ptexsp + \let\*=\ptexstar + %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode + \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % we've made it outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip. +% +\def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + \ifnum\lastpenalty<10000 + % Penalize breaking before the environment, because preceding text + % often leads into it. + \penalty100 + \fi + \vskip\envskipamount + \fi + \fi +}} + +\def\afterenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. +\font\circle=lcircle10 +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip +\circthick=\fontdimen8\circle +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +\envdef\cartouche{% + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % + % If this cartouche directly follows a sectioning command, we need the + % \parskip glue (backspaced over by default) or the cartouche can + % collide with the section heading. + \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi + % + \setbox\groupbox=\vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of def\group. +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \addgroupbox + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\newdimen\nonfillparindent +\def\nonfillstart{% + \aboveenvbreak + \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent + \parindent = 0pt + \let\indent\nonfillindent + % + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent +} + +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + +% If you want all examples etc. small: @set dispenvsize small. +% If you want even small examples the full size: @set dispenvsize nosmall. +% This affects the following displayed environments: +% @example, @display, @format, @lisp +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + % end paragraph for sake of leading, in case document has no blank + % line. This is redundant with what happens in \aboveenvbreak, but + % we need to do it before changing the fonts, and it's inconvenient + % to change the fonts afterward. + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it in one command. #1 is the env name, #2 the definition. +\def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two environment synonyms (#1 and #2) for an environment. +\def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% +} +% +% @lisp: indented, narrowed, typewriter font; +% @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvdef{lisp}{example}{% + \nonfillstart + \tt\setupmarkupstyle{example}% + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return +} +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenvdef{display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenvdef{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill\relax + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. Don't stretch around special +% characters in urls in this environment, since the stretch at the right +% should be enough. +\envdef\raggedright{% + \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax + \def\urefprestretchamount{0pt}% + \def\urefpoststretchamount{0pt}% +} +\let\Eraggedright\par + +\envdef\raggedleft{% + \parindent=0pt \leftskip0pt plus2em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedleft\par + +\envdef\raggedcenter{% + \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedcenter\par + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\makedispenvdef{quotation}{\quotationstart} +% +\def\quotationstart{% + \indentedblockstart % same as \indentedblock, but increase right margin too. + \ifx\nonarrowing\relax + \advance\rightskip by \lispnarrowing + \fi + \parsearg\quotationlabel +} + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\thisisundefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallquotation{\Equotation} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi +} + +% @indentedblock is like @quotation, but indents only on the left and +% has no optional argument. +% +\makedispenvdef{indentedblock}{\indentedblockstart} +% +\def\indentedblockstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi +} + +% Keep a nonzero parskip for the environment, since we're doing normal filling. +% +\def\Eindentedblock{% + \par + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallindentedblock{\Eindentedblock} + + +% LaTeX-like @verbatim...@end verbatim and @verb{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \setupmarkupstyle{verb}% + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion. +\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount +% +% We typeset each line of the verbatim in an \hbox, so we can handle +% tabs. The \global is in case the verbatim line starts with an accent, +% or some other command that starts with a begin-group. Otherwise, the +% entire \verbbox would disappear at the corresponding end-group, before +% it is typeset. Meanwhile, we can't have nested verbatim commands +% (can we?), so the \global won't be overwriting itself. +\newbox\verbbox +\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} +% +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw + \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox + }% + } +\endgroup + +% start the verbatim environment. +\def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + \tt % easiest (and conventionally used) font for verbatim + % The \leavevmode here is for blank lines. Otherwise, we would + % never \starttabox and the \egroup would end verbatim mode. + \def\par{\leavevmode\egroup\box\verbbox\endgraf}% + \tabexpand + \setupmarkupstyle{verbatim}% + % Respect line breaks, + % print special symbols as themselves, and + % make each space count. + % Must do in this order: + \obeylines \uncatcodespecials \sepspaces + \everypar{\starttabbox}% +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. +\endgroup +% +\envdef\verbatim{% + \setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% + \input #1 + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is desirable. +% +\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} +\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +% +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt +\newcount\defunpenalty + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \defunpenalty=10003 % Will keep this @deffn together with the + % following @def command, see below. + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \printdefunline, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + % As a further refinement, we avoid "club" headers by signalling + % with penalty of 10003 after the very first @deffn in the + % sequence (see above), and penalty of 10002 after any following + % @def command. + \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +\def\dodefunx#1{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As above, allow line break if we have multiple x headers in a row. + % It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + % And now, it's time to reuse the body of the original defun: + \expandafter\gobbledefun#1% +} +\def\gobbledefun#1\startdefun{} + +% \printdefunline \deffnheader{text} +% +\def\printdefunline#1#2{% + \begingroup + % call \deffnheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil\relax + \endgraf + \nobreak\vskip -\parskip + \penalty\defunpenalty % signal to \startdefun and \dodefunx + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; +% the only thing remaining is to define \deffnheader. +% +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} + +% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } +% +% Define \deffn and \deffnx, without parameters. +% \deffnheader has to be defined explicitly. +% +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{\dodefunx#1}% + \def#3% +} + +\newif\ifdoingtypefn % doing typed function? +\newif\ifrettypeownline % typeset return type on its own line? + +% @deftypefnnewline on|off says whether the return type of typed functions +% are printed on their own line. This affects @deftypefn, @deftypefun, +% @deftypeop, and @deftypemethod. +% +\parseargdef\deftypefnnewline{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @txideftypefnnl value `\temp', + must be on|off}% + \fi\fi +} + +% Untyped functions: + +% @deffn category name args +\makedefun{deffn}{\deffngeneral{}} + +% @deffn category class name args +\makedefun{defop}#1 {\defopon{#1\ \putwordon}} + +% \defopon {category on}class name args +\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deffngeneral {subind}category name args +% +\def\deffngeneral#1#2 #3 #4\endheader{% + % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. + \dosubind{fn}{\code{#3}}{#1}% + \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}{\deftypefngeneral{}} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} + +% \deftypeopon {category on}class type name args +\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deftypefngeneral {subind}category type name args +% +\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% + \dosubind{fn}{\code{#4}}{#1}% + \doingtypefntrue + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}{\deftypecvgeneral{}} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} + +% \deftypecvof {category of}class type var args +\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } + +% \deftypecvgeneral {subind}category type var args +% +\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% + \dosubind{vr}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} + +% \defcvof {category of}class var args +\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } + +% Types: + +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \defname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopon\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} +\makedefun{defivar}{\defcvof\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} + +% \defname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\defname#1#2#3{% + \par + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % Determine if we are typesetting the return type of a typed function + % on a line by itself. + \rettypeownlinefalse + \ifdoingtypefn % doing a typed function specifically? + % then check user option for putting return type on its own line: + \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else + \rettypeownlinetrue + \fi + \fi + % + % How we'll format the category name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. We'll always have at + % least two. + \tempnum = 2 + % + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % + % If doing a return type on its own line, we'll have another line. + \ifrettypeownline + \advance\tempnum by 1 + \def\maybeshapeline{0in \hsize}% + \else + \def\maybeshapeline{}% + \fi + % + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % + % The final paragraph shape: + \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 + % + % Put the category name at the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% text of the return type + \ifx\temp\empty\else + \tclose{\temp}% typeset the return type + \ifrettypeownline + % put return type on its own line; prohibit line break following: + \hfil\vadjust{\nobreak}\break + \else + \space % type on same line, so just followed by a space + \fi + \fi % no return type + #3% output function name + }% + {\rm\enskip}% hskip 0.5 em of \rmfont + % + \boldbrax + % arguments will be output next, if any. +} + +% Print arguments in slanted roman (not ttsl), inconsistently with using +% tt for the name. This is because literal text is sometimes needed in +% the argument list (groff manual), and ttsl and tt are not very +% distinguishable. Prevent hyphenation at `-' chars. +% +\def\defunargs#1{% + % use sl by default (not ttsl), + % tt for the names. + \df \sl \hyphenchar\font=0 + % + % On the other hand, if an argument has two dashes (for instance), we + % want a way to get ttsl. We used to recommend @var for that, so + % leave the code in, but it's strange for @var to lead to typewriter. + % Nowadays we recommend @code, since the difference between a ttsl hyphen + % and a tt hyphen is pretty tiny. @code also disables ?` !`. + \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% + #1% + \sl\hyphenchar\font=45 +} + +% We want ()&[] to print specially on the defun line. +% +\def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active +} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \boldbrax will not be in effect yet, +% so TeX would otherwise complain about undefined control sequence. +{ + \activeparens + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + \global\let& = \& + + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} + +\newcount\parencount + +% If we encounter &foo, then turn on ()-hacking afterwards +\newif\ifampseen +\def\amprm#1 {\ampseentrue{\bf\ }} + +\def\parenfont{% + \ifampseen + % At the first level, print parens in roman, + % otherwise use the default font. + \ifnum \parencount=1 \rm \fi + \else + % The \sf parens (in \boldbrax) actually are a little bolder than + % the contained text. This is especially needed for [ and ] . + \sf + \fi +} +\def\infirstlevel#1{% + \ifampseen + \ifnum\parencount=1 + #1% + \fi + \fi +} +\def\bfafterword#1 {#1 \bf} + +\def\opnr{% + \global\advance\parencount by 1 + {\parenfont(}% + \infirstlevel \bfafterword +} +\def\clnr{% + {\parenfont)}% + \infirstlevel \sl + \global\advance\parencount by -1 +} + +\newcount\brackcount +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +% these should not use \errmessage; the glibc manual, at least, actually +% has such constructs (when documenting function pointers). +\def\badparencount{% + \message{Warning: unbalanced parentheses in @def...}% + \global\parencount=0 +} +\def\badbrackcount{% + \message{Warning: unbalanced square brackets in @def...}% + \global\brackcount=0 +} + + +\message{macros,} +% @macro. + +% To do this right we need a feature of e-TeX, \scantokens, +% which we arrange to emulate with a temporary file in ordinary TeX. +\ifx\eTeXversion\thisisundefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +% alias because \c means cedilla in @tex or @math +\let\texinfoc=\c + +\newcount\savedcatcodeone +\newcount\savedcatcodetwo + +% Used at the time of macro expansion. +% Argument is macro body with arguments substituted +\def\scanmacro#1{% + \newlinechar`\^^M + \def\xeatspaces{\eatspaces}% + % + % Temporarily undo catcode changes of \printindex. Set catcode of @ to + % 0 so that @-commands in macro expansions aren't printed literally when + % formatting an index file, where \ is used as the escape character. + \savedcatcodeone=\catcode`\@ + \savedcatcodetwo=\catcode`\\ + \catcode`\@=0 + \catcode`\\=\active + % + % Process the macro body under the current catcode regime. + \scantokens{#1@texinfoc}% + % + \catcode`\@=\savedcatcodeone + \catcode`\\=\savedcatcodetwo + % + % The \texinfoc is to remove the \newlinechar added by \scantokens, and + % can be noticed by \parsearg. + % We avoid surrounding the call to \scantokens with \bgroup and \egroup + % to allow macros to open or close groups themselves. +} + +% Used for copying and captions +\def\scanexp#1{% + \expandafter\scanmacro\expandafter{#1}% +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? + +% List of all defined macros in the form +% \commondummyword\macro1\commondummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\commondummyword#1}% + \xdef\macrolist{\the\toks0}% +} + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} + +% Trim leading and trailing spaces off a string. +% Concepts from aro-bend problem 15 (see CTAN). +{\catcode`\@=11 +\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} +\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\gdef\trim@@@ #1 } #2@{#1} +} + +% Trim a single trailing ^^M off a string. +{\catcode`\^^M=\other \catcode`\Q=3% +\gdef\eatcr #1{\eatcra #1Q^^MQ}% +\gdef\eatcra#1^^MQ{\eatcrb#1Q}% +\gdef\eatcrb#1Q#2Q{#1}% +} + +% Macro bodies are absorbed as an argument in a context where +% all characters are catcode 10, 11 or 12, except \ which is active +% (as in normal texinfo). It is necessary to change the definition of \ +% to recognize macro arguments; this is the job of \mbodybackslash. +% +% Non-ASCII encodings make 8-bit characters active, so un-activate +% them to avoid their expansion. Must do this non-globally, to +% confine the change to the current group. +% +% It's necessary to have hard CRs when the macro is executed. This is +% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% body, and then making it the \newlinechar in \scanmacro. +% +\def\scanctxt{% used as subroutine + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other + \passthroughcharstrue +} + +\def\scanargctxt{% used for copying and captions, not macros. + \scanctxt + \catcode`\@=\other + \catcode`\\=\other + \catcode`\^^M=\other +} + +\def\macrobodyctxt{% used for @macro definitions + \scanctxt + \catcode`\ =\other + \catcode`\@=\other + \catcode`\{=\other + \catcode`\}=\other + \catcode`\^^M=\other + \usembodybackslash +} + +% Used when scanning braced macro arguments. Note, however, that catcode +% changes here are ineffectual if the macro invocation was nested inside +% an argument to another Texinfo command. +\def\macroargctxt{% + \scanctxt + \catcode`\ =\active + \catcode`\^^M=\other + \catcode`\\=\active +} + +\def\macrolineargctxt{% used for whole-line arguments without braces + \scanctxt + \catcode`\{=\other + \catcode`\}=\other +} + +% \mbodybackslash is the definition of \ in @macro bodies. +% It maps \foo\ => \csname macarg.foo\endcsname => #N +% where N is the macro parameter number. +% We define \csname macarg.\endcsname to be \realbackslash, so +% \\ in macro replacement text gets you a backslash. +% +{\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} +} +\expandafter\def\csname macarg.\endcsname{\realbackslash} + +\def\margbackslash#1{\char`\#1 } + +\def\macro{\recursivefalse\parsearg\macroxxx} +\def\rmacro{\recursivetrue\parsearg\macroxxx} + +\def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0\relax + \else + \expandafter\parsemargdef \argl;% + \if\paramno>256\relax + \ifx\eTeXversion\thisisundefined + \errhelp = \EMsimple + \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} + \fi + \fi + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\commondummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\commondummyword \noexpand#1% + \fi +} + +% \getargs -- Parse the arguments to a @macro line. Set \macname to +% the name of the macro, and \argl to the braced argument list. +\def\getargs#1{\getargsxxx#1{}} +\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} +\def\getmacname#1 #2\relax{\macname={#1}} +\def\getmacargs#1{\def\argl{#1}} +% This made use of the feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. + +% Parse the optional {params} list to @macro or @rmacro. +% Set \paramno to the number of arguments, +% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a +% three-param macro.) Define \macarg.BLAH for each BLAH in the params +% list to some hook where the argument is to be expanded. If there are +% less than 10 arguments that hook is to be replaced by ##N where N +% is the position in that list, that is to say the macro arguments are to be +% defined `a la TeX in the macro body. +% +% That gets used by \mbodybackslash (above). +% +% If there are 10 or more arguments, a different technique is used: see +% \parsemmanyargdef. +% +\def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + % \hash is redefined to `#' later to get it into definitions + \let\xeatspaces\relax + \parsemargdefxxx#1,;,% + \ifnum\paramno<10\relax\else + \paramno0\relax + \parsemmanyargdef@@#1,;,% 10 or more arguments + \fi +} +\def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + +% \parsemacbody, \parsermacbody +% +% Read recursive and nonrecursive macro bodies. (They're different since +% rec and nonrec macros end differently.) +% +% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro +% body to be transformed. +% Set \macrobody to the body of the macro, and call \defmacro. +% +{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% +{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% + +% Make @ a letter, so that we can make private-to-Texinfo macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% + +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime under which the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, no macro can have more than 256 arguments (else error). +% +% In case that there are 10 or more arguments we parse again the arguments +% list to set new definitions for the \macarg.BLAH macros corresponding to +% each BLAH argument. It was anyhow needed to parse already once this list +% in order to count the arguments, and as macros with at most 9 arguments +% are by far more frequent than macro with 10 or more arguments, defining +% twice the \macarg.BLAH macros does not cost too much processing power. +\def\parsemmanyargdef@@#1,{% + \if#1;\let\next=\relax + \else + \let\next=\parsemmanyargdef@@ + \edef\tempb{\eatspaces{#1}}% + \expandafter\def\expandafter\tempa + \expandafter{\csname macarg.\tempb\endcsname}% + % Note that we need some extra \noexpand\noexpand, this is because we + % don't want \the to be expanded in the \parsermacbody as it uses an + % \xdef . + \expandafter\edef\tempa + {\noexpand\noexpand\noexpand\the\toks\the\paramno}% + \advance\paramno by 1\relax + \fi\next} + + +\let\endargs@\relax +\let\nil@\relax +\def\nilm@{\nil@}% +\long\def\nillm@{\nil@}% + +% This macro is expanded during the Texinfo macro expansion, not during its +% definition. It gets all the arguments' values and assigns them to macros +% macarg.ARGNAME +% +% #1 is the macro name +% #2 is the list of argument names +% #3 is the list of argument values +\def\getargvals@#1#2#3{% + \def\macargdeflist@{}% + \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. + \def\paramlist{#2,\nil@}% + \def\macroname{#1}% + \begingroup + \macroargctxt + \def\argvaluelist{#3,\nil@}% + \def\@tempa{#3}% + \ifx\@tempa\empty + \setemptyargvalues@ + \else + \getargvals@@ + \fi +} +\def\getargvals@@{% + \ifx\paramlist\nilm@ + % Some sanity check needed here that \argvaluelist is also empty. + \ifx\argvaluelist\nillm@ + \else + \errhelp = \EMsimple + \errmessage{Too many arguments in macro `\macroname'!}% + \fi + \let\next\macargexpandinbody@ + \else + \ifx\argvaluelist\nillm@ + % No more arguments values passed to macro. Set remaining named-arg + % macros to empty. + \let\next\setemptyargvalues@ + \else + % pop current arg name into \@tempb + \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% + \expandafter\@tempa\expandafter{\paramlist}% + % pop current argument value into \@tempc + \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% + \expandafter\@tempa\expandafter{\argvaluelist}% + % Here \@tempb is the current arg name and \@tempc is the current arg value. + % First place the new argument macro definition into \@tempd + \expandafter\macname\expandafter{\@tempc}% + \expandafter\let\csname macarg.\@tempb\endcsname\relax + \expandafter\def\expandafter\@tempe\expandafter{% + \csname macarg.\@tempb\endcsname}% + \edef\@tempd{\long\def\@tempe{\the\macname}}% + \push@\@tempd\macargdeflist@ + \let\next\getargvals@@ + \fi + \fi + \next +} + +\def\push@#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter{% + \expandafter#1#2}% +} + +% Replace arguments by their values in the macro body, and place the result +% in macro \@tempa. +% +\def\macvalstoargs@{% + % To do this we use the property that token registers that are \the'ed + % within an \edef expand only once. So we are going to place all argument + % values into respective token registers. + % + % First we save the token context, and initialize argument numbering. + \begingroup + \paramno0\relax + % Then, for each argument number #N, we place the corresponding argument + % value into a new token list register \toks#N + \expandafter\putargsintokens@\saveparamlist@,;,% + % Then, we expand the body so that argument are replaced by their + % values. The trick for values not to be expanded themselves is that they + % are within tokens and that tokens expand only once in an \edef . + \edef\@tempc{\csname mac.\macroname .body\endcsname}% + % Now we restore the token stack pointer to free the token list registers + % which we have used, but we make sure that expanded body is saved after + % group. + \expandafter + \endgroup + \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% + } + +% Define the named-macro outside of this group and then close this group. +% +\def\macargexpandinbody@{% + \expandafter + \endgroup + \macargdeflist@ + % First the replace in body the macro arguments by their values, the result + % is in \@tempa . + \macvalstoargs@ + % Then we point at the \norecurse or \gobble (for recursive) macro value + % with \@tempb . + \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname + % Depending on whether it is recursive or not, we need some tailing + % \egroup . + \ifx\@tempb\gobble + \let\@tempc\relax + \else + \let\@tempc\egroup + \fi + % And now we do the real job: + \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% + \@tempd +} + +\def\putargsintokens@#1,{% + \if#1;\let\next\relax + \else + \let\next\putargsintokens@ + % First we allocate the new token list register, and give it a temporary + % alias \@tempb . + \toksdef\@tempb\the\paramno + % Then we place the argument value into that token list register. + \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname + \expandafter\@tempb\expandafter{\@tempa}% + \advance\paramno by 1\relax + \fi + \next +} + +% Trailing missing arguments are set to empty. +% +\def\setemptyargvalues@{% + \ifx\paramlist\nilm@ + \let\next\macargexpandinbody@ + \else + \expandafter\setemptyargvaluesparser@\paramlist\endargs@ + \let\next\setemptyargvalues@ + \fi + \next +} + +\def\setemptyargvaluesparser@#1,#2\endargs@{% + \expandafter\def\expandafter\@tempa\expandafter{% + \expandafter\def\csname macarg.#1\endcsname{}}% + \push@\@tempa\macargdeflist@ + \def\paramlist{#2}% +} + +% #1 is the element target macro +% #2 is the list macro +% #3,#4\endargs@ is the list value +\def\pop@#1#2#3,#4\endargs@{% + \def#1{#3}% + \def#2{#4}% +} +\long\def\longpop@#1#2#3,#4\endargs@{% + \long\def#1{#3}% + \long\def#2{#4}% +} + + +%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% + + +% This defines a Texinfo @macro or @rmacro, called by \parsemacbody. +% \macrobody has the body of the macro in it, with placeholders for +% its parameters, looking like "\xeatspaces{\hash 1}". +% \paramno is the number of parameters +% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," +% There are four cases: macros of zero, one, up to nine, and many arguments. +% \xdef is used so that macro definitions will survive the file +% they're defined in: @include reads the file inside a group. +% +\def\defmacro{% + \let\hash=##% convert placeholders to macro parameter chars + \ifnum\paramno=1 + \def\xeatspaces##1{##1}% + % This removes the pair of braces around the argument. We don't + % use \eatspaces, because this can cause ends of lines to be lost + % when the argument to \eatspaces is read, leading to line-based + % commands like "@itemize" not being read correctly. + \else + \let\xeatspaces\relax % suppress expansion + \fi + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\spaceisspace + \noexpand\endlineisspace + \noexpand\expandafter % skip any whitespace after the macro name. + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname{% + \egroup + \noexpand\scanmacro{\macrobody}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \egroup + \noexpand\scanmacro{\macrobody}% + }% + \else % at most 9 + \ifnum\paramno<10\relax + % @MACNAME sets the context for reading the macro argument + % @MACNAME@@ gets the argument, processes backslashes and appends a + % comma. + % @MACNAME@@@ removes braces surrounding the argument list. + % @MACNAME@@@@ scans the macro body with arguments substituted. + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\expandafter % This \expandafter skip any spaces after the + \noexpand\macroargctxt % macro before we change the catcode of space. + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname @@@@\endcsname\paramlist{% + \egroup\noexpand\scanmacro{\macrobody}}% + \else % 10 or more: + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble + \fi + \fi} + +\catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes + +\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape +@catcode`@_=11 % private names +@catcode`@!=11 % used as argument separator + +% \passargtomacro#1#2 - +% Call #1 with a list of tokens #2, with any doubled backslashes in #2 +% compressed to one. +% +% This implementation works by expansion, and not execution (so we cannot use +% \def or similar). This reduces the risk of this failing in contexts where +% complete expansion is done with no execution (for example, in writing out to +% an auxiliary file for an index entry). +% +% State is kept in the input stream: the argument passed to +% @look_ahead, @gobble_and_check_finish and @add_segment is +% +% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) +% +% where: +% THE_MACRO - name of the macro we want to call +% ARG_RESULT - argument list we build to pass to that macro +% PENDING_BS - either a backslash or nothing +% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next + +@gdef@passargtomacro#1#2{% + @add_segment #1!{}@relax#2\@_finish\% +} +@gdef@_finish{@_finishx} @global@let@_finishx@relax + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 used to look ahead +% +% If the next token is not a backslash, process the rest of the argument; +% otherwise, remove the next token. +@gdef@look_ahead#1!#2#3#4{% + @ifx#4\% + @expandafter@gobble_and_check_finish + @else + @expandafter@add_segment + @fi#1!{#2}#4#4% +} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 should be a backslash, which is gobbled. +% #5 looks ahead +% +% Double backslash found. Add a single backslash, and look ahead. +@gdef@gobble_and_check_finish#1!#2#3#4#5{% + @add_segment#1\!{}#5#5% +} + +@gdef@is_fi{@fi} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 is input stream until next backslash +% +% Input stream is either at the start of the argument, or just after a +% backslash sequence, either a lone backslash, or a doubled backslash. +% NEXT_TOKEN contains the first token in the input stream: if it is \finish, +% finish; otherwise, append to ARG_RESULT the segment of the argument up until +% the next backslash. PENDING_BACKSLASH contains a backslash to represent +% a backslash just before the start of the input stream that has not been +% added to ARG_RESULT. +@gdef@add_segment#1!#2#3#4\{% +@ifx#3@_finish + @call_the_macro#1!% +@else + % append the pending backslash to the result, followed by the next segment + @expandafter@is_fi@look_ahead#1#2#4!{\}@fi + % this @fi is discarded by @look_ahead. + % we can't get rid of it with \expandafter because we don't know how + % long #4 is. +} + +% #1 - THE_MACRO +% #2 - ARG_RESULT +% #3 discards the res of the conditional in @add_segment, and @is_fi ends the +% conditional. +@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} + +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \braceorline MAC is used for a one-argument macro MAC. It checks +% whether the next non-whitespace character is a {. It sets the context +% for reading the argument (slightly different in the two cases). Then, +% to read the argument, in the whole-line case, it then calls the regular +% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. +% +\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup + \macroargctxt + \expandafter\passargtomacro + \else + \macrolineargctxt\expandafter\parsearg + \fi \macnamexxx} + + +% @alias. +% We need some trickery to remove the optional spaces around the equal +% sign. Make them active and then expand them all to nothing. +% +\def\alias{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\newwrite\auxfile +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{% + \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + +% @node's only job in TeX is to define \lastnode, which is used in +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} + +\let\nwnode=\node +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). +% +\def\donoderef#1{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}% + \global\let\lastnode=\empty + \fi +} + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an +% anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name taken from \lastsection, +% or the anchor name. +% 2) NAME-snt - section number and type, passed as the SNT arg, or +% empty for anchors. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2{% + \pdfmkdest{#1}% + \iflinks + {% + \requireauxfile + \atdummies % preserve commands, but don't expand them + % match definition in \xrdef, \refx, \xrefX. + \def\value##1{##1}% + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = \expandafter{\lastsection}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout + }% + \fi +} + +% @xrefautosectiontitle on|off says whether @section(ing) names are used +% automatically in xrefs, if the third arg is not explicitly specified. +% This was provided as a "secret" @set xref-automatic-section-title +% variable, now it's official. +% +\parseargdef\xrefautomaticsectiontitle{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', + must be on|off}% + \fi\fi +} + +% +% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is +% the node name, #2 the name of the Info cross-reference, #3 the printed +% node name, #4 the name of the Info file, #5 the name of the printed +% manual. All but the node name can be omitted. +% +\def\pxref{\putwordsee{} \xrefXX} +\def\xref{\putwordSee{} \xrefXX} +\def\ref{\xrefXX} + +\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} +\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} +% +\newbox\toprefbox +\newbox\printedrefnamebox +\newbox\infofilenamebox +\newbox\printedmanualbox +% +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + % + % Get args without leading/trailing spaces. + \def\printedrefname{\ignorespaces #3}% + \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% + % + \def\infofilename{\ignorespaces #4}% + \setbox\infofilenamebox = \hbox{\infofilename\unskip}% + % + \def\printedmanual{\ignorespaces #5}% + \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% + % + % If the printed reference name (arg #3) was not explicitly given in + % the @xref, figure out what we want to use. + \ifdim \wd\printedrefnamebox = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax + % Not auto section-title: use node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % Auto section-title: use chapter/section title inside + % the square brackets if we have it. + \ifdim \wd\printedmanualbox > 0pt + % It is in another manual, so we don't have it; use node name. + \def\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We (should) know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % Make link in pdf output. + \ifpdf + % For pdfTeX and LuaTeX + {\indexnofonts + \makevalueexpandable + \turnoffactive + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. This ignores all spaces in + % #4, including (wrongly) those in the middle of the filename. + \getfilename{#4}% + % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \setpdfdestname{#1}% + % + \ifx\pdfdestname\empty + \def\pdfdestname{Top}% no empty targets + \fi + % + \leavevmode + \startlink attr{/Border [0 0 0]}% + \ifnum\filenamelength>0 + goto file{\the\filename.pdf} name{\pdfdestname}% + \else + goto name{\pdfmkpgn{\pdfdestname}}% + \fi + }% + \setcolor{\linkcolor}% + \else + \ifx\XeTeXrevision\thisisundefined + \else + % For XeTeX + {\indexnofonts + \makevalueexpandable + \turnoffactive + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. This ignores all spaces in + % #4, including (wrongly) those in the middle of the filename. + \getfilename{#4}% + % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \setpdfdestname{#1}% + % + \ifx\pdfdestname\empty + \def\pdfdestname{Top}% no empty targets + \fi + % + \leavevmode + \ifnum\filenamelength>0 + % With default settings, + % XeTeX (xdvipdfmx) replaces link destination names with integers. + % In this case, the replaced destination names of + % remote PDFs are no longer known. In order to avoid a replacement, + % you can use xdvipdfmx's command line option `-C 0x0010'. + % If you use XeTeX 0.99996+ (TeX Live 2016+), + % this command line option is no longer necessary + % because we can use the `dvipdfmx:config' special. + \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}% + \else + \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /GoTo /D (\pdfdestname) >> >>}% + \fi + }% + \setcolor{\linkcolor}% + \fi + \fi + {% + % Have to otherify everything special to allow the \csname to + % include an _ in the xref name, etc. + \indexnofonts + \turnoffactive + \def\value##1{##1}% + \expandafter\global\expandafter\let\expandafter\Xthisreftitle + \csname XR#1-title\endcsname + }% + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". \iffloat distinguishes them by + % \Xthisreftitle being set to a magic string. + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd\printedrefnamebox = 0pt + \refx{#1-snt}{}% + \else + \printedrefname + \fi + % + % If the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd\printedmanualbox > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % If we use \unhbox to print the node names, TeX does not insert + % empty discretionaries after hyphens, which means that it will not + % find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, + % this is a loss. Therefore, we give the text of the node name + % again, so it is as if TeX is seeing it for the first time. + % + \ifdim \wd\printedmanualbox > 0pt + % Cross-manual reference with a printed manual name. + % + \crossmanualxref{\cite{\printedmanual\unskip}}% + % + \else\ifdim \wd\infofilenamebox > 0pt + % Cross-manual reference with only an info filename (arg 4), no + % printed manual name (arg 5). This is essentially the same as + % the case above; we output the filename, since we have nothing else. + % + \crossmanualxref{\code{\infofilename\unskip}}% + % + \else + % Reference within this manual. + % + % _ (for example) has to be the character _ for the purposes of the + % control sequence corresponding to the node, but it has to expand + % into the usual \leavevmode...\vrule stuff for purposes of + % printing. So we \turnoffactive for the \refx-snt, back on for the + % printing, back off for the \refx-pg. + {\turnoffactive + % Only output a following space if the -snt ref is nonempty; for + % @unnumbered and @anchor, it won't be. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + }% + % output the `[mynode]' via the macro below so it can be overridden. + \xrefprintnodename\printedrefname + % + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + % Add a , if xref followed by a space + \if\space\noexpand\tokenafterxref ,% + \else\ifx\ \tokenafterxref ,% @TAB + \else\ifx\*\tokenafterxref ,% @* + \else\ifx\ \tokenafterxref ,% @SPACE + \else\ifx\ + \tokenafterxref ,% @NL + \else\ifx\tie\tokenafterxref ,% @tie + \fi\fi\fi\fi\fi\fi + \fi\fi + \fi + \endlink +\endgroup} + +% Output a cross-manual xref to #1. Used just above (twice). +% +% Only include the text "Section ``foo'' in" if the foo is neither +% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply +% "see The Foo Manual", the idea being to refer to the whole manual. +% +% But, this being TeX, we can't easily compare our node name against the +% string "Top" while ignoring the possible spaces before and after in +% the input. By adding the arbitrary 7sp below, we make it much less +% likely that a real node name would have the same width as "Top" (e.g., +% in a monospaced font). Hopefully it will never happen in practice. +% +% For the same basic reason, we retypeset the "Top" at every +% reference, since the current font is indeterminate. +% +\def\crossmanualxref#1{% + \setbox\toprefbox = \hbox{Top\kern7sp}% + \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% + \ifdim \wd2 > 7sp % nonempty? + \ifdim \wd2 = \wd\toprefbox \else % same as Top? + \putwordSection{} ``\printedrefname'' \putwordin{}\space + \fi + \fi + #1% +} + +% This macro is called from \xrefX for the `[nodename]' part of xref +% output. It's a separate macro only so it can be changed more easily, +% since square brackets don't work well in some documents. Particularly +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} + +% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX +% is output afterwards if non-empty. +\def\refx#1#2{% + \requireauxfile + {% + \indexnofonts + \otherbackslash + \def\value##1{##1}% + \expandafter\global\expandafter\let\expandafter\thisrefX + \csname XR#1\endcsname + }% + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi + #2% Output the suffix in any case. +} + +% This is the macro invoked by entries in the aux file. Define a control +% sequence for a cross-reference target (we prepend XR to the control sequence +% name to avoid collisions). The value is the page number. If this is a float +% type, we have more work to do. +% +\def\xrdef#1#2{% + {% Expand the node or anchor name to remove control sequences. + % \turnoffactive stops 8-bit characters being changed to commands + % like @'e. \refx does the same to retrieve the value in the definition. + \indexnofonts + \turnoffactive + \def\value##1{##1}% + \xdef\safexrefname{#1}% + }% + % + \bgroup + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% + \egroup + % We put the \gdef inside a group to avoid the definitions building up on + % TeX's save stack, which can cause it to run out of space for aux files with + % thousands of lines. \gdef doesn't use the save stack, but \csname does + % when it defines an unknown control sequence as \relax. + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR\safexrefname\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 + {\safexrefname}}% + \fi +} + +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate at the beginning of the file. +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% Used when writing to the aux file, or when using data from it. +\def\requireauxfile{% + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi + \global\let\requireauxfile=\relax % Only do this once. +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 +} + +\def\setupdatafile{% + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + % This is to support \ in node names and titles, since the \ + % characters end up in a \csname. It's easier than + % leaving it active and making its active definition an actual \ + % character. What I don't understand is why it works in the *value* + % of the xrdef. Seems like it should be a catcode12 \, and that + % should not typeset properly. But it works, so I'm moving on for + % now. --karl, 15jan04. + \catcode`\\=\other + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 +} + +\def\readdatafile#1{% +\begingroup + \setupdatafile + \input\jobname.#1 +\endgroup} + + +\message{insertions,} +% including footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for Info output only. +\let\footnotestyle=\comment + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset (and anything else that uses +% \parseargline) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \insert\footins\bgroup + % + % Nested footnotes are not supported in TeX, that would take a lot + % more work. (\startsavinginserts does not suffice.) + \let\footnote=\errfootnotenest + % + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\txipagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + % + % Invoke rest of plain TeX footnote routine. + \futurelet\next\fo@t +} +}%end \catcode `\@=11 + +\def\errfootnotenest{% + \errhelp=\EMsimple + \errmessage{Nested footnotes not supported in texinfo.tex, + even though they work in makeinfo; sorry} +} + +\def\errfootnoteheading{% + \errhelp=\EMsimple + \errmessage{Footnotes in chapters, sections, etc., are not supported} +} + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarly, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. +% +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% We will only complain once about lack of epsf.tex. +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://tug.org/tex/epsf.tex.} +% +\def\image#1{% + \ifx\epsfbox\thisisundefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi +} +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing stuff. +\newif\ifimagevmode +\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue + \else \ifx\centersub\centerV + % for @center @image, we need a vbox so we can have our vertical space + \imagevmodetrue + \vbox\bgroup % vbox has better behavior than vtop herev + \fi\fi + % + \ifimagevmode + \nobreak\medskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \nobreak\vskip\parskip + \nobreak + \fi + % + % Leave vertical mode so that indentation from an enclosing + % environment such as @quotation is respected. + % However, if we're at the top level, we don't want the + % normal paragraph indentation. + % On the other hand, if we are in the case of @center @image, we don't + % want to start a paragraph, which will create a hsize-width box and + % eradicate the centering. + \ifx\centersub\centerV\else \noindent \fi + % + % Output the image. + \ifpdf + % For pdfTeX and LuaTeX <= 0.80 + \dopdfimage{#1}{#2}{#3}% + \else + \ifx\XeTeXrevision\thisisundefined + % For epsf.tex + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \else + % For XeTeX + \doxeteximage{#1}{#2}{#3}% + \fi + \fi + % + \ifimagevmode + \medskip % space after a standalone image + \fi + \ifx\centersub\centerV \egroup \fi +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for \lastsection is output by \setref as the + % XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\lastsection{\floatmagic=\safefloattype}% + \setref{\floatlabel}{Yfloat}% + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \requireauxfile + \atdummies + % + \ifx\thisshortcaption\empty + \def\gtemp{\thiscaption}% + \else + \def\gtemp{\thisshortcaption}% + \fi + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\defcaption#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% \lastsection value which we \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + + +\message{localization,} + +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding. Single argument is the language +% (de) or locale (de_DE) abbreviation. +% +{ + \catcode`\_ = \active + \globaldefs=1 +\parseargdef\documentlanguage{% + \tex % read txi-??.tex file in plain TeX. + % Read the file by the name they passed if it exists. + \let_ = \normalunderscore % normal _ character for filename test + \openin 1 txi-#1.tex + \ifeof 1 + \documentlanguagetrywithoutunderscore #1_\finish + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + \endgroup % end raw TeX +} +% +% If they passed de_DE, and txi-de_DE.tex doesn't exist, +% try txi-de.tex. +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 +} +}% end of special _ catcode +% +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? Putting it in the current +directory should work if nowhere else does.} + +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages. This means we can support hyphenation in +% Texinfo, at least to some extent. (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax +} + +% XeTeX and LuaTeX can handle Unicode natively. +% Their default I/O uses UTF-8 sequences instead of a byte-wise operation. +% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise. +% +\newif\iftxinativeunicodecapable +\newif\iftxiusebytewiseio + +\ifx\XeTeXrevision\thisisundefined + \ifx\luatexversion\thisisundefined + \txinativeunicodecapablefalse + \txiusebytewiseiotrue + \else + \txinativeunicodecapabletrue + \txiusebytewiseiofalse + \fi +\else + \txinativeunicodecapabletrue + \txiusebytewiseiofalse +\fi + +% Set I/O by bytes instead of UTF-8 sequence for XeTeX and LuaTex +% for non-UTF-8 (byte-wise) encodings. +% +\def\setbytewiseio{% + \ifx\XeTeXrevision\thisisundefined + \else + \XeTeXdefaultencoding "bytes" % For subsequent files to be read + \XeTeXinputencoding "bytes" % For document root file + % Unfortunately, there seems to be no corresponding XeTeX command for + % output encoding. This is a problem for auxiliary index and TOC files. + % The only solution would be perhaps to write out @U{...} sequences in + % place of non-ASCII characters. + \fi + + \ifx\luatexversion\thisisundefined + \else + \directlua{ + local utf8_char, byte, gsub = unicode.utf8.char, string.byte, string.gsub + local function convert_char (char) + return utf8_char(byte(char)) + end + + local function convert_line (line) + return gsub(line, ".", convert_char) + end + + callback.register("process_input_buffer", convert_line) + + local function convert_line_out (line) + local line_out = "" + for c in string.utfvalues(line) do + line_out = line_out .. string.char(c) + end + return line_out + end + + callback.register("process_output_buffer", convert_line_out) + } + \fi + + \txiusebytewiseiotrue +} + + +% Helpers for encodings. +% Set the catcode of characters 128 through 255 to the specified number. +% +\def\setnonasciicharscatcode#1{% + \count255=128 + \loop\ifnum\count255<256 + \global\catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +\def\setnonasciicharscatcodenonglobal#1{% + \count255=128 + \loop\ifnum\count255<256 + \catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +% @documentencoding sets the definition of non-ASCII characters +% according to the specified encoding. +% +\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} +\def\documentencodingzzz#1{% + % + % Encoding being declared for the document. + \def\declaredencoding{\csname #1.enc\endcsname}% + % + % Supported encodings: names converted to tokens in order to be able + % to compare them with \ifx. + \def\ascii{\csname US-ASCII.enc\endcsname}% + \def\latnine{\csname ISO-8859-15.enc\endcsname}% + \def\latone{\csname ISO-8859-1.enc\endcsname}% + \def\lattwo{\csname ISO-8859-2.enc\endcsname}% + \def\utfeight{\csname UTF-8.enc\endcsname}% + % + \ifx \declaredencoding \ascii + \asciichardefs + % + \else \ifx \declaredencoding \lattwo + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \lattwochardefs + % + \else \ifx \declaredencoding \latone + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \latonechardefs + % + \else \ifx \declaredencoding \latnine + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \latninechardefs + % + \else \ifx \declaredencoding \utfeight + \iftxinativeunicodecapable + % For native Unicode handling (XeTeX and LuaTeX) + \nativeunicodechardefs + \else + % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX) + \setnonasciicharscatcode\active + % since we already invoked \utfeightchardefs at the top level + % (below), do not re-invoke it, otherwise our check for duplicated + % definitions gets triggered. Making non-ascii chars active is + % sufficient. + \fi + % + \else + \message{Ignoring unknown document encoding: #1.}% + % + \fi % utfeight + \fi % latnine + \fi % latone + \fi % lattwo + \fi % ascii + % + \ifx\XeTeXrevision\thisisundefined + \else + \ifx \declaredencoding \utfeight + \else + \ifx \declaredencoding \ascii + \else + \message{Warning: XeTeX with non-UTF-8 encodings cannot handle % + non-ASCII characters in auxiliary files.}% + \fi + \fi + \fi +} + +% emacs-page +% A message to be logged when using a character that isn't available +% the default font encoding (OT1). +% +\def\missingcharmsg#1{\message{Character missing, sorry: #1.}} + +% Take account of \c (plain) vs. \, (Texinfo) difference. +\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + +% First, make active non-ASCII characters in order for them to be +% correctly categorized when TeX reads the replacement text of +% macros containing the character definitions. +\setnonasciicharscatcode\active +% + +\def\gdefchar#1#2{% +\gdef#1{% + \ifpassthroughchars + \string#1% + \else + #2% + \fi +}} + +% Latin1 (ISO-8859-1) character definitions. +\def\latonechardefs{% + \gdefchar^^a0{\tie} + \gdefchar^^a1{\exclamdown} + \gdefchar^^a2{{\tcfont \char162}} % cent + \gdefchar^^a3{\pounds{}} + \gdefchar^^a4{{\tcfont \char164}} % currency + \gdefchar^^a5{{\tcfont \char165}} % yen + \gdefchar^^a6{{\tcfont \char166}} % broken bar + \gdefchar^^a7{\S} + \gdefchar^^a8{\"{}} + \gdefchar^^a9{\copyright{}} + \gdefchar^^aa{\ordf} + \gdefchar^^ab{\guillemetleft{}} + \gdefchar^^ac{\ensuremath\lnot} + \gdefchar^^ad{\-} + \gdefchar^^ae{\registeredsymbol{}} + \gdefchar^^af{\={}} + % + \gdefchar^^b0{\textdegree} + \gdefchar^^b1{$\pm$} + \gdefchar^^b2{$^2$} + \gdefchar^^b3{$^3$} + \gdefchar^^b4{\'{}} + \gdefchar^^b5{$\mu$} + \gdefchar^^b6{\P} + \gdefchar^^b7{\ensuremath\cdot} + \gdefchar^^b8{\cedilla\ } + \gdefchar^^b9{$^1$} + \gdefchar^^ba{\ordm} + \gdefchar^^bb{\guillemetright{}} + \gdefchar^^bc{$1\over4$} + \gdefchar^^bd{$1\over2$} + \gdefchar^^be{$3\over4$} + \gdefchar^^bf{\questiondown} + % + \gdefchar^^c0{\`A} + \gdefchar^^c1{\'A} + \gdefchar^^c2{\^A} + \gdefchar^^c3{\~A} + \gdefchar^^c4{\"A} + \gdefchar^^c5{\ringaccent A} + \gdefchar^^c6{\AE} + \gdefchar^^c7{\cedilla C} + \gdefchar^^c8{\`E} + \gdefchar^^c9{\'E} + \gdefchar^^ca{\^E} + \gdefchar^^cb{\"E} + \gdefchar^^cc{\`I} + \gdefchar^^cd{\'I} + \gdefchar^^ce{\^I} + \gdefchar^^cf{\"I} + % + \gdefchar^^d0{\DH} + \gdefchar^^d1{\~N} + \gdefchar^^d2{\`O} + \gdefchar^^d3{\'O} + \gdefchar^^d4{\^O} + \gdefchar^^d5{\~O} + \gdefchar^^d6{\"O} + \gdefchar^^d7{$\times$} + \gdefchar^^d8{\O} + \gdefchar^^d9{\`U} + \gdefchar^^da{\'U} + \gdefchar^^db{\^U} + \gdefchar^^dc{\"U} + \gdefchar^^dd{\'Y} + \gdefchar^^de{\TH} + \gdefchar^^df{\ss} + % + \gdefchar^^e0{\`a} + \gdefchar^^e1{\'a} + \gdefchar^^e2{\^a} + \gdefchar^^e3{\~a} + \gdefchar^^e4{\"a} + \gdefchar^^e5{\ringaccent a} + \gdefchar^^e6{\ae} + \gdefchar^^e7{\cedilla c} + \gdefchar^^e8{\`e} + \gdefchar^^e9{\'e} + \gdefchar^^ea{\^e} + \gdefchar^^eb{\"e} + \gdefchar^^ec{\`{\dotless i}} + \gdefchar^^ed{\'{\dotless i}} + \gdefchar^^ee{\^{\dotless i}} + \gdefchar^^ef{\"{\dotless i}} + % + \gdefchar^^f0{\dh} + \gdefchar^^f1{\~n} + \gdefchar^^f2{\`o} + \gdefchar^^f3{\'o} + \gdefchar^^f4{\^o} + \gdefchar^^f5{\~o} + \gdefchar^^f6{\"o} + \gdefchar^^f7{$\div$} + \gdefchar^^f8{\o} + \gdefchar^^f9{\`u} + \gdefchar^^fa{\'u} + \gdefchar^^fb{\^u} + \gdefchar^^fc{\"u} + \gdefchar^^fd{\'y} + \gdefchar^^fe{\th} + \gdefchar^^ff{\"y} +} + +% Latin9 (ISO-8859-15) encoding character definitions. +\def\latninechardefs{% + % Encoding is almost identical to Latin1. + \latonechardefs + % + \gdefchar^^a4{\euro{}} + \gdefchar^^a6{\v S} + \gdefchar^^a8{\v s} + \gdefchar^^b4{\v Z} + \gdefchar^^b8{\v z} + \gdefchar^^bc{\OE} + \gdefchar^^bd{\oe} + \gdefchar^^be{\"Y} +} + +% Latin2 (ISO-8859-2) character definitions. +\def\lattwochardefs{% + \gdefchar^^a0{\tie} + \gdefchar^^a1{\ogonek{A}} + \gdefchar^^a2{\u{}} + \gdefchar^^a3{\L} + \gdefchar^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdefchar^^a5{\v L} + \gdefchar^^a6{\'S} + \gdefchar^^a7{\S} + \gdefchar^^a8{\"{}} + \gdefchar^^a9{\v S} + \gdefchar^^aa{\cedilla S} + \gdefchar^^ab{\v T} + \gdefchar^^ac{\'Z} + \gdefchar^^ad{\-} + \gdefchar^^ae{\v Z} + \gdefchar^^af{\dotaccent Z} + % + \gdefchar^^b0{\textdegree{}} + \gdefchar^^b1{\ogonek{a}} + \gdefchar^^b2{\ogonek{ }} + \gdefchar^^b3{\l} + \gdefchar^^b4{\'{}} + \gdefchar^^b5{\v l} + \gdefchar^^b6{\'s} + \gdefchar^^b7{\v{}} + \gdefchar^^b8{\cedilla\ } + \gdefchar^^b9{\v s} + \gdefchar^^ba{\cedilla s} + \gdefchar^^bb{\v t} + \gdefchar^^bc{\'z} + \gdefchar^^bd{\H{}} + \gdefchar^^be{\v z} + \gdefchar^^bf{\dotaccent z} + % + \gdefchar^^c0{\'R} + \gdefchar^^c1{\'A} + \gdefchar^^c2{\^A} + \gdefchar^^c3{\u A} + \gdefchar^^c4{\"A} + \gdefchar^^c5{\'L} + \gdefchar^^c6{\'C} + \gdefchar^^c7{\cedilla C} + \gdefchar^^c8{\v C} + \gdefchar^^c9{\'E} + \gdefchar^^ca{\ogonek{E}} + \gdefchar^^cb{\"E} + \gdefchar^^cc{\v E} + \gdefchar^^cd{\'I} + \gdefchar^^ce{\^I} + \gdefchar^^cf{\v D} + % + \gdefchar^^d0{\DH} + \gdefchar^^d1{\'N} + \gdefchar^^d2{\v N} + \gdefchar^^d3{\'O} + \gdefchar^^d4{\^O} + \gdefchar^^d5{\H O} + \gdefchar^^d6{\"O} + \gdefchar^^d7{$\times$} + \gdefchar^^d8{\v R} + \gdefchar^^d9{\ringaccent U} + \gdefchar^^da{\'U} + \gdefchar^^db{\H U} + \gdefchar^^dc{\"U} + \gdefchar^^dd{\'Y} + \gdefchar^^de{\cedilla T} + \gdefchar^^df{\ss} + % + \gdefchar^^e0{\'r} + \gdefchar^^e1{\'a} + \gdefchar^^e2{\^a} + \gdefchar^^e3{\u a} + \gdefchar^^e4{\"a} + \gdefchar^^e5{\'l} + \gdefchar^^e6{\'c} + \gdefchar^^e7{\cedilla c} + \gdefchar^^e8{\v c} + \gdefchar^^e9{\'e} + \gdefchar^^ea{\ogonek{e}} + \gdefchar^^eb{\"e} + \gdefchar^^ec{\v e} + \gdefchar^^ed{\'{\dotless{i}}} + \gdefchar^^ee{\^{\dotless{i}}} + \gdefchar^^ef{\v d} + % + \gdefchar^^f0{\dh} + \gdefchar^^f1{\'n} + \gdefchar^^f2{\v n} + \gdefchar^^f3{\'o} + \gdefchar^^f4{\^o} + \gdefchar^^f5{\H o} + \gdefchar^^f6{\"o} + \gdefchar^^f7{$\div$} + \gdefchar^^f8{\v r} + \gdefchar^^f9{\ringaccent u} + \gdefchar^^fa{\'u} + \gdefchar^^fb{\H u} + \gdefchar^^fc{\"u} + \gdefchar^^fd{\'y} + \gdefchar^^fe{\cedilla t} + \gdefchar^^ff{\dotaccent{}} +} + +% UTF-8 character definitions. +% +% This code to support UTF-8 is based on LaTeX's utf8.def, with some +% changes for Texinfo conventions. It is included here under the GPL by +% permission from Frank Mittelbach and the LaTeX team. +% +\newcount\countUTFx +\newcount\countUTFy +\newcount\countUTFz + +\gdef\UTFviiiTwoOctets#1#2{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\endcsname} +% +\gdef\UTFviiiThreeOctets#1#2#3{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} +% +\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + +\gdef\UTFviiiDefined#1{% + \ifx #1\relax + \message{\linenumber Unicode char \string #1 not defined for Texinfo}% + \else + \expandafter #1% + \fi +} + +% Give non-ASCII bytes the active definitions for processing UTF-8 sequences +\begingroup + \catcode`\~13 + \catcode`\$12 + \catcode`\"12 + + % Loop from \countUTFx to \countUTFy, performing \UTFviiiTmp + % substituting ~ and $ with a character token of that value. + \def\UTFviiiLoop{% + \global\catcode\countUTFx\active + \uccode`\~\countUTFx + \uccode`\$\countUTFx + \uppercase\expandafter{\UTFviiiTmp}% + \advance\countUTFx by 1 + \ifnum\countUTFx < \countUTFy + \expandafter\UTFviiiLoop + \fi} + + % For bytes other than the first in a UTF-8 sequence. Not expected to + % be expanded except when writing to auxiliary files. + \countUTFx = "80 + \countUTFy = "C2 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $\fi}}% + \UTFviiiLoop + + \countUTFx = "C2 + \countUTFy = "E0 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiTwoOctets\expandafter$\fi}}% + \UTFviiiLoop + + \countUTFx = "E0 + \countUTFy = "F0 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiThreeOctets\expandafter$\fi}}% + \UTFviiiLoop + + \countUTFx = "F0 + \countUTFy = "F4 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiFourOctets\expandafter$\fi + }}% + \UTFviiiLoop +\endgroup + +\def\globallet{\global\let} % save some \expandafter's below + +% @U{xxxx} to produce U+xxxx, if we support it. +\def\U#1{% + \expandafter\ifx\csname uni:#1\endcsname \relax + \iftxinativeunicodecapable + % All Unicode characters can be used if native Unicode handling is + % active. However, if the font does not have the glyph, + % letters are missing. + \begingroup + \uccode`\.="#1\relax + \uppercase{.} + \endgroup + \else + \errhelp = \EMsimple + \errmessage{Unicode character U+#1 not supported, sorry}% + \fi + \else + \csname uni:#1\endcsname + \fi +} + +% These macros are used here to construct the name of a control +% sequence to be defined. +\def\UTFviiiTwoOctetsName#1#2{% + \csname u8:#1\string #2\endcsname}% +\def\UTFviiiThreeOctetsName#1#2#3{% + \csname u8:#1\string #2\string #3\endcsname}% +\def\UTFviiiFourOctetsName#1#2#3#4{% + \csname u8:#1\string #2\string #3\string #4\endcsname}% + +% For UTF-8 byte sequences (TeX, e-TeX and pdfTeX), +% provide a definition macro to replace a Unicode character; +% this gets used by the @U command +% +\begingroup + \catcode`\"=12 + \catcode`\<=12 + \catcode`\.=12 + \catcode`\,=12 + \catcode`\;=12 + \catcode`\!=12 + \catcode`\~=13 + \gdef\DeclareUnicodeCharacterUTFviii#1#2{% + \countUTFz = "#1\relax + \begingroup + \parseXMLCharref + + % Give \u8:... its definition. The sequence of seven \expandafter's + % expands after the \gdef three times, e.g. + % + % 1. \UTFviiTwoOctetsName B1 B2 + % 2. \csname u8:B1 \string B2 \endcsname + % 3. \u8: B1 B2 (a single control sequence token) + % + \expandafter\expandafter + \expandafter\expandafter + \expandafter\expandafter + \expandafter\gdef \UTFviiiTmp{#2}% + % + \expandafter\ifx\csname uni:#1\endcsname \relax \else + \message{Internal error, already defined: #1}% + \fi + % + % define an additional control sequence for this code point. + \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp + \endgroup} + % + % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp + % to the corresponding UTF-8 sequence. + \gdef\parseXMLCharref{% + \ifnum\countUTFz < "A0\relax + \errhelp = \EMsimple + \errmessage{Cannot define Unicode char value < 00A0}% + \else\ifnum\countUTFz < "800\relax + \parseUTFviiiA,% + \parseUTFviiiB C\UTFviiiTwoOctetsName.,% + \else\ifnum\countUTFz < "10000\relax + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}% + \else + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiA!% + \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}% + \fi\fi\fi + } + + % Extract a byte from the end of the UTF-8 representation of \countUTFx. + % It must be a non-initial byte in the sequence. + % Change \uccode of #1 for it to be used in \parseUTFviiiB as one + % of the bytes. + \gdef\parseUTFviiiA#1{% + \countUTFx = \countUTFz + \divide\countUTFz by 64 + \countUTFy = \countUTFz % Save to be the future value of \countUTFz. + \multiply\countUTFz by 64 + + % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract + % in order to get the last five bits. + \advance\countUTFx by -\countUTFz + + % Convert this to the byte in the UTF-8 sequence. + \advance\countUTFx by 128 + \uccode `#1\countUTFx + \countUTFz = \countUTFy} + + % Used to put a UTF-8 byte sequence into \UTFviiiTmp + % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8 + % sequence. + % #2 is one of the \UTFviii*OctetsName macros. + % #3 is always a full stop (.) + % #4 is a template for the other bytes in the sequence. The values for these + % bytes is substituted in here with \uppercase using the \uccode's. + \gdef\parseUTFviiiB#1#2#3#4{% + \advance\countUTFz by "#10\relax + \uccode `#3\countUTFz + \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} +\endgroup + +% For native Unicode handling (XeTeX and LuaTeX), +% provide a definition macro that sets a catcode to `other' non-globally +% +\def\DeclareUnicodeCharacterNativeOther#1#2{% + \catcode"#1=\other +} + +% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M +% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) +% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) +% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A +% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B +% +% Many of our renditions are less than wonderful, and all the missing +% characters are available somewhere. Loading the necessary fonts +% awaits user request. We can't truly support Unicode without +% reimplementing everything that's been done in LaTeX for many years, +% plus probably using luatex or xetex, and who knows what else. +% We won't be doing that here in this simple file. But we can try to at +% least make most of the characters not bomb out. +% +\def\unicodechardefs{% + \DeclareUnicodeCharacter{00A0}{\tie}% + \DeclareUnicodeCharacter{00A1}{\exclamdown}% + \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent + \DeclareUnicodeCharacter{00A3}{\pounds{}}% + \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency + \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen + \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar + \DeclareUnicodeCharacter{00A7}{\S}% + \DeclareUnicodeCharacter{00A8}{\"{ }}% + \DeclareUnicodeCharacter{00A9}{\copyright{}}% + \DeclareUnicodeCharacter{00AA}{\ordf}% + \DeclareUnicodeCharacter{00AB}{\guillemetleft{}}% + \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}% + \DeclareUnicodeCharacter{00AD}{\-}% + \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}% + \DeclareUnicodeCharacter{00AF}{\={ }}% + % + \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}% + \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}% + \DeclareUnicodeCharacter{00B2}{$^2$}% + \DeclareUnicodeCharacter{00B3}{$^3$}% + \DeclareUnicodeCharacter{00B4}{\'{ }}% + \DeclareUnicodeCharacter{00B5}{$\mu$}% + \DeclareUnicodeCharacter{00B6}{\P}% + \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot}% + \DeclareUnicodeCharacter{00B8}{\cedilla{ }}% + \DeclareUnicodeCharacter{00B9}{$^1$}% + \DeclareUnicodeCharacter{00BA}{\ordm}% + \DeclareUnicodeCharacter{00BB}{\guillemetright{}}% + \DeclareUnicodeCharacter{00BC}{$1\over4$}% + \DeclareUnicodeCharacter{00BD}{$1\over2$}% + \DeclareUnicodeCharacter{00BE}{$3\over4$}% + \DeclareUnicodeCharacter{00BF}{\questiondown}% + % + \DeclareUnicodeCharacter{00C0}{\`A}% + \DeclareUnicodeCharacter{00C1}{\'A}% + \DeclareUnicodeCharacter{00C2}{\^A}% + \DeclareUnicodeCharacter{00C3}{\~A}% + \DeclareUnicodeCharacter{00C4}{\"A}% + \DeclareUnicodeCharacter{00C5}{\AA}% + \DeclareUnicodeCharacter{00C6}{\AE}% + \DeclareUnicodeCharacter{00C7}{\cedilla{C}}% + \DeclareUnicodeCharacter{00C8}{\`E}% + \DeclareUnicodeCharacter{00C9}{\'E}% + \DeclareUnicodeCharacter{00CA}{\^E}% + \DeclareUnicodeCharacter{00CB}{\"E}% + \DeclareUnicodeCharacter{00CC}{\`I}% + \DeclareUnicodeCharacter{00CD}{\'I}% + \DeclareUnicodeCharacter{00CE}{\^I}% + \DeclareUnicodeCharacter{00CF}{\"I}% + % + \DeclareUnicodeCharacter{00D0}{\DH}% + \DeclareUnicodeCharacter{00D1}{\~N}% + \DeclareUnicodeCharacter{00D2}{\`O}% + \DeclareUnicodeCharacter{00D3}{\'O}% + \DeclareUnicodeCharacter{00D4}{\^O}% + \DeclareUnicodeCharacter{00D5}{\~O}% + \DeclareUnicodeCharacter{00D6}{\"O}% + \DeclareUnicodeCharacter{00D7}{\ensuremath\times}% + \DeclareUnicodeCharacter{00D8}{\O}% + \DeclareUnicodeCharacter{00D9}{\`U}% + \DeclareUnicodeCharacter{00DA}{\'U}% + \DeclareUnicodeCharacter{00DB}{\^U}% + \DeclareUnicodeCharacter{00DC}{\"U}% + \DeclareUnicodeCharacter{00DD}{\'Y}% + \DeclareUnicodeCharacter{00DE}{\TH}% + \DeclareUnicodeCharacter{00DF}{\ss}% + % + \DeclareUnicodeCharacter{00E0}{\`a}% + \DeclareUnicodeCharacter{00E1}{\'a}% + \DeclareUnicodeCharacter{00E2}{\^a}% + \DeclareUnicodeCharacter{00E3}{\~a}% + \DeclareUnicodeCharacter{00E4}{\"a}% + \DeclareUnicodeCharacter{00E5}{\aa}% + \DeclareUnicodeCharacter{00E6}{\ae}% + \DeclareUnicodeCharacter{00E7}{\cedilla{c}}% + \DeclareUnicodeCharacter{00E8}{\`e}% + \DeclareUnicodeCharacter{00E9}{\'e}% + \DeclareUnicodeCharacter{00EA}{\^e}% + \DeclareUnicodeCharacter{00EB}{\"e}% + \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}% + \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}% + \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}% + \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}% + % + \DeclareUnicodeCharacter{00F0}{\dh}% + \DeclareUnicodeCharacter{00F1}{\~n}% + \DeclareUnicodeCharacter{00F2}{\`o}% + \DeclareUnicodeCharacter{00F3}{\'o}% + \DeclareUnicodeCharacter{00F4}{\^o}% + \DeclareUnicodeCharacter{00F5}{\~o}% + \DeclareUnicodeCharacter{00F6}{\"o}% + \DeclareUnicodeCharacter{00F7}{\ensuremath\div}% + \DeclareUnicodeCharacter{00F8}{\o}% + \DeclareUnicodeCharacter{00F9}{\`u}% + \DeclareUnicodeCharacter{00FA}{\'u}% + \DeclareUnicodeCharacter{00FB}{\^u}% + \DeclareUnicodeCharacter{00FC}{\"u}% + \DeclareUnicodeCharacter{00FD}{\'y}% + \DeclareUnicodeCharacter{00FE}{\th}% + \DeclareUnicodeCharacter{00FF}{\"y}% + % + \DeclareUnicodeCharacter{0100}{\=A}% + \DeclareUnicodeCharacter{0101}{\=a}% + \DeclareUnicodeCharacter{0102}{\u{A}}% + \DeclareUnicodeCharacter{0103}{\u{a}}% + \DeclareUnicodeCharacter{0104}{\ogonek{A}}% + \DeclareUnicodeCharacter{0105}{\ogonek{a}}% + \DeclareUnicodeCharacter{0106}{\'C}% + \DeclareUnicodeCharacter{0107}{\'c}% + \DeclareUnicodeCharacter{0108}{\^C}% + \DeclareUnicodeCharacter{0109}{\^c}% + \DeclareUnicodeCharacter{010A}{\dotaccent{C}}% + \DeclareUnicodeCharacter{010B}{\dotaccent{c}}% + \DeclareUnicodeCharacter{010C}{\v{C}}% + \DeclareUnicodeCharacter{010D}{\v{c}}% + \DeclareUnicodeCharacter{010E}{\v{D}}% + \DeclareUnicodeCharacter{010F}{d'}% + % + \DeclareUnicodeCharacter{0110}{\DH}% + \DeclareUnicodeCharacter{0111}{\dh}% + \DeclareUnicodeCharacter{0112}{\=E}% + \DeclareUnicodeCharacter{0113}{\=e}% + \DeclareUnicodeCharacter{0114}{\u{E}}% + \DeclareUnicodeCharacter{0115}{\u{e}}% + \DeclareUnicodeCharacter{0116}{\dotaccent{E}}% + \DeclareUnicodeCharacter{0117}{\dotaccent{e}}% + \DeclareUnicodeCharacter{0118}{\ogonek{E}}% + \DeclareUnicodeCharacter{0119}{\ogonek{e}}% + \DeclareUnicodeCharacter{011A}{\v{E}}% + \DeclareUnicodeCharacter{011B}{\v{e}}% + \DeclareUnicodeCharacter{011C}{\^G}% + \DeclareUnicodeCharacter{011D}{\^g}% + \DeclareUnicodeCharacter{011E}{\u{G}}% + \DeclareUnicodeCharacter{011F}{\u{g}}% + % + \DeclareUnicodeCharacter{0120}{\dotaccent{G}}% + \DeclareUnicodeCharacter{0121}{\dotaccent{g}}% + \DeclareUnicodeCharacter{0122}{\cedilla{G}}% + \DeclareUnicodeCharacter{0123}{\cedilla{g}}% + \DeclareUnicodeCharacter{0124}{\^H}% + \DeclareUnicodeCharacter{0125}{\^h}% + \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}}% + \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}}% + \DeclareUnicodeCharacter{0128}{\~I}% + \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}% + \DeclareUnicodeCharacter{012A}{\=I}% + \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}% + \DeclareUnicodeCharacter{012C}{\u{I}}% + \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}% + \DeclareUnicodeCharacter{012E}{\ogonek{I}}% + \DeclareUnicodeCharacter{012F}{\ogonek{i}}% + % + \DeclareUnicodeCharacter{0130}{\dotaccent{I}}% + \DeclareUnicodeCharacter{0131}{\dotless{i}}% + \DeclareUnicodeCharacter{0132}{IJ}% + \DeclareUnicodeCharacter{0133}{ij}% + \DeclareUnicodeCharacter{0134}{\^J}% + \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}% + \DeclareUnicodeCharacter{0136}{\cedilla{K}}% + \DeclareUnicodeCharacter{0137}{\cedilla{k}}% + \DeclareUnicodeCharacter{0138}{\ensuremath\kappa}% + \DeclareUnicodeCharacter{0139}{\'L}% + \DeclareUnicodeCharacter{013A}{\'l}% + \DeclareUnicodeCharacter{013B}{\cedilla{L}}% + \DeclareUnicodeCharacter{013C}{\cedilla{l}}% + \DeclareUnicodeCharacter{013D}{L'}% should kern + \DeclareUnicodeCharacter{013E}{l'}% should kern + \DeclareUnicodeCharacter{013F}{L\U{00B7}}% + % + \DeclareUnicodeCharacter{0140}{l\U{00B7}}% + \DeclareUnicodeCharacter{0141}{\L}% + \DeclareUnicodeCharacter{0142}{\l}% + \DeclareUnicodeCharacter{0143}{\'N}% + \DeclareUnicodeCharacter{0144}{\'n}% + \DeclareUnicodeCharacter{0145}{\cedilla{N}}% + \DeclareUnicodeCharacter{0146}{\cedilla{n}}% + \DeclareUnicodeCharacter{0147}{\v{N}}% + \DeclareUnicodeCharacter{0148}{\v{n}}% + \DeclareUnicodeCharacter{0149}{'n}% + \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}}% + \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}}% + \DeclareUnicodeCharacter{014C}{\=O}% + \DeclareUnicodeCharacter{014D}{\=o}% + \DeclareUnicodeCharacter{014E}{\u{O}}% + \DeclareUnicodeCharacter{014F}{\u{o}}% + % + \DeclareUnicodeCharacter{0150}{\H{O}}% + \DeclareUnicodeCharacter{0151}{\H{o}}% + \DeclareUnicodeCharacter{0152}{\OE}% + \DeclareUnicodeCharacter{0153}{\oe}% + \DeclareUnicodeCharacter{0154}{\'R}% + \DeclareUnicodeCharacter{0155}{\'r}% + \DeclareUnicodeCharacter{0156}{\cedilla{R}}% + \DeclareUnicodeCharacter{0157}{\cedilla{r}}% + \DeclareUnicodeCharacter{0158}{\v{R}}% + \DeclareUnicodeCharacter{0159}{\v{r}}% + \DeclareUnicodeCharacter{015A}{\'S}% + \DeclareUnicodeCharacter{015B}{\'s}% + \DeclareUnicodeCharacter{015C}{\^S}% + \DeclareUnicodeCharacter{015D}{\^s}% + \DeclareUnicodeCharacter{015E}{\cedilla{S}}% + \DeclareUnicodeCharacter{015F}{\cedilla{s}}% + % + \DeclareUnicodeCharacter{0160}{\v{S}}% + \DeclareUnicodeCharacter{0161}{\v{s}}% + \DeclareUnicodeCharacter{0162}{\cedilla{T}}% + \DeclareUnicodeCharacter{0163}{\cedilla{t}}% + \DeclareUnicodeCharacter{0164}{\v{T}}% + \DeclareUnicodeCharacter{0165}{\v{t}}% + \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}}% + \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}}% + \DeclareUnicodeCharacter{0168}{\~U}% + \DeclareUnicodeCharacter{0169}{\~u}% + \DeclareUnicodeCharacter{016A}{\=U}% + \DeclareUnicodeCharacter{016B}{\=u}% + \DeclareUnicodeCharacter{016C}{\u{U}}% + \DeclareUnicodeCharacter{016D}{\u{u}}% + \DeclareUnicodeCharacter{016E}{\ringaccent{U}}% + \DeclareUnicodeCharacter{016F}{\ringaccent{u}}% + % + \DeclareUnicodeCharacter{0170}{\H{U}}% + \DeclareUnicodeCharacter{0171}{\H{u}}% + \DeclareUnicodeCharacter{0172}{\ogonek{U}}% + \DeclareUnicodeCharacter{0173}{\ogonek{u}}% + \DeclareUnicodeCharacter{0174}{\^W}% + \DeclareUnicodeCharacter{0175}{\^w}% + \DeclareUnicodeCharacter{0176}{\^Y}% + \DeclareUnicodeCharacter{0177}{\^y}% + \DeclareUnicodeCharacter{0178}{\"Y}% + \DeclareUnicodeCharacter{0179}{\'Z}% + \DeclareUnicodeCharacter{017A}{\'z}% + \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}% + \DeclareUnicodeCharacter{017C}{\dotaccent{z}}% + \DeclareUnicodeCharacter{017D}{\v{Z}}% + \DeclareUnicodeCharacter{017E}{\v{z}}% + \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}}% + % + \DeclareUnicodeCharacter{01C4}{D\v{Z}}% + \DeclareUnicodeCharacter{01C5}{D\v{z}}% + \DeclareUnicodeCharacter{01C6}{d\v{z}}% + \DeclareUnicodeCharacter{01C7}{LJ}% + \DeclareUnicodeCharacter{01C8}{Lj}% + \DeclareUnicodeCharacter{01C9}{lj}% + \DeclareUnicodeCharacter{01CA}{NJ}% + \DeclareUnicodeCharacter{01CB}{Nj}% + \DeclareUnicodeCharacter{01CC}{nj}% + \DeclareUnicodeCharacter{01CD}{\v{A}}% + \DeclareUnicodeCharacter{01CE}{\v{a}}% + \DeclareUnicodeCharacter{01CF}{\v{I}}% + % + \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}% + \DeclareUnicodeCharacter{01D1}{\v{O}}% + \DeclareUnicodeCharacter{01D2}{\v{o}}% + \DeclareUnicodeCharacter{01D3}{\v{U}}% + \DeclareUnicodeCharacter{01D4}{\v{u}}% + % + \DeclareUnicodeCharacter{01E2}{\={\AE}}% + \DeclareUnicodeCharacter{01E3}{\={\ae}}% + \DeclareUnicodeCharacter{01E6}{\v{G}}% + \DeclareUnicodeCharacter{01E7}{\v{g}}% + \DeclareUnicodeCharacter{01E8}{\v{K}}% + \DeclareUnicodeCharacter{01E9}{\v{k}}% + % + \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}% + \DeclareUnicodeCharacter{01F1}{DZ}% + \DeclareUnicodeCharacter{01F2}{Dz}% + \DeclareUnicodeCharacter{01F3}{dz}% + \DeclareUnicodeCharacter{01F4}{\'G}% + \DeclareUnicodeCharacter{01F5}{\'g}% + \DeclareUnicodeCharacter{01F8}{\`N}% + \DeclareUnicodeCharacter{01F9}{\`n}% + \DeclareUnicodeCharacter{01FC}{\'{\AE}}% + \DeclareUnicodeCharacter{01FD}{\'{\ae}}% + \DeclareUnicodeCharacter{01FE}{\'{\O}}% + \DeclareUnicodeCharacter{01FF}{\'{\o}}% + % + \DeclareUnicodeCharacter{021E}{\v{H}}% + \DeclareUnicodeCharacter{021F}{\v{h}}% + % + \DeclareUnicodeCharacter{0226}{\dotaccent{A}}% + \DeclareUnicodeCharacter{0227}{\dotaccent{a}}% + \DeclareUnicodeCharacter{0228}{\cedilla{E}}% + \DeclareUnicodeCharacter{0229}{\cedilla{e}}% + \DeclareUnicodeCharacter{022E}{\dotaccent{O}}% + \DeclareUnicodeCharacter{022F}{\dotaccent{o}}% + % + \DeclareUnicodeCharacter{0232}{\=Y}% + \DeclareUnicodeCharacter{0233}{\=y}% + \DeclareUnicodeCharacter{0237}{\dotless{j}}% + % + \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% + % + % Greek letters upper case + \DeclareUnicodeCharacter{0391}{{\it A}}% + \DeclareUnicodeCharacter{0392}{{\it B}}% + \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}}% + \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}}% + \DeclareUnicodeCharacter{0395}{{\it E}}% + \DeclareUnicodeCharacter{0396}{{\it Z}}% + \DeclareUnicodeCharacter{0397}{{\it H}}% + \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}}% + \DeclareUnicodeCharacter{0399}{{\it I}}% + \DeclareUnicodeCharacter{039A}{{\it K}}% + \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}}% + \DeclareUnicodeCharacter{039C}{{\it M}}% + \DeclareUnicodeCharacter{039D}{{\it N}}% + \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}}% + \DeclareUnicodeCharacter{039F}{{\it O}}% + \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}}% + \DeclareUnicodeCharacter{03A1}{{\it P}}% + %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma + \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}}% + \DeclareUnicodeCharacter{03A4}{{\it T}}% + \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}}% + \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}}% + \DeclareUnicodeCharacter{03A7}{{\it X}}% + \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}}% + \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}}% + % + % Vowels with accents + \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}}% + \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}}% + \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}}% + \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}}% + \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}}% + \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}}% + % + % Standalone accent + \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}}% + % + % Greek letters lower case + \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha}% + \DeclareUnicodeCharacter{03B2}{\ensuremath\beta}% + \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma}% + \DeclareUnicodeCharacter{03B4}{\ensuremath\delta}% + \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon}% + \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta}% + \DeclareUnicodeCharacter{03B7}{\ensuremath\eta}% + \DeclareUnicodeCharacter{03B8}{\ensuremath\theta}% + \DeclareUnicodeCharacter{03B9}{\ensuremath\iota}% + \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa}% + \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda}% + \DeclareUnicodeCharacter{03BC}{\ensuremath\mu}% + \DeclareUnicodeCharacter{03BD}{\ensuremath\nu}% + \DeclareUnicodeCharacter{03BE}{\ensuremath\xi}% + \DeclareUnicodeCharacter{03BF}{{\it o}}% omicron + \DeclareUnicodeCharacter{03C0}{\ensuremath\pi}% + \DeclareUnicodeCharacter{03C1}{\ensuremath\rho}% + \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma}% + \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma}% + \DeclareUnicodeCharacter{03C4}{\ensuremath\tau}% + \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon}% + \DeclareUnicodeCharacter{03C6}{\ensuremath\phi}% + \DeclareUnicodeCharacter{03C7}{\ensuremath\chi}% + \DeclareUnicodeCharacter{03C8}{\ensuremath\psi}% + \DeclareUnicodeCharacter{03C9}{\ensuremath\omega}% + % + % More Greek vowels with accents + \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}}% + \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}}% + \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}}% + \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}}% + \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}}% + % + % Variant Greek letters + \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta}% + \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi}% + \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho}% + % + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}% + \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}% + \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}% + \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}% + \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}% + \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}% + \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}% + \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}% + \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}% + \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}% + \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}% + \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}% + % + \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}% + \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}% + % + \DeclareUnicodeCharacter{1E20}{\=G}% + \DeclareUnicodeCharacter{1E21}{\=g}% + \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}% + \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}% + \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}% + \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}% + \DeclareUnicodeCharacter{1E26}{\"H}% + \DeclareUnicodeCharacter{1E27}{\"h}% + % + \DeclareUnicodeCharacter{1E30}{\'K}% + \DeclareUnicodeCharacter{1E31}{\'k}% + \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}% + \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}% + \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}% + \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}% + \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}% + \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}% + \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}% + \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}% + \DeclareUnicodeCharacter{1E3E}{\'M}% + \DeclareUnicodeCharacter{1E3F}{\'m}% + % + \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}% + \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}% + \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}% + \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}% + \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}% + \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}% + \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}% + \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}% + \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}% + \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}% + % + \DeclareUnicodeCharacter{1E54}{\'P}% + \DeclareUnicodeCharacter{1E55}{\'p}% + \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}% + \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}% + \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}% + \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}% + \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}% + \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}% + \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}% + \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}% + % + \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}% + \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}% + \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}% + \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}% + \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}% + \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}% + \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}% + \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}% + \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}% + \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}% + % + \DeclareUnicodeCharacter{1E7C}{\~V}% + \DeclareUnicodeCharacter{1E7D}{\~v}% + \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}% + \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}% + % + \DeclareUnicodeCharacter{1E80}{\`W}% + \DeclareUnicodeCharacter{1E81}{\`w}% + \DeclareUnicodeCharacter{1E82}{\'W}% + \DeclareUnicodeCharacter{1E83}{\'w}% + \DeclareUnicodeCharacter{1E84}{\"W}% + \DeclareUnicodeCharacter{1E85}{\"w}% + \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}% + \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}% + \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}% + \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}% + \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}% + \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}% + \DeclareUnicodeCharacter{1E8C}{\"X}% + \DeclareUnicodeCharacter{1E8D}{\"x}% + \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}% + \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}% + % + \DeclareUnicodeCharacter{1E90}{\^Z}% + \DeclareUnicodeCharacter{1E91}{\^z}% + \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}% + \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}% + \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}% + \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}% + \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}% + \DeclareUnicodeCharacter{1E97}{\"t}% + \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}% + \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}% + % + \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}% + \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}% + % + \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}% + \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}% + \DeclareUnicodeCharacter{1EBC}{\~E}% + \DeclareUnicodeCharacter{1EBD}{\~e}% + % + \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}% + \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}% + \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}% + \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}% + % + \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}% + \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}% + % + \DeclareUnicodeCharacter{1EF2}{\`Y}% + \DeclareUnicodeCharacter{1EF3}{\`y}% + \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}% + % + \DeclareUnicodeCharacter{1EF8}{\~Y}% + \DeclareUnicodeCharacter{1EF9}{\~y}% + % + % Punctuation + \DeclareUnicodeCharacter{2013}{--}% + \DeclareUnicodeCharacter{2014}{---}% + \DeclareUnicodeCharacter{2018}{\quoteleft{}}% + \DeclareUnicodeCharacter{2019}{\quoteright{}}% + \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}% + \DeclareUnicodeCharacter{201C}{\quotedblleft{}}% + \DeclareUnicodeCharacter{201D}{\quotedblright{}}% + \DeclareUnicodeCharacter{201E}{\quotedblbase{}}% + \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}% + \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}% + \DeclareUnicodeCharacter{2022}{\bullet{}}% + \DeclareUnicodeCharacter{202F}{\thinspace}% + \DeclareUnicodeCharacter{2026}{\dots{}}% + \DeclareUnicodeCharacter{2039}{\guilsinglleft{}}% + \DeclareUnicodeCharacter{203A}{\guilsinglright{}}% + % + \DeclareUnicodeCharacter{20AC}{\euro{}}% + % + \DeclareUnicodeCharacter{2192}{\expansion{}}% + \DeclareUnicodeCharacter{21D2}{\result{}}% + % + % Mathematical symbols + \DeclareUnicodeCharacter{2200}{\ensuremath\forall}% + \DeclareUnicodeCharacter{2203}{\ensuremath\exists}% + \DeclareUnicodeCharacter{2208}{\ensuremath\in}% + \DeclareUnicodeCharacter{2212}{\minus{}}% + \DeclareUnicodeCharacter{2217}{\ast}% + \DeclareUnicodeCharacter{221E}{\ensuremath\infty}% + \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}% + \DeclareUnicodeCharacter{2227}{\ensuremath\wedge}% + \DeclareUnicodeCharacter{2229}{\ensuremath\cap}% + \DeclareUnicodeCharacter{2261}{\equiv{}}% + \DeclareUnicodeCharacter{2264}{\ensuremath\leq}% + \DeclareUnicodeCharacter{2265}{\ensuremath\geq}% + \DeclareUnicodeCharacter{2282}{\ensuremath\subset}% + \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}% + % + \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}% + \DeclareUnicodeCharacter{2032}{\ensuremath\prime}% + \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}% + \DeclareUnicodeCharacter{2111}{\ensuremath\Im}% + \DeclareUnicodeCharacter{2113}{\ensuremath\ell}% + \DeclareUnicodeCharacter{2118}{\ensuremath\wp}% + \DeclareUnicodeCharacter{211C}{\ensuremath\Re}% + \DeclareUnicodeCharacter{2127}{\ensuremath\mho}% + \DeclareUnicodeCharacter{2135}{\ensuremath\aleph}% + \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}% + \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}% + \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow}% + \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow}% + \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow}% + \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow}% + \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow}% + \DeclareUnicodeCharacter{2198}{\ensuremath\searrow}% + \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow}% + \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto}% + \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow}% + \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}% + \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}% + \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}% + \DeclareUnicodeCharacter{21BE}{\ensuremath\upharpoonright}% + \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}% + \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}% + \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}% + \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow}% + \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow}% + \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}% + \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}% + \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}% + \DeclareUnicodeCharacter{21DD}{\ensuremath\leadsto}% + \DeclareUnicodeCharacter{2201}{\ensuremath\complement}% + \DeclareUnicodeCharacter{2202}{\ensuremath\partial}% + \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}% + \DeclareUnicodeCharacter{2207}{\ensuremath\nabla}% + \DeclareUnicodeCharacter{2209}{\ensuremath\notin}% + \DeclareUnicodeCharacter{220B}{\ensuremath\owns}% + \DeclareUnicodeCharacter{220F}{\ensuremath\prod}% + \DeclareUnicodeCharacter{2210}{\ensuremath\coprod}% + \DeclareUnicodeCharacter{2211}{\ensuremath\sum}% + \DeclareUnicodeCharacter{2213}{\ensuremath\mp}% + \DeclareUnicodeCharacter{2218}{\ensuremath\circ}% + \DeclareUnicodeCharacter{221A}{\ensuremath\surd}% + \DeclareUnicodeCharacter{221D}{\ensuremath\propto}% + \DeclareUnicodeCharacter{2220}{\ensuremath\angle}% + \DeclareUnicodeCharacter{2223}{\ensuremath\mid}% + \DeclareUnicodeCharacter{2228}{\ensuremath\vee}% + \DeclareUnicodeCharacter{222A}{\ensuremath\cup}% + \DeclareUnicodeCharacter{222B}{\ensuremath\smallint}% + \DeclareUnicodeCharacter{222E}{\ensuremath\oint}% + \DeclareUnicodeCharacter{223C}{\ensuremath\sim}% + \DeclareUnicodeCharacter{2240}{\ensuremath\wr}% + \DeclareUnicodeCharacter{2243}{\ensuremath\simeq}% + \DeclareUnicodeCharacter{2245}{\ensuremath\cong}% + \DeclareUnicodeCharacter{2248}{\ensuremath\approx}% + \DeclareUnicodeCharacter{224D}{\ensuremath\asymp}% + \DeclareUnicodeCharacter{2250}{\ensuremath\doteq}% + \DeclareUnicodeCharacter{2260}{\ensuremath\neq}% + \DeclareUnicodeCharacter{226A}{\ensuremath\ll}% + \DeclareUnicodeCharacter{226B}{\ensuremath\gg}% + \DeclareUnicodeCharacter{227A}{\ensuremath\prec}% + \DeclareUnicodeCharacter{227B}{\ensuremath\succ}% + \DeclareUnicodeCharacter{2283}{\ensuremath\supset}% + \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}% + \DeclareUnicodeCharacter{228E}{\ensuremath\uplus}% + \DeclareUnicodeCharacter{228F}{\ensuremath\sqsubset}% + \DeclareUnicodeCharacter{2290}{\ensuremath\sqsupset}% + \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}% + \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}% + \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}% + \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup}% + \DeclareUnicodeCharacter{2295}{\ensuremath\oplus}% + \DeclareUnicodeCharacter{2296}{\ensuremath\ominus}% + \DeclareUnicodeCharacter{2297}{\ensuremath\otimes}% + \DeclareUnicodeCharacter{2298}{\ensuremath\oslash}% + \DeclareUnicodeCharacter{2299}{\ensuremath\odot}% + \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash}% + \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv}% + \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}% + \DeclareUnicodeCharacter{22A5}{\ensuremath\bot}% + \DeclareUnicodeCharacter{22A8}{\ensuremath\models}% + \DeclareUnicodeCharacter{22B4}{\ensuremath\unlhd}% + \DeclareUnicodeCharacter{22B5}{\ensuremath\unrhd}% + \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}% + \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}% + \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}% + \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup}% + \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond}% + \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot}% + \DeclareUnicodeCharacter{22C6}{\ensuremath\star}% + \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie}% + \DeclareUnicodeCharacter{2308}{\ensuremath\lceil}% + \DeclareUnicodeCharacter{2309}{\ensuremath\rceil}% + \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor}% + \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor}% + \DeclareUnicodeCharacter{2322}{\ensuremath\frown}% + \DeclareUnicodeCharacter{2323}{\ensuremath\smile}% + % + \DeclareUnicodeCharacter{25A1}{\ensuremath\Box}% + \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}% + \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}% + \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}% + \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}% + \DeclareUnicodeCharacter{25C7}{\ensuremath\Diamond}% + \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}% + \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}% + \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}% + \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit}% + \DeclareUnicodeCharacter{266D}{\ensuremath\flat}% + \DeclareUnicodeCharacter{266E}{\ensuremath\natural}% + \DeclareUnicodeCharacter{266F}{\ensuremath\sharp}% + \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc}% + \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle}% + \DeclareUnicodeCharacter{27C2}{\ensuremath\perp}% + \DeclareUnicodeCharacter{27E8}{\ensuremath\langle}% + \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow}% + \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow}% + \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow}% + \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto}% + \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus}% + \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot}% + \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus}% + \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}% + \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}% + \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}% + \DeclareUnicodeCharacter{2A1D}{\ensuremath\Join}% + \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}% + \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}% + \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}% + % + \global\mathchardef\checkmark="1370% actually the square root sign + \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}% +}% end of \unicodechardefs + +% UTF-8 byte sequence (pdfTeX) definitions (replacing and @U command) +% It makes the setting that replace UTF-8 byte sequence. +\def\utfeightchardefs{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterUTFviii + \unicodechardefs +} + +% Whether the active definitions of non-ASCII characters expand to +% non-active tokens with the same character code. This is used to +% write characters literally, instead of using active definitions for +% printing the correct glyphs. +\newif\ifpassthroughchars +\passthroughcharsfalse + +% For native Unicode handling (XeTeX and LuaTeX), +% provide a definition macro to replace/pass-through a Unicode character +% +\def\DeclareUnicodeCharacterNative#1#2{% + \catcode"#1=\active + \def\dodeclareunicodecharacternative##1##2##3{% + \begingroup + \uccode`\~="##2\relax + \uppercase{\gdef~}{% + \ifpassthroughchars + ##1% + \else + ##3% + \fi + } + \endgroup + } + \begingroup + \uccode`\.="#1\relax + \uppercase{\def\UTFNativeTmp{.}}% + \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% + \endgroup +} + +% Native Unicode handling (XeTeX and LuaTeX) character replacing definition. +% It activates the setting that replaces Unicode characters. +\def\nativeunicodechardefs{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative + \unicodechardefs +} + +% For native Unicode handling (XeTeX and LuaTeX), +% make the character token expand +% to the sequences given in \unicodechardefs for printing. +\def\DeclareUnicodeCharacterNativeAtU#1#2{% + \def\UTFAtUTmp{#2} + \expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp +} + +% @U command definitions for native Unicode handling (XeTeX and LuaTeX). +\def\nativeunicodechardefsatu{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU + \unicodechardefs +} + +% US-ASCII character definitions. +\def\asciichardefs{% nothing need be done + \relax +} + +% define all Unicode characters we know about, for the sake of @U. +\iftxinativeunicodecapable + \nativeunicodechardefsatu +\else + \utfeightchardefs +\fi + + +% Make non-ASCII characters printable again for compatibility with +% existing Texinfo documents that may use them, even without declaring a +% document encoding. +% +\setnonasciicharscatcode \other + + +\message{formatting,} + +\newdimen\defaultparindent \defaultparindent = 15pt + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness = 10000 + +% Don't be very finicky about underfull hboxes, either. +\hbadness = 6666 + +% Following George Bush, get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. We call this whenever the paper size is set. +% +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} + +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \txipageheight = \vsize + % + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \txipagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % if we don't reset these, they will remain at "1 true in" of + % whatever layout pdftex was dumped with. + \pdfhorigin = 1 true in + \pdfvorigin = 1 true in + \else + \ifx\XeTeXrevision\thisisundefined + \special{papersize=#8,#7}% + \else + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % XeTeX does not have \pdfhorigin and \pdfvorigin. + \fi + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{607.2pt}{6in}% that's 46 lines + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.25 trim size. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {-.2in}{0in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @smallerbook to reset parameters for 6x9 trim size. +% (Just testing, parameters still in flux.) +\def\smallerbook{{\globaldefs = 1 + \parskip = 1.5pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.4in}{4.8in}% + {-.2in}{-.4in}% + {0pt}{14pt}% + {9in}{6in}% + % + \lispnarrowing = 0.25in + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = .4cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{673.2pt}{160mm}% that's 51 lines + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{\hoffset}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \globaldefs = 0 +}} + +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} +\def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1\relax + \advance\dimen0 by \voffset + % + \dimen2 = \hsize + \advance\dimen2 by \normaloffset + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + +% Default value of \hfuzz, for suppressing warnings about overfull hboxes. +\hfuzz = 1pt + + +\message{and turning on texinfo input format.} + +\def^^L{\par} % remove \outer, so ^L can appear in an @comment + +% DEL is a comment character, in case @c does not suffice. +\catcode`\^^? = 14 + +% Define macros to output various characters with catcode for normal text. +\catcode`\"=\other \def\normaldoublequote{"} +\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix +\catcode`\+=\other \def\normalplus{+} +\catcode`\<=\other \def\normalless{<} +\catcode`\>=\other \def\normalgreater{>} +\catcode`\^=\other \def\normalcaret{^} +\catcode`\_=\other \def\normalunderscore{_} +\catcode`\|=\other \def\normalverticalbar{|} +\catcode`\~=\other \def\normaltilde{~} + +% This macro is used to make a character print one way in \tt +% (where it can probably be output as-is), and another way in other fonts, +% where something hairier probably needs to be done. +% +% #1 is what to print if we are indeed using \tt; #2 is what to print +% otherwise. Since all the Computer Modern typewriter fonts have zero +% interword stretch (and shrink), and it is reasonable to expect all +% typewriter fonts to have this, we can check that font parameter. +% +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + +% Set catcodes for Texinfo file + +% Active characters for printing the wanted glyph. +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. +% +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde +\chardef\hatchar=`\^ +\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } +\let\realunder=_ + +\catcode`\|=\active \def|{{\tt\char124}} + +\chardef \less=`\< +\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless +\chardef \gtr=`\> +\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr +\catcode`\+=\active \def+{{\tt \char 43}} +\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix +\catcode`\-=\active \let-=\normaldash + + +% used for headline/footline in the output routine, in case the page +% breaks in the middle of an @tex block. +\def\texinfochars{% + \let< = \activeless + \let> = \activegtr + \let~ = \activetilde + \let^ = \activehat + \markupsetuplqdefault \markupsetuprqdefault + \let\b = \strong + \let\i = \smartitalic + % in principle, all other definitions in \tex have to be undone too. +} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \normalturnoffactive + \otherbackslash +} + +\catcode`\@=0 + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ +\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work + +% \realbackslash is an actual character `\' with catcode other, and +% \doublebackslash is two of them (for the pdf outlines). +{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} + +% In Texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active % @ for escape char from now on. + +% Print a typewriter backslash. For math mode, we can't simply use +% \backslashcurfont: the story here is that in math mode, the \char +% of \backslashcurfont ends up printing the roman \ from the math symbol +% font (because \char in math mode uses the \mathcode, and plain.tex +% sets \mathcode`\\="026E). Hence we use an explicit \mathchar, +% which is the decimal equivalent of "715c (class 7, e.g., use \fam; +% ignored family value; char position "5C). We can't use " for the +% usual hex value because it has already been made active. + +@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} +@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. + +% \rawbackslash defines an active \ to do \backslashcurfont. +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. We switch back and forth between these. +@gdef@rawbackslash{@let\=@backslashcurfont} +@gdef@otherbackslash{@let\=@realbackslash} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. +% +{@catcode`- = @active + @gdef@normalturnoffactive{% + @passthroughcharstrue + @let-=@normaldash + @let"=@normaldoublequote + @let$=@normaldollar %$ font-lock fix + @let+=@normalplus + @let<=@normalless + @let>=@normalgreater + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let~=@normaltilde + @let\=@ttbackslash + @markupsetuplqdefault + @markupsetuprqdefault + @unsepspaces + } +} + +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have @fixbackslash turn them back on. +@catcode`+=@other @catcode`@_=@other + +% \enablebackslashhack - allow file to begin `\input texinfo' +% +% If a .fmt file is being used, we don't want the `\input texinfo' to show up. +% That is what \eatinput is for; after that, the `\' should revert to printing +% a backslash. +% If the file did not have a `\input texinfo', then it is turned off after +% the first line; otherwise the first `\' in the file would cause an error. +% This is used on the very last line of this file, texinfo.tex. +% We also use @c to call @fixbackslash, in case ends of lines are hidden. +{ +@catcode`@^=7 +@catcode`@^^M=13@gdef@enablebackslashhack{% + @global@let\ = @eatinput% + @catcode`@^^M=13% + @def@c{@fixbackslash@c}% + % Definition for the newline at the end of this file. + @def ^^M{@let^^M@secondlinenl}% + % Definition for a newline in the main Texinfo file. + @gdef @secondlinenl{@fixbackslash}% + % In case the first line has a whole-line command on it + @let@originalparsearg@parsearg + @def@parsearg{@fixbackslash@originalparsearg} +}} + +{@catcode`@^=7 @catcode`@^^M=13% +@gdef@eatinput input texinfo#1^^M{@fixbackslash}} + +% Emergency active definition of newline, in case an active newline token +% appears by mistake. +{@catcode`@^=7 @catcode13=13% +@gdef@enableemergencynewline{% + @gdef^^M{% + @par% + %@par% +}}} + + +@gdef@fixbackslash{% + @ifx\@eatinput @let\ = @ttbackslash @fi + @catcode13=5 % regular end of line + @enableemergencynewline + @let@c=@texinfoc + @let@parsearg@originalparsearg + % Also turn back on active characters that might appear in the input + % file name, in case not using a pre-dumped format. + @catcode`+=@active + @catcode`@_=@active + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets + % called at the beginning of every Texinfo file. Not opening texinfo.cnf + % directly in this file, texinfo.tex, makes it possible to make a format + % file for Texinfo. + % + @openin 1 texinfo.cnf + @ifeof 1 @else @input texinfo.cnf @fi + @closein 1 +} + + +% Say @foo, not \foo, in error messages. +@escapechar = `@@ + +% These (along with & and #) are made active for url-breaking, so need +% active definitions as the normal characters. +@def@normaldot{.} +@def@normalquest{?} +@def@normalslash{/} + +% These look ok in all fonts, so just make them not special. +% @hashchar{} gets its own user-level command, because of #line. +@catcode`@& = @other @def@normalamp{&} +@catcode`@# = @other @def@normalhash{#} +@catcode`@% = @other @def@normalpercent{%} + +@let @hashchar = @normalhash + +@c Finally, make ` and ' active, so that txicodequoteundirected and +@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active +@markupsetuplqdefault +@markupsetuprqdefault + +@c Local variables: +@c eval: (add-hook 'write-file-hooks 'time-stamp) +@c page-delimiter: "^\\\\message\\|emacs-page" +@c time-stamp-start: "def\\\\texinfoversion{" +@c time-stamp-format: "%:y-%02m-%02d.%02H" +@c time-stamp-end: "}" +@c End: + +@c vim:sw=2: + +@enablebackslashhack diff --git a/lib/ebu/others/eblook-1.6.1+media-20200414/win32.c b/lib/ebu/others/eblook-1.6.1+media-20200414/win32.c new file mode 100644 index 0000000..29e8910 --- /dev/null +++ b/lib/ebu/others/eblook-1.6.1+media-20200414/win32.c @@ -0,0 +1,149 @@ +/* + * win32.c + * functions used in Win32 (or DOS) environment + * written by Satomi + * + * This program 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, 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA + */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* HAVE_CONFIG_H */ + +#if defined(WIN32) && !defined(DOS_FILE_PATH) +#define DOS_FILE_PATH 1 +#endif + +#ifdef DOS_FILE_PATH + +#include +#include + +size_t euc_to_sjis(const char *, char *, size_t); +size_t sjis_to_euc(const char *, char *, size_t); +void dos_fix_path(char *, int); + +/* + * NOTE: euc_to_sjis() and sjis_to_euc() may be moved to codeconv.c, + * but their prototypes are rather different from other codeconv + * functions, which is the reason why I placed them here. + * euc_to_current() or current_to_euc() cannot be used as an alternative + * because the target kanji-code is always SJIS. + */ +size_t euc_to_sjis(const char *euc, char *sjis, size_t sjis_len) +{ + size_t len = 0; + unsigned char c1, c2; + + while (*euc) { + c1 = (unsigned char)(*euc++); + if (!(c1 & 0x80)) { + /* ASCII char. */ + if (++len < sjis_len) *sjis++ = c1; + continue; + } + + c2 = (unsigned char)(*euc++); + if (0x8e == c1) { + /* possibly single-byte kana. */ + if (0x21 <= c2 && c2 <= 0x5f) *sjis++ = c2 | 0x80; + continue; + } + + /* double-byte char. */ + len += 2; + if (sjis_len <= len) continue; + c1 &= 0x7f; + c2 &= 0x7f; + if (c1 & 0x01) { + c2 += 0x1f; + if (c2 > 0x7e) c2++; + } else { + c2 += 0x7e; + } + c1 = (c1 + 0xe1) >> 1; + if (c1 > 0x9f) c1 += 0x40; + *sjis++ = c1; + *sjis++ = c2; + } + + if (sjis) *sjis = 0; + return(len); +} + +size_t sjis_to_euc(const char *sjis, char *euc, size_t euc_len) +{ + size_t len = 0; + unsigned char c1, c2; + + while (*sjis) { + c1 = (unsigned char)(*sjis++); + if (!(c1 & 0x80)) { + /* ASCII char. */ + if (++len < euc_len) *euc++ = c1; + continue; + } + + if (0xa1 <= c1 && c1 <= 0xdf) { + /* single-byte kana. */ + len += 2; + if (euc_len <= len) continue; + c2 = c1 - 0x80; + c1 = 0x8e; + + } else if ((0x81 <= c1 && c1 <= 0x9f) + || (0xe0 <= c1 && c1 <= 0xfc)) { + /* double-byte char (not strictly checked). */ + c2 = *sjis++; + if (!c2) break; + len += 2; + if (euc_len <= len) continue; + if (c2 < 0x9f) { + if (c1 < 0xdf) c1 = ((c1 - 0x30) << 1) - 1; + else c1 = ((c1 - 0x70) << 1) - 1; + if (c2 < 0x7f) c2 += 0x61; + else c2 += 0x60; + } else { + if (c1 < 0xdf) c1 = (c1 - 0x30) << 1; + else c1 = (c1 - 0x70) << 1; + c2 += 0x02; + } + } + + *euc++ = c1; + *euc++ = c2; + } + + if (euc) *euc = 0; + return(len); +} + +void dos_fix_path(char *path, int path_is_euc) +{ + unsigned char *p = (unsigned char *)path; + + if (path_is_euc) euc_to_sjis(path, path, strlen(path) + 1); + + /* eb-3.0 does not accept '/' as a path delimitor. */ + while (*p) { + if ((0x81 <= *p && *p <= 0x9f) || + (0xe0 <= *p && *p <= 0xfc)) + p++; + else if ('/' == *p) *p = '\\'; + p++; + } +} + +#endif /* DOS_FILE_PATH */ diff --git a/lib/ebu/po-eb/Makefile b/lib/ebu/po-eb/Makefile new file mode 100644 index 0000000..cc74fa3 --- /dev/null +++ b/lib/ebu/po-eb/Makefile @@ -0,0 +1,154 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +## Note that the following macros must be set by your hand. +top_builddir = .. +subdir = po-eb + +TEXTDOMAIN = ebu +POFILES = ja.po +MOFILES = ja.mo +POTFILES = \ + $(top_srcdir)/ebu/error.c +## end + +PACKAGE = ebu +VERSION = 4.5-20200413 + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. + +prefix = /usr/local +datarootdir = ${prefix}/share +datadir = ${datarootdir} +localedir = $(datadir)/locale + +mkdir_p = /usr/bin/mkdir -p +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +mkinstalldirs = $(install_sh) -d +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh + +MSGFMT = : +XGETTEXT = : +MSGMERGE = msgmerge + +DISTFILES = Makefile.in $(TEXTDOMAIN).pot $(MOFILES) $(POFILES) + +.SUFFIXES: +.SUFFIXES: .po .pox .mo + +.po.pox: + $(MAKE) $(TEXTDOMAIN).pot + $(MSGMERGE) $< $(srcdir)/$(TEXTDOMAIN).pot -o $*.pox + +.po.mo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.mo \ + && rm -f $$file && $(MSGFMT) -o $$file $< + +all: all-yes + +all-yes: $(MOFILES) +all-no: + +$(TEXTDOMAIN).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(TEXTDOMAIN) --add-comments \ + --keyword=_ --keyword=N_ $(POTFILES) \ + && test ! -f $(TEXTDOMAIN).po \ + || ( rm -f $(srcdir)/$(TEXTDOMAIN).pot \ + && mv $(TEXTDOMAIN).po $(srcdir)/$(TEXTDOMAIN).pot ) + +install: install-exec install-data +install-exec: +install-data: install-data-yes +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(TEXTDOMAIN).mo; \ + echo "installing $$cat as" \ + "$(DESTDIR)$$dir/$(TEXTDOMAIN).mo"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat \ + $(DESTDIR)$$dir/$(TEXTDOMAIN).mo; \ + echo "installing $(srcdir)/$$cat as" \ + "$(DESTDIR)$$dir/$(TEXTDOMAIN).mo"; \ + fi; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(TEXTDOMAIN).mo; \ + done + rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in + +check: all + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(TEXTDOMAIN).po *.old.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f *.mo + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(TEXTDOMAIN).pot + cd $(srcdir); \ + catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(TEXTDOMAIN).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +Makefile: Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/po-eb/Makefile.in b/lib/ebu/po-eb/Makefile.in new file mode 100644 index 0000000..57ba6dd --- /dev/null +++ b/lib/ebu/po-eb/Makefile.in @@ -0,0 +1,154 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +## Note that the following macros must be set by your hand. +top_builddir = .. +subdir = po-eb + +TEXTDOMAIN = ebu +POFILES = ja.po +MOFILES = ja.mo +POTFILES = \ + $(top_srcdir)/ebu/error.c +## end + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ + +mkdir_p = @mkdir_p@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +mkinstalldirs = $(install_sh) -d +install_sh = @install_sh@ + +MSGFMT = @MSGFMT@ +XGETTEXT = @XGETTEXT@ +MSGMERGE = msgmerge + +DISTFILES = Makefile.in $(TEXTDOMAIN).pot $(MOFILES) $(POFILES) + +.SUFFIXES: +.SUFFIXES: .po .pox .mo + +.po.pox: + $(MAKE) $(TEXTDOMAIN).pot + $(MSGMERGE) $< $(srcdir)/$(TEXTDOMAIN).pot -o $*.pox + +.po.mo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.mo \ + && rm -f $$file && $(MSGFMT) -o $$file $< + +all: all-@ENABLE_NLS@ + +all-yes: $(MOFILES) +all-no: + +$(TEXTDOMAIN).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(TEXTDOMAIN) --add-comments \ + --keyword=_ --keyword=N_ $(POTFILES) \ + && test ! -f $(TEXTDOMAIN).po \ + || ( rm -f $(srcdir)/$(TEXTDOMAIN).pot \ + && mv $(TEXTDOMAIN).po $(srcdir)/$(TEXTDOMAIN).pot ) + +install: install-exec install-data +install-exec: +install-data: install-data-@ENABLE_NLS@ +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(TEXTDOMAIN).mo; \ + echo "installing $$cat as" \ + "$(DESTDIR)$$dir/$(TEXTDOMAIN).mo"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat \ + $(DESTDIR)$$dir/$(TEXTDOMAIN).mo; \ + echo "installing $(srcdir)/$$cat as" \ + "$(DESTDIR)$$dir/$(TEXTDOMAIN).mo"; \ + fi; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(TEXTDOMAIN).mo; \ + done + rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in + +check: all + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(TEXTDOMAIN).po *.old.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f *.mo + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(TEXTDOMAIN).pot + cd $(srcdir); \ + catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(TEXTDOMAIN).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +Makefile: Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/po-eb/ebu.pot b/lib/ebu/po-eb/ebu.pot new file mode 100644 index 0000000..1ac36fa --- /dev/null +++ b/lib/ebu/po-eb/ebu.pot @@ -0,0 +1,316 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-04-13 13:56+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. 0 -- 4 +#: ../eb/error.c:168 +msgid "no error" +msgstr "" + +#: ../eb/error.c:169 +msgid "memory exhausted" +msgstr "" + +#: ../eb/error.c:170 +msgid "an empty file name" +msgstr "" + +#: ../eb/error.c:171 +msgid "too long file name" +msgstr "" + +#: ../eb/error.c:172 +msgid "bad file name" +msgstr "" + +#. 5 -- 9 +#: ../eb/error.c:175 +msgid "bad directory name" +msgstr "" + +#: ../eb/error.c:176 +msgid "too long word" +msgstr "" + +#: ../eb/error.c:177 +msgid "a word contains bad character" +msgstr "" + +#: ../eb/error.c:178 +msgid "an empty word" +msgstr "" + +#: ../eb/error.c:179 +msgid "failed to get the current working directory" +msgstr "" + +#. 10 -- 14 +#: ../eb/error.c:182 +msgid "failed to open a catalog file" +msgstr "" + +#: ../eb/error.c:183 +msgid "failed to open an appendix catalog file" +msgstr "" + +#: ../eb/error.c:184 +msgid "failed to open a text file" +msgstr "" + +#: ../eb/error.c:185 +msgid "failed to open a font file" +msgstr "" + +#: ../eb/error.c:186 +msgid "failed to open an appendix file" +msgstr "" + +#. 15 -- 19 +#: ../eb/error.c:189 +msgid "failed to open a binary file" +msgstr "" + +#: ../eb/error.c:190 +msgid "failed to read a catalog file" +msgstr "" + +#: ../eb/error.c:191 +msgid "failed to read an appendix catalog file" +msgstr "" + +#: ../eb/error.c:192 +msgid "failed to read a text file" +msgstr "" + +#: ../eb/error.c:193 +msgid "failed to read a font file" +msgstr "" + +#. 20 -- 24 +#: ../eb/error.c:196 +msgid "failed to read an appendix file" +msgstr "" + +#: ../eb/error.c:197 +msgid "failed to read a binary file" +msgstr "" + +#: ../eb/error.c:198 +msgid "failed to seek a catalog file" +msgstr "" + +#: ../eb/error.c:199 +msgid "failed to seek an appendix catalog file" +msgstr "" + +#: ../eb/error.c:200 +msgid "failed to seek a text file" +msgstr "" + +#. 25 -- 29 +#: ../eb/error.c:203 +msgid "failed to seek a font file" +msgstr "" + +#: ../eb/error.c:204 +msgid "failed to seek an appendix file" +msgstr "" + +#: ../eb/error.c:205 +msgid "failed to seek a binary file" +msgstr "" + +#: ../eb/error.c:206 +msgid "unexpected format in a catalog file" +msgstr "" + +#: ../eb/error.c:207 +msgid "unexpected format in an appendix catalog file" +msgstr "" + +#. 30 -- 34 +#: ../eb/error.c:210 +msgid "unexpected format in a text file" +msgstr "" + +#: ../eb/error.c:211 +msgid "unexpected format in a font file" +msgstr "" + +#: ../eb/error.c:212 +msgid "unexpected format in an appendix file" +msgstr "" + +#: ../eb/error.c:213 +msgid "unexpected format in a binary file" +msgstr "" + +#: ../eb/error.c:214 +msgid "book not bound" +msgstr "" + +#. 35 -- 39 +#: ../eb/error.c:217 +msgid "appendix not bound" +msgstr "" + +#: ../eb/error.c:218 +msgid "no subbook" +msgstr "" + +#: ../eb/error.c:219 +msgid "no subbook in the appendix" +msgstr "" + +#: ../eb/error.c:220 +msgid "no font" +msgstr "" + +#: ../eb/error.c:221 +msgid "no text file" +msgstr "" + +#. 40 -- 44 +#: ../eb/error.c:224 +msgid "no stop-code" +msgstr "" + +#: ../eb/error.c:225 +msgid "no alternation string" +msgstr "" + +#: ../eb/error.c:226 +msgid "no current subbook" +msgstr "" + +#: ../eb/error.c:227 +msgid "no current appendix subbook" +msgstr "" + +#: ../eb/error.c:228 +msgid "no current font" +msgstr "" + +#. 45 -- 49 +#: ../eb/error.c:231 +msgid "no current binary" +msgstr "" + +#: ../eb/error.c:232 +msgid "no such subbook" +msgstr "" + +#: ../eb/error.c:233 +msgid "no such appendix subbook" +msgstr "" + +#: ../eb/error.c:234 +msgid "no such font" +msgstr "" + +#: ../eb/error.c:235 +msgid "no such character bitmap" +msgstr "" + +#. 50 -- 54 +#: ../eb/error.c:238 +msgid "no such character text" +msgstr "" + +#: ../eb/error.c:239 +msgid "no such search method" +msgstr "" + +#: ../eb/error.c:240 +msgid "no such hook" +msgstr "" + +#: ../eb/error.c:241 +msgid "no such binary" +msgstr "" + +#: ../eb/error.c:242 +msgid "different content type" +msgstr "" + +#. 55 -- 59 +#: ../eb/error.c:245 +msgid "no previous search" +msgstr "" + +#: ../eb/error.c:246 +msgid "no such multi search" +msgstr "" + +#: ../eb/error.c:247 +msgid "no such multi search entry" +msgstr "" + +#: ../eb/error.c:248 +msgid "too many words specified" +msgstr "" + +#: ../eb/error.c:249 +msgid "no word specified" +msgstr "" + +#. 60 -- 64 +#: ../eb/error.c:252 +msgid "no candidates" +msgstr "" + +#: ../eb/error.c:253 +msgid "end of content" +msgstr "" + +#: ../eb/error.c:254 +msgid "no previous seek" +msgstr "" + +#: ../eb/error.c:255 +msgid "ebnet is not supported" +msgstr "" + +#: ../eb/error.c:256 +msgid "failed to connect to an ebnet server" +msgstr "" + +#. 65 -- 69 +#: ../eb/error.c:259 +msgid "ebnet server is busy" +msgstr "" + +#: ../eb/error.c:260 +msgid "no access permission" +msgstr "" + +#: ../eb/error.c:261 +msgid "booklist not bound" +msgstr "" + +#: ../eb/error.c:262 +msgid "no such book" +msgstr "" + +#: ../eb/error.c:263 +msgid "no such color" +msgstr "" + +#: ../eb/error.c:279 +msgid "unknown error" +msgstr "" diff --git a/lib/ebu/po-eb/ja.mo b/lib/ebu/po-eb/ja.mo new file mode 100644 index 0000000000000000000000000000000000000000..e3344e6a6dbefebfcb12e9b58e83ca042cc7332a GIT binary patch literal 5736 zcmb7`e{38_700*5w86B6hVr{16MmG2u*vyHL+d8}<+!vEt5GmTR3Ndw8`~G(?Vfh` z5}Us&ehLZxYx`G`>Sh*7d}*8p$3E=Tj%||ooSq|ELq#Hsh87aXfJjIq3N3u!?A+a+ z@Ad*K&wY00y?OiIn>RCFTwV91hUX!)ThYF8t)>~^({=d4!>-e`HQ+jMHFz(0Be+xb zzoqD?@gIOULH>jq-wS>S{lkhcfw!RlI!Jo|1V0U~x?a;ZfI3Kid>y3k?gl>wKB0I3 z{4Dx8a4mQdB>mN^eEm%z>9;HPfTaIjkn{&Z(w_s#{yC8JuX~Trbs*_)0ZBgwz90M^ zNPa&Feh}OTQXVG3kAr#eW^f67ANX&O@^wQ!VguKLa8nk zCjov0{2@qrdIluD18RI6q`WSG}zYqK*I1PRZ{1eE)dQ2v60CjLX_!;oqAkBXUY`8|#o(DgH{vR+%_WuK7 zNL!7d)`4q5`p*3z<@Yg=*2e-F_+ya#->-N=$^Qsa{wNso?`H6JuvzuLsrb0!UXc7a z29n+zs(%xV(0pBShoS?L{!<|753By7>c6dc80WT=l;LlKz0|=RmS^9;CSHP*gN;4M=fq0m+ZAfDDX* z6xa6^pHrLzY2IH!vVS8cGjKCV^S=gO1Kx{v7g_@v?MHl8dp8=km)yUf2k%6qn%jy- zPqPpC`$hcHzQb~B+t8@?P{Q(I_>G`Z-O|&DMm|xU!!7wdgx@yx{s4%y6`v2|4ckpV zbOuoTO@3GVf+EGT1?@hxIy986+%N9}DUT=%?H)9GXgxNg-G+u^QM((h@LY?RR@HeB zT!;2iwDoGN1*COcrTTYegS53LtH_oIDIzWG0Q02|P#Zt0=(kJbz&h69Q1vFsR& zTBd8nO^0JxW+q8?y|TeHJx-SW!Wx| zsbPoPySYu$&a~67!7FBU73OPQ1_FpN*P;;a5NmJT z>@LL>(6x{OX0XnD|81v5k#UYvZoe zJ@wlSvpa2cbG?HbNjO&MiQVU*!bsRXXyyXDpEaCd9l zS6lTj?I6a<=F*sP@EUb;+UL2CN62dY45nV*IV`u zcqhCiWk(6hjUV~@7#Z$;@&RZ&ESY!?jB7tQpgWiPq7jLMR%7XU``8k!! zDpn|p8Wv_3=8-kHeYH=KVhuZ9MLfr5#cNlIr&6UNo(h%ncq+tU@l;j(zvA&mP$dVd zt@w)6g(+6V7NS@lVTe*#oHf)-(N-kGd(AuREs2X`Cxm$6q?kZ0FZ%WTEH>_#mmPld zg&C0%&laj!n|fpFRXQ~Cm&ANvc=U4a_40uuWAFTWQXKdFo&DF`88Lr!-_*sjZ8)lw z3Pn^)MP;#uO2|jN=e+X+<7LhvBXawc4UP`{>PqhI@gb2pIwa20IWqR@%#s)`JKDzH zgm6wJJ2O6&ePxBh;d7I}7faqD)XZ#|dEdK0%4BA6I7vY;#Y%8Q\n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Transfer-Encoding: 8bit\n" + +#. 0 -- 4 +#: ../eb/error.c:168 +msgid "no error" +msgstr "¥¨¥é¡¼¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:169 +msgid "memory exhausted" +msgstr "¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿" + +#: ../eb/error.c:170 +msgid "an empty file name" +msgstr "¶õ¤Î¥Õ¥¡¥¤¥ë̾¤Ç¤¹" + +#: ../eb/error.c:171 +msgid "too long file name" +msgstr "¥Õ¥¡¥¤¥ë̾¤¬Ä¹¤¹¤®¤Þ¤¹" + +#: ../eb/error.c:172 +msgid "bad file name" +msgstr "ÉÔÀµ¤Ê¥Õ¥¡¥¤¥ë̾¤Ç¤¹" + +#. 5 -- 9 +#: ../eb/error.c:175 +msgid "bad directory name" +msgstr "ÉÔÀµ¤Ê¥Ç¥£¥ì¥¯¥È¥ê̾¤Ç¤¹" + +#: ../eb/error.c:176 +msgid "too long word" +msgstr "ñ¸ì¤¬Ä¹¤¹¤®¤Þ¤¹" + +#: ../eb/error.c:177 +msgid "a word contains bad character" +msgstr "ñ¸ì¤¬ÉÔÀµ¤Êʸ»ú¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹" + +#: ../eb/error.c:178 +msgid "an empty word" +msgstr "ñ¸ì¤¬¶õ¤Ç¤¹" + +#: ../eb/error.c:179 +msgid "failed to get the current working directory" +msgstr "¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤¬Ê¬¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿" + +#. 10 -- 14 +#: ../eb/error.c:182 +msgid "failed to open a catalog file" +msgstr "¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:183 +msgid "failed to open an appendix catalog file" +msgstr "ÉÕÏ¿¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:184 +msgid "failed to open a text file" +msgstr "ËÜʸ¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:185 +msgid "failed to open a font file" +msgstr "¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:186 +msgid "failed to open an appendix file" +msgstr "ÉÕÏ¿¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿" + +#. 15 -- 19 +#: ../eb/error.c:189 +msgid "failed to open a binary file" +msgstr "¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:190 +msgid "failed to read a catalog file" +msgstr "¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬Æɤá¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:191 +msgid "failed to read an appendix catalog file" +msgstr "ÉÕÏ¿¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬Æɤá¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:192 +msgid "failed to read a text file" +msgstr "ËÜʸ¥Õ¥¡¥¤¥ë¤¬Æɤá¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:193 +msgid "failed to read a font file" +msgstr "¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤¬Æɤá¤Þ¤»¤ó¤Ç¤·¤¿" + +#. 20 -- 24 +#: ../eb/error.c:196 +msgid "failed to read an appendix file" +msgstr "ÉÕÏ¿¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:197 +msgid "failed to read a binary file" +msgstr "¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤¬Æɤá¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:198 +msgid "failed to seek a catalog file" +msgstr "¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬¥·¡¼¥¯¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:199 +msgid "failed to seek an appendix catalog file" +msgstr "ÉÕÏ¿¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬¥·¡¼¥¯¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:200 +msgid "failed to seek a text file" +msgstr "ËÜʸ¥Õ¥¡¥¤¥ë¤¬¥·¡¼¥¯¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#. 25 -- 29 +#: ../eb/error.c:203 +msgid "failed to seek a font file" +msgstr "¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤¬¥·¡¼¥¯¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:204 +msgid "failed to seek an appendix file" +msgstr "ÉÕÏ¿¥Õ¥¡¥¤¥ë¤¬Æɤá¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:205 +msgid "failed to seek a binary file" +msgstr "¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤¬¥·¡¼¥¯¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#: ../eb/error.c:206 +msgid "unexpected format in a catalog file" +msgstr "¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Î·Á¼°¤¬ÁÛÄê³°¤Ç¤¹" + +#: ../eb/error.c:207 +msgid "unexpected format in an appendix catalog file" +msgstr "ÉÕÏ¿¤Î¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤Î·Á¼°¤¬ÁÛÄê³°¤Ç¤¹" + +#. 30 -- 34 +#: ../eb/error.c:210 +msgid "unexpected format in a text file" +msgstr "ËÜʸ¥Õ¥¡¥¤¥ë¤Î·Á¼°¤¬ÁÛÄê³°¤Ç¤¹" + +#: ../eb/error.c:211 +msgid "unexpected format in a font file" +msgstr "¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤Î·Á¼°¤¬ÁÛÄê³°¤Ç¤¹" + +#: ../eb/error.c:212 +msgid "unexpected format in an appendix file" +msgstr "ÉÕÏ¿¥Õ¥¡¥¤¥ë¤Î·Á¼°¤¬¤¬ÁÛÄê³°¤Ç¤¹" + +#: ../eb/error.c:213 +msgid "unexpected format in a binary file" +msgstr "¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤Î·Á¼°¤¬ÁÛÄê³°¤Ç¤¹" + +#: ../eb/error.c:214 +msgid "book not bound" +msgstr "½ñÀҤϷë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤»¤ó" + +#. 35 -- 39 +#: ../eb/error.c:217 +msgid "appendix not bound" +msgstr "appendix ¤Ï·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: ../eb/error.c:218 +msgid "no subbook" +msgstr "ÉûËܤϤ¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:219 +msgid "no subbook in the appendix" +msgstr "ÉÕÏ¿¤Ë¤ÏÉûËܤ¬¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:220 +msgid "no font" +msgstr "¥Õ¥©¥ó¥È¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:221 +msgid "no text file" +msgstr "ËÜʸ¥Õ¥¡¥¤¥ë¤Ï¤¢¤ê¤Þ¤»¤ó" + +#. 40 -- 44 +#: ../eb/error.c:224 +msgid "no stop-code" +msgstr "¶èÀڤꥳ¡¼¥É¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:225 +msgid "no alternation string" +msgstr "ÂåÂØʸ»úÎó¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:226 +msgid "no current subbook" +msgstr "¸½»þÅÀ¤ÇÉûËܤÏÁªÂò¤·¤Æ¤¤¤Þ¤»¤ó" + +#: ../eb/error.c:227 +msgid "no current appendix subbook" +msgstr "¸½»þÅÀ¤ÇÉÕÏ¿¤ÎÉûËܤÏÁªÂò¤·¤Æ¤¤¤Þ¤»¤ó" + +#: ../eb/error.c:228 +msgid "no current font" +msgstr "¸½»þÅÀ¤Ç¥Õ¥©¥ó¥È¤ÏÁªÂò¤·¤Æ¤¤¤Þ¤»¤ó" + +#. 45 -- 49 +#: ../eb/error.c:231 +msgid "no current binary" +msgstr "¸½»þÅÀ¤Ç¥Ð¥¤¥Ê¥ê¤ÏÁªÂò¤·¤Æ¤¤¤Þ¤»¤ó" + +#: ../eb/error.c:232 +msgid "no such subbook" +msgstr "¤½¤Î¤è¤¦¤ÊÉûËܤϤ¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:233 +msgid "no such appendix subbook" +msgstr "ÉÕÏ¿¤Ë¤½¤Î¤è¤¦¤ÊÉûËܤϤ¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:234 +msgid "no such font" +msgstr "¤½¤Î¤è¤¦¤Ê¥Õ¥©¥ó¥È¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:235 +msgid "no such character bitmap" +msgstr "¤½¤Î¤è¤¦¤Êʸ»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤Ï¤¢¤ê¤Þ¤»¤ó" + +#. 50 -- 54 +#: ../eb/error.c:238 +msgid "no such character text" +msgstr "¤½¤Î¤è¤¦¤Êʸ»ú¤Î¥Æ¥­¥¹¥È¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:239 +msgid "no such search method" +msgstr "¤½¤Î¤è¤¦¤Ê¸¡º÷Êý¼°¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:240 +msgid "no such hook" +msgstr "¤½¤Î¤è¤¦¤Ê¥Õ¥Ã¥¯¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:241 +msgid "no such binary" +msgstr "¤½¤Î¤è¤¦¤Ê¥Ð¥¤¥Ê¥ê¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:242 +msgid "different content type" +msgstr "¥Ç¡¼¥¿¤Î·¿¤¬°Û¤Ê¤Ã¤Æ¤¤¤Þ¤¹" + +#. 55 -- 59 +#: ../eb/error.c:245 +msgid "no previous search" +msgstr "¸¡º÷Êý¼°¤¬Á°¤â¤Ã¤Æ»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: ../eb/error.c:246 +msgid "no such multi search" +msgstr "¤½¤Î¤è¤¦¤ÊÊ£¹ç¸¡º÷¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:247 +msgid "no such multi search entry" +msgstr "¤½¤Î¤è¤¦¤ÊÊ£¹ç¸¡º÷¤Î¥¨¥ó¥È¥ê¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:248 +msgid "too many words specified" +msgstr "»ØÄꤷ¤Æ¤¤¤ëñ¸ì¤Î¿ô¤¬Â¿¤¹¤®¤Þ¤¹" + +#: ../eb/error.c:249 +msgid "no word specified" +msgstr "ñ¸ì¤¬°ì¤Ä¤â»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#. 60 -- 64 +#: ../eb/error.c:252 +msgid "no candidates" +msgstr "¸õÊä¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:253 +msgid "end of content" +msgstr "ËÜʸ¤Ï½ª¤ï¤ê¤Ç¤¹" + +#: ../eb/error.c:254 +msgid "no previous seek" +msgstr "»öÁ°¤Ë¥·¡¼¥¯¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: ../eb/error.c:255 +msgid "ebnet is not supported" +msgstr "ebnet ¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó" + +#: ../eb/error.c:256 +msgid "failed to connect to an ebnet server" +msgstr "ebnet ¥µ¡¼¥Ð¤ËÀܳ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#. 65 -- 69 +#: ../eb/error.c:259 +msgid "ebnet server is busy" +msgstr "ebnet ¥µ¡¼¥Ð¤¬¥Ó¥¸¡¼¾õÂ֤Ǥ¹" + +#: ../eb/error.c:260 +msgid "no access permission" +msgstr "¥¢¥¯¥»¥¹µö²Ä¤¬¤¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:261 +msgid "booklist not bound" +msgstr "½ñÀÒ°ìÍ÷¤Ï·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: ../eb/error.c:262 +msgid "no such book" +msgstr "¤½¤Î¤è¤¦¤Ê½ñÀҤϤ¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:263 +msgid "no such color" +msgstr "¤½¤Î¤è¤¦¤Ê¿§¸«ËܤϤ¢¤ê¤Þ¤»¤ó" + +#: ../eb/error.c:279 +msgid "unknown error" +msgstr "̤ÃΤΥ¨¥é¡¼¤Ç¤¹" diff --git a/lib/ebu/po-ebutils/Makefile b/lib/ebu/po-ebutils/Makefile new file mode 100644 index 0000000..6f38800 --- /dev/null +++ b/lib/ebu/po-ebutils/Makefile @@ -0,0 +1,171 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +## Note that the following macros must be set by your hand. +top_builddir = .. +subdir = po-ebutils + +TEXTDOMAIN = ebuutils +POFILES = ja.po +MOFILES = ja.mo +POTFILES = \ + $(top_srcdir)/libebutils/ebutils.c \ + $(top_srcdir)/libebutils/getopt.c \ + $(top_srcdir)/ebfont/ebfont.c \ + $(top_srcdir)/ebinfo/ebinfo.c \ + $(top_srcdir)/ebrefile/ebrefile.c \ + $(top_srcdir)/ebstopcode/ebstopcode.c \ + $(top_srcdir)/ebzip/copyfile.c \ + $(top_srcdir)/ebzip/ebzip.c \ + $(top_srcdir)/ebzip/ebzip1.c \ + $(top_srcdir)/ebzip/sebxa.c \ + $(top_srcdir)/ebzip/speedup.c \ + $(top_srcdir)/ebzip/unlinkfile.c \ + $(top_srcdir)/ebzip/unzipbook.c \ + $(top_srcdir)/ebzip/unzipfile.c \ + $(top_srcdir)/ebzip/zipbook.c \ + $(top_srcdir)/ebzip/zipfile.c \ + $(top_srcdir)/ebzip/zipinfobook.c \ + $(top_srcdir)/ebzip/zipinfofile.c +## end + +PACKAGE = ebu +VERSION = 4.5-20200413 + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. + +prefix = /usr/local +datarootdir = ${prefix}/share +datadir = ${datarootdir} +localedir = $(datadir)/locale + +mkdir_p = /usr/bin/mkdir -p +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +mkinstalldirs = $(install_sh) -d +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh + +MSGFMT = : +XGETTEXT = : +MSGMERGE = msgmerge + +DISTFILES = Makefile.in $(TEXTDOMAIN).pot $(MOFILES) $(POFILES) + +.SUFFIXES: +.SUFFIXES: .po .pox .mo + +.po.pox: + $(MAKE) $(TEXTDOMAIN).pot + $(MSGMERGE) $< $(srcdir)/$(TEXTDOMAIN).pot -o $*.pox + +.po.mo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.mo \ + && rm -f $$file && $(MSGFMT) -o $$file $< + +all: all-yes + +all-yes: $(MOFILES) +all-no: + +$(TEXTDOMAIN).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(TEXTDOMAIN) --add-comments \ + --keyword=_ --keyword=N_ $(POTFILES) \ + && test ! -f $(TEXTDOMAIN).po \ + || ( rm -f $(srcdir)/$(TEXTDOMAIN).pot \ + && mv $(TEXTDOMAIN).po $(srcdir)/$(TEXTDOMAIN).pot ) + +install: install-exec install-data +install-exec: +install-data: install-data-yes +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(TEXTDOMAIN).mo; \ + echo "installing $$cat as" \ + "$(DESTDIR)$$dir/$(TEXTDOMAIN).mo"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat \ + $(DESTDIR)$$dir/$(TEXTDOMAIN).mo; \ + echo "installing $(srcdir)/$$cat as" \ + "$(DESTDIR)$$dir/$(TEXTDOMAIN).mo"; \ + fi; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(TEXTDOMAIN).mo; \ + done + rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in + +check: all + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(TEXTDOMAIN).po *.old.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f *.mo + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(TEXTDOMAIN).pot + cd $(srcdir); \ + catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(TEXTDOMAIN).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +Makefile: Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/po-ebutils/Makefile.in b/lib/ebu/po-ebutils/Makefile.in new file mode 100644 index 0000000..56acde2 --- /dev/null +++ b/lib/ebu/po-ebutils/Makefile.in @@ -0,0 +1,171 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +## Note that the following macros must be set by your hand. +top_builddir = .. +subdir = po-ebutils + +TEXTDOMAIN = ebuutils +POFILES = ja.po +MOFILES = ja.mo +POTFILES = \ + $(top_srcdir)/libebutils/ebutils.c \ + $(top_srcdir)/libebutils/getopt.c \ + $(top_srcdir)/ebfont/ebfont.c \ + $(top_srcdir)/ebinfo/ebinfo.c \ + $(top_srcdir)/ebrefile/ebrefile.c \ + $(top_srcdir)/ebstopcode/ebstopcode.c \ + $(top_srcdir)/ebzip/copyfile.c \ + $(top_srcdir)/ebzip/ebzip.c \ + $(top_srcdir)/ebzip/ebzip1.c \ + $(top_srcdir)/ebzip/sebxa.c \ + $(top_srcdir)/ebzip/speedup.c \ + $(top_srcdir)/ebzip/unlinkfile.c \ + $(top_srcdir)/ebzip/unzipbook.c \ + $(top_srcdir)/ebzip/unzipfile.c \ + $(top_srcdir)/ebzip/zipbook.c \ + $(top_srcdir)/ebzip/zipfile.c \ + $(top_srcdir)/ebzip/zipinfobook.c \ + $(top_srcdir)/ebzip/zipinfofile.c +## end + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ + +mkdir_p = @mkdir_p@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +mkinstalldirs = $(install_sh) -d +install_sh = @install_sh@ + +MSGFMT = @MSGFMT@ +XGETTEXT = @XGETTEXT@ +MSGMERGE = msgmerge + +DISTFILES = Makefile.in $(TEXTDOMAIN).pot $(MOFILES) $(POFILES) + +.SUFFIXES: +.SUFFIXES: .po .pox .mo + +.po.pox: + $(MAKE) $(TEXTDOMAIN).pot + $(MSGMERGE) $< $(srcdir)/$(TEXTDOMAIN).pot -o $*.pox + +.po.mo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.mo \ + && rm -f $$file && $(MSGFMT) -o $$file $< + +all: all-@ENABLE_NLS@ + +all-yes: $(MOFILES) +all-no: + +$(TEXTDOMAIN).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(TEXTDOMAIN) --add-comments \ + --keyword=_ --keyword=N_ $(POTFILES) \ + && test ! -f $(TEXTDOMAIN).po \ + || ( rm -f $(srcdir)/$(TEXTDOMAIN).pot \ + && mv $(TEXTDOMAIN).po $(srcdir)/$(TEXTDOMAIN).pot ) + +install: install-exec install-data +install-exec: +install-data: install-data-@ENABLE_NLS@ +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(TEXTDOMAIN).mo; \ + echo "installing $$cat as" \ + "$(DESTDIR)$$dir/$(TEXTDOMAIN).mo"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat \ + $(DESTDIR)$$dir/$(TEXTDOMAIN).mo; \ + echo "installing $(srcdir)/$$cat as" \ + "$(DESTDIR)$$dir/$(TEXTDOMAIN).mo"; \ + fi; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(TEXTDOMAIN).mo; \ + done + rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in + +check: all + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(TEXTDOMAIN).po *.old.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f *.mo + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(TEXTDOMAIN).pot + cd $(srcdir); \ + catalogs='$(MOFILES)'; \ + for cat in $$catalogs; do \ + cat=`echo $$cat | sed 's/^.*\/\([^\/]*\)$$/\1/'` ; \ + lang=`echo $$cat | sed 's/\.mo$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(TEXTDOMAIN).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +Makefile: Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/po-ebutils/ebuutils.pot b/lib/ebu/po-ebutils/ebuutils.pot new file mode 100644 index 0000000..a01f060 --- /dev/null +++ b/lib/ebu/po-ebutils/ebuutils.pot @@ -0,0 +1,1029 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-04-13 11:53+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../libebutils/ebutils.c:114 +#, c-format +msgid "try `%s --help' for more information\n" +msgstr "" + +#: ../libebutils/ebutils.c:207 +#, c-format +msgid "%s: too many subbooks\n" +msgstr "" + +#: ../libebutils/ebutils.c:228 +#, c-format +msgid "%s: invalid subbook name `%s...'\n" +msgstr "" + +#: ../libebutils/getopt.c:105 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: ../libebutils/getopt.c:107 +#, c-format +msgid "%s: option `%.*s' requires an argument\n" +msgstr "" + +#: ../libebutils/getopt.c:109 +#, c-format +msgid "%s: option `--%.*s' is ambiguous\n" +msgstr "" + +#: ../libebutils/getopt.c:111 +#, c-format +msgid "%s: option `--%.*s' doesn't allow an argument\n" +msgstr "" + +#: ../libebutils/getopt.c:113 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: ../libebutils/getopt.c:115 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#: ../libebutils/getopt.c:117 +#, c-format +msgid "%s: unrecognized option `--%.*s'\n" +msgstr "" + +#: ../ebfont/ebfont.c:311 +#: ../ebfont/ebfont.c:320 +#: ../ebrefile/ebrefile.c:225 +#: ../ebrefile/ebrefile.c:233 +#: ../ebzip/ebzip.c:286 +#: ../ebzip/ebzip.c:296 +#, c-format +msgid "%s: too long output directory path\n" +msgstr "" + +#: ../ebfont/ebfont.c:354 +#: ../ebinfo/ebinfo.c:176 +#: ../ebrefile/ebrefile.c:265 +#: ../ebstopcode/ebstopcode.c:261 +#: ../ebzip/ebzip.c:390 +#, c-format +msgid "%s: too many arguments\n" +msgstr "" + +#: ../ebfont/ebfont.c:402 +#: ../ebzip/unzipbook.c:93 +#: ../ebzip/zipbook.c:94 +#: ../ebzip/zipinfobook.c:95 +#, c-format +msgid "%s: unknown subbook name `%s'\n" +msgstr "" + +#: ../ebfont/ebfont.c:465 +#, c-format +msgid "%s: unknown font height `%s...'\n" +msgstr "" + +#: ../ebfont/ebfont.c:482 +#, c-format +msgid "%s: unknown font height `%s'\n" +msgstr "" + +#: ../ebfont/ebfont.c:543 +#, c-format +msgid "%s: unknown image format name `%s...'\n" +msgstr "" + +#: ../ebfont/ebfont.c:556 +#, c-format +msgid "%s: unknown image format name `%s'\n" +msgstr "" + +#: ../ebfont/ebfont.c:593 +#: ../ebinfo/ebinfo.c:616 +#: ../ebrefile/ebrefile.c:332 +#: ../ebzip/ebzip.c:567 +#, c-format +msgid "Usage: %s [option...] [book-directory]\n" +msgstr "" + +#: ../ebfont/ebfont.c:594 +#: ../ebinfo/ebinfo.c:618 +#: ../ebrefile/ebrefile.c:333 +#: ../ebstopcode/ebstopcode.c:451 +#: ../ebzip/ebzip.c:568 +#, c-format +msgid "Options:\n" +msgstr "" + +#: ../ebfont/ebfont.c:595 +#, c-format +msgid " -d --debug --verbose degug mode\n" +msgstr "" + +#: ../ebfont/ebfont.c:596 +#, c-format +msgid " -f HEIGHT[,HEIGHT...] --font-height HEIGHT[,HEIGHT...]\n" +msgstr "" + +#: ../ebfont/ebfont.c:597 +#, c-format +msgid "" +" generate fonts with HEIGHT; 16, 24, 30 or 48\n" +msgstr "" + +#: ../ebfont/ebfont.c:598 +#: ../ebfont/ebfont.c:604 +#: ../ebfont/ebfont.c:608 +#: ../ebfont/ebfont.c:616 +#: ../ebinfo/ebinfo.c:625 +#: ../ebrefile/ebrefile.c:337 +#: ../ebrefile/ebrefile.c:345 +#: ../ebstopcode/ebstopcode.c:465 +#: ../ebzip/ebzip.c:588 +#: ../ebzip/ebzip.c:606 +#, c-format +msgid " (default: %s)\n" +msgstr "" + +#: ../ebfont/ebfont.c:600 +#: ../ebinfo/ebinfo.c:619 +#: ../ebrefile/ebrefile.c:334 +#: ../ebstopcode/ebstopcode.c:454 +#: ../ebzip/ebzip.c:571 +#, c-format +msgid " -h --help display this help, then exit\n" +msgstr "" + +#: ../ebfont/ebfont.c:601 +#, c-format +msgid " -i FORMAT[,FORMAT...] --image-format FORMAT[,FORMAT...]\n" +msgstr "" + +#: ../ebfont/ebfont.c:602 +#, c-format +msgid " generate fonts as FORMAT;\n" +msgstr "" + +#: ../ebfont/ebfont.c:603 +#, c-format +msgid " xbm, xpm, gif, bmp or png\n" +msgstr "" + +#: ../ebfont/ebfont.c:606 +#: ../ebrefile/ebrefile.c:335 +#: ../ebzip/ebzip.c:586 +#, c-format +msgid " -o DIRECTORY --output-directory DIRECTORY\n" +msgstr "" + +#: ../ebfont/ebfont.c:607 +#, c-format +msgid " output fonts under DIRECTORY\n" +msgstr "" + +#: ../ebfont/ebfont.c:610 +#: ../ebrefile/ebrefile.c:339 +#: ../ebzip/ebzip.c:594 +#, c-format +msgid " -S SUBBOOK[,SUBBOOK...] --subbook SUBBOOK[,SUBBOOK...]\n" +msgstr "" + +#: ../ebfont/ebfont.c:611 +#: ../ebrefile/ebrefile.c:340 +#: ../ebzip/ebzip.c:595 +#, c-format +msgid " target subbook\n" +msgstr "" + +#: ../ebfont/ebfont.c:612 +#: ../ebrefile/ebrefile.c:341 +#: ../ebzip/ebzip.c:596 +#, c-format +msgid " (default: all subbooks)\n" +msgstr "" + +#: ../ebfont/ebfont.c:613 +#: ../ebinfo/ebinfo.c:622 +#: ../ebrefile/ebrefile.c:342 +#: ../ebstopcode/ebstopcode.c:462 +#: ../ebzip/ebzip.c:599 +#, c-format +msgid " -v --version display version number, then exit\n" +msgstr "" + +#: ../ebfont/ebfont.c:614 +#: ../ebinfo/ebinfo.c:623 +#: ../ebrefile/ebrefile.c:343 +#: ../ebstopcode/ebstopcode.c:463 +#: ../ebzip/ebzip.c:604 +#, c-format +msgid "" +"\n" +"Argument:\n" +msgstr "" + +#: ../ebfont/ebfont.c:615 +#: ../ebinfo/ebinfo.c:624 +#: ../ebrefile/ebrefile.c:344 +#: ../ebstopcode/ebstopcode.c:464 +#: ../ebzip/ebzip.c:605 +#, c-format +msgid " book-directory top directory of a CD-ROM book\n" +msgstr "" + +#: ../ebfont/ebfont.c:618 +#: ../ebinfo/ebinfo.c:627 +#: ../ebrefile/ebrefile.c:348 +#: ../ebstopcode/ebstopcode.c:467 +#: ../ebzip/ebzip.c:613 +#, c-format +msgid "" +"\n" +"Report bugs to %s.\n" +msgstr "" + +#: ../ebfont/ebfont.c:1034 +#: ../ebrefile/ebrefile.c:465 +#: ../ebrefile/ebrefile.c:481 +#: ../ebrefile/ebrefile.c:696 +#: ../ebrefile/ebrefile.c:709 +#: ../ebzip/copyfile.c:148 +#: ../ebzip/copyfile.c:172 +#: ../ebzip/sebxa.c:69 +#: ../ebzip/sebxa.c:211 +#: ../ebzip/zipfile.c:219 +#, c-format +msgid "%s: failed to open the file, %s: %s\n" +msgstr "" + +#: ../ebfont/ebfont.c:1039 +#: ../ebfont/ebfont.c:1044 +#: ../ebrefile/ebrefile.c:736 +#: ../ebzip/copyfile.c:209 +#: ../ebzip/unzipfile.c:287 +#: ../ebzip/zipfile.c:471 +#: ../ebzip/zipfile.c:544 +#, c-format +msgid "%s: failed to write to the file, %s: %s\n" +msgstr "" + +#: ../ebfont/ebfont.c:1057 +#, c-format +msgid "%s: failed to close the file, %s: %s\n" +msgstr "" + +#: ../ebinfo/ebinfo.c:239 +msgid "Name" +msgstr "" + +#: ../ebinfo/ebinfo.c:239 +msgid "Title" +msgstr "" + +#: ../ebinfo/ebinfo.c:322 +#, c-format +msgid "disc type: " +msgstr "" + +#: ../ebinfo/ebinfo.c:337 +#, c-format +msgid "character code: " +msgstr "" + +#: ../ebinfo/ebinfo.c:352 +#, c-format +msgid "unknown\n" +msgstr "" + +#: ../ebinfo/ebinfo.c:365 +#, c-format +msgid "" +"the number of subbooks: %d\n" +"\n" +msgstr "" + +#: ../ebinfo/ebinfo.c:371 +#, c-format +msgid "subbook %d:\n" +msgstr "" + +#: ../ebinfo/ebinfo.c:381 +msgid " title: " +msgstr "" + +#: ../ebinfo/ebinfo.c:393 +#, c-format +msgid " directory: %s\n" +msgstr "" + +#. +#. * Output supported methods. +#. +#: ../ebinfo/ebinfo.c:408 +#, c-format +msgid " search methods: " +msgstr "" + +#: ../ebinfo/ebinfo.c:410 +msgid "word " +msgstr "" + +#: ../ebinfo/ebinfo.c:412 +msgid "endword " +msgstr "" + +#: ../ebinfo/ebinfo.c:414 +msgid "keyword " +msgstr "" + +#: ../ebinfo/ebinfo.c:416 +msgid "cross " +msgstr "" + +#: ../ebinfo/ebinfo.c:418 +msgid "multi " +msgstr "" + +#: ../ebinfo/ebinfo.c:420 +msgid "menu " +msgstr "" + +#: ../ebinfo/ebinfo.c:422 +msgid "image-menu " +msgstr "" + +#: ../ebinfo/ebinfo.c:424 +msgid "copyright " +msgstr "" + +#: ../ebinfo/ebinfo.c:426 +msgid "color-chart " +msgstr "" + +#. +#. * Output a font list. +#. +#: ../ebinfo/ebinfo.c:432 +msgid " font sizes: " +msgstr "" + +#. +#. * Output character range of the narrow font. +#. +#: ../ebinfo/ebinfo.c:454 +msgid " narrow font characters: " +msgstr "" + +#. +#. * Output character range of the wide font. +#. +#: ../ebinfo/ebinfo.c:482 +#, c-format +msgid " wide font characters: " +msgstr "" + +#: ../ebinfo/ebinfo.c:565 +#, c-format +msgid " multi search %d:\n" +msgstr "" + +#: ../ebinfo/ebinfo.c:579 +msgid " title: " +msgstr "" + +#: ../ebinfo/ebinfo.c:592 +#, c-format +msgid " label %d: " +msgstr "" + +#: ../ebinfo/ebinfo.c:596 +msgid " candidates: " +msgstr "" + +#: ../ebinfo/ebinfo.c:598 +msgid "exist\n" +msgstr "" + +#: ../ebinfo/ebinfo.c:600 +msgid "not-exist\n" +msgstr "" + +#: ../ebinfo/ebinfo.c:620 +#, c-format +msgid "" +" -l --book-list output a list of books on an EBENT server\n" +msgstr "" + +#: ../ebinfo/ebinfo.c:621 +#, c-format +msgid " -m --multi-search also output multi-search information\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:287 +#, c-format +msgid "%s: too long book directory path\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:336 +#: ../ebzip/ebzip.c:587 +#, c-format +msgid " ouput files under DIRECTORY\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:381 +#, c-format +msgid "%s: no catalog file: %s\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:420 +#, c-format +msgid "%s: failed to move the file, %s: %s -> %s\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:490 +#: ../ebrefile/ebrefile.c:511 +#: ../ebrefile/ebrefile.c:559 +#: ../ebrefile/ebrefile.c:599 +#: ../ebzip/sebxa.c:90 +#: ../ebzip/sebxa.c:232 +#, c-format +msgid "%s: failed to read the file, %s: %s\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:497 +#: ../ebrefile/ebrefile.c:545 +#: ../ebrefile/ebrefile.c:566 +#: ../ebrefile/ebrefile.c:604 +#: ../ebrefile/ebrefile.c:620 +#: ../ebrefile/ebrefile.c:642 +#: ../ebzip/sebxa.c:142 +#, c-format +msgid "%s: failed to write the file, %s: %s\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:584 +#, c-format +msgid "%s: warning: no such subbook: %s\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:637 +#: ../ebzip/sebxa.c:78 +#: ../ebzip/sebxa.c:130 +#: ../ebzip/sebxa.c:220 +#: ../ebzip/zipfile.c:390 +#: ../ebzip/zipfile.c:465 +#: ../ebzip/zipfile.c:538 +#, c-format +msgid "%s: failed to seek the file, %s: %s\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:686 +#: ../ebzip/copyfile.c:74 +#: ../ebzip/unzipfile.c:130 +#: ../ebzip/zipfile.c:115 +#, c-format +msgid "%s: no such file: %s\n" +msgstr "" + +#: ../ebrefile/ebrefile.c:727 +#: ../ebzip/copyfile.c:191 +#, c-format +msgid "%s: failed to read from the file, %s: %s\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:256 +#, c-format +msgid "%s: too few argument\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:345 +#, c-format +msgid "%s: invalid stop code `%s'\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:380 +#, c-format +msgid "%s: invalid text length `%s'\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:437 +#, c-format +msgid "%s: invalid text position `%s'\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:449 +#, c-format +msgid "Usage: %s [option...] [book-directory] subbook\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:452 +#, c-format +msgid " -c CODE, --code CODE\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:453 +#, c-format +msgid " set stop code manually\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:455 +#, c-format +msgid " -l LENGTH, --text-length LENGTH\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:456 +#, c-format +msgid " maximum length of output text\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:457 +#: ../ebzip/ebzip.c:577 +#: ../ebzip/ebzip.c:582 +#, c-format +msgid " (default: %d)\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:459 +#, c-format +msgid " -n --no-candidates suppress stop code candidates\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:460 +#, c-format +msgid " -p PAGE:OFFSET, --text-position PAGE:OFFSET\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:461 +#, c-format +msgid " start position of text\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:503 +#, c-format +msgid "%s: failed to bind the book, %s: %s\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:522 +#, c-format +msgid "%s: failed to set the current subbook, %s\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:557 +#, c-format +msgid "%s: failed to get text information, %s\n" +msgstr "" + +#: ../ebstopcode/ebstopcode.c:587 +#, c-format +msgid "%s: failed to read text, %s\n" +msgstr "" + +#: ../ebzip/copyfile.c:65 +#, c-format +msgid "==> copy %s <==\n" +msgstr "" + +#: ../ebzip/copyfile.c:66 +#: ../ebzip/unzipfile.c:122 +#: ../ebzip/zipfile.c:107 +#, c-format +msgid "output to %s\n" +msgstr "" + +#: ../ebzip/copyfile.c:85 +#: ../ebzip/unzipfile.c:141 +#: ../ebzip/zipfile.c:126 +#, c-format +msgid "" +"the input and output files are the same, skipped.\n" +"\n" +msgstr "" + +#: ../ebzip/copyfile.c:96 +#: ../ebzip/copyfile.c:244 +#: ../ebzip/sebxa.c:152 +#: ../ebzip/unzipfile.c:323 +#: ../ebzip/zipfile.c:557 +#, c-format +msgid "completed (%llu / %llu bytes)\n" +msgstr "" + +#: ../ebzip/copyfile.c:100 +#: ../ebzip/copyfile.c:248 +#: ../ebzip/sebxa.c:156 +#: ../ebzip/unzipfile.c:327 +#: ../ebzip/zipfile.c:572 +msgid "completed (%I64u / %I64u bytes)\n" +msgstr "" + +#: ../ebzip/copyfile.c:104 +#: ../ebzip/copyfile.c:252 +#: ../ebzip/sebxa.c:160 +#: ../ebzip/zipfile.c:586 +#, c-format +msgid "completed (%lu / %lu bytes)\n" +msgstr "" + +#: ../ebzip/copyfile.c:120 +#: ../ebzip/unzipfile.c:164 +#: ../ebzip/zipfile.c:155 +msgid "" +"already exists, skip the file\n" +"\n" +msgstr "" + +#: ../ebzip/copyfile.c:128 +#: ../ebzip/unzipfile.c:171 +#: ../ebzip/zipfile.c:162 +#, c-format +msgid "" +"\n" +"the file already exists: %s\n" +msgstr "" + +#: ../ebzip/copyfile.c:130 +#: ../ebzip/unzipfile.c:173 +#: ../ebzip/zipfile.c:164 +msgid "do you wish to overwrite (y or n)? " +msgstr "" + +#: ../ebzip/copyfile.c:137 +#: ../ebzip/unzipfile.c:180 +#: ../ebzip/zipfile.c:171 +#, c-format +msgid "%s: failed to unlink the file: %s\n" +msgstr "" + +#: ../ebzip/copyfile.c:195 +#: ../ebzip/copyfile.c:200 +#: ../ebzip/sebxa.c:94 +#: ../ebzip/sebxa.c:236 +#: ../ebzip/unzipfile.c:261 +#: ../ebzip/unzipfile.c:266 +#: ../ebzip/zipfile.c:319 +#: ../ebzip/zipfile.c:324 +#, c-format +msgid "%s: unexpected EOF: %s\n" +msgstr "" + +#: ../ebzip/copyfile.c:220 +#: ../ebzip/unzipfile.c:299 +#: ../ebzip/zipfile.c:484 +#, c-format +msgid "%4.1f%% done (%llu / %llu bytes)\n" +msgstr "" + +#: ../ebzip/copyfile.c:225 +#: ../ebzip/unzipfile.c:304 +#: ../ebzip/zipfile.c:489 +msgid "%4.1f%% done (%I64u / %I64u bytes)\n" +msgstr "" + +#: ../ebzip/copyfile.c:230 +#: ../ebzip/unzipfile.c:309 +#: ../ebzip/zipfile.c:494 +#, c-format +msgid "%4.1f%% done (%lu / %lu bytes)\n" +msgstr "" + +#: ../ebzip/copyfile.c:341 +#: ../ebzip/unzipbook.c:172 +#: ../ebzip/unzipbook.c:290 +#: ../ebzip/unzipbook.c:302 +#: ../ebzip/unzipbook.c:379 +#: ../ebzip/zipbook.c:174 +#: ../ebzip/zipbook.c:296 +#: ../ebzip/zipbook.c:308 +#: ../ebzip/zipbook.c:387 +#, c-format +msgid "%s: failed to create a directory, %s: %s\n" +msgstr "" + +#: ../ebzip/copyfile.c:351 +#, c-format +msgid "%s: failed to open the directory, %s: %s\n" +msgstr "" + +#: ../ebzip/ebzip.c:358 +#, c-format +msgid "%s: invalid overwrite mode: %s\n" +msgstr "" + +#: ../ebzip/ebzip.c:463 +#, c-format +msgid "%s: invalid compression level `%s'\n" +msgstr "" + +#: ../ebzip/ebzip.c:489 +#, c-format +msgid "%s: invalid slice number `%s'\n" +msgstr "" + +#: ../ebzip/ebzip.c:531 +#: ../ebzip/ebzip.c:550 +#, c-format +msgid "%s: invalid content name `%s'\n" +msgstr "" + +#: ../ebzip/ebzip.c:569 +#, c-format +msgid " -f --force-overwrite set overwrite mode to `force'\n" +msgstr "" + +#: ../ebzip/ebzip.c:570 +#, c-format +msgid " (same as `--overwrite force')\n" +msgstr "" + +#: ../ebzip/ebzip.c:572 +#, c-format +msgid " -i --information list information of compressed files\n" +msgstr "" + +#: ../ebzip/ebzip.c:573 +#, c-format +msgid " -k --keep don't delete original files\n" +msgstr "" + +#: ../ebzip/ebzip.c:574 +#, c-format +msgid " -l INTEGER --level INTEGER\n" +msgstr "" + +#: ../ebzip/ebzip.c:575 +#, c-format +msgid " compression level; 0..%d\n" +msgstr "" + +#: ../ebzip/ebzip.c:579 +#, c-format +msgid " -r INTEGER --slice-number INTEGER\n" +msgstr "" + +#: ../ebzip/ebzip.c:580 +#, c-format +msgid "" +" set a number of slices to load at a time; 1.." +"%d\n" +msgstr "" + +#: ../ebzip/ebzip.c:584 +#, c-format +msgid " -n --no-overwrite set overwrite mode to `no'\n" +msgstr "" + +#: ../ebzip/ebzip.c:585 +#, c-format +msgid " (same as `--overwrite no')\n" +msgstr "" + +#: ../ebzip/ebzip.c:590 +#, c-format +msgid " -q --quiet --silence suppress all warnings\n" +msgstr "" + +#: ../ebzip/ebzip.c:591 +#, c-format +msgid " -s TYPE[,TYPE] --skip-content TYPE[,TYPE...]\n" +msgstr "" + +#: ../ebzip/ebzip.c:592 +#, c-format +msgid "" +" skip content; font, graphic, sound or movie\n" +msgstr "" + +#: ../ebzip/ebzip.c:593 +#, c-format +msgid " (default: none is skipped)\n" +msgstr "" + +#: ../ebzip/ebzip.c:597 +#, c-format +msgid " -t --test only check for input files\n" +msgstr "" + +#: ../ebzip/ebzip.c:598 +#, c-format +msgid " -u --uncompress uncompress files\n" +msgstr "" + +#: ../ebzip/ebzip.c:600 +#, c-format +msgid " -w MODE --overwrite MODE set overwrite mode of output files;\n" +msgstr "" + +#: ../ebzip/ebzip.c:601 +#, c-format +msgid " confirm, force or no\n" +msgstr "" + +#: ../ebzip/ebzip.c:602 +#, c-format +msgid " (default: confirm)\n" +msgstr "" + +#: ../ebzip/ebzip.c:603 +#, c-format +msgid " -z --compress compress files\n" +msgstr "" + +#: ../ebzip/ebzip.c:609 +#, c-format +msgid "" +"\n" +"Default action:\n" +msgstr "" + +#: ../ebzip/ebzip.c:610 +#, c-format +msgid " When invoked as `ebuunzip', uncompression is the default action.\n" +msgstr "" + +#: ../ebzip/ebzip.c:611 +#, c-format +msgid "" +" When invoked as `ebuzipinfo', listing information is the default action.\n" +msgstr "" + +#: ../ebzip/ebzip.c:612 +#, c-format +msgid " Otherwise, compression is the default action.\n" +msgstr "" + +#: ../ebzip/sebxa.c:60 +#, c-format +msgid "==> rewrite %s <==\n" +msgstr "" + +#: ../ebzip/speedup.c:79 +#: ../ebzip/unzipfile.c:190 +#: ../ebzip/unzipfile.c:228 +#: ../ebzip/zipfile.c:181 +#: ../ebzip/zipinfofile.c:104 +#, c-format +msgid "%s: failed to open the file: %s\n" +msgstr "" + +#: ../ebzip/speedup.c:85 +#: ../ebzip/speedup.c:90 +#: ../ebzip/speedup.c:120 +#: ../ebzip/speedup.c:125 +#, c-format +msgid "%s: failed to read the file: %s\n" +msgstr "" + +#: ../ebzip/unlinkfile.c:39 +#, c-format +msgid "%s: warning: memory exhausted, file %s is not to be unlinked\n" +msgstr "" + +#: ../ebzip/unlinkfile.c:56 +#, c-format +msgid "%s: warning: failed to unlink the file: %s\n" +msgstr "" + +#: ../ebzip/unzipfile.c:121 +#, c-format +msgid "==> uncompress %s <==\n" +msgstr "" + +#: ../ebzip/unzipfile.c:152 +#: ../ebzip/zipfile.c:138 +#: ../ebzip/zipfile.c:368 +#, c-format +msgid "%s: memory exhausted\n" +msgstr "" + +#: ../ebzip/unzipfile.c:251 +#: ../ebzip/zipfile.c:308 +#, c-format +msgid "%s: failed to seek the file: %s\n" +msgstr "" + +#: ../ebzip/unzipfile.c:257 +#: ../ebzip/zipfile.c:315 +#, c-format +msgid "%s: failed to read from the file: %s\n" +msgstr "" + +#: ../ebzip/unzipfile.c:331 +#: ../ebzip/zipfile.c:595 +#, c-format +msgid "" +"%lu -> %lu bytes\n" +"\n" +msgstr "" + +#: ../ebzip/unzipfile.c:365 +#, c-format +msgid "%s: CRC error: %s\n" +msgstr "" + +#: ../ebzip/zipfile.c:106 +#, c-format +msgid "==> compress %s <==\n" +msgstr "" + +#: ../ebzip/zipfile.c:275 +#: ../ebzip/zipfile.c:282 +#: ../ebzip/zipfile.c:397 +#, c-format +msgid "%s: failed to write to the file: %s\n" +msgstr "" + +#: ../ebzip/zipfile.c:561 +#, c-format +msgid "" +"%llu -> %llu bytes (%4.1f%%)\n" +"\n" +msgstr "" + +#: ../ebzip/zipfile.c:567 +#, c-format +msgid "" +"%llu -> %llu bytes\n" +"\n" +msgstr "" + +#: ../ebzip/zipfile.c:576 +msgid "" +"%I64u -> %I64u bytes (%4.1f%%)\n" +"\n" +msgstr "" + +#: ../ebzip/zipfile.c:581 +msgid "" +"%I64u -> %I64u bytes\n" +"\n" +msgstr "" + +#: ../ebzip/zipfile.c:590 +#, c-format +msgid "" +"%lu -> %lu bytes (%4.1f%%)\n" +"\n" +msgstr "" + +#: ../ebzip/zipinfofile.c:132 +#, c-format +msgid "%llu bytes (not compressed)\n" +msgstr "" + +#: ../ebzip/zipinfofile.c:135 +msgid "%I64u bytes (not compressed)\n" +msgstr "" + +#: ../ebzip/zipinfofile.c:138 +#, c-format +msgid "%lu bytes (not compressed)\n" +msgstr "" + +#: ../ebzip/zipinfofile.c:143 +#, c-format +msgid "%llu -> %llu bytes " +msgstr "" + +#: ../ebzip/zipinfofile.c:147 +msgid "%I64u -> %I64u bytes " +msgstr "" + +#: ../ebzip/zipinfofile.c:151 +#, c-format +msgid "%lu -> %lu bytes " +msgstr "" + +#: ../ebzip/zipinfofile.c:156 +msgid "(empty original file, " +msgstr "" + +#: ../ebzip/zipinfofile.c:162 +#, c-format +msgid "ebzip level %d compression)\n" +msgstr "" + +#: ../ebzip/zipinfofile.c:164 +#, c-format +msgid "S-EBXA compression)\n" +msgstr "" + +#: ../ebzip/zipinfofile.c:166 +#, c-format +msgid "EPWING compression)\n" +msgstr "" diff --git a/lib/ebu/po-ebutils/ja.mo b/lib/ebu/po-ebutils/ja.mo new file mode 100644 index 0000000000000000000000000000000000000000..3e5622e752aafaa3ba271b481fae96bce5058c95 GIT binary patch literal 16011 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 literal 0 HcmV?d00001 diff --git a/lib/ebu/po-ebutils/ja.po b/lib/ebu/po-ebutils/ja.po new file mode 100644 index 0000000..af22774 --- /dev/null +++ b/lib/ebu/po-ebutils/ja.po @@ -0,0 +1,954 @@ +# +# Copyright (C) 2004-2006 Motoyuki Kasahara +# +# +msgid "" +msgstr "" +"Project-Id-Version: ebutils 4.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-04-13 11:53+0900\n" +"PO-Revision-Date: 2001-03-18 23:28+0900\n" +"Last-Translator: Motoyuki Kasahara \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../libebutils/ebutils.c:114 +#, c-format +msgid "try `%s --help' for more information\n" +msgstr "`%s --help' ¤Ç¤è¤ê¾Ü¤·¤¤¾ðÊó¤¬ÆÀ¤é¤ì¤Þ¤¹\n" + +#: ../libebutils/ebutils.c:207 +#, c-format +msgid "%s: too many subbooks\n" +msgstr "%s: ÉûËܤοô¤¬Â¿¤¹¤®¤Þ¤¹\n" + +#: ../libebutils/ebutils.c:228 +#, c-format +msgid "%s: invalid subbook name `%s...'\n" +msgstr "%s: `%s...' ¤È¤¤¤¦ÉûËܤÎ̾¾Î¤¬ÉÔÀµ¤Ç¤¹\n" + +#: ../libebutils/getopt.c:105 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹ -- %c\n" + +#: ../libebutils/getopt.c:107 +#, c-format +msgid "%s: option `%.*s' requires an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó `%.*s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹\n" + +#: ../libebutils/getopt.c:109 +#, c-format +msgid "%s: option `--%.*s' is ambiguous\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó `--%.*s' ¤ÏÛ£Ëæ¤Ç¤¹\n" + +#: ../libebutils/getopt.c:111 +#, c-format +msgid "%s: option `--%.*s' doesn't allow an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó `--%.*s' ¤Ï°ú¿ô¤ò»ý¤Æ¤Þ¤»¤ó\n" + +#: ../libebutils/getopt.c:113 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó¤Ç¤¹ -- %c\n" + +#: ../libebutils/getopt.c:115 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó¤Ç¤¹ -- %c\n" + +#: ../libebutils/getopt.c:117 +#, c-format +msgid "%s: unrecognized option `--%.*s'\n" +msgstr "%s: `--%.*s' ¤Ï̤ÃΤΥª¥×¥·¥ç¥ó¤Ç¤¹\n" + +#: ../ebfont/ebfont.c:311 ../ebfont/ebfont.c:320 ../ebrefile/ebrefile.c:225 +#: ../ebrefile/ebrefile.c:233 ../ebzip/ebzip.c:286 ../ebzip/ebzip.c:296 +#, c-format +msgid "%s: too long output directory path\n" +msgstr "%s: ½ÐÎÏÀè¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹Ì¾¤¬Ä¹¤¹¤®¤Þ¤¹\n" + +#: ../ebfont/ebfont.c:354 ../ebinfo/ebinfo.c:176 ../ebrefile/ebrefile.c:265 +#: ../ebstopcode/ebstopcode.c:261 ../ebzip/ebzip.c:390 +#, c-format +msgid "%s: too many arguments\n" +msgstr "%s: °ú¿ô¤¬Â¿¤¹¤®¤Þ¤¹\n" + +#: ../ebfont/ebfont.c:402 ../ebzip/unzipbook.c:93 ../ebzip/zipbook.c:94 +#: ../ebzip/zipinfobook.c:95 +#, c-format +msgid "%s: unknown subbook name `%s'\n" +msgstr "%s: `%s' ¤Ï̤ÃΤÎÉûËÜ̾¤Ç¤¹\n" + +#: ../ebfont/ebfont.c:465 +#, c-format +msgid "%s: unknown font height `%s...'\n" +msgstr "%s: `%s...' ¤Ï̤ÃΤι⤵¤Î¥Õ¥©¥ó¥È¤Ç¤¹\n" + +#: ../ebfont/ebfont.c:482 +#, c-format +msgid "%s: unknown font height `%s'\n" +msgstr "%s: `%s' ¤Ï̤ÃΤι⤵¤Î¥Õ¥©¥ó¥È¤Ç¤¹\n" + +#: ../ebfont/ebfont.c:543 +#, c-format +msgid "%s: unknown image format name `%s...'\n" +msgstr "%s: `%s...' ¤Ï̤ÃΤβèÁü·Á¼°Ì¾¤Ç¤¹\n" + +#: ../ebfont/ebfont.c:556 +#, c-format +msgid "%s: unknown image format name `%s'\n" +msgstr "%s: `%s' ¤Ï̤ÃΤβèÁü·Á¼°Ì¾¤Ç¤¹\n" + +#: ../ebfont/ebfont.c:593 ../ebinfo/ebinfo.c:616 ../ebrefile/ebrefile.c:332 +#: ../ebzip/ebzip.c:567 +#, c-format +msgid "Usage: %s [option...] [book-directory]\n" +msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó...] [½ñÀҤΥǥ£¥ì¥¯¥È¥ê]\n" + +#: ../ebfont/ebfont.c:594 ../ebinfo/ebinfo.c:618 ../ebrefile/ebrefile.c:333 +#: ../ebstopcode/ebstopcode.c:451 ../ebzip/ebzip.c:568 +#, c-format +msgid "Options:\n" +msgstr "¥ª¥×¥·¥ç¥ó:\n" + +#: ../ebfont/ebfont.c:595 +#, c-format +msgid " -d --debug --verbose degug mode\n" +msgstr " -d --debug --verbose ¥Ç¥Ð¥Ã¥°¥â¡¼¥É\n" + +#: ../ebfont/ebfont.c:596 +#, c-format +msgid " -f HEIGHT[,HEIGHT...] --font-height HEIGHT[,HEIGHT...]\n" +msgstr " -f ¹â¤µ[,¹â¤µ...] --font-height ¹â¤µ[,¹â¤µ...]\n" + +#: ../ebfont/ebfont.c:597 +#, c-format +msgid "" +" generate fonts with HEIGHT; 16, 24, 30 or 48\n" +msgstr "" +" ¡Ö¹â¤µ¡×¤Î¥Õ¥©¥ó¥È¤òÀ¸À®\n" +" ¹â¤µ¤Ï 16, 24, 30, 48 ¤Î¤¤¤º¤ì¤«\n" + +#: ../ebfont/ebfont.c:598 ../ebfont/ebfont.c:604 ../ebfont/ebfont.c:608 +#: ../ebfont/ebfont.c:616 ../ebinfo/ebinfo.c:625 ../ebrefile/ebrefile.c:337 +#: ../ebrefile/ebrefile.c:345 ../ebstopcode/ebstopcode.c:465 +#: ../ebzip/ebzip.c:588 ../ebzip/ebzip.c:606 +#, c-format +msgid " (default: %s)\n" +msgstr " (¾Êά»þ: %s)\n" + +#: ../ebfont/ebfont.c:600 ../ebinfo/ebinfo.c:619 ../ebrefile/ebrefile.c:334 +#: ../ebstopcode/ebstopcode.c:454 ../ebzip/ebzip.c:571 +#, c-format +msgid " -h --help display this help, then exit\n" +msgstr " -h --help ¤³¤Î¥Ø¥ë¥×¤òɽ¼¨¤·¤Æ½ªÎ»\n" + +#: ../ebfont/ebfont.c:601 +#, c-format +msgid " -i FORMAT[,FORMAT...] --image-format FORMAT[,FORMAT...]\n" +msgstr " -i ²èÁü·Á¼°[,²èÁü·Á¼°...] --image-format ²èÁü·Á¼°[,²èÁü·Á¼°...]\n" + +#: ../ebfont/ebfont.c:602 +#, c-format +msgid " generate fonts as FORMAT;\n" +msgstr " ¡Ö²èÁü·Á¼°¡×¤Î¥Õ¥©¥ó¥È¤òÀ¸À®\n" + +#: ../ebfont/ebfont.c:603 +#, c-format +msgid " xbm, xpm, gif, bmp or png\n" +msgstr " xbm, xpm, gif, bmp, png ¤Î¤¤¤º¤ì¤«\n" + +#: ../ebfont/ebfont.c:606 ../ebrefile/ebrefile.c:335 ../ebzip/ebzip.c:586 +#, c-format +msgid " -o DIRECTORY --output-directory DIRECTORY\n" +msgstr " -o ¥Ç¥£¥ì¥¯¥È¥ê --output-directory ¥Ç¥£¥ì¥¯¥È¥ê\n" + +#: ../ebfont/ebfont.c:607 +#, c-format +msgid " output fonts under DIRECTORY\n" +msgstr " ¥Õ¥©¥ó¥È¤ò¡Ö¥Ç¥£¥ì¥¯¥È¥ê¡×¤Î²¼¤ËÀ¸À®\n" + +#: ../ebfont/ebfont.c:610 ../ebrefile/ebrefile.c:339 ../ebzip/ebzip.c:594 +#, c-format +msgid " -S SUBBOOK[,SUBBOOK...] --subbook SUBBOOK[,SUBBOOK...]\n" +msgstr " -S ÉûËÜ[,ÉûËÜ...] --subbook ÉûËÜ[,ÉûËÜ...]\n" + +#: ../ebfont/ebfont.c:611 ../ebrefile/ebrefile.c:340 ../ebzip/ebzip.c:595 +#, c-format +msgid " target subbook\n" +msgstr " ½èÍýÂоݤÎÉûËÜ\n" + +#: ../ebfont/ebfont.c:612 ../ebrefile/ebrefile.c:341 ../ebzip/ebzip.c:596 +#, c-format +msgid " (default: all subbooks)\n" +msgstr " (¾Êά»þ: ¤¹¤Ù¤Æ¤ÎÉûËÜ)\n" + +#: ../ebfont/ebfont.c:613 ../ebinfo/ebinfo.c:622 ../ebrefile/ebrefile.c:342 +#: ../ebstopcode/ebstopcode.c:462 ../ebzip/ebzip.c:599 +#, c-format +msgid " -v --version display version number, then exit\n" +msgstr " -v --version ¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤·¤Æ½ªÎ»\n" + +#: ../ebfont/ebfont.c:614 ../ebinfo/ebinfo.c:623 ../ebrefile/ebrefile.c:343 +#: ../ebstopcode/ebstopcode.c:463 ../ebzip/ebzip.c:604 +#, c-format +msgid "" +"\n" +"Argument:\n" +msgstr "" +"\n" +"°ú¿ô:\n" + +#: ../ebfont/ebfont.c:615 ../ebinfo/ebinfo.c:624 ../ebrefile/ebrefile.c:344 +#: ../ebstopcode/ebstopcode.c:464 ../ebzip/ebzip.c:605 +#, c-format +msgid " book-directory top directory of a CD-ROM book\n" +msgstr " ½ñÀҤΥǥ£¥ì¥¯¥È¥ê CD-ROM ½ñÀҤΥȥåץǥ£¥ì¥¯¥È¥ê\n" + +#: ../ebfont/ebfont.c:618 ../ebinfo/ebinfo.c:627 ../ebrefile/ebrefile.c:348 +#: ../ebstopcode/ebstopcode.c:467 ../ebzip/ebzip.c:613 +#, c-format +msgid "" +"\n" +"Report bugs to %s.\n" +msgstr "" +"\n" +"¥Ð¥°¤Ï %s ¤ËÊó¹ð¤·¤Æ²¼¤µ¤¤\n" + +#: ../ebfont/ebfont.c:1034 ../ebrefile/ebrefile.c:465 +#: ../ebrefile/ebrefile.c:481 ../ebrefile/ebrefile.c:696 +#: ../ebrefile/ebrefile.c:709 ../ebzip/copyfile.c:148 ../ebzip/copyfile.c:172 +#: ../ebzip/sebxa.c:69 ../ebzip/sebxa.c:211 ../ebzip/zipfile.c:219 +#, c-format +msgid "%s: failed to open the file, %s: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebfont/ebfont.c:1039 ../ebfont/ebfont.c:1044 ../ebrefile/ebrefile.c:736 +#: ../ebzip/copyfile.c:209 ../ebzip/unzipfile.c:287 ../ebzip/zipfile.c:471 +#: ../ebzip/zipfile.c:544 +#, c-format +msgid "%s: failed to write to the file, %s: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤Ø½ñ¤­¹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebfont/ebfont.c:1057 +#, c-format +msgid "%s: failed to close the file, %s: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤òÊĤ¸¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebinfo/ebinfo.c:239 +msgid "Name" +msgstr "̾Á°" + +#: ../ebinfo/ebinfo.c:239 +msgid "Title" +msgstr "Âê̾" + +#: ../ebinfo/ebinfo.c:322 +#, c-format +msgid "disc type: " +msgstr "¥Ç¥£¥¹¥¯¤Î·Á¼°: " + +#: ../ebinfo/ebinfo.c:337 +#, c-format +msgid "character code: " +msgstr "ʸ»ú¥³¡¼¥É: " + +#: ../ebinfo/ebinfo.c:352 +#, c-format +msgid "unknown\n" +msgstr "̤ÃÎ\n" + +#: ../ebinfo/ebinfo.c:365 +#, c-format +msgid "" +"the number of subbooks: %d\n" +"\n" +msgstr "" +"ÉûËܤοô: %d\n" +"\n" + +#: ../ebinfo/ebinfo.c:371 +#, c-format +msgid "subbook %d:\n" +msgstr "ÉûËÜ %d:\n" + +#: ../ebinfo/ebinfo.c:381 +msgid " title: " +msgstr " Âê̾: " + +#: ../ebinfo/ebinfo.c:393 +#, c-format +msgid " directory: %s\n" +msgstr " ¥Ç¥£¥ì¥¯¥È¥ê: %s\n" + +#. +#. * Output supported methods. +#. +#: ../ebinfo/ebinfo.c:408 +#, c-format +msgid " search methods: " +msgstr " ¸¡º÷Êý¼°: " + +#: ../ebinfo/ebinfo.c:410 +msgid "word " +msgstr "Á°Êý°ìÃ× " + +#: ../ebinfo/ebinfo.c:412 +msgid "endword " +msgstr "¸åÊý°ìÃ× " + +#: ../ebinfo/ebinfo.c:414 +msgid "keyword " +msgstr "¾ò·ï " + +#: ../ebinfo/ebinfo.c:416 +msgid "cross " +msgstr "¥¯¥í¥¹ " + +#: ../ebinfo/ebinfo.c:418 +msgid "multi " +msgstr "Ê£¹ç " + +#: ../ebinfo/ebinfo.c:420 +msgid "menu " +msgstr "¥á¥Ë¥å¡¼ " + +#: ../ebinfo/ebinfo.c:422 +msgid "image-menu " +msgstr "²èÁü¥á¥Ë¥å¡¼ " + +#: ../ebinfo/ebinfo.c:424 +msgid "copyright " +msgstr "Ãøºî¸¢É½¼¨ " + +#: ../ebinfo/ebinfo.c:426 +msgid "color-chart " +msgstr "¿§¸«ËÜ " + +#. +#. * Output a font list. +#. +#: ../ebinfo/ebinfo.c:432 +msgid " font sizes: " +msgstr " ¥Õ¥©¥ó¥È¤ÎÂ礭¤µ: " + +#. +#. * Output character range of the narrow font. +#. +#: ../ebinfo/ebinfo.c:454 +msgid " narrow font characters: " +msgstr " Ⱦ³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: " + +#. +#. * Output character range of the wide font. +#. +#: ../ebinfo/ebinfo.c:482 +#, c-format +msgid " wide font characters: " +msgstr " Á´³Ñ¥Õ¥©¥ó¥È¤Îʸ»ú: " + +#: ../ebinfo/ebinfo.c:565 +#, c-format +msgid " multi search %d:\n" +msgstr " Ê£¹ç¸¡º÷ %d:\n" + +#: ../ebinfo/ebinfo.c:579 +msgid " title: " +msgstr " Âê̾: " + +#: ../ebinfo/ebinfo.c:592 +#, c-format +msgid " label %d: " +msgstr " ¥é¥Ù¥ë %d: " + +#: ../ebinfo/ebinfo.c:596 +msgid " candidates: " +msgstr " ¸õÊä: " + +#: ../ebinfo/ebinfo.c:598 +msgid "exist\n" +msgstr "Í­\n" + +#: ../ebinfo/ebinfo.c:600 +msgid "not-exist\n" +msgstr "̵\n" + +#: ../ebinfo/ebinfo.c:620 +#, c-format +msgid "" +" -l --book-list output a list of books on an EBENT server\n" +msgstr " -l --book-list EBNET ¥µ¡¼¥Ð¾å¤Î½ñÀҥꥹ¥È¤ò½ÐÎÏ\n" + +#: ../ebinfo/ebinfo.c:621 +#, c-format +msgid " -m --multi-search also output multi-search information\n" +msgstr " -m --multi-search Ê£¹ç¸¡º÷¤Î¾ðÊó¤â½ÐÎÏ\n" + +#: ../ebrefile/ebrefile.c:287 +#, c-format +msgid "%s: too long book directory path\n" +msgstr "%s: ½ñÀҤΥǥ£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹Ì¾¤¬Ä¹¤¹¤®¤Þ¤¹\n" + +#: ../ebrefile/ebrefile.c:336 ../ebzip/ebzip.c:587 +#, c-format +msgid " ouput files under DIRECTORY\n" +msgstr " ¥Õ¥¡¥¤¥ë¤ò¡Ö¥Ç¥£¥ì¥¯¥È¥ê¡×¤Ë½ÐÎϤ¹¤ë\n" + +#: ../ebrefile/ebrefile.c:381 +#, c-format +msgid "%s: no catalog file: %s\n" +msgstr "%s: ¥«¥¿¥í¥°¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó: %s\n" + +#: ../ebrefile/ebrefile.c:420 +#, c-format +msgid "%s: failed to move the file, %s: %s -> %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤ò°ÜÆ°¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s -> %s\n" + +#: ../ebrefile/ebrefile.c:490 ../ebrefile/ebrefile.c:511 +#: ../ebrefile/ebrefile.c:559 ../ebrefile/ebrefile.c:599 ../ebzip/sebxa.c:90 +#: ../ebzip/sebxa.c:232 +#, c-format +msgid "%s: failed to read the file, %s: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebrefile/ebrefile.c:497 ../ebrefile/ebrefile.c:545 +#: ../ebrefile/ebrefile.c:566 ../ebrefile/ebrefile.c:604 +#: ../ebrefile/ebrefile.c:620 ../ebrefile/ebrefile.c:642 ../ebzip/sebxa.c:142 +#, c-format +msgid "%s: failed to write the file, %s: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤Ø½ñ¤­¹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebrefile/ebrefile.c:584 +#, c-format +msgid "%s: warning: no such subbook: %s\n" +msgstr "%s: ·Ù¹ð: ¤½¤Î¤è¤¦¤ÊÉûËܤϤ¢¤ê¤Þ¤»¤ó: %s\n" + +#: ../ebrefile/ebrefile.c:637 ../ebzip/sebxa.c:78 ../ebzip/sebxa.c:130 +#: ../ebzip/sebxa.c:220 ../ebzip/zipfile.c:390 ../ebzip/zipfile.c:465 +#: ../ebzip/zipfile.c:538 +#, c-format +msgid "%s: failed to seek the file, %s: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤ò¥·¡¼¥¯¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebrefile/ebrefile.c:686 ../ebzip/copyfile.c:74 ../ebzip/unzipfile.c:130 +#: ../ebzip/zipfile.c:115 +#, c-format +msgid "%s: no such file: %s\n" +msgstr "%s: ¤½¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤Ï¤¢¤ê¤Þ¤»¤ó: %s\n" + +#: ../ebrefile/ebrefile.c:727 ../ebzip/copyfile.c:191 +#, c-format +msgid "%s: failed to read from the file, %s: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebstopcode/ebstopcode.c:256 +#, c-format +msgid "%s: too few argument\n" +msgstr "%s: °ú¿ô¤¬¾¯¤Ê¤¹¤®¤Þ¤¹\n" + +#: ../ebstopcode/ebstopcode.c:345 +#, c-format +msgid "%s: invalid stop code `%s'\n" +msgstr "%s: `%s' ¤È¤¤¤¦¶èÀڤꥳ¡¼¥É¤Î»ØÄê¤ÏÉÔÀµ¤Ç¤¹\n" + +#: ../ebstopcode/ebstopcode.c:380 +#, c-format +msgid "%s: invalid text length `%s'\n" +msgstr "%s: `%s' ¤È¤¤¤¦Ä¹¤µ¤Î»ØÄê¤ÏÉÔÀµ¤Ç¤¹\n" + +#: ../ebstopcode/ebstopcode.c:437 +#, c-format +msgid "%s: invalid text position `%s'\n" +msgstr "%s: `%s' ¤È¤¤¤¦ËÜʸ¤Î°ÌÃÖ»ØÄê¤ÏÉÔÀµ¤Ç¤¹\n" + +#: ../ebstopcode/ebstopcode.c:449 +#, c-format +msgid "Usage: %s [option...] [book-directory] subbook\n" +msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó...] [½ñÀҤΥǥ£¥ì¥¯¥È¥ê] ÉûËÜ\n" + +#: ../ebstopcode/ebstopcode.c:452 +#, c-format +msgid " -c CODE, --code CODE\n" +msgstr " -c ¥³¡¼¥É, --code ¥³¡¼¥É\n" + +#: ../ebstopcode/ebstopcode.c:453 +#, c-format +msgid " set stop code manually\n" +msgstr " ¶èÀڤꥳ¡¼¥É¤ò»ØÄꤹ¤ë\n" + +#: ../ebstopcode/ebstopcode.c:455 +#, c-format +msgid " -l LENGTH, --text-length LENGTH\n" +msgstr " -l Ťµ, --text-length Ťµ\n" + +#: ../ebstopcode/ebstopcode.c:456 +#, c-format +msgid " maximum length of output text\n" +msgstr " ½ÐÎϤ¹¤ëËÜʸ¤ÎºÇÂçĹ\n" + +#: ../ebstopcode/ebstopcode.c:457 ../ebzip/ebzip.c:577 ../ebzip/ebzip.c:582 +#, c-format +msgid " (default: %d)\n" +msgstr " (¾Êά»þ: %d)\n" + +#: ../ebstopcode/ebstopcode.c:459 +#, c-format +msgid " -n --no-candidates suppress stop code candidates\n" +msgstr " -n --no-candidates ¶èÀڤꥳ¡¼¥É¤Î¸õÊä¤ò½ÐÎϤ·¤Ê¤¤\n" + +#: ../ebstopcode/ebstopcode.c:460 +#, c-format +msgid " -p PAGE:OFFSET, --text-position PAGE:OFFSET\n" +msgstr " -p ¥Ú¡¼¥¸:¥ª¥Õ¥»¥Ã¥È, --text-position ¥Ú¡¼¥¸:¥ª¥Õ¥»¥Ã¥È\n" + +#: ../ebstopcode/ebstopcode.c:461 +#, c-format +msgid " start position of text\n" +msgstr " ËÜʸ¤Î³«»Ï°ÌÃÖ\n" + +#: ../ebstopcode/ebstopcode.c:503 +#, c-format +msgid "%s: failed to bind the book, %s: %s\n" +msgstr "%s: ½ñÀÒ¤ÏÍøÍѤǤ­¤Þ¤»¤ó, %s: %s\n" + +#: ../ebstopcode/ebstopcode.c:522 +#, c-format +msgid "%s: failed to set the current subbook, %s\n" +msgstr "%s: ÉûËܤòÁªÂò¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebstopcode/ebstopcode.c:557 +#, c-format +msgid "%s: failed to get text information, %s\n" +msgstr "%s: ËÜʸ¤Ë´Ø¤¹¤ë¾ðÊó¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebstopcode/ebstopcode.c:587 +#, c-format +msgid "%s: failed to read text, %s\n" +msgstr "%s: ËÜʸ¤òÆɤ߹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebzip/copyfile.c:65 +#, c-format +msgid "==> copy %s <==\n" +msgstr "==> %s ¤ò¥³¥Ô¡¼ <==\n" + +#: ../ebzip/copyfile.c:66 ../ebzip/unzipfile.c:122 ../ebzip/zipfile.c:107 +#, c-format +msgid "output to %s\n" +msgstr "%s ¤Ë½ÐÎÏ\n" + +#: ../ebzip/copyfile.c:85 ../ebzip/unzipfile.c:141 ../ebzip/zipfile.c:126 +#, c-format +msgid "" +"the input and output files are the same, skipped.\n" +"\n" +msgstr "" +"ÆþÎϤȽÐÎÏ¥Õ¥¡¥¤¥ë¤¬Æ±°ì¤Ê¤Î¤Ç¡¢½èÍý¤·¤Þ¤»¤ó\n" +"\n" + +#: ../ebzip/copyfile.c:96 ../ebzip/copyfile.c:244 ../ebzip/sebxa.c:152 +#: ../ebzip/unzipfile.c:323 ../ebzip/zipfile.c:557 +#, c-format +msgid "completed (%llu / %llu bytes)\n" +msgstr "´°Î» (%llu / %llu ¥Ð¥¤¥È)\n" + +#: ../ebzip/copyfile.c:100 ../ebzip/copyfile.c:248 ../ebzip/sebxa.c:156 +#: ../ebzip/unzipfile.c:327 ../ebzip/zipfile.c:572 +msgid "completed (%I64u / %I64u bytes)\n" +msgstr "´°Î» (%I64u / %I64u ¥Ð¥¤¥È)\n" + +#: ../ebzip/copyfile.c:104 ../ebzip/copyfile.c:252 ../ebzip/sebxa.c:160 +#: ../ebzip/zipfile.c:586 +#, c-format +msgid "completed (%lu / %lu bytes)\n" +msgstr "´°Î» (%lu / %lu ¥Ð¥¤¥È)\n" + +#: ../ebzip/copyfile.c:120 ../ebzip/unzipfile.c:164 ../ebzip/zipfile.c:155 +msgid "" +"already exists, skip the file\n" +"\n" +msgstr "" +"¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¤¹¤Ç¤Ë¸ºß¤¹¤ë¤Î¤Ç¡¢½èÍý¤·¤Þ¤»¤ó\n" +"\n" + +#: ../ebzip/copyfile.c:128 ../ebzip/unzipfile.c:171 ../ebzip/zipfile.c:162 +#, c-format +msgid "" +"\n" +"the file already exists: %s\n" +msgstr "" +"\n" +"¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹: %s\n" + +#: ../ebzip/copyfile.c:130 ../ebzip/unzipfile.c:173 ../ebzip/zipfile.c:164 +msgid "do you wish to overwrite (y or n)? " +msgstr "¾å½ñ¤­¤·¤Þ¤¹¤« (¤Ï¤¤:y, ¤¤¤¤¤¨:n)? " + +#: ../ebzip/copyfile.c:137 ../ebzip/unzipfile.c:180 ../ebzip/zipfile.c:171 +#, c-format +msgid "%s: failed to unlink the file: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤òºï½ü¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: %s\n" + +#: ../ebzip/copyfile.c:195 ../ebzip/copyfile.c:200 ../ebzip/sebxa.c:94 +#: ../ebzip/sebxa.c:236 ../ebzip/unzipfile.c:261 ../ebzip/unzipfile.c:266 +#: ../ebzip/zipfile.c:319 ../ebzip/zipfile.c:324 +#, c-format +msgid "%s: unexpected EOF: %s\n" +msgstr "%s: ͽ´ü¤»¤Ì EOF ¤òÆɤ߹þ¤ß¤Þ¤·¤¿: %s\n" + +#: ../ebzip/copyfile.c:220 ../ebzip/unzipfile.c:299 ../ebzip/zipfile.c:484 +#, c-format +msgid "%4.1f%% done (%llu / %llu bytes)\n" +msgstr "%4.1f%% ½èÍýºÑ¤ß (%llu / %llu ¥Ð¥¤¥È)\n" + +#: ../ebzip/copyfile.c:225 ../ebzip/unzipfile.c:304 ../ebzip/zipfile.c:489 +msgid "%4.1f%% done (%I64u / %I64u bytes)\n" +msgstr "%4.1f%% ½èÍýºÑ¤ß (%I64u / %I64u ¥Ð¥¤¥È)\n" + +#: ../ebzip/copyfile.c:230 ../ebzip/unzipfile.c:309 ../ebzip/zipfile.c:494 +#, c-format +msgid "%4.1f%% done (%lu / %lu bytes)\n" +msgstr "%4.1f%% ½èÍýºÑ¤ß (%lu / %lu ¥Ð¥¤¥È)\n" + +#: ../ebzip/copyfile.c:341 ../ebzip/unzipbook.c:172 ../ebzip/unzipbook.c:290 +#: ../ebzip/unzipbook.c:302 ../ebzip/unzipbook.c:379 ../ebzip/zipbook.c:174 +#: ../ebzip/zipbook.c:296 ../ebzip/zipbook.c:308 ../ebzip/zipbook.c:387 +#, c-format +msgid "%s: failed to create a directory, %s: %s\n" +msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebzip/copyfile.c:351 +#, c-format +msgid "%s: failed to open the directory, %s: %s\n" +msgstr "%s: ¥Ç¥£¥ì¥¯¥È¥ê¤ò³«¤±¤Þ¤»¤ó¤Ç¤·¤¿, %s: %s\n" + +#: ../ebzip/ebzip.c:358 +#, c-format +msgid "%s: invalid overwrite mode: %s\n" +msgstr "%s: `%s' ¤È¤¤¤¦¾å½ñ¤­¥â¡¼¥É¤ÏÉÔÀµ¤Ç¤¹\n" + +#: ../ebzip/ebzip.c:463 +#, c-format +msgid "%s: invalid compression level `%s'\n" +msgstr "%s: `%s' ¤ÏÉÔÀµ¤Ê°µ½Ì¥ì¥Ù¥ë¤Ç¤¹\n" + +#: ../ebzip/ebzip.c:489 +#, c-format +msgid "%s: invalid slice number `%s'\n" +msgstr "%s: `%s' ¤ÏÉÔÀµ¤ÊÃͤǤ¹\n" + +#: ../ebzip/ebzip.c:531 ../ebzip/ebzip.c:550 +#, c-format +msgid "%s: invalid content name `%s'\n" +msgstr "%s: `%s' ¤È¤¤¤¦¥Ç¡¼¥¿·¿¤Î̾¾Î¤ÏÉÔÀµ¤Ç¤¹\n" + +#: ../ebzip/ebzip.c:569 +#, c-format +msgid " -f --force-overwrite set overwrite mode to `force'\n" +msgstr " -f --force-overwrite ¾å½ñ¤­¥â¡¼¥É¤ò `force' ¤Ë¥»¥Ã¥È¤¹¤ë\n" + +#: ../ebzip/ebzip.c:570 +#, c-format +msgid " (same as `--overwrite force')\n" +msgstr " (`--overwrite force' ¤ÈÅù²Á)\n" + +#: ../ebzip/ebzip.c:572 +#, c-format +msgid " -i --information list information of compressed files\n" +msgstr " -i --information °µ½Ì¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¾ðÊó¤ò½ÐÎÏ\n" + +#: ../ebzip/ebzip.c:573 +#, c-format +msgid " -k --keep don't delete original files\n" +msgstr " -k --keep ¸µ¤Î¥Õ¥¡¥¤¥ë¤ò¾Ãµî¤·¤Ê¤¤\n" + +#: ../ebzip/ebzip.c:574 +#, c-format +msgid " -l INTEGER --level INTEGER\n" +msgstr " -l À°¿ô --level À°¿ô\n" + +#: ../ebzip/ebzip.c:575 +#, c-format +msgid " compression level; 0..%d\n" +msgstr " °µ½Ì¥ì¥Ù¥ë; 0..%d\n" + +#: ../ebzip/ebzip.c:579 +#, c-format +msgid " -r INTEGER --slice-number INTEGER\n" +msgstr " -l À°¿ô --slice-number À°¿ô\n" + +#: ../ebzip/ebzip.c:580 +#, c-format +msgid "" +" set a number of slices to load at a time; 1.." +"%d\n" +msgstr " ¥¹¥é¥¤¥¹¤Î¡¢¥á¥â¥ê¤Ø¤ÎƱ»þÆɤ߹þ¤ß¿ô\n" + +#: ../ebzip/ebzip.c:584 +#, c-format +msgid " -n --no-overwrite set overwrite mode to `no'\n" +msgstr " -n --no-overwrite ¾å½ñ¤­¥â¡¼¥É¤ò `no' ¤Ë¥»¥Ã¥È¤¹¤ë\n" + +#: ../ebzip/ebzip.c:585 +#, c-format +msgid " (same as `--overwrite no')\n" +msgstr " (`--overwrite no' ¤ÈÅù²Á)\n" + +#: ../ebzip/ebzip.c:590 +#, c-format +msgid " -q --quiet --silence suppress all warnings\n" +msgstr " -q --quiet --silence ·Ù¹ð¤òÍÞÀ©¤¹¤ë\n" + +#: ../ebzip/ebzip.c:591 +#, c-format +msgid " -s TYPE[,TYPE] --skip-content TYPE[,TYPE...]\n" +msgstr " -s ·¿[,·¿...] --skip-content ·¿[,·¿...]\n" + +#: ../ebzip/ebzip.c:592 +#, c-format +msgid "" +" skip content; font, graphic, sound or movie\n" +msgstr "" +" ½ü³°¤¹¤ë¥Ç¡¼¥¿\n" +" ·¿¤Ï font, graphic, sound, movie ¤Î¤¤¤º¤ì¤«\n" + +#: ../ebzip/ebzip.c:593 +#, c-format +msgid " (default: none is skipped)\n" +msgstr " (¾Êά»þ: ½ü³°¤Ê¤·)\n" + +#: ../ebzip/ebzip.c:597 +#, c-format +msgid " -t --test only check for input files\n" +msgstr " -t --test ÆþÎÏ¥Õ¥¡¥¤¥ë¤Î¥Á¥§¥Ã¥¯¤À¤±¤ò¹Ô¤¦\n" + +#: ../ebzip/ebzip.c:598 +#, c-format +msgid " -u --uncompress uncompress files\n" +msgstr " -u --uncompress ¥Õ¥¡¥¤¥ë¤ò¿­Ä¹\n" + +#: ../ebzip/ebzip.c:600 +#, c-format +msgid " -w MODE --overwrite MODE set overwrite mode of output files;\n" +msgstr "" +" -w ¥â¡¼¥É --overwrite ¥â¡¼¥É\n" +" ½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­¥â¡¼¥É¤ò»ØÄꤹ¤ë¡£\n" + +#: ../ebzip/ebzip.c:601 +#, c-format +msgid " confirm, force or no\n" +msgstr "" +" ¥â¡¼¥É¤Ï confirm (³Îǧ)¡¢force (¶¯À©¼Â¹Ô)¡¢\n" +" no (¾å½ñ¤­¤·¤Ê¤¤) ¤Î¤¤¤º¤ì¤«\n" + +#: ../ebzip/ebzip.c:602 +#, c-format +msgid " (default: confirm)\n" +msgstr " (¾Êά»þ: confirm)\n" + +#: ../ebzip/ebzip.c:603 +#, c-format +msgid " -z --compress compress files\n" +msgstr " -z --compress ¥Õ¥¡¥¤¥ë¤ò°µ½Ì\n" + +#: ../ebzip/ebzip.c:609 +#, c-format +msgid "" +"\n" +"Default action:\n" +msgstr "" +"\n" +"¾Êά»þ¤ÎÆ°ºî:\n" + +#: ../ebzip/ebzip.c:610 +#, c-format +msgid " When invoked as `ebuunzip', uncompression is the default action.\n" +msgstr " `ebuunzip' ¤È¤·¤Æµ¯Æ°¤µ¤ì¤¿¤È¤­¤Ï¡¢¾Êά»þ¤ÎÆ°ºî¤Ï¿­Ä¹¤Ë¤Ê¤ë¡£\n" + +#: ../ebzip/ebzip.c:611 +#, c-format +msgid "" +" When invoked as `ebuzipinfo', listing information is the default action.\n" +msgstr "" +" `ebuzipinfo' ¤È¤·¤Æµ¯Æ°¤µ¤ì¤¿¤È¤­¤Ï¡¢¾Êά»þ¤ÎÆ°ºî¤Ï¾ðÊó¤Î½ÐÎϤˤʤ롣\n" + +#: ../ebzip/ebzip.c:612 +#, c-format +msgid " Otherwise, compression is the default action.\n" +msgstr " ¤½¤ì°Ê³°¤Î¤È¤­¤Ï¡¢°µ½Ì¤¬¾Êά»þ¤ÎÆ°ºî¤Ë¤Ê¤ë¡£\n" + +#: ../ebzip/sebxa.c:60 +#, c-format +msgid "==> rewrite %s <==\n" +msgstr "==> %s ¤ò½ñ¤­´¹¤¨ <==\n" + +#: ../ebzip/speedup.c:79 ../ebzip/unzipfile.c:190 ../ebzip/unzipfile.c:228 +#: ../ebzip/zipfile.c:181 ../ebzip/zipinfofile.c:104 +#, c-format +msgid "%s: failed to open the file: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó¤Ç¤·¤¿: %s\n" + +#: ../ebzip/speedup.c:85 ../ebzip/speedup.c:90 ../ebzip/speedup.c:120 +#: ../ebzip/speedup.c:125 +#, c-format +msgid "%s: failed to read the file: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿: %s\n" + +#: ../ebzip/unlinkfile.c:39 +#, c-format +msgid "%s: warning: memory exhausted, file %s is not to be unlinked\n" +msgstr "" + +#: ../ebzip/unlinkfile.c:56 +#, c-format +msgid "%s: warning: failed to unlink the file: %s\n" +msgstr "%s: ·Ù¹ð: ¥Õ¥¡¥¤¥ë¤òºï½ü¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: %s\n" + +#: ../ebzip/unzipfile.c:121 +#, c-format +msgid "==> uncompress %s <==\n" +msgstr "==> %s ¤ò¿­Ä¹ <==\n" + +#: ../ebzip/unzipfile.c:152 ../ebzip/zipfile.c:138 ../ebzip/zipfile.c:368 +#, c-format +msgid "%s: memory exhausted\n" +msgstr "%s: ¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿\n" + +#: ../ebzip/unzipfile.c:251 ../ebzip/zipfile.c:308 +#, c-format +msgid "%s: failed to seek the file: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤ò¥·¡¼¥¯¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿: %s\n" + +#: ../ebzip/unzipfile.c:257 ../ebzip/zipfile.c:315 +#, c-format +msgid "%s: failed to read from the file: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿: %s\n" + +#: ../ebzip/unzipfile.c:331 ../ebzip/zipfile.c:595 +#, c-format +msgid "" +"%lu -> %lu bytes\n" +"\n" +msgstr "" +"%lu -> %lu ¥Ð¥¤¥È\n" +"\n" + +#: ../ebzip/unzipfile.c:365 +#, c-format +msgid "%s: CRC error: %s\n" +msgstr "%s: CRC ¥¨¥é¡¼: %s\n" + +#: ../ebzip/zipfile.c:106 +#, c-format +msgid "==> compress %s <==\n" +msgstr "==> %s ¤ò°µ½Ì <==\n" + +#: ../ebzip/zipfile.c:275 ../ebzip/zipfile.c:282 ../ebzip/zipfile.c:397 +#, c-format +msgid "%s: failed to write to the file: %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¤Ë½ñ¤­¹þ¤á¤Þ¤»¤ó¤Ç¤·¤¿: %s\n" + +#: ../ebzip/zipfile.c:561 +#, c-format +msgid "" +"%llu -> %llu bytes (%4.1f%%)\n" +"\n" +msgstr "" +"%llu -> %llu ¥Ð¥¤¥È (%4.1f%%)\n" +"\n" + +#: ../ebzip/zipfile.c:567 +#, c-format +msgid "" +"%llu -> %llu bytes\n" +"\n" +msgstr "" +"%llu -> %llu ¥Ð¥¤¥È\n" +"\n" + +#: ../ebzip/zipfile.c:576 +msgid "" +"%I64u -> %I64u bytes (%4.1f%%)\n" +"\n" +msgstr "" +"%I64u -> %I64u ¥Ð¥¤¥È (%4.1f%%)\n" +"\n" + +#: ../ebzip/zipfile.c:581 +msgid "" +"%I64u -> %I64u bytes\n" +"\n" +msgstr "" +"%I64u -> %I64u ¥Ð¥¤¥È\n" +"\n" + +#: ../ebzip/zipfile.c:590 +#, c-format +msgid "" +"%lu -> %lu bytes (%4.1f%%)\n" +"\n" +msgstr "" +"%lu -> %lu ¥Ð¥¤¥È (%4.1f%%)\n" +"\n" + +#: ../ebzip/zipinfofile.c:132 +#, c-format +msgid "%llu bytes (not compressed)\n" +msgstr "%llu ¥Ð¥¤¥È (Èó°µ½Ì)\n" + +#: ../ebzip/zipinfofile.c:135 +msgid "%I64u bytes (not compressed)\n" +msgstr "%I64u ¥Ð¥¤¥È (Èó°µ½Ì)\n" + +#: ../ebzip/zipinfofile.c:138 +#, c-format +msgid "%lu bytes (not compressed)\n" +msgstr "%lu ¥Ð¥¤¥È (Èó°µ½Ì)\n" + +#: ../ebzip/zipinfofile.c:143 +#, c-format +msgid "%llu -> %llu bytes " +msgstr "%llu -> %llu ¥Ð¥¤¥È " + +#: ../ebzip/zipinfofile.c:147 +msgid "%I64u -> %I64u bytes " +msgstr "%I64u -> %I64u ¥Ð¥¤¥È " + +#: ../ebzip/zipinfofile.c:151 +#, c-format +msgid "%lu -> %lu bytes " +msgstr "%lu -> %lu ¥Ð¥¤¥È " + +#: ../ebzip/zipinfofile.c:156 +msgid "(empty original file, " +msgstr "(¤â¤È¤Î¥Õ¥¡¥¤¥ë¤Ï¶õ, " + +#: ../ebzip/zipinfofile.c:162 +#, c-format +msgid "ebzip level %d compression)\n" +msgstr "ebzip °µ½Ì¥ì¥Ù¥ë %d)\n" + +#: ../ebzip/zipinfofile.c:164 +#, c-format +msgid "S-EBXA compression)\n" +msgstr "S-EBXA °µ½Ì)\n" + +#: ../ebzip/zipinfofile.c:166 +#, c-format +msgid "EPWING compression)\n" +msgstr "EPWING °µ½Ì)\n" + +#~ msgid "" +#~ " When invoked as `ebunzip.exe', uncompression is the default action.\n" +#~ msgstr "" +#~ " `ebunzip.exe' ¤È¤·¤Æµ¯Æ°¤µ¤ì¤¿¤È¤­¤Ï¡¢¾Êά»þ¤ÎÆ°ºî¤Ï¿­Ä¹¤Ë¤Ê¤ë¡£\n" + +#~ msgid "" +#~ " When invoked as `ebzipinf.exe', listing information is the default " +#~ "action.\n" +#~ msgstr "" +#~ " `ebunzipinf.exe' ¤È¤·¤Æµ¯Æ°¤µ¤ì¤¿¤È¤­¤Ï¡¢¾Êά»þ¤ÎÆ°ºî¤Ï¾ðÊó¤Î½ÐÎϤˤÊ" +#~ "¤ë¡£\n" diff --git a/lib/ebu/samples/.deps/appendix.Po b/lib/ebu/samples/.deps/appendix.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/lib/ebu/samples/.deps/appendix.Po @@ -0,0 +1 @@ +# dummy diff --git a/lib/ebu/samples/.deps/booklist.Po b/lib/ebu/samples/.deps/booklist.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/lib/ebu/samples/.deps/booklist.Po @@ -0,0 +1 @@ +# dummy diff --git a/lib/ebu/samples/.deps/disctype.Po b/lib/ebu/samples/.deps/disctype.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/lib/ebu/samples/.deps/disctype.Po @@ -0,0 +1 @@ +# dummy diff --git a/lib/ebu/samples/.deps/font.Po b/lib/ebu/samples/.deps/font.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/lib/ebu/samples/.deps/font.Po @@ -0,0 +1 @@ +# dummy diff --git a/lib/ebu/samples/.deps/initexit.Po b/lib/ebu/samples/.deps/initexit.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/lib/ebu/samples/.deps/initexit.Po @@ -0,0 +1 @@ +# dummy diff --git a/lib/ebu/samples/.deps/subbook.Po b/lib/ebu/samples/.deps/subbook.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/lib/ebu/samples/.deps/subbook.Po @@ -0,0 +1 @@ +# dummy diff --git a/lib/ebu/samples/.deps/text.Po b/lib/ebu/samples/.deps/text.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/lib/ebu/samples/.deps/text.Po @@ -0,0 +1 @@ +# dummy diff --git a/lib/ebu/samples/.deps/word.Po b/lib/ebu/samples/.deps/word.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/lib/ebu/samples/.deps/word.Po @@ -0,0 +1 @@ +# dummy diff --git a/lib/ebu/samples/Makefile b/lib/ebu/samples/Makefile new file mode 100644 index 0000000..8fd9b4f --- /dev/null +++ b/lib/ebu/samples/Makefile @@ -0,0 +1,562 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# samples/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +pkgdatadir = $(datadir)/ebu +pkglibdir = $(libdir)/ebu +pkgincludedir = $(includedir)/ebu +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +noinst_PROGRAMS = initexit$(EXEEXT) disctype$(EXEEXT) subbook$(EXEEXT) \ + word$(EXEEXT) text$(EXEEXT) font$(EXEEXT) appendix$(EXEEXT) \ + booklist$(EXEEXT) +subdir = samples +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_appendix_OBJECTS = appendix.$(OBJEXT) +appendix_OBJECTS = $(am_appendix_OBJECTS) +am__DEPENDENCIES_1 = +am_booklist_OBJECTS = booklist.$(OBJEXT) +booklist_OBJECTS = $(am_booklist_OBJECTS) +am_disctype_OBJECTS = disctype.$(OBJEXT) +disctype_OBJECTS = $(am_disctype_OBJECTS) +am_font_OBJECTS = font.$(OBJEXT) +font_OBJECTS = $(am_font_OBJECTS) +am_initexit_OBJECTS = initexit.$(OBJEXT) +initexit_OBJECTS = $(am_initexit_OBJECTS) +am_subbook_OBJECTS = subbook.$(OBJEXT) +subbook_OBJECTS = $(am_subbook_OBJECTS) +am_text_OBJECTS = text.$(OBJEXT) +text_OBJECTS = $(am_text_OBJECTS) +am_word_OBJECTS = word.$(OBJEXT) +word_OBJECTS = $(am_word_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(appendix_SOURCES) $(booklist_SOURCES) $(disctype_SOURCES) \ + $(font_SOURCES) $(initexit_SOURCES) $(subbook_SOURCES) \ + $(text_SOURCES) $(word_SOURCES) +DIST_SOURCES = $(appendix_SOURCES) $(booklist_SOURCES) \ + $(disctype_SOURCES) $(font_SOURCES) $(initexit_SOURCES) \ + $(subbook_SOURCES) $(text_SOURCES) $(word_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run aclocal-1.10 +AMTAR = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run tar +AR = ar +AUTOCONF = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoconf +AUTOHEADER = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run autoheader +AUTOMAKE = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run automake-1.10 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 -fopenmp +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +EBCONF_EBINCS = -I$(includedir) +EBCONF_EBLIBS = -L$(libdir) -lebu +EBCONF_INTLINCS = +EBCONF_INTLLIBS = +EBCONF_ZLIBINCS = +EBCONF_ZLIBLIBS = -lz +EB_VERSION_MAJOR = 4 +EB_VERSION_MINOR = 5 +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +ENABLE_EBNET = yes +ENABLE_LIBDEFLATE = no +ENABLE_NLS = yes +ENABLE_PTHREAD = no +EXEEXT = +FGREP = /usr/bin/grep -F +GREP = /usr/bin/grep +ICONVINCS = +ICONVLIBS = +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLINCS = +INTLLIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBEB_VERSION_INFO = 17:0:0 +LIBOBJS = +LIBS = -lnsl +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAILING_ADDRESS = kzhr@d1.dion.ne.jp +MAKEINFO = ${SHELL} /mnt/d/files/projects/ebclient/lib/ebu/missing --run makeinfo +MANIFEST_TOOL = : +MKDIR_P = /usr/bin/mkdir -p +MSGFMT = : +MSGMERGE = msgmerge +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OPENMP_CFLAGS = -fopenmp +OTOOL = +OTOOL64 = +PACKAGE = ebu +PACKAGE_BUGREPORT = +PACKAGE_NAME = ebu +PACKAGE_STRING = ebu 4.5-20200413 +PACKAGE_TARNAME = ebu +PACKAGE_URL = +PACKAGE_VERSION = 4.5-20200413 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PTHREAD_CFLAGS = +PTHREAD_CPPFLAGS = +PTHREAD_LDFLAGS = +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 4.5-20200413 +XGETTEXT = : +ZLIBDEPS = +ZLIBINCS = +ZLIBLIBS = -lz +abs_builddir = /mnt/d/files/projects/ebclient/lib/ebu/samples +abs_srcdir = /mnt/d/files/projects/ebclient/lib/ebu/samples +abs_top_builddir = /mnt/d/files/projects/ebclient/lib/ebu +abs_top_srcdir = /mnt/d/files/projects/ebclient/lib/ebu +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = $(SHELL) /mnt/d/files/projects/ebclient/lib/ebu/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = $(datadir)/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +pkgdocdir = ${datadir}/ebu/doc +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +AUTOMAKE_OPTIONS = foreign +LIBEB = ../eb/libeb.la +initexit_SOURCES = initexit.c +initexit_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +initexit_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +disctype_SOURCES = disctype.c +disctype_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +disctype_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +subbook_SOURCES = subbook.c +subbook_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +subbook_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +word_SOURCES = word.c +word_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +word_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +text_SOURCES = text.c +text_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +text_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +font_SOURCES = font.c +font_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +font_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +appendix_SOURCES = appendix.c +appendix_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +appendix_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +booklist_SOURCES = booklist.c +booklist_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +booklist_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +EXTRA_DIST = README +INCLUDES = -I$(srcdir)/.. +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign samples/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign samples/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +appendix$(EXEEXT): $(appendix_OBJECTS) $(appendix_DEPENDENCIES) + @rm -f appendix$(EXEEXT) + $(LINK) $(appendix_OBJECTS) $(appendix_LDADD) $(LIBS) +booklist$(EXEEXT): $(booklist_OBJECTS) $(booklist_DEPENDENCIES) + @rm -f booklist$(EXEEXT) + $(LINK) $(booklist_OBJECTS) $(booklist_LDADD) $(LIBS) +disctype$(EXEEXT): $(disctype_OBJECTS) $(disctype_DEPENDENCIES) + @rm -f disctype$(EXEEXT) + $(LINK) $(disctype_OBJECTS) $(disctype_LDADD) $(LIBS) +font$(EXEEXT): $(font_OBJECTS) $(font_DEPENDENCIES) + @rm -f font$(EXEEXT) + $(LINK) $(font_OBJECTS) $(font_LDADD) $(LIBS) +initexit$(EXEEXT): $(initexit_OBJECTS) $(initexit_DEPENDENCIES) + @rm -f initexit$(EXEEXT) + $(LINK) $(initexit_OBJECTS) $(initexit_LDADD) $(LIBS) +subbook$(EXEEXT): $(subbook_OBJECTS) $(subbook_DEPENDENCIES) + @rm -f subbook$(EXEEXT) + $(LINK) $(subbook_OBJECTS) $(subbook_LDADD) $(LIBS) +text$(EXEEXT): $(text_OBJECTS) $(text_DEPENDENCIES) + @rm -f text$(EXEEXT) + $(LINK) $(text_OBJECTS) $(text_LDADD) $(LIBS) +word$(EXEEXT): $(word_OBJECTS) $(word_DEPENDENCIES) + @rm -f word$(EXEEXT) + $(LINK) $(word_OBJECTS) $(word_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/appendix.Po +include ./$(DEPDIR)/booklist.Po +include ./$(DEPDIR)/disctype.Po +include ./$(DEPDIR)/font.Po +include ./$(DEPDIR)/initexit.Po +include ./$(DEPDIR)/subbook.Po +include ./$(DEPDIR)/text.Po +include ./$(DEPDIR)/word.Po + +.c.o: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/samples/Makefile.am b/lib/ebu/samples/Makefile.am new file mode 100644 index 0000000..6afa573 --- /dev/null +++ b/lib/ebu/samples/Makefile.am @@ -0,0 +1,41 @@ +AUTOMAKE_OPTIONS = foreign + +LIBEB = ../eb/libeb.la + +noinst_PROGRAMS = initexit disctype subbook word text font appendix booklist + +initexit_SOURCES = initexit.c +initexit_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +initexit_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) + +disctype_SOURCES = disctype.c +disctype_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +disctype_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) + +subbook_SOURCES = subbook.c +subbook_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +subbook_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) + +word_SOURCES = word.c +word_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +word_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) + +text_SOURCES = text.c +text_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +text_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) + +font_SOURCES = font.c +font_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +font_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) + +appendix_SOURCES = appendix.c +appendix_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +appendix_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) + +booklist_SOURCES = booklist.c +booklist_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +booklist_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) + +EXTRA_DIST = README + +INCLUDES = -I$(srcdir)/.. diff --git a/lib/ebu/samples/Makefile.in b/lib/ebu/samples/Makefile.in new file mode 100644 index 0000000..7831eec --- /dev/null +++ b/lib/ebu/samples/Makefile.in @@ -0,0 +1,562 @@ +# Makefile.in generated by automake 1.10.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = initexit$(EXEEXT) disctype$(EXEEXT) subbook$(EXEEXT) \ + word$(EXEEXT) text$(EXEEXT) font$(EXEEXT) appendix$(EXEEXT) \ + booklist$(EXEEXT) +subdir = samples +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/in6addr.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/sockaddrin6.m4 \ + $(top_srcdir)/m4/sockinttypes.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_appendix_OBJECTS = appendix.$(OBJEXT) +appendix_OBJECTS = $(am_appendix_OBJECTS) +am__DEPENDENCIES_1 = +am_booklist_OBJECTS = booklist.$(OBJEXT) +booklist_OBJECTS = $(am_booklist_OBJECTS) +am_disctype_OBJECTS = disctype.$(OBJEXT) +disctype_OBJECTS = $(am_disctype_OBJECTS) +am_font_OBJECTS = font.$(OBJEXT) +font_OBJECTS = $(am_font_OBJECTS) +am_initexit_OBJECTS = initexit.$(OBJEXT) +initexit_OBJECTS = $(am_initexit_OBJECTS) +am_subbook_OBJECTS = subbook.$(OBJEXT) +subbook_OBJECTS = $(am_subbook_OBJECTS) +am_text_OBJECTS = text.$(OBJEXT) +text_OBJECTS = $(am_text_OBJECTS) +am_word_OBJECTS = word.$(OBJEXT) +word_OBJECTS = $(am_word_OBJECTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(appendix_SOURCES) $(booklist_SOURCES) $(disctype_SOURCES) \ + $(font_SOURCES) $(initexit_SOURCES) $(subbook_SOURCES) \ + $(text_SOURCES) $(word_SOURCES) +DIST_SOURCES = $(appendix_SOURCES) $(booklist_SOURCES) \ + $(disctype_SOURCES) $(font_SOURCES) $(initexit_SOURCES) \ + $(subbook_SOURCES) $(text_SOURCES) $(word_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +EBCONF_EBINCS = @EBCONF_EBINCS@ +EBCONF_EBLIBS = @EBCONF_EBLIBS@ +EBCONF_INTLINCS = @EBCONF_INTLINCS@ +EBCONF_INTLLIBS = @EBCONF_INTLLIBS@ +EBCONF_ZLIBINCS = @EBCONF_ZLIBINCS@ +EBCONF_ZLIBLIBS = @EBCONF_ZLIBLIBS@ +EB_VERSION_MAJOR = @EB_VERSION_MAJOR@ +EB_VERSION_MINOR = @EB_VERSION_MINOR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_EBNET = @ENABLE_EBNET@ +ENABLE_LIBDEFLATE = @ENABLE_LIBDEFLATE@ +ENABLE_NLS = @ENABLE_NLS@ +ENABLE_PTHREAD = @ENABLE_PTHREAD@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +ICONVINCS = @ICONVINCS@ +ICONVLIBS = @ICONVLIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLINCS = @INTLINCS@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBEB_VERSION_INFO = @LIBEB_VERSION_INFO@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAILING_ADDRESS = @MAILING_ADDRESS@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_CPPFLAGS = @PTHREAD_CPPFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ZLIBDEPS = @ZLIBDEPS@ +ZLIBINCS = @ZLIBINCS@ +ZLIBLIBS = @ZLIBLIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgdocdir = @pkgdocdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign +LIBEB = ../eb/libeb.la +initexit_SOURCES = initexit.c +initexit_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +initexit_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +disctype_SOURCES = disctype.c +disctype_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +disctype_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +subbook_SOURCES = subbook.c +subbook_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +subbook_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +word_SOURCES = word.c +word_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +word_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +text_SOURCES = text.c +text_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +text_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +font_SOURCES = font.c +font_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +font_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +appendix_SOURCES = appendix.c +appendix_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +appendix_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +booklist_SOURCES = booklist.c +booklist_LDADD = $(LIBEB) $(ZLIBLIBS) $(INTLLIBS) +booklist_DEPENDENCIES = $(LIBEB) $(ZLIBDEPS) $(INTLDEPS) +EXTRA_DIST = README +INCLUDES = -I$(srcdir)/.. +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign samples/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign samples/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +appendix$(EXEEXT): $(appendix_OBJECTS) $(appendix_DEPENDENCIES) + @rm -f appendix$(EXEEXT) + $(LINK) $(appendix_OBJECTS) $(appendix_LDADD) $(LIBS) +booklist$(EXEEXT): $(booklist_OBJECTS) $(booklist_DEPENDENCIES) + @rm -f booklist$(EXEEXT) + $(LINK) $(booklist_OBJECTS) $(booklist_LDADD) $(LIBS) +disctype$(EXEEXT): $(disctype_OBJECTS) $(disctype_DEPENDENCIES) + @rm -f disctype$(EXEEXT) + $(LINK) $(disctype_OBJECTS) $(disctype_LDADD) $(LIBS) +font$(EXEEXT): $(font_OBJECTS) $(font_DEPENDENCIES) + @rm -f font$(EXEEXT) + $(LINK) $(font_OBJECTS) $(font_LDADD) $(LIBS) +initexit$(EXEEXT): $(initexit_OBJECTS) $(initexit_DEPENDENCIES) + @rm -f initexit$(EXEEXT) + $(LINK) $(initexit_OBJECTS) $(initexit_LDADD) $(LIBS) +subbook$(EXEEXT): $(subbook_OBJECTS) $(subbook_DEPENDENCIES) + @rm -f subbook$(EXEEXT) + $(LINK) $(subbook_OBJECTS) $(subbook_LDADD) $(LIBS) +text$(EXEEXT): $(text_OBJECTS) $(text_DEPENDENCIES) + @rm -f text$(EXEEXT) + $(LINK) $(text_OBJECTS) $(text_LDADD) $(LIBS) +word$(EXEEXT): $(word_OBJECTS) $(word_DEPENDENCIES) + @rm -f word$(EXEEXT) + $(LINK) $(word_OBJECTS) $(word_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appendix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/booklist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disctype.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/font.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initexit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subbook.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/word.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ebu/samples/README b/lib/ebu/samples/README new file mode 100644 index 0000000..fb969eb --- /dev/null +++ b/lib/ebu/samples/README @@ -0,0 +1,17 @@ +$B$3$N%G%#%l%/%H%j$K$O(B EB $B%i%$%V%i%j$N%5%s%W%k%W%m%0%i%`$,4v$D$+CV$+$l$F(B +$B$$$^$9!#(B + +`configure' $B$r(B `--enable-samples' $B%*%W%7%g%sL5$7$Gl9g$O!" + * Îã: + * font /cdrom 0 + * ÀâÌÀ: + * ¤Ç»ØÄꤷ¤¿ appendix ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢¤½ + * ¤ÎÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¤¹¤Ù¤Æɽ¼¨¤·¤Þ¤¹¡£ + * + * ¤½¤Î appendix ¤¬¡¢È¾³Ñ³°»ú¤ÎÂåÂØʸ»úÎó¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤È¡¢¥¨ + * ¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + * + * ¤Ë¤Ï¡¢ÁàºîÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ + * ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë + * ¤Ê¤ê¤Þ¤¹¡£ + */ +#include +#include + +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + EB_Appendix app; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + int subbook_count; + int subbook_index; + int alt_start; + char text[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; + int i; + + /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/ + if (argc != 3) { + fprintf(stderr, "Usage: %s appendix-path subbook-index\n", + argv[0]); + exit(1); + } + + /* EB ¥é¥¤¥Ö¥é¥ê¤È `app' ¤ò½é´ü²½¡£*/ + eb_initialize_library(); + eb_initialize_appendix(&app); + + /* appendix ¤ò `app' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/ + error_code = eb_bind_appendix(&app, argv[1]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to bind the app, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + + /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/ + error_code = eb_appendix_subbook_list(&app, subbook_list, + &subbook_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get the subbook list, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/ + subbook_index = atoi(argv[2]); + + /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/ + if (eb_set_appendix_subbook(&app, subbook_list[subbook_index]) + < 0) { + fprintf(stderr, "%s: failed to set the current subbook, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ³°»ú¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/ + error_code = eb_narrow_alt_start(&app, &alt_start); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get font information, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + i = alt_start; + for (;;) { + /* ³°»ú¤ÎÂåÂØʸ»úÎó¤ò¼èÆÀ¡£*/ + error_code = eb_narrow_alt_character_text(&app, i, text); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get font data, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ¼èÆÀ¤·¤¿ÂåÂØʸ»úÎó¤ò½ÐÎÏ¡£*/ + printf("%04x: %s\n", i, text); + + /* ³°»ú¤Îʸ»úÈÖ¹æ¤ò°ì¤Ä¿Ê¤á¤ë¡£*/ + error_code = eb_forward_narrow_alt_character(&app, 1, &i); + if (error_code != EB_SUCCESS) + break; + } + + /* appendix ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/ + eb_finalize_appendix(&app); + eb_finalize_library(); + exit(0); + + /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/ + die: + eb_finalize_appendix(&app); + eb_finalize_library(); + exit(1); +} diff --git a/lib/ebu/samples/booklist.c b/lib/ebu/samples/booklist.c new file mode 100644 index 0000000..a1af543 --- /dev/null +++ b/lib/ebu/samples/booklist.c @@ -0,0 +1,111 @@ +/* -*- C -*- + * Copyright (c) 2003-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * »ÈÍÑÊýË¡: + * booklist + * Îã: + * booklist ebnet://localhost + * ÀâÌÀ: + * ¤Ç»ØÄꤷ¤¿ EBNET ¥µ¡¼¥Ð¤ËÀܳ¤· + * ¤Æ¡¢¥µ¡¼¥Ð¤ÎÄ󶡤¹¤ë½ñÀÒ¡¢appendix ¤Î°ìÍ÷¤òɽ¼¨¤·¤Þ¤¹¡£ + */ +#include +#include + +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + EB_BookList bl; + int book_count; + char *name, *title; + int i; + + /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/ + if (argc != 2) { + fprintf(stderr, "Usage: %s book-path remote-access-identifier\n", + argv[0]); + exit(1); + } + + /* EB ¥é¥¤¥Ö¥é¥ê¤È `bl' ¤ò½é´ü²½¡£*/ + eb_initialize_library(); + eb_initialize_booklist(&bl); + + /* EBNET ¥µ¡¼¥Ð¤ò `bl' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/ + error_code = eb_bind_booklist(&bl, argv[1]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to bind the EBNET server, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + + /* ¥µ¡¼¥Ð¾å¤Î½ñÀÒ¡¢appendix ¤Î¸Ä¿ô¤ò¼èÆÀ¡£*/ + error_code = eb_booklist_book_count(&bl, &book_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get the number of books, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + for (i = 0; i < book_count; i++) { + /* ½ñÀÒ¡¢appendix ¤Î̾¾Î¤ò¼èÆÀ¡£*/ + error_code = eb_booklist_book_name(&bl, i, &name); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get book name #%d, %s\n", + argv[0], i, eb_error_message(error_code)); + goto die; + } + + /* ½ñÀÒ¡¢appendix ¤ÎÂê̾¤ò¼èÆÀ¡£*/ + error_code = eb_booklist_book_name(&bl, i, &title); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get book title #%d, %s\n", + argv[0], i, eb_error_message(error_code)); + goto die; + } + + printf("%-20s %s\n", name, title); + } + + /* `bl' ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/ + eb_finalize_booklist(&bl); + eb_finalize_library(); + exit(0); + + /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/ + die: + eb_finalize_booklist(&bl); + eb_finalize_library(); + exit(1); +} diff --git a/lib/ebu/samples/disctype.c b/lib/ebu/samples/disctype.c new file mode 100644 index 0000000..072ecf7 --- /dev/null +++ b/lib/ebu/samples/disctype.c @@ -0,0 +1,100 @@ +/* -*- C -*- + * Copyright (c) 1999-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * »ÈÍÑÊýË¡: + * disctype + * Îã: + * disctype /cdrom + * ÀâÌÀ: + * ¤Ç»ØÄꤵ¤ì¤¿ CD-ROM ½ñÀҤμïÎब¡¢EB ¤« EPWING ¤« + * ¤òÄ´¤Ù¤Æɽ¼¨¤·¤Þ¤¹¡£ + */ +#include +#include + +#include +#include + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + EB_Book book; + EB_Disc_Code disc_code; + + /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/ + if (argc != 2) { + fprintf(stderr, "Usage: %s book-path\n", argv[0]); + exit(1); + } + + /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/ + error_code = eb_initialize_library(); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + eb_initialize_book(&book); + + /* `book' ¤ò½ñÀҤ˷ë¤ÓÉÕ¤±¤ë¡£¼ºÇÔ¤·¤¿¤é½ªÎ»¡£*/ + error_code = eb_bind(&book, argv[1]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to bind the book, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + + /* ½ñÀҤμïÎà¤òÄ´¤Ù¤Æɽ¼¨¡£*/ + error_code = eb_disc_type(&book, &disc_code); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get disc type, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + + if (disc_code == EB_DISC_EB) { + fputs("EB\n", stdout); + } else if (disc_code == EB_DISC_EPWING) { + fputs("EPWING\n", stdout); + } else { + fputs("unknown\n", stdout); + } + + /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/ + eb_finalize_book(&book); + eb_finalize_library(); + exit(0); + + /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/ + die: + eb_finalize_book(&book); + eb_finalize_library(); + exit(1); +} diff --git a/lib/ebu/samples/font.c b/lib/ebu/samples/font.c new file mode 100644 index 0000000..b8bd538 --- /dev/null +++ b/lib/ebu/samples/font.c @@ -0,0 +1,160 @@ +/* -*- C -*- + * Copyright (c) 2002-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * »ÈÍÑÊýË¡: + * font + * Îã: + * font /cdrom 0 + * ÀâÌÀ: + * ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢¤½¤Î + * ÉûËܤ¬ÄêµÁ¤·¤Æ¤¤¤ëȾ³Ñ³°»ú (¹â¤µ 16 ¥Ô¥¯¥»¥ë) ¤ò¤¹¤Ù¤Æ¥¢¥¹¥­¡¼ + * ¥¢¡¼¥È¤Çɽ¼¨¤·¤Þ¤¹¡£ + * + * ¤½¤ÎÉûËܤ¬¡¢¹â¤µ 16 ¥Ô¥¯¥»¥ë¤ÎȾ³Ñ³°»ú¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤È¡¢¥¨ + * ¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ + * + * ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ + * ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë + * ¤Ê¤ê¤Þ¤¹¡£ + */ +#include +#include + +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + EB_Book book; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + int subbook_count; + int subbook_index; + int font_start; + unsigned char bitmap[EB_SIZE_NARROW_FONT_16]; + int i, j; + + /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/ + if (argc != 3) { + fprintf(stderr, "Usage: %s book-path subbook-index\n", + argv[0]); + exit(1); + } + + /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/ + eb_initialize_library(); + eb_initialize_book(&book); + + /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/ + error_code = eb_bind(&book, argv[1]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to bind the book, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + + /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/ + error_code = eb_subbook_list(&book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get the subbbook list, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/ + subbook_index = atoi(argv[2]); + + /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/ + error_code = eb_set_subbook(&book, subbook_list[subbook_index]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to set the current subbook, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /*¡Ö¸½ºß¤Î³°»ú¤ÎÂ礭¤µ¡×¤òÀßÄê¡£*/ + if (eb_set_font(&book, EB_FONT_16) < 0) { + fprintf(stderr, "%s: failed to set the font size, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ³°»ú¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/ + error_code = eb_narrow_font_start(&book, &font_start); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get font information, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + i = font_start; + for (;;) { + /* ³°»ú¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¥Ç¡¼¥¿¤ò¼èÆÀ¡£*/ + error_code = eb_narrow_font_character_bitmap(&book, i, + (char *)bitmap); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get font data, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò¥¢¥¹¥­¡¼¥¢¡¼¥È¤Ë¤·¤Æ½ÐÎÏ¡£*/ + printf("code point=%04x\n", i); + for (j = 0; j < 16; j++) { + fputc((bitmap[j] & 0x80) ? '*' : ' ', stdout); + fputc((bitmap[j] & 0x40) ? '*' : ' ', stdout); + fputc((bitmap[j] & 0x20) ? '*' : ' ', stdout); + fputc((bitmap[j] & 0x10) ? '*' : ' ', stdout); + fputc((bitmap[j] & 0x08) ? '*' : ' ', stdout); + fputc((bitmap[j] & 0x04) ? '*' : ' ', stdout); + fputc((bitmap[j] & 0x02) ? '*' : ' ', stdout); + fputc((bitmap[j] & 0x01) ? '*' : ' ', stdout); + fputc('\n', stdout); + } + fputs("--------\n", stdout); + + /* ³°»ú¤Îʸ»úÈÖ¹æ¤ò°ì¤Ä¿Ê¤á¤ë¡£*/ + error_code = eb_forward_narrow_font_character(&book, 1, &i); + if (error_code != EB_SUCCESS) + break; + } + + /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/ + eb_finalize_book(&book); + eb_finalize_library(); + exit(0); + + /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/ + die: + eb_finalize_book(&book); + eb_finalize_library(); + exit(1); +} diff --git a/lib/ebu/samples/initexit.c b/lib/ebu/samples/initexit.c new file mode 100644 index 0000000..f0a9190 --- /dev/null +++ b/lib/ebu/samples/initexit.c @@ -0,0 +1,60 @@ +/* -*- C -*- + * Copyright (c) 2001-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * »ÈÍÑÊýË¡: + * initexit + * Îã: + * initexit + * ÀâÌÀ: + * EB ¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¡¢¸å»ÏËö¤ò¤·¤Æ¤ß¤Þ¤¹¡£ + * ¥×¥í¥°¥é¥à¤Î³°Â¦¤«¤é¸«¤ì¤Ð¡¢¤³¤ì¤Ï²¿¤Î°ÕÌ£¤â¤Ê¤¤Æ°ºî¤Ç¤¹¡£ + */ +#include +#include + +#include +#include + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + + /* EB ¥é¥¤¥Ö¥é¥ê¤ò½é´ü²½¡£*/ + error_code = eb_initialize_library(); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + exit(1); + } + + /* EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/ + eb_finalize_library(); + exit(0); +} diff --git a/lib/ebu/samples/subbook.c b/lib/ebu/samples/subbook.c new file mode 100644 index 0000000..2810544 --- /dev/null +++ b/lib/ebu/samples/subbook.c @@ -0,0 +1,106 @@ +/* -*- C -*- + * Copyright (c) 1999-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * »ÈÍÑÊýË¡: + * subbook + * Îã: + * subbook /cdrom + * ÀâÌÀ: + * ¤Ç»ØÄꤵ¤ì CD-ROM ½ñÀҤ˴ޤޤì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎÉûËܤΠ+ * Âê̾¤òɽ¼¨¤·¤Þ¤¹¡£ + */ +#include +#include + +#include +#include + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + EB_Book book; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + int subbook_count; + char title[EB_MAX_TITLE_LENGTH + 1]; + int i; + + /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/ + if (argc != 2) { + fprintf(stderr, "Usage: %s book-path\n", argv[0]); + exit(1); + } + + /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/ + error_code = eb_initialize_library(); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to initialize EB Library, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + eb_initialize_book(&book); + + /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/ + error_code = eb_bind(&book, argv[1]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to bind the book, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + + /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/ + error_code = eb_subbook_list(&book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get the subbbook list, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ½ñÀҤ˴ޤޤì¤Æ¤¤¤ëÉûËܤÎÂê̾¤ò½ÐÎÏ¡£*/ + for (i = 0; i < subbook_count; i++) { + error_code = eb_subbook_title2(&book, subbook_list[i], title); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get the title, %s\n", + argv[0], eb_error_message(error_code)); + continue; + } + printf("%d: %s\n", i, title); + } + + /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/ + eb_finalize_book(&book); + eb_finalize_library(); + exit(0); + + /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/ + die: + eb_finalize_book(&book); + eb_finalize_library(); + exit(1); +} diff --git a/lib/ebu/samples/text.c b/lib/ebu/samples/text.c new file mode 100644 index 0000000..32b82dd --- /dev/null +++ b/lib/ebu/samples/text.c @@ -0,0 +1,159 @@ +/* -*- C -*- + * Copyright (c) 1999-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * »ÈÍÑÊýË¡: + * text + * Îã: + * text /cdrom 0 10 + * ÀâÌÀ: + * ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤«¤éÆÃÄê¤ÎÉûËܤòÁª¤Ó¡¢ËÜʸ + * ¤ÎÀèƬ¤«¤é ¸Äʬ¤Îñ¸ì¤ÎÀâÌÀ¤ò½ÐÎϤ·¤Þ¤¹¡£ + * + * ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ + * ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë + * ¤Ê¤ê¤Þ¤¹¡£ + */ +#include +#include + +#include +#include +#include + +#define MAXLEN_TEXT 1023 + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + EB_Book book; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + int subbook_count; + int subbook_index; + EB_Position text_position; + char text[MAXLEN_TEXT + 1]; + ssize_t text_length; + int text_count; + int i; + + /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/ + if (argc != 4) { + fprintf(stderr, "Usage: %s book-path subbook-index number\n", + argv[0]); + exit(1); + } + text_count = atoi(argv[3]); + + /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/ + eb_initialize_library(); + eb_initialize_book(&book); + + /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/ + error_code = eb_bind(&book, argv[1]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to bind the book, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + + /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/ + error_code = eb_subbook_list(&book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get the subbbook list, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/ + subbook_index = atoi(argv[2]); + + /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/ + error_code = eb_set_subbook(&book, subbook_list[subbook_index]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to set the current subbook, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ¥Æ¥­¥¹¥È¤Î³«»Ï°ÌÃÖ¤ò¼èÆÀ¡£*/ + error_code = eb_text(&book, &text_position); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get text information, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ¥Æ¥­¥¹¥È¤ò¥·¡¼¥¯¡£*/ + error_code = eb_seek_text(&book, &text_position); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to seek text, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + i = 0; + while (i < text_count) { + /* ¥Æ¥­¥¹¥È¤ò¼èÆÀ¡£*/ + error_code = eb_read_text(&book, NULL, NULL, NULL, MAXLEN_TEXT, + text, &text_length); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to read text, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + fputs(text, stdout); + + if (!eb_is_text_stopped(&book)) + continue; + + fputs("\n----------------------------------------\n", stdout); + + /* ¼¡¤Îñ¸ì¤ÎÀâÌÀ¤Ø°ÜÆ°¡£*/ + error_code = eb_forward_text(&book, NULL); + if (error_code == EB_ERR_END_OF_CONTENT) + fputs("\n[END]\n", stdout); + else if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to read text, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + i++; + } + + /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/ + eb_finalize_book(&book); + eb_finalize_library(); + exit(0); + + /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/ + die: + eb_finalize_book(&book); + eb_finalize_library(); + exit(1); +} diff --git a/lib/ebu/samples/word.c b/lib/ebu/samples/word.c new file mode 100644 index 0000000..c20e0d4 --- /dev/null +++ b/lib/ebu/samples/word.c @@ -0,0 +1,155 @@ +/* -*- C -*- + * Copyright (c) 1999-2006 Motoyuki Kasahara + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * »ÈÍÑÊýË¡: + * word + * Îã: + * word /cdrom 0 apple + * ÀâÌÀ: + * ¤Ç»ØÄꤷ¤¿ CD-ROM ½ñÀÒ¤ÎÆÃÄê¤ÎÉûËܤÎÃ椫¤é + * ¤È¤¤¤¦Ã±¸ì¤ò´°Á´°ìÃ׸¡º÷¤Çõ¤·¡¢¥Ò¥Ã¥È¤·¤¿¤¹¤Ù¤Æ¤Î¥¨¥ó¥È¥ê¤Î + * ¸«½Ð¤·¤òɽ¼¨¤·¤Þ¤¹¡£ + * + * ¤Ë¤Ï¡¢¸¡º÷ÂоݤÎÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ØÄꤷ¤Þ + * ¤¹¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢½ñÀҤκǽé¤ÎÉûËܤ«¤é½ç¤Ë 0¡¢1¡¢2 ... ¤Ë + * ¤Ê¤ê¤Þ¤¹¡£ + */ +#include +#include + +#include +#include +#include + +#define MAX_HITS 50 +#define MAXLEN_HEADING 127 + +int +main(int argc, char *argv[]) +{ + EB_Error_Code error_code; + EB_Book book; + EB_Subbook_Code subbook_list[EB_MAX_SUBBOOKS]; + EB_Hit hits[MAX_HITS]; + char heading[MAXLEN_HEADING + 1]; + int subbook_count; + int subbook_index; + int hit_count; + ssize_t heading_length; + int i; + + /* ¥³¥Þ¥ó¥É¹Ô°ú¿ô¤ò¥Á¥§¥Ã¥¯¡£*/ + if (argc != 4) { + fprintf(stderr, "Usage: %s book-path subbook-index word\n", + argv[0]); + exit(1); + } + + /* EB ¥é¥¤¥Ö¥é¥ê¤È `book' ¤ò½é´ü²½¡£*/ + eb_initialize_library(); + eb_initialize_book(&book); + + /* ½ñÀÒ¤ò `book' ¤Ë·ë¤ÓÉÕ¤±¤ë¡£*/ + error_code = eb_bind(&book, argv[1]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to bind the book, %s: %s\n", + argv[0], eb_error_message(error_code), argv[1]); + goto die; + } + + /* ÉûËܤΰìÍ÷¤ò¼èÆÀ¡£*/ + error_code = eb_subbook_list(&book, subbook_list, &subbook_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get the subbbook list, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ÉûËܤΥ¤¥ó¥Ç¥Ã¥¯¥¹¤ò¼èÆÀ¡£*/ + subbook_index = atoi(argv[2]); + + /*¡Ö¸½ºß¤ÎÉûËÜ (current subbook)¡×¤òÀßÄê¡£*/ + error_code = eb_set_subbook(&book, subbook_list[subbook_index]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to set the current subbook, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ñ¸ì¸¡º÷¤Î¥ê¥¯¥¨¥¹¥È¤òÁ÷½Ð¡£*/ + error_code = eb_search_exactword(&book, argv[3]); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to search for the word, %s: %s\n", + argv[0], eb_error_message(error_code), argv[3]); + goto die; + } + + for (;;) { + /* »Ä¤Ã¤Æ¤¤¤ë¥Ò¥Ã¥È¥¨¥ó¥È¥ê¤ò¼èÆÀ¡£*/ + error_code = eb_hit_list(&book, MAX_HITS, hits, &hit_count); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to get hit entries, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + if (hit_count == 0) + break; + + for (i = 0; i < hit_count; i++) { + /* ¸«½Ð¤·¤Î°ÌÃ֤ذÜÆ°¡£*/ + error_code = eb_seek_text(&book, &(hits[i].heading)); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to seek the subbook, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + + /* ¸«½Ð¤·¤ò¼èÆÀ¤·¤Æɽ¼¨¡£*/ + error_code = eb_read_heading(&book, NULL, NULL, NULL, + MAXLEN_HEADING, heading, &heading_length); + if (error_code != EB_SUCCESS) { + fprintf(stderr, "%s: failed to read the subbook, %s\n", + argv[0], eb_error_message(error_code)); + goto die; + } + printf("%s\n", heading); + } + } + + /* ½ñÀÒ¤È EB ¥é¥¤¥Ö¥é¥ê¤ÎÍøÍѤò½ªÎ»¡£*/ + eb_finalize_book(&book); + eb_finalize_library(); + exit(0); + + /* ¥¨¥é¡¼È¯À¸¤Ç½ªÎ»¤¹¤ë¤È¤­¤Î½èÍý¡£*/ + die: + eb_finalize_book(&book); + eb_finalize_library(); + exit(1); +} diff --git a/lib/ebu/stamp-h1 b/lib/ebu/stamp-h1 new file mode 100644 index 0000000..4547fe1 --- /dev/null +++ b/lib/ebu/stamp-h1 @@ -0,0 +1 @@ +timestamp for config.h diff --git a/lib/libmxml/.gitignore b/lib/libmxml/.gitignore new file mode 100644 index 0000000..0edaa8c --- /dev/null +++ b/lib/libmxml/.gitignore @@ -0,0 +1,29 @@ +*.o +Makefile +autom4te.cache +config.h +config.log +config.status +doc/mxml.d +libmxml.1.dylib +libmxml.a +libmxml.dylib +libmxml.sl +libmxml.sl.1 +libmxml.so +libmxml.so.1 +libmxml.so.1.5 +mxml.epub +mxml.pc +mxml.xml +mxmldoc +mxmldoc-static +org.msweet.mxml.atom +org.msweet.mxml.docset +org.msweet.mxml.xar +temp1.xmlfd +test.xmlfd +testmxml +test1.xml +xcode/mxml.xcodeproj/project.xcworkspace +xcode/mxml.xcodeproj/xcuserdata diff --git a/lib/libmxml/ANNOUNCEMENT b/lib/libmxml/ANNOUNCEMENT new file mode 100644 index 0000000..d2783ac --- /dev/null +++ b/lib/libmxml/ANNOUNCEMENT @@ -0,0 +1,17 @@ +Mini-XML 2.10 is now available for download from: + + http://www.msweet.org/downloads.php/Mini-XML + +Mini-XML 2.10 fixes some stack overflow, XML, and API issues. Changes include: + +- The version number in mxml.h was wrong (Bug #532) +- The mxml.spec file was out of date (Bug #521) +- Mini-XML no longer allows malformed element names (Bug #509) +- mxmlLoad* and mxmlSAXLoad* did not properly create text nodes when + MXML_TEXT_CALLBACK was specified (Bug #531) +- mxmlDelete used a recursive algorithm which could require large amounts of + stack space depending on the file (Bug #549, CVE-2016-4570) +- mxmlWrite* used a recursive algorithm which could require large amounts of + stack space depending on the file (Bug #549, CVE-2016-4571) + +Enjoy! diff --git a/lib/libmxml/CHANGES.md b/lib/libmxml/CHANGES.md new file mode 100644 index 0000000..e3347d7 --- /dev/null +++ b/lib/libmxml/CHANGES.md @@ -0,0 +1,227 @@ +# Changes in Mini-XML 2.11 + +- CDATA nodes now omit the trailing "]]" for convenience (Issue #170) +- Fixed a memory leak in mxmlDelete (Issue #183) +- `mxmlElementSetAttrf` did not work with some versions of Visual Studio + (Issue #184) +- Added `mxmlElementGetAttrByIndex` and `mxmlELementGetAttrCount` functions + (Issue #185) +- The configure script now properly supports cross-compilation (Issue #188) +- The mxmldoc utility now supports generation of EPUB files (Issue #189) +- The mxmldoc utility now supports the `SOURCE_DATE_EPOCH` environment + variable for reproducible builds (Issue #193) +- The mxmldoc utility now supports Markdown (Issue #194) +- Added `mxmlNewOpaquef` and `mxmlSetOpaquef` functions to add and set formatted + opaque string values. +- The mxmldoc utility scanned and loaded descriptive text differently, causing + the detailed descriptions ("discussion") to be lost in generated + documentation. +- The mxmldoc utility now supports `@exclude format@` comments to exclude + documentation based on the output format. The format string can be `all` to + exclude documentation for all formats or a comma-delimited list such as + `@exclude man,html@`. + + +# Changes in Mini-XML 2.10 + +- The version number in mxml.h was wrong. +- The mxml.spec file was out of date. +- Mini-XML no longer allows malformed element names. +- `mxmlLoad*` and `mxmlSAXLoad*` did not properly create text nodes when + MXML_TEXT_CALLBACK was specified. +- `mxmlDelete` used a recursive algorithm which could require large amounts of + stack space depending on the file. (CVE-2016-4570) +- `mxmlWrite*` used a recursive algorithm which could require large amounts of + stack space depending on the file. (CVE-2016-4571) + + +# Changes in Mini-XML 2.9 + +- `mxmlLoad*` did not correctly load value nodes with `MXML_NO_CALLBACK` or + `MXML_TEXT_CALLBACK`. + + +# Changes in Mini-XML 2.8 + +- Now call docsetutil using xcrun on macOS. +- mxmldoc did not escape special HTML characters inside @code foo@ comments. +- Fixed a memory leak in `mxmlElementDeleteAttr`. +- Added `MXML_MAJOR/MINOR_VERSION` definitions to mxml.h. +- Fixed a bug reading UTF-16 characters from a file. +- Fixed a memory leak when loading invalid XML. +- Fixed an XML fragment loading problem. + + +# Changes in Mini-XML 2.7 + +- Added 64-bit configurations to the VC++ project files. +- Fixed conformance of mxmldoc's HTML and CSS output. +- Added data accessor ("get") functions and made the `mxml_node_t` and + `mxml_index_t` structures private but still available in the Mini-XML header to + preserve source compatibility. +- Updated the source headers to reference the Mini-XML license and its + exceptions to the LGPL2. +- Fixed a memory leak when loading a badly-formed XML file. +- Added a new mxmlFindPath function to find the value node of a named element. +- Building a static version of the library did not work on Windows. +- The shared library did not include a destructor for the thread-specific data + key on UNIX-based operating systems. +- mxmlLoad* did not error out on XML with multiple root nodes. +- Fixed an issue with the `_mxml_vstrdupf` function. +- `mxmlSave*` no longer write all siblings of the passed node, just that node + and its children. + + +# Changes in Mini-XML 2.6 + +- Documentation fixes. +- The mxmldoc program did not handle typedef comments properly. +- Added support for "long long" printf formats. +- The XML parser now ignores BOMs in UTF-8 XML files. +- The mxmldoc program now supports generating Xcode documentation sets. +- `mxmlSave*` did not output UTF-8 correctly on some platforms. +- `mxmlNewXML` now adds encoding="utf-8" in the ?xml directive to avoid + problems with non-conformant XML parsers that assume something other + than UTF-8 as the default encoding. +- Wrapping was not disabled when mxmlSetWrapMargin(0) was called, and + "" was always followed by a newline. +- The mxml.pc.in file was broken. +- The mxmldoc program now handles "typedef enum name {} name" correctly. + + +# Changes in Mini-XML 2.5 + +- The mxmldoc program now makes greater use of CSS and supports a `--css` option + to embed an alternate stylesheet. +- The mxmldoc program now supports `--header` and `--footer` options to insert + documentation content before and after the generated content. +- The mxmldoc program now supports a `--framed` option to generate framed HTML + output. +- The mxmldoc program now creates a table of contents including any headings in + the `--intro` file when generating HTML output. +- The man pages and man page output from mxmldoc did not use "\-" for dashes. +- The debug version of the Mini-XML DLL could not be built. +- Processing instructions and directives did not work when not at the top level + of a document. +- Spaces around the "=" in attributes were not supported. + + +# Changes in Mini-XML 2.4 + +- Fixed shared library build problems on HP-UX and Mac macOS. +- The mxmldoc program did not output argument descriptions for functions + properly. +- All global settings (custom, error, and entity callbacks and the wrap margin) + are now managed separately for each thread. +- Added `mxmlElementDeleteAttr` function. +- `mxmlElementSetAttrf` did not work. +- `mxmlLoad*` incorrectly treated declarations as parent elements. +- `mxmlLoad*` incorrectly allowed attributes without values. +- Fixed Visual C++ build problems. +- `mxmlLoad*` did not return NULL when an element contained an error. +- Added support for the apos character entity. +- Fixed whitespace detection with Unicode characters. +- `mxmlWalkNext` and `mxmlWalkPrev` did not work correctly when called with a + node with no children as the top node. + + +# Changes in Mini-XML 2.3 + +- Added two exceptions to the LGPL to support static linking of applications + against Mini-XML. +- The mxmldoc utility can now generate man pages, too. +- Added a mxmlNewXML function. +- Added a mxmlElementSetAttrf function. +- Added snprintf() emulation function for test program. +- Added the _CRT_SECURE_NO_DEPRECATE definition when building on VC++ 2005. +- mxmlLoad* did not detect missing > characters in elements. +- mxmlLoad* did not detect missing close tags at the end of an XML document. +- Added user_data and ref_count members to mxml_node_t structure. +- Added mxmlReleaseNode() and mxmlRetainNode() APIs for reference-counted nodes. +- Added mxmlSetWrapMargin() to control the wrapping of XML output. +- Added conditional check for EINTR error code for certain Windows compilers + that do not define it. +- The mxmldoc program now generates correct HTML 4.0 output - previously it + generated invalid XHTML. +- The mxmldoc program now supports "@deprecated@, "@private@", and "@since + version@" comments. +- Fixed function and enumeration type bugs in mxmldoc. +- Fixed the XML schema for mxmldoc. +- The mxmldoc program now supports `--intro`, `--section`, and `--title` + options. +- The `mxmlLoad*` functions could leak a node on an error. +- The `mxml_vsnprintf` function could get in an infinite loop on a buffer + overflow. +- Added new `mxmlNewCDATA` and `mxmlSetCDATA` functions to create and set CDATA + nodes, which are really just special element nodes. +- Added new `MXML_IGNORE` type and `MXML_IGNORE_CB` callback to ignore non- + element nodes, e.g. whitespace. +- `mxmlLoad*` crashed when reporting an error in some invalid XML. + + +# Changes in Mini-XML 2.2.2 + +- `mxmlLoad*` did not treat custom data as opaque, so whitespace characters + would be lost. + + +# Changes in Mini-XML 2.2.1 + +- `mxmlLoad*` now correctly return NULL on error. +- `mxmlNewInteger`, `mxmlNewOpaque`, `mxmlNewReal`, `mxmlNewText`, and + `mxmlNewTextf` incorrectly required a parent node. +- Fixed an XML output bug in mxmldoc. +- The "make install" target now uses the install command to set the proper + permissions on UNIX/Linux/macOS. +- Fixed a MingW/Cygwin compilation problem. + + +# Changes in Mini-XML 2.2 + +- Added shared library support. +- `mxmlLoad*` now return an error when an XML stream contains illegal control + characters. +- `mxmlLoad*` now return an error when an element contains two attributes with + the same name in conformance with the XML spec. +- Added support for CDATA. +- Updated comment and processing instruction handling - no entity support per + XML specification. +- Added checking for invalid comment termination: "--->" is not allowed. + + +# Changes in Mini-XML 2.1 + +- Added support for custom data nodes. +- Now treat UTF-8 sequences which are longer than necessary as an error. +- Fixed entity number support. +- Fixed mxmlLoadString() bug with UTF-8. +- Fixed entity lookup bug. +- Added `mxmlLoadFd` and `mxmlSaveFd` functions. +- Fixed multi-word UTF-16 handling. + + +# Changes in Mini-XML 2.0 + +- New programmers manual. +- Added Visual C++ project files for Microsoft Windows users. +- Added optimizations to mxmldoc, `mxmlSaveFile`, and `mxmlIndexNew`. +- `mxmlEntityAddCallback` now returns an integer status. +- Added UTF-16 support (input only; all output is UTF-8). +- Added index functions to build a searchable index of XML nodes. +- Added character entity callback interface to support additional character + entities beyond those defined in the XHTML specification. +- Added support for XHTML character entities. +- The mxmldoc utility now produces XML output which conforms to an updated XML + schema, described in the file "doc/mxmldoc.xsd". +- Changed the whitespace callback interface to return strings instead of a + single character, allowing for greater control over the formatting of XML + files written using Mini-XML. THIS CHANGE WILL REQUIRE CHANGES TO YOUR 1.x + CODE IF YOU USE WHITESPACE CALLBACKS. +- The mxmldoc utility is now capable of documenting C++ classes, functions, and + structures, and correctly handles C++ comments. +- Added new modular tests for mxmldoc. +- Updated the mxmldoc output to be more compatible with embedding in manuals + produced with HTMLDOC. +- The makefile incorrectly included a "/" separator between the destination path + and install path. This caused problems when building and installing with + MingW. diff --git a/lib/libmxml/COPYING b/lib/libmxml/COPYING new file mode 100644 index 0000000..4d0aa78 --- /dev/null +++ b/lib/libmxml/COPYING @@ -0,0 +1,507 @@ + Mini-XML License + September 18, 2010 + + +The Mini-XML library and included programs are provided under the +terms of the GNU Library General Public License version 2 (LGPL2) +with the following exceptions: + + 1. Static linking of applications to the Mini-XML library +does not constitute a derivative work and does not require +the author to provide source code for the application, use +the shared Mini-XML libraries, or link their applications +against a user-supplied version of Mini-XML. + +If you link the application to a modified version of +Mini-XML, then the changes to Mini-XML must be provided +under the terms of the LGPL2 in sections 1, 2, and 4. + + 2. You do not have to provide a copy of the Mini-XML license +with programs that are linked to the Mini-XML library, nor +do you have to identify the Mini-XML license in your +program or documentation as required by section 6 of the +LGPL2. + + + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + [This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/lib/libmxml/Makefile.in b/lib/libmxml/Makefile.in new file mode 100644 index 0000000..eef14fe --- /dev/null +++ b/lib/libmxml/Makefile.in @@ -0,0 +1,419 @@ +# +# Makefile for Mini-XML, a small XML-like file parsing library. +# +# Copyright 2003-2017 by Michael R Sweet. +# +# These coded instructions, statements, and computer programs are the +# property of Michael R Sweet and are protected by Federal copyright +# law. Distribution and use rights are outlined in the file "COPYING" +# which should have been included with this file. If this file is +# missing or damaged, see the license at: +# +# https://michaelrsweet.github.io/mxml +# + +# +# Compiler tools definitions... +# + +AR = @AR@ +ARFLAGS = @ARFLAGS@ +ARCHFLAGS = @ARCHFLAGS@ +CC = @CC@ +CFLAGS = $(OPTIM) $(ARCHFLAGS) @CFLAGS@ @CPPFLAGS@ @PTHREAD_FLAGS@ +CP = @CP@ +DSO = @DSO@ +DSOFLAGS = @DSOFLAGS@ +LDFLAGS = $(OPTIM) $(ARCHFLAGS) @LDFLAGS@ +INSTALL = @INSTALL@ +LIBMXML = @LIBMXML@ +LIBS = @LIBS@ @PTHREAD_LIBS@ +LN = @LN@ -s +MKDIR = @MKDIR@ +OPTIM = @OPTIM@ +RANLIB = @RANLIB@ +RM = @RM@ -f +SHELL = /bin/sh + + +# +# Configured directories... +# + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +datarootdir = @datarootdir@ +includedir = @includedir@ +libdir = @libdir@ +mandir = @mandir@ +docdir = @docdir@ +BUILDROOT = $(DSTROOT) + + +# +# Install commands... +# + +INSTALL_BIN = $(LIBTOOL) $(INSTALL) -m 755 +INSTALL_DATA = $(INSTALL) -m 644 +INSTALL_DIR = $(INSTALL) -d +INSTALL_LIB = $(LIBTOOL) $(INSTALL) -m 755 +INSTALL_MAN = $(INSTALL) -m 644 +INSTALL_SCRIPT = $(INSTALL) -m 755 + + +# +# Rules... +# + +.SILENT: +.SUFFIXES: .c .man .o +.c.o: + echo Compiling $< + $(CC) $(CFLAGS) -c -o $@ $< + + +# +# Targets... +# + +DOCFILES = doc/mxml.html doc/mxmldoc.xsd README.md COPYING CHANGES.md +PUBLIBOBJS = mxml-attr.o mxml-entity.o mxml-file.o mxml-get.o \ + mxml-index.o mxml-node.o mxml-search.o mxml-set.o +LIBOBJS = $(PUBLIBOBJS) mxml-private.o mxml-string.o +OBJS = mmd.o mxmldoc.o testmxml.o zipc.o $(LIBOBJS) +ALLTARGETS = $(LIBMXML) mxmldoc testmxml mxml.xml @MXML_EPUB@ +CROSSTARGETS = $(LIBMXML) mxmldoc +TARGETS = $(@TARGETS@) + + +# +# Make everything... +# + +all: $(TARGETS) + + +# +# Clean everything... +# + +clean: + echo Cleaning build files... + $(RM) $(OBJS) $(ALLTARGETS) + $(RM) mxmldoc-static + $(RM) mxml1.dll + $(RM) libmxml.a + $(RM) libmxml.so.1.6 + $(RM) libmxml.sl.1 + $(RM) libmxml.1.dylib + + +# +# Really clean everything... +# + +distclean: clean + echo Cleaning distribution files... + $(RM) config.cache config.log config.status + $(RM) Makefile config.h + $(RM) -r autom4te*.cache + $(RM) *.bck *.bak + $(RM) -r clang + + +# +# Run the clang.llvm.org static code analysis tool on the C sources. +# + +.PHONY: clang clang-changes +clang: + echo Doing static code analysis of all code using CLANG... + $(RM) -r clang + scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) clean all +clang-changes: + echo Doing static code analysis of changed code using CLANG... + scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) all + + +# +# Install everything... +# + +install: $(TARGETS) install-$(LIBMXML) install-libmxml.a + echo Installing mxmldoc in $(BUILDROOT)$(bindir)... + $(INSTALL_DIR) $(BUILDROOT)$(bindir) + $(INSTALL_BIN) mxmldoc $(BUILDROOT)$(bindir) + echo Installing documentation in $(BUILDROOT)$(docdir)... + $(INSTALL_DIR) $(BUILDROOT)$(docdir) + for file in $(DOCFILES); do \ + $(INSTALL_MAN) $$file $(BUILDROOT)$(docdir)/`basename $$file .md`; \ + done + echo Installing header files in $(BUILDROOT)$(includedir)... + $(INSTALL_DIR) $(BUILDROOT)$(includedir) + $(INSTALL_DATA) mxml.h $(BUILDROOT)$(includedir) + echo Installing pkgconfig files in $(BUILDROOT)$(libdir)/pkgconfig... + $(INSTALL_DIR) $(BUILDROOT)$(libdir)/pkgconfig + $(INSTALL_DATA) mxml.pc $(BUILDROOT)$(libdir)/pkgconfig + echo Installing man pages in $(BUILDROOT)$(mandir)... + $(INSTALL_DIR) $(BUILDROOT)$(mandir)/man1 + $(INSTALL_MAN) doc/mxmldoc.man $(BUILDROOT)$(mandir)/man1/mxmldoc.1 + $(INSTALL_DIR) $(BUILDROOT)$(mandir)/man3 + $(INSTALL_MAN) doc/mxml.man $(BUILDROOT)$(mandir)/man3/mxml.3 + +install-libmxml.a: + echo Installing libmxml.a to $(BUILDROOT)$(libdir)... + $(INSTALL_DIR) $(BUILDROOT)$(libdir) + $(INSTALL_LIB) libmxml.a $(BUILDROOT)$(libdir) + $(RANLIB) $(BUILDROOT)$(libdir)/libmxml.a + +install-libmxml.so.1.6: + echo Installing libmxml.so to $(BUILDROOT)$(libdir)... + $(INSTALL_DIR) $(BUILDROOT)$(libdir) + $(INSTALL_LIB) libmxml.so.1.6 $(BUILDROOT)$(libdir) + $(RM) $(BUILDROOT)$(libdir)/libmxml.so + $(LN) libmxml.so.1.6 $(BUILDROOT)$(libdir)/libmxml.so + $(RM) $(BUILDROOT)$(libdir)/libmxml.so.1 + $(LN) libmxml.so.1.6 $(BUILDROOT)$(libdir)/libmxml.so.1 + +install-libmxml.sl.1: + echo Installing libmxml.sl to $(BUILDROOT)$(libdir)... + $(INSTALL_DIR) $(BUILDROOT)$(libdir) + $(INSTALL_LIB) libmxml.sl.1 $(BUILDROOT)$(libdir) + $(RM) $(BUILDROOT)$(libdir)/libmxml.so + $(LN) libmxml.sl.1 $(BUILDROOT)$(libdir)/libmxml.sl + +install-libmxml.1.dylib: + echo Installing libmxml.dylib to $(BUILDROOT)$(libdir)... + $(INSTALL_DIR) $(BUILDROOT)$(libdir) + $(INSTALL_LIB) libmxml.1.dylib $(BUILDROOT)$(libdir) + $(RM) $(BUILDROOT)$(libdir)/libmxml.dylib + $(LN) libmxml.1.dylib $(BUILDROOT)$(libdir)/libmxml.dylib + + +# +# Uninstall everything... +# + +uninstall: uninstall-$(LIBMXML) uninstall-libmxml.a + echo Uninstalling mxmldoc from $(BUILDROOT)$(bindir)... + $(RM) $(BUILDROOT)$(bindir)/mxmldoc + echo Uninstalling documentation from $(BUILDROOT)$(docdir)... + $(RM) -r $(BUILDROOT)$(docdir) + echo Uninstalling headers from $(BUILDROOT)$(includedir)... + $(RM) $(BUILDROOT)$(includedir)/mxml.h + echo Uninstalling pkgconfig files from $(BUILDROOT)$(libdir)/pkgconfig... + $(RM) $(BUILDROOT)$(libdir)/pkgconfig/mxml.pc + echo Uninstalling man pages from $(BUILDROOT)$(mandir)... + $(RM) $(BUILDROOT)$(mandir)/man1/mxmldoc.1 + $(RM) $(BUILDROOT)$(mandir)/man3/mxml.3 + +uninstall-libmxml.a: + echo Uninstalling libmxml.a from $(BUILDROOT)$(libdir)... + $(RM) $(BUILDROOT)$(libdir)/libmxml.a + +uninstall-libmxml.so.1.6: + echo Uninstalling libmxml.so from $(BUILDROOT)$(libdir)... + $(RM) $(BUILDROOT)$(libdir)/libmxml.so + $(RM) $(BUILDROOT)$(libdir)/libmxml.so.1 + $(RM) $(BUILDROOT)$(libdir)/libmxml.so.1.4 + +uninstall-libmxml.sl.1: + echo Uninstalling libmxml.sl from $(BUILDROOT)$(libdir)... + $(RM) $(BUILDROOT)$(libdir)/libmxml.sl + $(RM) $(BUILDROOT)$(libdir)/libmxml.sl.1 + +uninstall-libmxml.1.dylib: + echo Uninstalling libmxml.dylib from $(BUILDROOT)$(libdir)... + $(RM) $(BUILDROOT)$(libdir)/libmxml.dylib + $(RM) $(BUILDROOT)$(libdir)/libmxml.1.dylib + + +# +# Figure out lines-of-code... +# + +.PHONY: sloc + +sloc: + echo "libmxml: \c" + sloccount $(LIBOBJS:.o=.c) mxml-private.c mxml.h 2>/dev/null | \ + grep "Total Physical" | awk '{print $$9}' + + +# +# libmxml.a +# + +libmxml.a: $(LIBOBJS) + echo Creating $@... + $(RM) $@ + $(AR) $(ARFLAGS) $@ $(LIBOBJS) + $(RANLIB) $@ + +$(LIBOBJS): mxml.h +mxml-entity.o mxml-file.o mxml-private.o: mxml-private.h + + +# +# mxml1.dll +# + +mxml1.dll: $(LIBOBJS) + echo Creating $@... + $(DSO) $(DSOFLAGS) -o $@ $(LIBOBJS) + + +# +# libmxml.so.1.6 +# + +libmxml.so.1.6: $(LIBOBJS) + echo Creating $@... + $(DSO) $(DSOFLAGS) -o libmxml.so.1.6 $(LIBOBJS) + $(RM) libmxml.so libmxml.so.1 + $(LN) libmxml.so.1.6 libmxml.so + $(LN) libmxml.so.1.6 libmxml.so.1 + + +# +# libmxml.sl.1 +# + +libmxml.sl.1: $(LIBOBJS) + echo Creating $@... + $(DSO) $(DSOFLAGS) -o libmxml.sl.1 $(LIBOBJS) + $(RM) libmxml.sl + $(LN) libmxml.sl.1 libmxml.sl + + +# +# libmxml.1.dylib +# + +libmxml.1.dylib: $(LIBOBJS) + echo Creating $@... + $(DSO) $(DSOFLAGS) -o libmxml.1.dylib \ + -install_name $(libdir)/libmxml.dylib \ + -current_version 1.6.0 \ + -compatibility_version 1.0.0 \ + $(LIBOBJS) + $(RM) libmxml.dylib + $(LN) libmxml.1.dylib libmxml.dylib + + +# +# mxmldoc +# + +mxmldoc: $(LIBMXML) mxmldoc.o mmd.o @ZIPC@ + echo Linking $@... + $(CC) -L. $(LDFLAGS) -o $@ mxmldoc.o mmd.o @ZIPC@ -lmxml $(LIBS) + +mxmldoc-static: libmxml.a mxmldoc.o mmd.o @ZIPC@ + echo Linking $@... + $(CC) $(LDFLAGS) -o $@ mxmldoc.o mmd.o @ZIPC@ libmxml.a $(LIBS) + +mxmldoc.o: mxml.h zipc.h mmd.h +zipc.o: zipc.h +mmd.o: mmd.h + + +# +# testmxml +# + +testmxml: libmxml.a testmxml.o + echo Linking $@... + $(CC) $(LDFLAGS) -o $@ testmxml.o libmxml.a $(LIBS) + @echo Testing library... + ./testmxml test.xml temp1s.xml >temp1.xml + ./testmxml temp1.xml temp2s.xml >temp2.xml + @if cmp temp1.xml temp2.xml; then \ + echo Stdio file test passed!; \ + $(RM) temp2.xml temp2s.xml; \ + else \ + echo Stdio file test failed!; \ + fi + @if cmp temp1.xml temp1s.xml; then \ + echo String test passed!; \ + $(RM) temp1.xml temp1s.xml; \ + else \ + echo String test failed!; \ + fi + @if cmp test.xml test.xmlfd; then \ + echo File descriptor test passed!; \ + $(RM) test.xmlfd; \ + else \ + echo File descriptor test failed!; \ + fi + +testmxml-vg: $(LIBOBJS) testmxml.o + echo Linking $@... + $(CC) $(LDFLAGS) -o $@ testmxml.o $(LIBOBJS) $(LIBS) + +testmxml.o: mxml.h + + +# +# mxml.xml +# + +mxml.xml: mxmldoc-static mxml.h $(PUBLIBOBJS:.o=.c) \ + doc/body.man doc/body.md \ + doc/docset.css doc/docset.header \ + doc/reference.header + echo Generating API documentation... + $(RM) mxml.xml + ./mxmldoc-static --header doc/reference.header \ + --docversion @VERSION@ --author "Michael R Sweet" \ + --copyright "Copyright 2003-2017, All Rights Reserved." \ + --title "Mini-XML API Reference" \ + mxml.xml mxml.h $(PUBLIBOBJS:.o=.c) >doc/reference.html + ./mxmldoc-static --man mxml --title "Mini-XML API" \ + --body doc/body.man --footer doc/footer.man \ + mxml.xml >doc/mxml.man + if test "x`uname`" = xDarwin; then \ + ./mxmldoc-static --docset org.msweet.mxml.docset \ + --docversion @VERSION@ --feedname org.msweet.mxml \ + --feedurl https://michaelrsweet.github.io/mxml/org.msweet.mxml.atom \ + --header doc/docset.header --body doc/body.md \ + --css doc/docset.css \ + mxml.xml || exit 1; \ + $(RM) org.msweet.mxml.atom; \ + xcrun docsetutil package --output org.msweet.mxml.xar \ + --atom org.msweet.mxml.atom \ + --download-url https://michaelrsweet.github.io/mxml/org.msweet.mxml.xar \ + org.msweet.mxml.docset || exit 1; \ + fi + + +# +# mxml.epub +# + +mxml.epub: mxml.xml doc/body.md doc/mxml-cover.png + echo Generating EPUB API documentation... + ./mxmldoc-static --body doc/body.md \ + --coverimage doc/mxml-cover.png \ + --epub mxml.epub mxml.xml + + +# +# Use Valgrind (http://valgrind.org) to check for problems in mxmldoc. +# + +valgrind: mxmldoc-static + echo Doing dynamic code analysis using Valgrind... + $(RM) valgrind.xml + valgrind --tool=memcheck --leak-check=yes ./mxmldoc-static \ + valgrind.xml mxml.h $(PUBLIBOBJS:.o=.c) \ + >valgrind.html 2>valgrind.out + + +# +# All object files depend on the makefile and config header... +# + +$(OBJS): Makefile config.h diff --git a/lib/libmxml/README.md b/lib/libmxml/README.md new file mode 100644 index 0000000..266da85 --- /dev/null +++ b/lib/libmxml/README.md @@ -0,0 +1,188 @@ +# Mini-XML Version 2.11 + +Mini-XML is a small XML parsing library that you can use to read XML data files +or strings in your application without requiring large non-standard libraries. +Mini-XML only requires a "make" program and an ANSI C compatible compiler - GCC +works, as do most vendors' ANSI C compilers. + +Mini-XML provides the following functionality: + +- Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded XML files and + strings. +- Data is stored in a linked-list tree structure, preserving the XML data + hierarchy. +- SAX (streamed) reading of XML files and strings to minimize memory usage. +- Supports arbitrary element names, attributes, and attribute values with no + preset limits, just available memory. +- Supports integer, real, opaque ("cdata"), and text data types in "leaf" nodes. +- Functions for creating and managing trees of data. +- "Find" and "walk" functions for easily locating and navigating trees of data. + +Mini-XML doesn't do validation or other types of processing on the data +based upon schema files or other sources of definition information. + + +## Building Mini-XML + +Mini-XML comes with an autoconf-based configure script; just type the +following command to get things going: + + ./configure + +The default install prefix is `/usr/local`, which can be overridden using the +`--prefix` option: + + ./configure --prefix=/foo + +Other configure options can be found using the `--help` option: + + ./configure --help + +Once you have configured the software, type `make` to do the build and run +the test program to verify that things are working, as follows: + + make + +If you are using Mini-XML under Microsoft Windows with Visual C++, use the +included project files in the `vcnet` subdirectory to build the library +instead. Note: The static library on Windows is NOT thread-safe. + + +## Installing Mini-XML + +The `install` target will install Mini-XML in the lib and include +directories: + + make install + +Once you have installed it, use the `-lmxml` option to link your application +against it. + + +## Documentation + +The documentation is available in the `doc` subdirectory in the files +`mxml.html` (HTML) and `mxml.pdf` (PDF). You can also look at the +`testmxml.c` and `mxmldoc.c` source files for examples of using Mini-XML. + +Mini-XML provides a single header file which you include: + + #include + +Nodes are defined by the `mxml_node_t` structure; the `type` member defines the +node type (`element`, `integer`, `opaque`, `real`, or `text`) which determines +which value you want to look at in the `value` union. New nodes can be created +using the `mxmlNewElement()`, `mxmlNewInteger()`, `mxmlNewOpaque()`, +`mxmlNewReal()`, and `mxmlNewText()` functions. Only elements can have child +nodes, and the top node must be an element, usually "?xml". + +You load an XML file using the `mxmlLoadFile()` function: + + FILE *fp; + mxml_node_t *tree; + + fp = fopen("filename.xml", "r"); + tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK); + fclose(fp); + +Similarly, you save an XML file using the `mxmlSaveFile()` function: + + FILE *fp; + mxml_node_t *tree; + + fp = fopen("filename.xml", "w"); + mxmlSaveFile(tree, fp, MXML_NO_CALLBACK); + fclose(fp); + +The `mxmlLoadString()`, `mxmlSaveAllocString()`, and `mxmlSaveString()` +functions load XML node trees from and save XML node trees to strings: + + char buffer[8192]; + char *ptr; + mxml_node_t *tree; + + ... + tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK); + + ... + mxmlSaveString(tree, buffer, sizeof(buffer), MXML_NO_CALLBACK); + + ... + ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK); + +You can find a named element/node using the `mxmlFindElement()` function: + + mxml_node_t *node = mxmlFindElement(tree, tree, "name", "attr", + "value", MXML_DESCEND); + +The `name`, `attr`, and `value` arguments can be passed as `NULL` to act as +wildcards, e.g.: + + /* Find the first "a" element */ + node = mxmlFindElement(tree, tree, "a", NULL, NULL, MXML_DESCEND); + + /* Find the first "a" element with "href" attribute */ + node = mxmlFindElement(tree, tree, "a", "href", NULL, MXML_DESCEND); + + /* Find the first "a" element with "href" to a URL */ + node = mxmlFindElement(tree, tree, "a", "href", + "http://www.minixml.org/", + MXML_DESCEND); + + /* Find the first element with a "src" attribute*/ + node = mxmlFindElement(tree, tree, NULL, "src", NULL, MXML_DESCEND); + + /* Find the first element with a "src" = "foo.jpg" */ + node = mxmlFindElement(tree, tree, NULL, "src", "foo.jpg", + MXML_DESCEND); + +You can also iterate with the same function: + + mxml_node_t *node; + + for (node = mxmlFindElement(tree, tree, "name", NULL, NULL, + MXML_DESCEND); + node != NULL; + node = mxmlFindElement(node, tree, "name", NULL, NULL, + MXML_DESCEND)) + { + ... do something ... + } + +The `mxmlFindPath()` function finds the (first) value node under a specific +element using an XPath: + + mxml_node_t *value = mxmlFindPath(tree, "path/to/*/foo/bar"); + +The `mxmlGetInteger()`, `mxmlGetOpaque()`, `mxmlGetReal()`, and +`mxmlGetText()` functions retrieve the value from a node: + + mxml_node_t *node; + + int intvalue = mxmlGetInteger(node); + + const char *opaquevalue = mxmlGetOpaque(node); + + double realvalue = mxmlGetReal(node); + + int whitespacevalue; + const char *textvalue = mxmlGetText(node, &whitespacevalue); + +Finally, once you are done with the XML data, use the `mxmlDelete()` +function to recursively free the memory that is used for a particular node +or the entire tree: + + mxmlDelete(tree); + + +## Getting Help And Reporting Problems + +The Mini-XML project page provides access to the Github issue tracking page: + + https://michaelrsweet.github.io/mxml + + +## Legal Stuff + +The Mini-XML library is Copyright 2003-2017 by Michael R Sweet. License terms +are described in the file "COPYING". diff --git a/lib/libmxml/config.guess b/lib/libmxml/config.guess new file mode 100644 index 0000000..9afd676 --- /dev/null +++ b/lib/libmxml/config.guess @@ -0,0 +1,1568 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-11-29' + +# 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 3 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, see . +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches with a ChangeLog entry to config-patches@gnu.org. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +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 + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # 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 ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-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 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + 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 ;; + 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 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #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_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${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 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????: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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + 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 ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | 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=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + 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_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + or1k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # 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. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + 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 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*: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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + 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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *: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 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +eval $set_cc_for_build +cat >$dummy.c < +# include +#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 + 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\n"); 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`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%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) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# 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_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# 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 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lib/libmxml/config.h.in b/lib/libmxml/config.h.in new file mode 100644 index 0000000..9dd5e78 --- /dev/null +++ b/lib/libmxml/config.h.in @@ -0,0 +1,109 @@ +/* + * Configuration file for Mini-XML, a small XML file parsing library. + * + * Copyright 2003-2017 by Michael R Sweet. + * + * These coded instructions, statements, and computer programs are the + * property of Michael R Sweet and are protected by Federal copyright + * law. Distribution and use rights are outlined in the file "COPYING" + * which should have been included with this file. If this file is + * missing or damaged, see the license at: + * + * https://michaelrsweet.github.io/mxml + */ + +/* + * Include necessary headers... + */ + +#include +#include +#include +#include +#include + + +/* + * Version number... + */ + +#define MXML_VERSION "" + + +/* + * Inline function support... + */ + +#define inline + + +/* + * Long long support... + */ + +#undef HAVE_LONG_LONG + + +/* + * Do we have ? + */ + +#undef HAVE_ZLIB_H + + +/* + * Do we have the *printf() functions? + */ + +#undef HAVE_SNPRINTF +#undef HAVE_VASPRINTF +#undef HAVE_VSNPRINTF + + +/* + * Do we have the strXXX() functions? + */ + +#undef HAVE_STRDUP +#undef HAVE_STRLCAT +#undef HAVE_STRLCPY + + +/* + * Do we have threading support? + */ + +#undef HAVE_PTHREAD_H + + +/* + * Define prototypes for string functions as needed... + */ + +# ifndef HAVE_STRDUP +extern char *_mxml_strdup(const char *); +# define strdup _mxml_strdup +# endif /* !HAVE_STRDUP */ + +# ifndef HAVE_STRLCAT +extern size_t _mxml_strlcat(char *, const char *, size_t); +# define strlcat _mxml_strlcat +# endif /* !HAVE_STRLCAT */ + +# ifndef HAVE_STRLCPY +extern size_t _mxml_strlcpy(char *, const char *, size_t); +# define strlcpy _mxml_strlcpy +# endif /* !HAVE_STRLCPY */ + +extern char *_mxml_strdupf(const char *, ...); +extern char *_mxml_vstrdupf(const char *, va_list); + +# ifndef HAVE_SNPRINTF +extern int _mxml_snprintf(char *, size_t, const char *, ...); +# define snprintf _mxml_snprintf +# endif /* !HAVE_SNPRINTF */ + +# ifndef HAVE_VSNPRINTF +extern int _mxml_vsnprintf(char *, size_t, const char *, va_list); +# define vsnprintf _mxml_vsnprintf +# endif /* !HAVE_VSNPRINTF */ diff --git a/lib/libmxml/config.sub b/lib/libmxml/config.sub new file mode 100644 index 0000000..61cb4bc --- /dev/null +++ b/lib/libmxml/config.sub @@ -0,0 +1,1793 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-10-01' + +# 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 3 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, see . +# +# 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. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# +# 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. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# 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. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +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 + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + 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 | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -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/'` + ;; + -sco5v6*) + # 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/'` + ;; + -udk*) + 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*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -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 + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +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. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | epiphany \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 \ + | or1k | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-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*86 | x86_64) + 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. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + 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 | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + 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 + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-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 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + 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 + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + 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 + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + 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/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + 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 + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + 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 + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + 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. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + 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. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -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* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -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|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -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 + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or1k-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-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 + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + 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 + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lib/libmxml/configure b/lib/libmxml/configure new file mode 100644 index 0000000..18389e6 --- /dev/null +++ b/lib/libmxml/configure @@ -0,0 +1,5982 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for Mini-XML 2.11. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: https://github.com/michaelrsweet/mxml/issues about your +$0: system, including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Mini-XML' +PACKAGE_TARNAME='mxml' +PACKAGE_VERSION='2.11' +PACKAGE_STRING='Mini-XML 2.11' +PACKAGE_BUGREPORT='https://github.com/michaelrsweet/mxml/issues' +PACKAGE_URL='https://michaelrsweet.github.io/mxml' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIBOBJS +PC_LIBS +PC_CFLAGS +TARGETS +PICFLAG +LIBMXML +DSOFLAGS +DSO +PTHREAD_LIBS +PTHREAD_FLAGS +EGREP +GREP +CPP +ZIPC +MXML_EPUB +ARFLAGS +RM +MKDIR +LN +CP +AR +RANLIB +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ac_ct_CXX +CXXFLAGS +CXX +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +CFLAGS +CC +ARCHFLAGS +OPTIM +LDFLAGS +VERSION +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_ansi +with_archflags +enable_debug +with_docdir +with_vsnprintf +enable_threads +enable_shared +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +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=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -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_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$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 ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$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 | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$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 ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + 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 | -n) + 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 ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -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_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=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 ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# 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 the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + 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 + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # 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 <<_ACEOF +\`configure' configures Mini-XML 2.11 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/mxml] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Mini-XML 2.11:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-debug turn on debugging, default=no + --enable-threads enable multi-threading support + --enable-shared turn on shared libraries, default=no + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-ansi set full ANSI C mode, default=no + --with-archflags set additional architecture flags, default=none + --with-docdir set directory for documentation, default=${prefix}/share/doc/mxml + --with-vsnprintf use vsnprintf emulation functions, default=auto + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +Mini-XML home page: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Mini-XML configure 2.11 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* 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_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ----------------------------------------------------------- ## +## Report this to https://github.com/michaelrsweet/mxml/issues ## +## ----------------------------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Mini-XML $as_me 2.11, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +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 + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + +host_os_name=`echo $host_os | sed -e '1,$s/[0-9.]*$//g'` +host_os_version=`echo $host_os | sed -e '1,$s/^[^0-9.]*//g'` + +ac_config_headers="$ac_config_headers config.h" + + +VERSION="2.11" + +cat >>confdefs.h <<_ACEOF +#define MXML_VERSION "Mini-XML v$VERSION" +_ACEOF + + +CFLAGS="${CFLAGS:=}" +CXXFLAGS="${CXXFLAGS:=}" +LDFLAGS="${LDFLAGS:=}" + +OPTIM="" + + + +# Check whether --with-ansi was given. +if test "${with_ansi+set}" = set; then : + withval=$with_ansi; use_ansi="$withval" +else + use_ansi="no" +fi + + + +# Check whether --with-archflags was given. +if test "${with_archflags+set}" = set; then : + withval=$with_archflags; ARCHFLAGS="$withval" +else + ARCHFLAGS="" +fi + + + +# Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; if eval "test x$enable_debug = xyes"; then + OPTIM="-g" +fi +fi + + + +# Check whether --with-docdir was given. +if test "${with_docdir+set}" = set; then : + withval=$with_docdir; docdir="$withval" +else + docdir="NONE" +fi + + + + + +# Check whether --with-vsnprintf was given. +if test "${with_vsnprintf+set}" = set; then : + withval=$with_vsnprintf; use_vsnprintf="$withval" +else + use_vsnprintf="no" +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_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 $# != 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 + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# 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 +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +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. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&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_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +if test "$INSTALL" = "$ac_install_sh"; then + # Use full path to install-sh script... + INSTALL="`pwd`/install-sh -c" +fi +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +# Extract the first word of "cp", so it can be a program name with args. +set dummy cp; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $CP in + [\\/]* | ?:[\\/]*) + ac_cv_path_CP="$CP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +CP=$ac_cv_path_CP +if test -n "$CP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CP" >&5 +$as_echo "$CP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "ln", so it can be a program name with args. +set dummy ln; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LN in + [\\/]* | ?:[\\/]*) + ac_cv_path_LN="$LN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +LN=$ac_cv_path_LN +if test -n "$LN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LN" >&5 +$as_echo "$LN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "mkdir", so it can be a program name with args. +set dummy mkdir; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MKDIR+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MKDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +MKDIR=$ac_cv_path_MKDIR +if test -n "$MKDIR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5 +$as_echo "$MKDIR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +# Extract the first word of "rm", so it can be a program name with args. +set dummy rm; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_RM+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $RM in + [\\/]* | ?:[\\/]*) + ac_cv_path_RM="$RM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +RM=$ac_cv_path_RM +if test -n "$RM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 +$as_echo "$RM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + +case "$host_os_name" in + darwin* | *bsd) + ARFLAGS="-rcv" + ;; + *) + ARFLAGS="crvs" + ;; +esac + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +if test "x$use_ansi" != xyes; then + for ac_func in strdup strlcat strlcpy +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +fi + +if test "x$use_vsnprintf" != xyes; then + for ac_func in snprintf vasprintf vsnprintf +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +$as_echo_n "checking for long long int... " >&6; } +if ${ac_cv_c_long_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$GCC" = yes; then + ac_cv_c_long_long=yes + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +long long int i; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_long_long=yes +else + ac_cv_c_long_long=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_long_long" >&5 +$as_echo "$ac_cv_c_long_long" >&6; } + +if test $ac_cv_c_long_long = yes; then + $as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h + +fi + +MXML_EPUB="" + +ZIPC="" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gzgets" >&5 +$as_echo_n "checking for library containing gzgets... " >&6; } +if ${ac_cv_search_gzgets+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gzgets (); +int +main () +{ +return gzgets (); + ; + return 0; +} +_ACEOF +for ac_lib in '' z; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_gzgets=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_gzgets+:} false; then : + break +fi +done +if ${ac_cv_search_gzgets+:} false; then : + +else + ac_cv_search_gzgets=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gzgets" >&5 +$as_echo "$ac_cv_search_gzgets" >&6; } +ac_res=$ac_cv_search_gzgets +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + $as_echo "#define HAVE_ZLIB_H 1" >>confdefs.h + + ZIPC="zipc.o" + MXML_EPUB="mxml.epub" + LIBS="-lz $LIBS" +fi + + +# Check whether --enable-threads was given. +if test "${enable_threads+set}" = set; then : + enableval=$enable_threads; +fi + + +have_pthread=no +PTHREAD_FLAGS="" +PTHREAD_LIBS="" + +if test "x$enable_threads" != xno; then + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#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)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" +if test "x$ac_cv_header_pthread_h" = xyes; then : + $as_echo "#define HAVE_PTHREAD_H 1" >>confdefs.h + +fi + + + + if test x$ac_cv_header_pthread_h = xyes; then + for flag in -lpthreads -lpthread -pthread; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create using $flag" >&5 +$as_echo_n "checking for pthread_create using $flag... " >&6; } + SAVELIBS="$LIBS" + LIBS="$flag $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_create(0, 0, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + have_pthread=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_pthread" >&5 +$as_echo "$have_pthread" >&6; } + LIBS="$SAVELIBS" + + if test $have_pthread = yes; then + PTHREAD_FLAGS="-D_THREAD_SAFE -D_REENTRANT" + PTHREAD_LIBS="$flag" + + # Solaris requires -D_POSIX_PTHREAD_SEMANTICS to + # be POSIX-compliant... :( + case "$host_os_name" in + sunos) + PTHREAD_FLAGS="$PTHREAD_FLAGS -D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + break + fi + done + fi +fi + + + + +DSO="${DSO:=:}" +DSOFLAGS="${DSOFLAGS:=}" + +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; +fi + + +if test x$enable_shared != xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library support" >&5 +$as_echo_n "checking for shared library support... " >&6; } + PICFLAG=1 + + case "$host_os_name" in + sunos | unix_s) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBMXML="libmxml.so.1.6" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -Wl,-h,libmxml.so.1 -G -R\$(libdir) \$(OPTIM)" + LDFLAGS="$LDFLAGS -R\$(libdir)" + ;; + + hp-ux) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBMXML="libmxml.sl.1" + DSO="ld" + DSOFLAGS="$DSOFLAGS -b -z +h libmxml.sl.1 +s +b \$(libdir)" + LDFLAGS="$LDFLAGS -Wl,+s,+b,\$(libdir)" + ;; + + irix) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBMXML="libmxml.so.1.6" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -Wl,-rpath,\$(libdir),-set_version,sgi1.0,-soname,libmxml.so.1 -shared \$(OPTIM)" + ;; + + osf | linux* | gnu) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBMXML="libmxml.so.1.6" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-rpath,\$(libdir) -shared \$(OPTIM)" + LDFLAGS="$LDFLAGS -Wl,-rpath,\$(libdir)" + ;; + + *bsd) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBMXML="libmxml.so.1.6" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-R\$(libdir) -shared \$(OPTIM)" + LDFLAGS="$LDFLAGS -Wl,-R\$(libdir)" + ;; + + darwin) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBMXML="libmxml.1.dylib" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS \$(RC_CFLAGS) -dynamiclib -lc" + ;; + + mingw) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBMXML="mxml1.dll" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -shared -Wl,--out-implib,libmxml1.a,--no-undefined,--enable-runtime-pseudo-reloc" + ;; + + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: shared libraries not supported on this platform." >&5 +$as_echo "$as_me: WARNING: shared libraries not supported on this platform." >&2;} + PICFLAG=0 + LIBMXML="libmxml.a" + ;; + esac +else + PICFLAG=0 + LIBMXML="libmxml.a" +fi + + + + + + +if test -n "$GCC"; then + CFLAGS="-Wall -D_GNU_SOURCE $CFLAGS" + + if test "x$OPTIM" = x; then + OPTIM="-Os -g" + fi + + if test "x$use_ansi" = xyes; then + CFLAGS="-ansi -pedantic $CFLAGS" + fi + + if test $PICFLAG = 1 -a "$host_os_name" != aix; then + OPTIM="-fPIC $OPTIM" + fi +else + case "$host_os_name" in + hp-ux) + CFLAGS="-Ae $CFLAGS" + + if test "x$OPTIM" = x; then + OPTIM="-O" + fi + + OPTIM="+DAportable $OPTIM" + + if test $PICFLAG = 1; then + OPTIM="+z $OPTIM" + fi + ;; + + unix_svr | sunos) + if test "x$OPTIM" = x; then + OPTIM="-O" + fi + + if test $PICFLAG = 1; then + OPTIM="-KPIC $OPTIM" + fi + ;; + + *) + if test "x$OPTIM" = x; then + OPTIM="-O" + fi + ;; + esac +fi + +if test "$build" = "$host"; then + TARGETS="ALLTARGETS" +else + TARGETS="CROSSTARGETS" +fi + + +if test "$prefix" = "NONE"; then + prefix="/usr/local" +fi + +if test "$exec_prefix" = "NONE"; then + exec_prefix="$prefix" +fi + +if test "$docdir" = "NONE"; then + docdir="$datadir/doc/mxml" +fi + +if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then + case "$host_os_name" in + *bsd | darwin | linux*) + # *BSD, Darwin (macOS), and Linux + mandir="/usr/share/man" + ;; + irix) + # SGI IRIX + mandir="/usr/share/catman/u_man" + ;; + *) + # All others + mandir="/usr/man" + ;; + esac +fi + +if test "$includedir" != /usr/include; then + PC_CFLAGS="-I$includedir" +else + PC_CFLAGS="" +fi + +if test "$libdir" != /usr/lib; then + PC_LIBS="-L$libdir -lmxml" +else + PC_LIBS="-lmxml" +fi + + + + +ac_config_files="$ac_config_files Makefile mxml.pc" + +cat >confcache <<\_ACEOF +# 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, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# 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. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Mini-XML $as_me 2.11, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to . +Mini-XML home page: ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Mini-XML config.status 2.11 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "mxml.pc") CONFIG_FILES="$CONFIG_FILES mxml.pc" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #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. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/lib/libmxml/configure.ac b/lib/libmxml/configure.ac new file mode 100644 index 0000000..47a0d41 --- /dev/null +++ b/lib/libmxml/configure.ac @@ -0,0 +1,360 @@ +dnl +dnl Configuration script for Mini-XML, a small XML-like file parsing library. +dnl +dnl Copyright 2003-2017 by Michael R Sweet. +dnl +dnl These coded instructions, statements, and computer programs are the +dnl property of Michael R Sweet and are protected by Federal copyright +dnl law. Distribution and use rights are outlined in the file "COPYING" +dnl which should have been included with this file. If this file is +dnl missing or damaged, see the license at: +dnl +dnl https://michaelrsweet.github.io/mxml +dnl + +dnl Package name and version... +AC_INIT([Mini-XML], [2.11], [https://github.com/michaelrsweet/mxml/issues], [mxml], [https://michaelrsweet.github.io/mxml]) + +dnl Get the build and host platforms and split the host_os value +AC_CANONICAL_BUILD +AC_CANONICAL_HOST + +[host_os_name=`echo $host_os | sed -e '1,$s/[0-9.]*$//g'`] +[host_os_version=`echo $host_os | sed -e '1,$s/^[^0-9.]*//g'`] + +dnl Set the name of the config header file... +AC_CONFIG_HEADER(config.h) + +dnl Version number... +VERSION="AC_PACKAGE_VERSION" +AC_SUBST(VERSION) +AC_DEFINE_UNQUOTED(MXML_VERSION, "Mini-XML v$VERSION") + +dnl Clear default debugging options and set normal optimization by +dnl default unless the user asks for debugging specifically. +CFLAGS="${CFLAGS:=}" +CXXFLAGS="${CXXFLAGS:=}" +LDFLAGS="${LDFLAGS:=}" +AC_SUBST(LDFLAGS) +OPTIM="" +AC_SUBST(OPTIM) + +AC_ARG_WITH(ansi, [ --with-ansi set full ANSI C mode, default=no], + use_ansi="$withval", + use_ansi="no") + +AC_ARG_WITH(archflags, [ --with-archflags set additional architecture flags, default=none], + ARCHFLAGS="$withval", + ARCHFLAGS="") +AC_SUBST(ARCHFLAGS) + +AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging, default=no], +if eval "test x$enable_debug = xyes"; then + OPTIM="-g" +fi) + +AC_ARG_WITH(docdir, [ --with-docdir set directory for documentation, default=${prefix}/share/doc/mxml], + docdir="$withval", + docdir="NONE") + +AC_SUBST(docdir) + +AC_ARG_WITH(vsnprintf, [ --with-vsnprintf use vsnprintf emulation functions, default=auto], + use_vsnprintf="$withval", + use_vsnprintf="no") + +dnl Checks for programs... +AC_PROG_CC +AC_PROG_CXX +AC_PROG_INSTALL +if test "$INSTALL" = "$ac_install_sh"; then + # Use full path to install-sh script... + INSTALL="`pwd`/install-sh -c" +fi +AC_PROG_RANLIB +AC_CHECK_TOOL(AR,ar) +AC_PATH_PROG(CP,cp) +AC_PATH_PROG(LN,ln) +AC_PATH_PROG(MKDIR,mkdir) +AC_PATH_PROG(RM,rm) + +dnl Flags for "ar" command... +case "$host_os_name" in + darwin* | *bsd) + ARFLAGS="-rcv" + ;; + *) + ARFLAGS="crvs" + ;; +esac + +AC_SUBST(ARFLAGS) + +dnl Inline functions... +AC_C_INLINE + +dnl Checks for string functions. +if test "x$use_ansi" != xyes; then + AC_CHECK_FUNCS(strdup strlcat strlcpy) +fi + +if test "x$use_vsnprintf" != xyes; then + AC_CHECK_FUNCS(snprintf vasprintf vsnprintf) +fi + +dnl Check for "long long" support... +AC_CACHE_CHECK(for long long int, ac_cv_c_long_long, + [if test "$GCC" = yes; then + ac_cv_c_long_long=yes + else + AC_TRY_COMPILE(,[long long int i;], + ac_cv_c_long_long=yes, + ac_cv_c_long_long=no) + fi]) + +if test $ac_cv_c_long_long = yes; then + AC_DEFINE(HAVE_LONG_LONG) +fi + +dnl EPUB support (via libz and zipc) +MXML_EPUB="" +AC_SUBST(MXML_EPUB) +ZIPC="" +AC_SUBST(ZIPC) +AC_SEARCH_LIBS(gzgets,z,[ + AC_DEFINE(HAVE_ZLIB_H) + ZIPC="zipc.o" + MXML_EPUB="mxml.epub" + LIBS="-lz $LIBS"]) + +dnl Threading support +AC_ARG_ENABLE(threads, [ --enable-threads enable multi-threading support]) + +have_pthread=no +PTHREAD_FLAGS="" +PTHREAD_LIBS="" + +if test "x$enable_threads" != xno; then + AC_CHECK_HEADER(pthread.h, AC_DEFINE(HAVE_PTHREAD_H)) + + if test x$ac_cv_header_pthread_h = xyes; then + dnl Check various threading options for the platforms we support + for flag in -lpthreads -lpthread -pthread; do + AC_MSG_CHECKING([for pthread_create using $flag]) + SAVELIBS="$LIBS" + LIBS="$flag $LIBS" + AC_TRY_LINK([#include ], + [pthread_create(0, 0, 0, 0);], + have_pthread=yes) + AC_MSG_RESULT([$have_pthread]) + LIBS="$SAVELIBS" + + if test $have_pthread = yes; then + PTHREAD_FLAGS="-D_THREAD_SAFE -D_REENTRANT" + PTHREAD_LIBS="$flag" + + # Solaris requires -D_POSIX_PTHREAD_SEMANTICS to + # be POSIX-compliant... :( + case "$host_os_name" in + sunos) + PTHREAD_FLAGS="$PTHREAD_FLAGS -D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + break + fi + done + fi +fi + +AC_SUBST(PTHREAD_FLAGS) +AC_SUBST(PTHREAD_LIBS) + +dnl Shared library support... +DSO="${DSO:=:}" +DSOFLAGS="${DSOFLAGS:=}" + +AC_ARG_ENABLE(shared, [ --enable-shared turn on shared libraries, default=no]) + +if test x$enable_shared != xno; then + AC_MSG_CHECKING(for shared library support) + PICFLAG=1 + + case "$host_os_name" in + sunos | unix_s) + AC_MSG_RESULT(yes) + LIBMXML="libmxml.so.1.6" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -Wl,-h,libmxml.so.1 -G -R\$(libdir) \$(OPTIM)" + LDFLAGS="$LDFLAGS -R\$(libdir)" + ;; + + hp-ux) + AC_MSG_RESULT(yes) + LIBMXML="libmxml.sl.1" + DSO="ld" + DSOFLAGS="$DSOFLAGS -b -z +h libmxml.sl.1 +s +b \$(libdir)" + LDFLAGS="$LDFLAGS -Wl,+s,+b,\$(libdir)" + ;; + + irix) + AC_MSG_RESULT(yes) + LIBMXML="libmxml.so.1.6" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -Wl,-rpath,\$(libdir),-set_version,sgi1.0,-soname,libmxml.so.1 -shared \$(OPTIM)" + ;; + + osf | linux* | gnu) + AC_MSG_RESULT(yes) + LIBMXML="libmxml.so.1.6" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-rpath,\$(libdir) -shared \$(OPTIM)" + LDFLAGS="$LDFLAGS -Wl,-rpath,\$(libdir)" + ;; + + *bsd) + AC_MSG_RESULT(yes) + LIBMXML="libmxml.so.1.6" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-R\$(libdir) -shared \$(OPTIM)" + LDFLAGS="$LDFLAGS -Wl,-R\$(libdir)" + ;; + + darwin) + AC_MSG_RESULT(yes) + LIBMXML="libmxml.1.dylib" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS \$(RC_CFLAGS) -dynamiclib -lc" + ;; + + mingw) + AC_MSG_RESULT(yes) + LIBMXML="mxml1.dll" + DSO="\$(CC)" + DSOFLAGS="$DSOFLAGS -shared -Wl,--out-implib,libmxml1.a,--no-undefined,--enable-runtime-pseudo-reloc" + ;; + + *) + AC_MSG_RESULT(no) + AC_MSG_WARN(shared libraries not supported on this platform.) + PICFLAG=0 + LIBMXML="libmxml.a" + ;; + esac +else + PICFLAG=0 + LIBMXML="libmxml.a" +fi + +AC_SUBST(DSO) +AC_SUBST(DSOFLAGS) +AC_SUBST(LIBMXML) +AC_SUBST(PICFLAG) + +dnl Add -Wall for GCC... +if test -n "$GCC"; then + CFLAGS="-Wall -D_GNU_SOURCE $CFLAGS" + + if test "x$OPTIM" = x; then + OPTIM="-Os -g" + fi + + if test "x$use_ansi" = xyes; then + CFLAGS="-ansi -pedantic $CFLAGS" + fi + + if test $PICFLAG = 1 -a "$host_os_name" != aix; then + OPTIM="-fPIC $OPTIM" + fi +else + case "$host_os_name" in + hp-ux) + CFLAGS="-Ae $CFLAGS" + + if test "x$OPTIM" = x; then + OPTIM="-O" + fi + + OPTIM="+DAportable $OPTIM" + + if test $PICFLAG = 1; then + OPTIM="+z $OPTIM" + fi + ;; + + unix_svr | sunos) + if test "x$OPTIM" = x; then + OPTIM="-O" + fi + + if test $PICFLAG = 1; then + OPTIM="-KPIC $OPTIM" + fi + ;; + + *) + if test "x$OPTIM" = x; then + OPTIM="-O" + fi + ;; + esac +fi + +dnl Determine whether we are cross-compiling... +if test "$build" = "$host"; then + TARGETS="ALLTARGETS" +else + TARGETS="CROSSTARGETS" +fi +AC_SUBST(TARGETS) + +dnl Fix "prefix" variable if it hasn't been specified... +if test "$prefix" = "NONE"; then + prefix="/usr/local" +fi + +dnl Fix "exec_prefix" variable if it hasn't been specified... +if test "$exec_prefix" = "NONE"; then + exec_prefix="$prefix" +fi + +dnl Fix "docdir" variable if it hasn't been specified... +if test "$docdir" = "NONE"; then + docdir="$datadir/doc/mxml" +fi + +dnl Fix "mandir" variable if it hasn't been specified... +if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then + case "$host_os_name" in + *bsd | darwin | linux*) + # *BSD, Darwin (macOS), and Linux + mandir="/usr/share/man" + ;; + irix) + # SGI IRIX + mandir="/usr/share/catman/u_man" + ;; + *) + # All others + mandir="/usr/man" + ;; + esac +fi + +dnl pkg-config stuff... +if test "$includedir" != /usr/include; then + PC_CFLAGS="-I$includedir" +else + PC_CFLAGS="" +fi + +if test "$libdir" != /usr/lib; then + PC_LIBS="-L$libdir -lmxml" +else + PC_LIBS="-lmxml" +fi + +AC_SUBST(PC_CFLAGS) +AC_SUBST(PC_LIBS) + +dnl Output the makefile, etc... +AC_OUTPUT(Makefile mxml.pc) diff --git a/lib/libmxml/doc/advanced.html b/lib/libmxml/doc/advanced.html new file mode 100644 index 0000000..0456386 --- /dev/null +++ b/lib/libmxml/doc/advanced.html @@ -0,0 +1,633 @@ + + + +

    Chapter 3 - More Mini-XML +Programming Techniques

    + +

    This chapter shows additional ways to use the Mini-XML +library in your programs.

    + +

    Load Callbacks

    + +

    Chapter 2 introduced the mxmlLoadFile() and mxmlLoadString() functions. +The last argument to these functions is a callback function +which is used to determine the value type of each data node in +an XML document.

    + +

    Mini-XML defines several standard callbacks for simple +XML data files:

    + +
      + +
    • MXML_INTEGER_CALLBACK - All data nodes + contain whitespace-separated integers.
    • + +
    • MXML_OPAQUE_CALLBACK - All data nodes + contain opaque strings ("CDATA").
    • + +
    • MXML_REAL_CALLBACK - All data nodes contain + whitespace-separated floating-point numbers.
    • + +
    • MXML_TEXT_CALLBACK - All data nodes contain + whitespace-separated strings.
    • + +
    + +

    You can provide your own callback functions for more complex +XML documents. Your callback function will receive a pointer to +the current element node and must return the value type of the +immediate children for that element node: MXML_INTEGER, +MXML_OPAQUE, MXML_REAL, or MXML_TEXT. +The function is called after the element and its +attributes have been read, so you can look at the element name, +attributes, and attribute values to determine the proper value +type to return.

    + + +

    The following callback function looks for an attribute named +"type" or the element name to determine the value type for its +child nodes:

    + +
    +    mxml_type_t
    +    type_cb(mxml_node_t *node)
    +    {
    +      const char *type;
    +
    +     /*
    +      * You can lookup attributes and/or use the
    +      * element name, hierarchy, etc...
    +      */
    +
    +      type = mxmlElementGetAttr(node, "type");
    +      if (type == NULL)
    +	type = mxmlGetElement(node);
    +
    +      if (!strcmp(type, "integer"))
    +	return (MXML_INTEGER);
    +      else if (!strcmp(type, "opaque"))
    +	return (MXML_OPAQUE);
    +      else if (!strcmp(type, "real"))
    +	return (MXML_REAL);
    +      else
    +	return (MXML_TEXT);
    +    }
    +
    + +

    To use this callback function, simply use the name when you +call any of the load functions:

    + +
    +    FILE *fp;
    +    mxml_node_t *tree;
    +
    +    fp = fopen("filename.xml", "r");
    +    tree = mxmlLoadFile(NULL, fp, type_cb);
    +    fclose(fp);
    +
    + + +

    Save Callbacks

    + +

    Chapter 2 also introduced the mxmlSaveFile(), mxmlSaveString(), and mxmlSaveAllocString() +functions. The last argument to these functions is a callback +function which is used to automatically insert whitespace in an +XML document.

    + +

    Your callback function will be called up to four times for +each element node with a pointer to the node and a "where" value +of MXML_WS_BEFORE_OPEN, MXML_WS_AFTER_OPEN, +MXML_WS_BEFORE_CLOSE, or MXML_WS_AFTER_CLOSE. +The callback function should return NULL if no +whitespace should be added and the string to insert (spaces, +tabs, carriage returns, and newlines) otherwise.

    + +

    The following whitespace callback can be used to add +whitespace to XHTML output to make it more readable in a standard +text editor:

    + +
    +    const char *
    +    whitespace_cb(mxml_node_t *node,
    +                  int where)
    +    {
    +      const char *name;
    +
    +     /*
    +      * We can conditionally break to a new line
    +      * before or after any element. These are
    +      * just common HTML elements...
    +      */
    +
    +      name = mxmlGetElement(node);
    +
    +      if (!strcmp(name, "html") ||
    +          !strcmp(name, "head") ||
    +          !strcmp(name, "body") ||
    +	  !strcmp(name, "pre") ||
    +          !strcmp(name, "p") ||
    +	  !strcmp(name, "h1") ||
    +          !strcmp(name, "h2") ||
    +          !strcmp(name, "h3") ||
    +	  !strcmp(name, "h4") ||
    +          !strcmp(name, "h5") ||
    +          !strcmp(name, "h6"))
    +      {
    +       /*
    +	* Newlines before open and after
    +        * close...
    +	*/
    +
    +	if (where == MXML_WS_BEFORE_OPEN ||
    +            where == MXML_WS_AFTER_CLOSE)
    +	  return ("\n");
    +      }
    +      else if (!strcmp(name, "dl") ||
    +               !strcmp(name, "ol") ||
    +               !strcmp(name, "ul"))
    +      {
    +       /*
    +	* Put a newline before and after list
    +        * elements...
    +	*/
    +
    +	return ("\n");
    +      }
    +      else if (!strcmp(name, "dd") ||
    +               !strcmp(name, "dt") ||
    +               !strcmp(name, "li"))
    +      {
    +       /*
    +	* Put a tab before <li>'s, * <dd>'s,
    +        * and <dt>'s, and a newline after them...
    +	*/
    +
    +	if (where == MXML_WS_BEFORE_OPEN)
    +	  return ("\t");
    +	else if (where == MXML_WS_AFTER_CLOSE)
    +	  return ("\n");
    +      }
    +
    +     /*
    +      * Return NULL for no added whitespace...
    +      */
    +
    +      return (NULL);
    +    }
    +
    + +

    To use this callback function, simply use the name when you +call any of the save functions:

    + +
    +    FILE *fp;
    +    mxml_node_t *tree;
    +
    +    fp = fopen("filename.xml", "w");
    +    mxmlSaveFile(tree, fp, whitespace_cb);
    +    fclose(fp);
    +
    + + + +

    Custom Data Types

    + +

    Mini-XML supports custom data types via global load and save +callbacks. Only a single set of callbacks can be active at any +time, however your callbacks can store additional information in +order to support multiple custom data types as needed. The +MXML_CUSTOM node type identifies custom data nodes.

    + +

    The load callback receives a pointer to the current data node +and a string of opaque character data from the XML source with +character entities converted to the corresponding UTF-8 +characters. For example, if we wanted to support a custom +date/time type whose value is encoded as "yyyy-mm-ddThh:mm:ssZ" +(ISO format), the load callback would look like the +following:

    + +
    +    typedef struct
    +    {
    +      unsigned      year,    /* Year */
    +                    month,   /* Month */
    +                    day,     /* Day */
    +                    hour,    /* Hour */
    +                    minute,  /* Minute */
    +                    second;  /* Second */
    +      time_t        unix;    /* UNIX time */
    +    } iso_date_time_t;
    +
    +    int
    +    load_custom(mxml_node_t *node,
    +                const char *data)
    +    {
    +      iso_date_time_t *dt;
    +      struct tm tmdata;
    +
    +     /*
    +      * Allocate data structure...
    +      */
    +
    +      dt = calloc(1, sizeof(iso_date_time_t));
    +
    +     /*
    +      * Try reading 6 unsigned integers from the
    +      * data string...
    +      */
    +
    +      if (sscanf(data, "%u-%u-%uT%u:%u:%uZ",
    +                 &(dt->year), &(dt->month),
    +                 &(dt->day), &(dt->hour),
    +                 &(dt->minute),
    +                 &(dt->second)) != 6)
    +      {
    +       /*
    +        * Unable to read numbers, free the data
    +        * structure and return an error...
    +        */
    +
    +        free(dt);
    +
    +        return (-1);
    +      }
    +
    +     /*
    +      * Range check values...
    +      */
    +
    +      if (dt->month < 1 || dt->month > 12 ||
    +          dt->day < 1 || dt->day > 31 ||
    +          dt->hour < 0 || dt->hour > 23 ||
    +          dt->minute < 0 || dt->minute > 59 ||
    +          dt->second < 0 || dt->second > 59)
    +      {
    +       /*
    +        * Date information is out of range...
    +        */
    +
    +        free(dt);
    +
    +        return (-1);
    +      }
    +
    +     /*
    +      * Convert ISO time to UNIX time in
    +      * seconds...
    +      */
    +
    +      tmdata.tm_year = dt->year - 1900;
    +      tmdata.tm_mon  = dt->month - 1;
    +      tmdata.tm_day  = dt->day;
    +      tmdata.tm_hour = dt->hour;
    +      tmdata.tm_min  = dt->minute;
    +      tmdata.tm_sec  = dt->second;
    +
    +      dt->unix = gmtime(&tmdata);
    +
    +     /*
    +      * Assign custom node data and destroy
    +      * function pointers...
    +      */
    +
    +      mxmlSetCustom(node, data, destroy);
    +
    +     /*
    +      * Return with no errors...
    +      */
    +
    +      return (0);
    +    }
    +
    + +

    The function itself can return 0 on success or -1 if it is +unable to decode the custom data or the data contains an error. +Custom data nodes contain a void pointer to the +allocated custom data for the node and a pointer to a destructor +function which will free the custom data when the node is +deleted.

    + + +

    The save callback receives the node pointer and returns an +allocated string containing the custom data value. The following +save callback could be used for our ISO date/time type:

    + +
    +    char *
    +    save_custom(mxml_node_t *node)
    +    {
    +      char data[255];
    +      iso_date_time_t *dt;
    +
    +
    +      dt = (iso_date_time_t *)mxmlGetCustom(node);
    +
    +      snprintf(data, sizeof(data),
    +               "%04u-%02u-%02uT%02u:%02u:%02uZ",
    +               dt->year, dt->month, dt->day,
    +               dt->hour, dt->minute, dt->second);
    +
    +      return (strdup(data));
    +    }
    +
    + +

    You register the callback functions using the mxmlSetCustomHandlers() +function:

    + +
    +    mxmlSetCustomHandlers(load_custom,
    +                          save_custom);
    +
    + + + +

    Changing Node Values

    + +

    All of the examples so far have concentrated on creating and +loading new XML data nodes. Many applications, however, need to +manipulate or change the nodes during their operation, so +Mini-XML provides functions to change node values safely and +without leaking memory.

    + +

    Existing nodes can be changed using the mxmlSetElement(), mxmlSetInteger(), mxmlSetOpaque(), mxmlSetReal(), mxmlSetText(), and mxmlSetTextf() functions. For +example, use the following function call to change a text node +to contain the text "new" with leading whitespace:

    + +
    +    mxml_node_t *node;
    +
    +    mxmlSetText(node, 1, "new");
    +
    + + +

    Formatted Text

    + +

    The mxmlNewTextf() and mxmlSetTextf() functions create +and change text nodes, respectively, using printf-style +format strings and arguments. For example, use the following +function call to create a new text node containing a constructed +filename:

    + +
    +    mxml_node_t *node;
    +
    +    node = mxmlNewTextf(node, 1, "%s/%s",
    +                        path, filename);
    +
    + + +

    Indexing

    + +

    Mini-XML provides functions for managing indices of nodes. +The current implementation provides the same functionality as +mxmlFindElement(). +The advantage of using an index is that searching and +enumeration of elements is significantly faster. The only +disadvantage is that each index is a static snapshot of the XML +document, so indices are not well suited to XML data that is +updated more often than it is searched. The overhead of creating +an index is approximately equal to walking the XML document +tree. Nodes in the index are sorted by element name and +attribute value.

    + +

    Indices are stored in mxml_index_t +structures. The mxmlIndexNew() function +creates a new index:

    + +
    +    mxml_node_t *tree;
    +    mxml_index_t *ind;
    +
    +    ind = mxmlIndexNew(tree, "element",
    +                       "attribute");
    +
    + +

    The first argument is the XML node tree to index. Normally this +will be a pointer to the ?xml element.

    + +

    The second argument contains the element to index; passing +NULL indexes all element nodes alphabetically.

    + +

    The third argument contains the attribute to index; passing +NULL causes only the element name to be indexed.

    + +

    Once the index is created, the mxmlIndexEnum(), mxmlIndexFind(), and mxmlIndexReset() functions +are used to access the nodes in the index. The mxmlIndexReset() function +resets the "current" node pointer in the index, allowing you to +do new searches and enumerations on the same index. Typically +you will call this function prior to your calls to mxmlIndexEnum() and mxmlIndexFind().

    + +

    The mxmlIndexEnum() +function enumerates each of the nodes in the index and can be +used in a loop as follows:

    + +
    +    mxml_node_t *node;
    +
    +    mxmlIndexReset(ind);
    +
    +    while ((node = mxmlIndexEnum(ind)) != NULL)
    +    {
    +      // do something with node
    +    }
    +
    + +

    The mxmlIndexFind() +function locates the next occurrence of the named element and +attribute value in the index. It can be used to find all +matching elements in an index, as follows:

    + +
    +    mxml_node_t *node;
    +
    +    mxmlIndexReset(ind);
    +
    +    while ((node = mxmlIndexFind(ind, "element",
    +                                 "attr-value"))
    +                != NULL)
    +    {
    +      // do something with node
    +    }
    +
    + +

    The second and third arguments represent the element name and +attribute value, respectively. A NULL pointer is used +to return all elements or attributes in the index. Passing +NULL for both the element name and attribute value +is equivalent to calling mxmlIndexEnum.

    + +

    When you are done using the index, delete it using the +mxmlIndexDelete() +function:

    + +
    +    mxmlIndexDelete(ind);
    +
    + +

    SAX (Stream) Loading of Documents

    + +

    Mini-XML supports an implementation of the Simple API for XML +(SAX) which allows you to load and process an XML document as a +stream of nodes. Aside from allowing you to process XML documents of +any size, the Mini-XML implementation also allows you to retain +portions of the document in memory for later processing.

    + +

    The mxmlSAXLoadFd, mxmlSAXLoadFile, and mxmlSAXLoadString functions +provide the SAX loading APIs. Each function works like the +corresponding mxmlLoad function but uses a callback to +process each node as it is read.

    + +

    The callback function receives the node, an event code, and +a user data pointer you supply:

    + +
    +    void
    +    sax_cb(mxml_node_t *node,
    +           mxml_sax_event_t event,
    +           void *data)
    +    {
    +      ... do something ...
    +    }
    +
    + +

    The event will be one of the following:

    + +
      + +
    • MXML_SAX_CDATA - CDATA was just read
    • + +
    • MXML_SAX_COMMENT - A comment was just read
    • + +
    • MXML_SAX_DATA - Data (custom, integer, opaque, real, or text) was just read
    • + +
    • MXML_SAX_DIRECTIVE - A processing directive was just read
    • + +
    • MXML_SAX_ELEMENT_CLOSE - A close element was just read (</element>)
    • + +
    • MXML_SAX_ELEMENT_OPEN - An open element was just read (<element>)
    • + +
    + +

    Elements are released after the close element is +processed. All other nodes are released after they are processed. +The SAX callback can retain the node using the mxmlRetain function. For example, +the following SAX callback will retain all nodes, effectively +simulating a normal in-memory load:

    + +
    +    void
    +    sax_cb(mxml_node_t *node,
    +           mxml_sax_event_t event,
    +           void *data)
    +    {
    +      if (event != MXML_SAX_ELEMENT_CLOSE)
    +        mxmlRetain(node);
    +    }
    +
    + +

    More typically the SAX callback will only retain a small portion +of the document that is needed for post-processing. For example, the +following SAX callback will retain the title and headings in an +XHTML file. It also retains the (parent) elements like <html>, <head>, and <body>, and processing +directives like <?xml ... ?> and <!DOCTYPE ... >:

    + + +
    +    void
    +    sax_cb(mxml_node_t *node,
    +           mxml_sax_event_t event,
    +           void *data)
    +    {
    +      if (event == MXML_SAX_ELEMENT_OPEN)
    +      {
    +       /*
    +        * Retain headings and titles...
    +        */
    +
    +        char *name = mxmlGetElement(node);
    +
    +        if (!strcmp(name, "html") ||
    +            !strcmp(name, "head") ||
    +            !strcmp(name, "title") ||
    +            !strcmp(name, "body") ||
    +            !strcmp(name, "h1") ||
    +            !strcmp(name, "h2") ||
    +            !strcmp(name, "h3") ||
    +            !strcmp(name, "h4") ||
    +            !strcmp(name, "h5") ||
    +            !strcmp(name, "h6"))
    +          mxmlRetain(node);
    +      }
    +      else if (event == MXML_SAX_DIRECTIVE)
    +        mxmlRetain(node);
    +      else if (event == MXML_SAX_DATA)
    +      {
    +        if (mxmlGetRefCount(mxmlGetParent(node)) > 1)
    +        {
    +         /*
    +          * If the parent was retained, then retain
    +          * this data node as well.
    +          */
    +
    +          mxmlRetain(node);
    +        }
    +      }
    +    }
    +
    + +

    The resulting skeleton document tree can then be searched just +like one loaded using the mxmlLoad functions. For example, +a filter that reads an XHTML document from stdin and then shows the +title and headings in the document would look like:

    + +
    +    mxml_node_t *doc, *title, *body, *heading;
    +
    +    doc = mxmlSAXLoadFd(NULL, 0,
    +                        MXML_TEXT_CALLBACK,
    +                        sax_cb, NULL);
    +
    +    title = mxmlFindElement(doc, doc, "title",
    +                            NULL, NULL,
    +                            MXML_DESCEND);
    +
    +    if (title)
    +      print_children(title);
    +
    +    body = mxmlFindElement(doc, doc, "body",
    +                           NULL, NULL,
    +                           MXML_DESCEND);
    +
    +    if (body)
    +    {
    +      for (heading = mxmlGetFirstChild(body);
    +           heading;
    +           heading = mxmlGetNextSibling(heading))
    +        print_children(heading);
    +    }
    +
    + + + diff --git a/lib/libmxml/doc/basics.html b/lib/libmxml/doc/basics.html new file mode 100644 index 0000000..1b705fc --- /dev/null +++ b/lib/libmxml/doc/basics.html @@ -0,0 +1,590 @@ + + + +

    Chapter 2 - Getting Started +with Mini-XML

    + +

    This chapter describes how to write programs that use Mini-XML to +access data in an XML file. Mini-XML provides the following +functionality:

    + +
      +
    • Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded XML files and strings.
    • +
    • Data is stored in a linked-list tree structure, preserving the XML data hierarchy.
    • +
    • SAX (streamed) reading of XML files and strings to minimize memory usage.
    • +
    • Supports arbitrary element names, attributes, and attribute values with no preset limits, just available memory.
    • +
    • Supports integer, real, opaque ("cdata"), and text data types in "leaf" nodes.
    • +
    • Functions for creating and managing trees of data.
    • +
    • "Find" and "walk" functions for easily locating and navigating trees of data.
    • +
    + +

    Mini-XML doesn't do validation or other types of processing on the data based upon schema files or other sources of definition information.

    + + +

    The Basics

    + +

    Mini-XML provides a single header file which you include:

    + +
    +    #include <mxml.h>
    +
    + +

    The Mini-XML library is included with your program using the +-lmxml option:

    + +
    +    gcc -o myprogram myprogram.c -lmxml ENTER
    +
    + +

    If you have the pkg-config(1) software installed, +you can use it to determine the proper compiler and linker options +for your installation:

    + +
    +    pkg-config --cflags mxml ENTER
    +    pkg-config --libs mxml ENTER
    +
    + +

    Nodes

    + +

    Every piece of information in an XML file is stored in memory in "nodes". +Nodes are defined by the mxml_node_t +structure. Each node has a typed value, optional user data, a parent node, +sibling nodes (previous and next), and potentially child nodes.

    + +

    For example, if you have an XML file like the following:

    + +
    +    <?xml version="1.0" encoding="utf-8"?>
    +    <data>
    +        <node>val1</node>
    +        <node>val2</node>
    +        <node>val3</node>
    +        <group>
    +            <node>val4</node>
    +            <node>val5</node>
    +            <node>val6</node>
    +        </group>
    +        <node>val7</node>
    +        <node>val8</node>
    +    </data>
    +
    + +

    the node tree for the file would look like the following in memory:

    + +
    +    ?xml version="1.0" encoding="utf-8"?
    +      |
    +    data
    +      |
    +    node - node - node - group - node - node
    +      |      |      |      |       |      |
    +    val1   val2   val3     |     val7   val8
    +                           |
    +                         node - node - node
    +                           |      |      |
    +                         val4   val5   val6
    +
    + +

    where "-" is a pointer to the sibling node and "|" is a pointer +to the first child or parent node.

    + +

    The mxmlGetType function gets the type of +a node, one of MXML_CUSTOM, MXML_ELEMENT, +MXML_INTEGER, MXML_OPAQUE, MXML_REAL, or +MXML_TEXT. The parent and sibling nodes are accessed using the +mxmlGetParent, +mxmlGetNext, and +mxmlGetPrevious functions. The +mxmlGetUserData function gets any user +data associated with the node.

    + +

    CDATA Nodes

    + +

    CDATA (MXML_ELEMENT) nodes are created using the +mxmlNewCDATA function. The +mxmlGetCDATA function retrieves the +CDATA string pointer for a node.

    + +
    Note: + +

    CDATA nodes are currently stored in memory as special elements. This will +be changed in a future major release of Mini-XML.

    +
    + +

    Custom Nodes

    + +

    Custom (MXML_CUSTOM) nodes are created using the +mxmlNewCustom function or using a custom +load callback specified using the +mxmlSetCustomHandlers function. +The mxmlGetCustom function retrieves the +custom value pointer for a node.

    + +

    Comment Nodes

    + +

    Comment (MXML_ELEMENT) nodes are created using the +mxmlNewElement function. The +mxmlGetElement function retrieves the +comment string pointer for a node, including the surrounding "!--" and "--" +characters.

    + +
    Note: + +

    Comment nodes are currently stored in memory as special elements. This will +be changed in a future major release of Mini-XML.

    +
    + +

    Element Nodes

    + +

    Element (MXML_ELEMENT) nodes are created using the +mxmlNewElement function. The +mxmlGetElement function retrieves the +element name, the +mxmlElementGetAttr function retrieves +the value string for a named attribute associated with the element, and the +mxmlGetFirstChild and +mxmlGetLastChild functions retrieve the +first and last child nodes for the element, respectively.

    + +

    Integer Nodes

    + +

    Integer (MXML_INTEGER) nodes are created using the +mxmlNewInteger function. The +mxmlGetInteger function retrieves the +integer value for a node.

    + +

    Opaque Nodes

    + +

    Opaque (MXML_OPAQUE) nodes are created using the +mxmlNewOpaque function. The +mxmlGetOpaque function retrieves the +opaque string pointer for a node. Opaque nodes are like string nodes but +preserve all whitespace between nodes.

    + +

    Text Nodes

    + +

    Text (MXML_TEXT) nodes are created using the +mxmlNewText and +mxmlNewTextf functions. Each text node +consists of a text string and (leading) whitespace value - the +mxmlGetText function retrieves the +text string pointer and whitespace value for a node.

    + + +

    Processing Instruction Nodes

    + +

    Processing instruction (MXML_ELEMENT) nodes are created using the +mxmlNewElement function. The +mxmlGetElement function retrieves the +processing instruction string for a node, including the surrounding "?" +characters.

    + +
    Note: + +

    Processing instruction nodes are currently stored in memory as special +elements. This will be changed in a future major release of Mini-XML.

    +
    + +

    Real Number Nodes

    + +

    Real number (MXML_REAL) nodes are created using the +mxmlNewReal function. The +mxmlGetReal function retrieves the +CDATA string pointer for a node.

    + + +

    XML Declaration Nodes

    + +

    XML declaration (MXML_ELEMENT) nodes are created using the +mxmlNewXML function. The +mxmlGetElement function retrieves the +XML declaration string for a node, including the surrounding "?" characters.

    + +
    Note: + +

    XML declaration nodes are currently stored in memory as special elements. +This will be changed in a future major release of Mini-XML.

    +
    + + + +

    Creating XML Documents

    + +

    You can create and update XML documents in memory using the +various mxmlNew functions. The following code will +create the XML document described in the previous section:

    + +
    +    mxml_node_t *xml;    /* <?xml ... ?> */
    +    mxml_node_t *data;   /* <data> */
    +    mxml_node_t *node;   /* <node> */
    +    mxml_node_t *group;  /* <group> */
    +
    +    xml = mxmlNewXML("1.0");
    +
    +    data = mxmlNewElement(xml, "data");
    +
    +        node = mxmlNewElement(data, "node");
    +        mxmlNewText(node, 0, "val1");
    +        node = mxmlNewElement(data, "node");
    +        mxmlNewText(node, 0, "val2");
    +        node = mxmlNewElement(data, "node");
    +        mxmlNewText(node, 0, "val3");
    +
    +        group = mxmlNewElement(data, "group");
    +
    +            node = mxmlNewElement(group, "node");
    +            mxmlNewText(node, 0, "val4");
    +            node = mxmlNewElement(group, "node");
    +            mxmlNewText(node, 0, "val5");
    +            node = mxmlNewElement(group, "node");
    +            mxmlNewText(node, 0, "val6");
    +
    +        node = mxmlNewElement(data, "node");
    +        mxmlNewText(node, 0, "val7");
    +        node = mxmlNewElement(data, "node");
    +        mxmlNewText(node, 0, "val8");
    +
    + + +

    We start by creating the declaration node common to all XML files using the +mxmlNewXML function:

    + +
    +    xml = mxmlNewXML("1.0");
    +
    + +

    We then create the <data> node used for this document using +the mxmlNewElement function. The first +argument specifies the parent node (xml) while the second specifies the +element name (data):

    + +
    +    data = mxmlNewElement(xml, "data");
    +
    + +

    Each <node>...</node> in the file is created using the +mxmlNewElement and mxmlNewText +functions. The first argument of mxmlNewText specifies the parent node +(node). The second argument specifies whether whitespace appears before +the text - 0 or false in this case. The last argument specifies the actual text +to add:

    + +
    +    node = mxmlNewElement(data, "node");
    +    mxmlNewText(node, 0, "val1");
    +
    + +

    The resulting in-memory XML document can then be saved or processed just like +one loaded from disk or a string.

    + + +

    Loading XML

    + +

    You load an XML file using the mxmlLoadFile +function:

    + +
    +    FILE *fp;
    +    mxml_node_t *tree;
    +
    +    fp = fopen("filename.xml", "r");
    +    tree = mxmlLoadFile(NULL, fp,
    +                        MXML_TEXT_CALLBACK);
    +    fclose(fp);
    +
    + +

    The first argument specifies an existing XML parent node, if +any. Normally you will pass NULL for this argument +unless you are combining multiple XML sources. The XML file must +contain a complete XML document including the ?xml +element if the parent node is NULL.

    + +

    The second argument specifies the stdio file to read from, as +opened by fopen() or popen(). You can also use +stdin if you are implementing an XML filter +program.

    + +

    The third argument specifies a callback function which returns +the value type of the immediate children for a new element node: +MXML_CUSTOM, MXML_IGNORE, +MXML_INTEGER, MXML_OPAQUE, MXML_REAL, +or MXML_TEXT. Load callbacks are described in detail in +Chapter 3. The example code uses +the MXML_TEXT_CALLBACK constant which specifies that all +data nodes in the document contain whitespace-separated text +values. Other standard callbacks include +MXML_IGNORE_CALLBACK, MXML_INTEGER_CALLBACK, +MXML_OPAQUE_CALLBACK, and +MXML_REAL_CALLBACK.

    + +

    The mxmlLoadString +function loads XML node trees from a string:

    + + +
    +    char buffer[8192];
    +    mxml_node_t *tree;
    +
    +    ...
    +    tree = mxmlLoadString(NULL, buffer,
    +                          MXML_TEXT_CALLBACK);
    +
    + +

    The first and third arguments are the same as used for +mxmlLoadFile(). The second argument specifies the +string or character buffer to load and must be a complete XML +document including the ?xml element if the parent node +is NULL.

    + + + +

    Saving XML

    + +

    You save an XML file using the mxmlSaveFile function:

    + +
    +    FILE *fp;
    +    mxml_node_t *tree;
    +
    +    fp = fopen("filename.xml", "w");
    +    mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
    +    fclose(fp);
    +
    + +

    The first argument is the XML node tree to save. It should +normally be a pointer to the top-level ?xml node in +your XML document.

    + +

    The second argument is the stdio file to write to, as opened +by fopen() or popen(). You can also use +stdout if you are implementing an XML filter +program.

    + +

    The third argument is the whitespace callback to use when +saving the file. Whitespace callbacks are covered in detail in Chapter 3. The previous example code +uses the MXML_NO_CALLBACK constant to specify that no +special whitespace handling is required.

    + +

    The mxmlSaveAllocString, +and mxmlSaveString +functions save XML node trees to strings:

    + +
    +    char buffer[8192];
    +    char *ptr;
    +    mxml_node_t *tree;
    +
    +    ...
    +    mxmlSaveString(tree, buffer, sizeof(buffer),
    +                   MXML_NO_CALLBACK);
    +
    +    ...
    +    ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
    +
    + +

    The first and last arguments are the same as used for +mxmlSaveFile(). The mxmlSaveString function +takes pointer and size arguments for saving the XML document to +a fixed-size buffer, while mxmlSaveAllocString() +returns a string buffer that was allocated using +malloc().

    + + +

    Controlling Line Wrapping

    + +

    When saving XML documents, Mini-XML normally wraps output +lines at column 75 so that the text is readable in terminal +windows. The mxmlSetWrapMargin function +overrides the default wrap margin:

    + +
    +    /* Set the margin to 132 columns */
    +    mxmlSetWrapMargin(132);
    +
    +    /* Disable wrapping */
    +    mxmlSetWrapMargin(0);
    +
    + +

    Memory Management

    + +

    Once you are done with the XML data, use the mxmlDelete function to recursively +free the memory that is used for a particular node or the entire +tree:

    + +
    +    mxmlDelete(tree);
    +
    + +

    You can also use reference counting to manage memory usage. The +mxmlRetain and +mxmlRelease functions increment and +decrement a node's use count, respectively. When the use count goes to 0, +mxmlRelease will automatically call mxmlDelete to actually +free the memory used by the node tree. New nodes automatically start with a +use count of 1.

    + + + +

    Finding and Iterating Nodes

    + +

    The mxmlWalkPrev +and mxmlWalkNextfunctions +can be used to iterate through the XML node tree:

    + +
    +    mxml_node_t *node;
    +
    +    node = mxmlWalkPrev(current, tree,
    +                        MXML_DESCEND);
    +
    +    node = mxmlWalkNext(current, tree,
    +                        MXML_DESCEND);
    +
    + +

    In addition, you can find a named element/node using the mxmlFindElement +function:

    + +
    +    mxml_node_t *node;
    +
    +    node = mxmlFindElement(tree, tree, "name",
    +                           "attr", "value",
    +                           MXML_DESCEND);
    +
    + +

    The name, attr, and value +arguments can be passed as NULL to act as wildcards, +e.g.:

    + + +
    +    /* Find the first "a" element */
    +    node = mxmlFindElement(tree, tree, "a",
    +                           NULL, NULL,
    +                           MXML_DESCEND);
    +
    + +
    +    /* Find the first "a" element with "href"
    +       attribute */
    +    node = mxmlFindElement(tree, tree, "a",
    +                           "href", NULL,
    +                           MXML_DESCEND);
    +
    + +
    +    /* Find the first "a" element with "href"
    +       to a URL */
    +    node = mxmlFindElement(tree, tree, "a",
    +                           "href",
    +                           "http://www.easysw.com/",
    +                           MXML_DESCEND);
    +
    + +
    +    /* Find the first element with a "src"
    +       attribute */
    +    node = mxmlFindElement(tree, tree, NULL,
    +                           "src", NULL,
    +                           MXML_DESCEND);
    +
    + +
    +    /* Find the first element with a "src"
    +       = "foo.jpg" */
    +    node = mxmlFindElement(tree, tree, NULL,
    +                           "src", "foo.jpg",
    +                           MXML_DESCEND);
    +
    + +

    You can also iterate with the same function:

    + +
    +    mxml_node_t *node;
    +
    +    for (node = mxmlFindElement(tree, tree,
    +                                "name",
    +                                NULL, NULL,
    +                                MXML_DESCEND);
    +         node != NULL;
    +         node = mxmlFindElement(node, tree,
    +                                "name",
    +                                NULL, NULL,
    +                                MXML_DESCEND))
    +    {
    +      ... do something ...
    +    }
    +
    + + +

    The MXML_DESCEND argument can actually be one of +three constants:

    + +
      + +
    • MXML_NO_DESCEND means to not to look at any + child nodes in the element hierarchy, just look at + siblings at the same level or parent nodes until the top + node or top-of-tree is reached. + +

      The previous node from "group" would be the "node" + element to the left, while the next node from "group" would + be the "node" element to the right.

    • + +
    • MXML_DESCEND_FIRST means that it is OK to + descend to the first child of a node, but not to descend + further when searching. You'll normally use this when + iterating through direct children of a parent node, e.g. all + of the "node" and "group" elements under the "?xml" parent + node in the example above. + +

      This mode is only applicable to the search function; the + walk functions treat this as MXML_DESCEND since + every call is a first time.

    • + +
    • MXML_DESCEND means to keep descending until + you hit the bottom of the tree. The previous node from + "group" would be the "val3" node and the next node would + be the first node element under "group". + +

      If you were to walk from the root node "?xml" to the end + of the tree with mxmlWalkNext(), the order would + be:

      + +

      ?xml data node val1 node val2 node val3 group node + val4 node val5 node val6 node val7 node val8

      + +

      If you started at "val8" and walked using + mxmlWalkPrev(), the order would be reversed, + ending at "?xml".

    • + +
    + +

    Finding Specific Nodes

    + +

    You can find specific nodes in the tree using the mxmlFindPath, for example: + +

    +    mxml_node_t *value;
    +
    +    value = mxmlFindPath(tree, "path/to/*/foo/bar");
    +
    + +

    The second argument is a "path" to the parent node. Each component of the +path is separated by a slash (/) and represents a named element in the document +tree or a wildcard (*) path representing 0 or more intervening nodes.

    + + + diff --git a/lib/libmxml/doc/body.man b/lib/libmxml/doc/body.man new file mode 100644 index 0000000..55bf45a --- /dev/null +++ b/lib/libmxml/doc/body.man @@ -0,0 +1,173 @@ +.SH INCLUDE FILE +#include +.SH LIBRARY +\-lmxml +.SH DESCRIPTION +Mini-XML is a small XML parsing library that you can use to +read XML and XML-like data files in your application without +requiring large non-standard libraries. Mini-XML only +requires an ANSI C compatible compiler (GCC works, as do +most vendors' ANSI C compilers) and a "make" program. +.PP +Mini-XML provides the following functionality: +.IP \(bu 4 +Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded XML files and strings. +.IP \(bu 4 +Data is stored in a linked-list tree structure, +preserving the XML data hierarchy. +.IP \(bu 4 +Supports arbitrary element names, attributes, and attribute +values with no preset limits, just available memory. +.IP \(bu 4 +Supports integer, real, opaque ("CDATA"), and text data types in +"leaf" nodes. +.IP \(bu 4 +Functions for creating, indexing, and managing trees of data. +.IP \(bu 4 +"Find" and "walk" functions for easily locating and navigating +trees of data. +.PP +Mini-XML doesn't do validation or other types of processing +on the data based upon schema files or other sources of +definition information, nor does it support character +entities other than those required by the XML +specification. +.SH USING MINI-XML +Mini-XML provides a single header file which you include: +.nf + + #include +.fi +.PP +Nodes are defined by the "mxml_node_t" structure; the "type" +member defines the node type (element, integer, opaque, +real, or text) which determines which value you want to look +at in the "value" union. New nodes can be created using the +"mxmlNewElement()", "mxmlNewInteger()", "mxmlNewOpaque()", +"mxmlNewReal()", and "mxmlNewText()" functions. Only +elements can have child nodes, and the top node must be an +element, usually "?xml". +.PP +You load an XML file using the "mxmlLoadFile()" function: +.nf + + FILE *fp; + mxml_node_t *tree; + + fp = fopen("filename.xml", "r"); + tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK); + fclose(fp); +.fi +.PP +Similarly, you save an XML file using the "mxmlSaveFile()" +function: +.nf + + FILE *fp; + mxml_node_t *tree; + + fp = fopen("filename.xml", "w"); + mxmlSaveFile(tree, fp, MXML_NO_CALLBACK); + fclose(fp); +.fi +.PP +The "mxmlLoadString()", "mxmlSaveAllocString()", and +"mxmlSaveString()" functions load XML node trees from and save +XML node trees to strings: +.nf + + char buffer[8192]; + char *ptr; + mxml_node_t *tree; + + ... + tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK); + + ... + mxmlSaveString(tree, buffer, sizeof(buffer), + MXML_NO_CALLBACK); + + ... + ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK); +.fi +.PP +You can find a named element/node using the "mxmlFindElement()" +function: +.nf + + mxml_node_t *node = mxmlFindElement(tree, tree, "name", + "attr", "value", + MXML_DESCEND); +.fi +.PP +The "name", "attr", and "value" arguments can be passed as +NULL to act as wildcards, e.g.: +.nf + + /* Find the first "a" element */ + node = mxmlFindElement(tree, tree, "a", NULL, NULL, + MXML_DESCEND); + + /* Find the first "a" element with "href" attribute */ + node = mxmlFindElement(tree, tree, "a", "href", NULL, + MXML_DESCEND); + + /* Find the first "a" element with "href" to a URL */ + node = mxmlFindElement(tree, tree, "a", "href", + "http://www.easysw.com/~mike/mxml/", + MXML_DESCEND); + + /* Find the first element with a "src" attribute*/ + node = mxmlFindElement(tree, tree, NULL, "src", NULL, + MXML_DESCEND); + + /* Find the first element with a "src" = "foo.jpg" */ + node = mxmlFindElement(tree, tree, NULL, "src", + "foo.jpg", MXML_DESCEND); +.fi +.PP +You can also iterate with the same function: +.nf + + mxml_node_t *node; + + for (node = mxmlFindElement(tree, tree, "name", NULL, + NULL, MXML_DESCEND); + node != NULL; + node = mxmlFindElement(node, tree, "name", NULL, + NULL, MXML_DESCEND)) + { + ... do something ... + } +.fi +.PP +To find the value of a specific node in the tree, use the "mxmlFindPath()" +function: +.nf + + mxml_node_t *value = mxmlFindPath(tree, "path/to/*/foo/bar"); +.fi +.PP +The "mxmlGetInteger()", "mxmlGetOpaque()", "mxmlGetReal()", and "mxmlGetText()" +functions retrieve the value from a node: +.nf + + mxml_node_t *node; + + int intvalue = mxmlGetInteger(node); + + const char *opaquevalue = mxmlGetOpaque(node); + + double realvalue = mxmlGetReal(node); + + int whitespacevalue; + const char *textvalue = mxmlGetText(node, &whitespacevalue); +.fi +.PP +Finally, once you are done with the XML data, use the +"mxmlDelete()" function to recursively free the memory that +is used for a particular node or the entire tree: +.nf + + mxmlDelete(tree); +.fi diff --git a/lib/libmxml/doc/body.md b/lib/libmxml/doc/body.md new file mode 100644 index 0000000..0385663 --- /dev/null +++ b/lib/libmxml/doc/body.md @@ -0,0 +1,1153 @@ +--- +title: Mini-XML API Reference +author: Michael R Sweet +copyright: Copyright © 2003-2017, All Rights Reserved. +docversion: 2.11 +... + +# Introduction + +Mini-XML is a small XML parsing library that you can use to read XML data files +or strings in your application without requiring large non-standard libraries. +Mini-XML provides the following functionality: + +- Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded XML files and + strings. +- Data is stored in a linked-list tree structure, preserving the XML data + hierarchy. +- SAX (streamed) reading of XML files and strings to minimize memory usage. +- Supports arbitrary element names, attributes, and attribute values with no + preset limits, just available memory. +- Supports integer, real, opaque ("cdata"), and text data types in "leaf" + nodes. +- Functions for creating and managing trees of data. +- "Find" and "walk" functions for easily locating and navigating trees of + data. + +Mini-XML doesn't do validation or other types of processing on the data based +upon schema files or other sources of definition information. + + +## History + +Mini-XML was initially developed for the [Gutenprint](http://gutenprint.sf.net/) +project to replace the rather large and unwieldy `libxml2` library with +something substantially smaller and easier-to-use. It all began one morning in +June of 2003 when Robert posted the following sentence to the developer's list: + +> It's bad enough that we require libxml2, but rolling our own XML parser is a +> bit more than we can handle. + +I then replied with: + +> Given the limited scope of what you use in XML, it should be trivial to code a +> mini-XML API in a few hundred lines of code. + +I took my own challenge and coded furiously for two days to produced the initial +public release of Mini-XML, total lines of code: 696. Robert promptly +integrated Mini-XML into Gutenprint and removed libxml2. + +Thanks to lots of feedback and support from various developers, Mini-XML has +evolved since then to provide a more complete XML implementation and now stands +at a whopping 4,115 lines of code, compared to 140,410 lines of code for libxml2 +version 2.9.1. + + +## Resources + +The Mini-XML home page can be found at: + + https://michaelrsweet.github.io/mxml + +From here you can download the current version of Mini-XML, the issue tracker, +and other resources. + + +## Legal Stuff + +The Mini-XML library is copyright © 2003-2017 by Michael R Sweet and is provided +under version 2 of the GNU Library General Public License (LGPL2) with the +following exceptions: + +1. Static linking of applications to the Mini-XML library does not constitute a + derivative work and does not require the author to provide source code for + the application, use the shared Mini-XML libraries, or link their + applications against a user-supplied version of Mini-XML. + + If you link the application to a modified version of Mini-XML, then the + changes to Mini-XML must be provided under the terms of the LGPL2 in sections + 1, 2, and 4. + +2. You do not have to provide a copy of the Mini-XML license with programs that + are linked to the Mini-XML library, nor do you have to identify the Mini-XML + license in your program or documentation as required by section 6 of the + LGPL2. + +A copy of the complete license is available in the file `COPYING` provided with +the source code. + + +# Using Mini-XML + +Mini-XML provides a single header file which you include: + + #include + +The Mini-XML library is included with your program using the `-lmxml` option: + + gcc -o myprogram myprogram.c -lmxml + +If you have the `pkg-config` software installed, you can use it to determine the +proper compiler and linker options for your installation: + + gcc `pkg-config --cflags mxml` -o myprogram myprogram.c `pkg-config --libs mxml` + + +## Loading an XML File + +You load an XML file using the `mxmlLoadFile` function: + + mxml_node_t * + mxmlLoadFile(mxml_node_t *top, FILE *fp, + mxml_type_t (*cb)(mxml_node_t *)); + +The `cb` argument specifies a function that assigns child (value) node types for +each element in the document. The callback can be a function you provide or one +of the standard functions provided with Mini-XML. For example, to load the XML +file "filename.xml" containing text strings you can use the +`MXML_OPAQUE_CALLBACK` function: + + FILE *fp; + mxml_node_t *tree; + + fp = fopen("filename.xml", "r"); + tree = mxmlLoadFile(NULL, fp, MXML_OPAQUE_CALLBACK); + fclose(fp); + +Mini-XML also provides functions to load from a file descriptor or string: + + mxml_node_t * + mxmlLoadFd(mxml_node_t *top, int fd, + mxml_type_t (*cb)(mxml_node_t *)); + + mxml_node_t * + mxmlLoadString(mxml_node_t *top, const char *s, + mxml_type_t (*cb)(mxml_node_t *)); + + +### Load Callbacks + +The last argument to the `mxmlLoad` functions is a callback function which is +used to determine the value type of each data node in an XML document. Mini-XML +defines several standard callbacks for simple XML data files: + +- `MXML_INTEGER_CALLBACK`: All data nodes contain whitespace-separated integers. +- `MXML_OPAQUE_CALLBACK`: All data nodes contain opaque strings with whitespace preserved. +- `MXML_REAL_CALLBACK` - All data nodes contain whitespace-separated floating-point numbers. +- `MXML_TEXT_CALLBACK` - All data nodes contain whitespace-separated strings. + +You can provide your own callback functions for more complex XML documents. +Your callback function will receive a pointer to the current element node and +must return the value type of the immediate children for that element node: +`MXML_CUSTOM`, `MXML_INTEGER`, `MXML_OPAQUE`, `MXML_REAL`, or `MXML_TEXT`. The +function is called *after* the element and its attributes have been read, so you +can look at the element name, attributes, and attribute values to determine the +proper value type to return. + +The following callback function looks for an attribute named "type" or the +element name to determine the value type for its child nodes: + + mxml_type_t + type_cb(mxml_node_t *node) + { + const char *type; + + /* + * You can lookup attributes and/or use the element name, + * hierarchy, etc... + */ + + type = mxmlElementGetAttr(node, "type"); + if (type == NULL) + type = mxmlGetElement(node); + + if (!strcmp(type, "integer")) + return (MXML_INTEGER); + else if (!strcmp(type, "opaque")) + return (MXML_OPAQUE); + else if (!strcmp(type, "real")) + return (MXML_REAL); + else + return (MXML_TEXT); + } + +To use this callback function, simply use the name when you call any of the load +functions: + + FILE *fp; + mxml_node_t *tree; + + fp = fopen("filename.xml", "r"); + tree = mxmlLoadFile(NULL, fp, type_cb); + fclose(fp); + + +## Nodes + +Every piece of information in an XML file is stored in memory in "nodes". Nodes +are defined by the `mxml_node_t` structure. Each node has a typed value, +optional user data, a parent node, sibling nodes (previous and next), and +potentially child nodes. + +For example, if you have an XML file like the following: + + + + val1 + val2 + val3 + + val4 + val5 + val6 + + val7 + val8 + + +the node tree for the file would look like the following in memory: + + ?xml version="1.0" encoding="utf-8"? + | + data + | + node - node - node - group - node - node + | | | | | | + val1 val2 val3 | val7 val8 + | + node - node - node + | | | + val4 val5 val6 + +where "-" is a pointer to the sibling node and "|" is a pointer to the first +child or parent node. + +The `mxmlGetType` function gets the type of a node: + + mxml_type_t + mxmlGetType(mxml_node_t *node); + +- `MXML_CUSTOM` : A custom value defined by your application, +- `MXML_ELEMENT` : An XML element, CDATA, comment, or processing instruction, +- `MXML_INTEGER` : A whitespace-delimited integer value, +- `MXML_OPAQUE` : An opaque string value that preserves all whitespace, +- `MXML_REAL` : A whitespace-delimited floating point value, or +- `MXML_TEXT` : A whitespace-delimited text (fragment) value. + +> Note: CDATA, comment, and processing directive nodes are currently stored in +> memory as special elements. This will be changed in a future major release of +> Mini-XML. + +The parent and sibling nodes are accessed using the `mxmlGetParent`, +`mxmlGetNextSibling`, and `mxmlGetPreviousSibling` functions, while the children +of an element node are accessed using the `mxmlGetFirstChild` or +`mxmlGetLastChild` functions: + + mxml_node_t * + mxmlGetFirstChild(mxml_node_t *node); + + mxml_node_t * + mxmlGetLastChild(mxml_node_t *node); + + mxml_node_t * + mxmlGetNextSibling(mxml_node_t *node); + + mxml_node_t * + mxmlGetParent(mxml_node_t *node); + + mxml_node_t * + mxmlGetPrevSibling(mxml_node_t *node); + +The `mxmlGetUserData` function gets any user (application) data associated with +the node: + + void * + mxmlGetUserData(mxml_node_t *node); + + +## Creating XML Documents + +You can create and update XML documents in memory using the various `mxmlNew` +functions. The following code will create the XML document described in the +previous section: + + mxml_node_t *xml; /* */ + mxml_node_t *data; /* */ + mxml_node_t *node; /* */ + mxml_node_t *group; /* */ + + xml = mxmlNewXML("1.0"); + + data = mxmlNewElement(xml, "data"); + + node = mxmlNewElement(data, "node"); + mxmlNewText(node, 0, "val1"); + node = mxmlNewElement(data, "node"); + mxmlNewText(node, 0, "val2"); + node = mxmlNewElement(data, "node"); + mxmlNewText(node, 0, "val3"); + + group = mxmlNewElement(data, "group"); + + node = mxmlNewElement(group, "node"); + mxmlNewText(node, 0, "val4"); + node = mxmlNewElement(group, "node"); + mxmlNewText(node, 0, "val5"); + node = mxmlNewElement(group, "node"); + mxmlNewText(node, 0, "val6"); + + node = mxmlNewElement(data, "node"); + mxmlNewText(node, 0, "val7"); + node = mxmlNewElement(data, "node"); + mxmlNewText(node, 0, "val8"); + +We start by creating the declaration node common to all XML files using the +`mxmlNewXML` function: + + xml = mxmlNewXML("1.0"); + +We then create the `` node used for this document using the +`mxmlNewElement` function. The first argument specifies the parent node +\(`xml`) while the second specifies the element name \(`data`): + + data = mxmlNewElement(xml, "data"); + +Each `...` in the file is created using the `mxmlNewElement` and +`mxmlNewText` functions. The first argument of `mxmlNewText` specifies the +parent node \(`node`). The second argument specifies whether whitespace appears +before the text - 0 or false in this case. The last argument specifies the +actual text to add: + + node = mxmlNewElement(data, "node"); + mxmlNewText(node, 0, "val1"); + +The resulting in-memory XML document can then be saved or processed just like +one loaded from disk or a string. + + +## Saving an XML File + +You save an XML file using the `mxmlSaveFile` function: + + int + mxmlSaveFile(mxml_node_t *node, FILE *fp, + mxml_save_cb_t cb); + +The `cb` argument specifies a function that returns the whitespace (if any) that +is inserted before and after each element node. The `MXML_NO_CALLBACK` constant +tells Mini-XML to not include any extra whitespace. For example, so save an XML +file to the file "filename.xml" with no extra whitespace: + + FILE *fp; + + fp = fopen("filename.xml", "w"); + mxmlSaveFile(xml, fp, MXML_NO_CALLBACK); + fclose(fp); + +Mini-XML also provides functions to save to a file descriptor or strings: + + char * + mxmlSaveAllocString(mxml_node_t *node, mxml_save_cb_t cb); + + int + mxmlSaveFd(mxml_node_t *node, int fd, mxml_save_cb_t cb); + + int + mxmlSaveString(mxml_node_t *node, char *buffer, int bufsize, + mxml_save_cb_t cb); + + +### Controlling Line Wrapping + +When saving XML documents, Mini-XML normally wraps output lines at column 75 so +that the text is readable in terminal windows. The `mxmlSetWrapMargin` function +overrides the default wrap margin for the current thread: + + void mxmlSetWrapMargin(int column); + +For example, the following code sets the margin to 132 columns: + + mxmlSetWrapMargin(132); + +while the following code disables wrapping by setting the margin to 0: + + mxmlSetWrapMargin(0); + + +### Save Callbacks + +The last argument to the `mxmlSave` functions is a callback function which is +used to automatically insert whitespace in an XML document. Your callback +function will be called up to four times for each element node with a pointer to +the node and a "where" value of `MXML_WS_BEFORE_OPEN`, `MXML_WS_AFTER_OPEN`, +`MXML_WS_BEFORE_CLOSE`, or `MXML_WS_AFTER_CLOSE`. The callback function should +return `NULL` if no whitespace should be added or the string to insert (spaces, +tabs, carriage returns, and newlines) otherwise. + +The following whitespace callback can be used to add whitespace to XHTML output +to make it more readable in a standard text editor: + + const char * + whitespace_cb(mxml_node_t *node, int where) + { + const char *element; + + /* + * We can conditionally break to a new line before or after + * any element. These are just common HTML elements... + */ + + element = mxmlGetElement(node); + + if (!strcmp(element, "html") || + !strcmp(element, "head") || + !strcmp(element, "body") || + !strcmp(element, "pre") || + !strcmp(element, "p") || + !strcmp(element, "h1") || + !strcmp(element, "h2") || + !strcmp(element, "h3") || + !strcmp(element, "h4") || + !strcmp(element, "h5") || + !strcmp(element, "h6")) + { + /* + * Newlines before open and after close... + */ + + if (where == MXML_WS_BEFORE_OPEN || + where == MXML_WS_AFTER_CLOSE) + return ("\n"); + } + else if (!strcmp(element, "dl") || + !strcmp(element, "ol") || + !strcmp(element, "ul")) + { + /* + * Put a newline before and after list elements... + */ + + return ("\n"); + } + else if (!strcmp(element, "dd") || + !strcmp(element, "dt") || + !strcmp(element, "li")) + { + /* + * Put a tab before
  1. 's,
    's, and
    's, and a + * newline after them... + */ + + if (where == MXML_WS_BEFORE_OPEN) + return ("\t"); + else if (where == MXML_WS_AFTER_CLOSE) + return ("\n"); + } + + /* + * Otherwise return NULL for no added whitespace... + */ + + return (NULL); + } + +To use this callback function, simply use the name when you call any of the save +functions: + + FILE *fp; + mxml_node_t *tree; + + fp = fopen("filename.xml", "w"); + mxmlSaveFile(tree, fp, whitespace_cb); + fclose(fp); + + +## Memory Management + +Once you are done with the XML data, use the `mxmlDelete` function to +recursively free the memory that is used for a particular node or the entire +tree: + + void + mxmlDelete(mxml_node_t *tree); + +You can also use reference counting to manage memory usage. The `mxmlRetain` +and `mxmlRelease` functions increment and decrement a node's use count, +respectively. When the use count goes to zero, `mxmlRelease` automatically +calls `mxmlDelete` to actually free the memory used by the node tree. New nodes +start with a use count of 1. + + +# More About Nodes + +## Element Nodes + +Element \(`MXML_ELEMENT`) nodes are created using the `mxmlNewElement` function. +Element attributes are set using the `mxmlElementSetAttr` and +`mxmlElementSetAttrf` functions and cleared using the `mxmlElementDeleteAttr` +function: + + mxml_node_t * + mxmlNewElement(mxml_node_t *parent, const char *name); + + void + mxmlElementDeleteAttr(mxml_node_t *node, const char *name); + + void + mxmlElementSetAttr(mxml_node_t *node, const char *name, + const char *value); + + void + mxmlElementSetAttrf(mxml_node_t *node, const char *name, + const char *format, ...); + +Child nodes are added using the various `mxmlNew` functions. The top (root) +node must be an element, usually created by the `mxmlNewXML` function: + + mxml_node_t * + mxmlNewXML(const char *version); + +The `mxmlGetElement` function retrieves the element name, the +`mxmlElementGetAttr` function retrieves the value string for a named attribute +associated with the element. The `mxmlElementGetAttrByIndex` and +`mxmlElementGetAttrCount` functions retrieve attributes by index: + + const char * + mxmlGetElement(mxml_node_t *node); + + const char * + mxmlElementGetAttr(mxml_node_t *node, const char *name); + + const char * + mxmlElementGetAttrByIndex(mxml_node_t *node, int idx, + const char **name); + + int + mxmlElementGetAttrCount(mxml_node_t *node); + + +## CDATA Nodes + +CDATA \(`MXML_ELEMENT`) nodes are created using the `mxmlNewCDATA` function: + + mxml_node_t *mxmlNewCDATA(mxml_node_t *parent, const char *string); + +The `mxmlGetCDATA` function retrieves the CDATA string pointer for a node: + + const char *mxmlGetCDATA(mxml_node_t *node); + + +## Comment Nodes + +Because comments are currently stored as element nodes, comment +\(`MXML_ELEMENT`) nodes are created using the `mxmlNewElement` function by +including the surrounding "!--" and "--" characters in the element name, for +example: + + mxml_node_t *node = mxmlNewElement("!-- This is a comment --"); + +Similarly, the `mxmlGetElement` function retrieves the comment string pointer +for a node, which includes the surrounding "!--" and "--" characters. + + const char *comment = mxmlGetElement(node); + /* returns "!-- This is a comment --" */ + + +## Processing Instruction Nodes + +Because processing instructions are currently stored as element nodes, +processing instruction \(`MXML_ELEMENT`) nodes are created using the +`mxmlNewElement` function including the surrounding "?" characters: + + mxml_node_t *node = mxmlNewElement("?xml-stylesheet type=\"text/css\" href=\"style.css\"?"); + +The `mxmlGetElement` function retrieves the processing instruction string for a +node, including the surrounding "?" characters: + + const char *instr = mxmlGetElement(node); + /* returned "?xml-stylesheet type=\"text/css\" href=\"style.css\"?" */ + + +## Integer Nodes + +Integer \(`MXML_INTEGER`) nodes are created using the `mxmlNewInteger` function: + + mxml_node_t * + mxmlNewInteger(mxml_node_t *parent, int integer); + +The `mxmlGetInteger` function retrieves the integer value for a node: + + int + mxmlGetInteger(mxml_node_t *node); + + +## Opaque String Nodes + +Opaque string \(`MXML_OPAQUE`) nodes are created using the `mxmlNewOpaque` +function: + + mxml_node_t * + mxmlNewOpaque(mxml_node_t *parent, const char *opaque); + +The `mxmlGetOpaque` function retrieves the opaque string pointer for a node: + + const char * + mxmlGetOpaque(mxml_node_t *node); + + +## Text Nodes + +Whitespace-delimited text string \(`MXML_TEXT`) nodes are created using the +`mxmlNewText` and `mxmlNewTextf` functions. Each text node consists of a text +string and (leading) whitespace flag value. + + mxml_node_t * + mxmlNewText(mxml_node_t *parent, int whitespace, + const char *string); + + mxml_node_t * + mxmlNewTextf(mxml_node_t *parent, int whitespace, + const char *format, ...); + +The `mxmlGetText` function retrieves the text string pointer and whitespace +flag value for a node: + + const char * + mxmlGetText(mxml_node_t *node, int *whitespace); + + +## Real Number Nodes + +Real number \(`MXML_REAL`) nodes are created using the `mxmlNewReal` function: + + mxml_node_t * + mxmlNewReal(mxml_node_t *parent, double real); + +The `mxmlGetReal` function retrieves the real number for a node: + + double + mxmlGetReal(mxml_node_t *node); + + +# Locating Data in an XML Document + +Mini-XML provides many functions for enumerating, searching, and indexing XML +documents. + + +## Finding Nodes + +The `mxmlFindPath` function finds the (first) value node under a specific +element using a "path": + + mxml_node_t * + mxmlFindPath(mxml_node_t *node, const char *path); + +The `path` string can contain the "*" wildcard to match a single element node in +the hierarchy. For example, the following code will find the first "node" +element under the "group" element, first using an explicit path and then using a +wildcard: + + mxml_node_t *value = mxmlFindPath(xml, "data/group/node"); + + mxml_node_t *value = mxmlFindPath(xml, "data/*/node"); + +The `mxmlFindElement` function can be used to find a named element, optionally +matching an attribute and value: + + mxml_node_t * + mxmlFindElement(mxml_node_t *node, mxml_node_t *top, + const char *element, const char *attr, + const char *value, int descend); + +The "element", "attr", and "value" arguments can be passed as `NULL` to act as +wildcards, e.g.: + + /* Find the first "a" element */ + node = mxmlFindElement(tree, tree, "a", NULL, NULL, + MXML_DESCEND); + + /* Find the first "a" element with "href" attribute */ + node = mxmlFindElement(tree, tree, "a", "href", NULL, + MXML_DESCEND); + + /* Find the first "a" element with "href" to a URL */ + node = mxmlFindElement(tree, tree, "a", "href", + "http://michaelrsweet.github.io/", + MXML_DESCEND); + + /* Find the first element with a "src" attribute*/ + node = mxmlFindElement(tree, tree, NULL, "src", NULL, + MXML_DESCEND); + + /* Find the first element with a "src" = "foo.jpg" */ + node = mxmlFindElement(tree, tree, NULL, "src", "foo.jpg", + MXML_DESCEND); + +You can also iterate with the same function: + + mxml_node_t *node; + + for (node = mxmlFindElement(tree, tree, "element", NULL, + NULL, MXML_DESCEND); + node != NULL; + node = mxmlFindElement(node, tree, "element", NULL, + NULL, MXML_DESCEND)) + { + ... do something ... + } + +The `descend` argument \(`MXML_DESCEND` in the examples above) can be one of +three constants: + +- `MXML_NO_DESCEND`: ignore child nodes in the element hierarchy, instead using + siblings (same level) or parent nodes (above) until the top (root) node is + reached. + +- `MXML_DESCEND_FIRST`: start the search with the first child of the node, and + then search siblings. You'll normally use this when iterating through direct + children of a parent node, e.g. all of the "node" and "group" elements under + the "?xml" parent node in the previous example. + +- `MXML_DESCEND`: search child nodes first, then sibling nodes, and then parent + nodes. + + +## Iterating Nodes + +While the `mxmlFindNode` and `mxmlFindPath` functions will find a particular +element node, sometimes you need to iterate over all nodes. The `mxmlWalkNext` +and `mxmlWalkPrev` functions can be used to iterate through the XML node +tree: + + mxml_node_t * + mxmlWalkNext(mxml_node_t *node, mxml_node_t *top, + int descend); + + mxml_node_t * + mxmlWalkPrev(mxml_node_t *node, mxml_node_t *top, + int descend); + +Depending on the value of the `descend` argument, these functions will +automatically traverse child, sibling, and parent nodes until the `top` node is +reached. For example, the following code will iterate over all of the nodes in +the sample XML document in the previous section: + + mxml_node_t *node; + + for (node = xml; + node != NULL; + node = mxmlWalkNext(node, xml, MXML_DESCEND)) + { + ... do something ... + } + +The nodes will be returned in the following order: + + + + + val1 + + val2 + + val3 + + + val4 + + val5 + + val6 + + val7 + + val8 + + +## Indexing + +The `mxmlIndexNew` function allows you to create an index of nodes for faster +searching and enumeration: + + mxml_index_t * + mxmlIndexNew(mxml_node_t *node, const char *element, + const char *attr); + +The `element` and `attr` arguments control which elements are included in the +index. If `element` is not `NULL` then only elements with the specified name +are added to the index. Similarly, if `attr` is not `NULL` then only elements +containing the specified attribute are added to the index. The nodes are sorted +in the index. + +For example, the following code creates an index of all "id" values in an XML +document: + + mxml_index_t *ind = mxmlIndexNew(xml, NULL, "id"); + +Once the index is created, the `mxmlIndexFind` function can be used to find a +matching node: + + mxml_node_t * + mxmlIndexFind(mxml_index_t *ind, const char *element, + const char *value); + +For example, the following code will find the element whose "id" string is "42": + + mxml_node_t *node = mxmlIndexFind(ind, NULL, "42"); + +Alternately, the `mxmlIndexReset` and `mxmlIndexEnum` functions can be used to +enumerate the nodes in the index: + + mxml_node_t * + mxmlIndexReset(mxml_index_t *ind); + + mxml_node_t * + mxmlIndexEnum(mxml_index_t *ind); + +Typically these functions will be used in a `for` loop: + + mxml_node_t *node; + + for (node = mxmlIndexReset(ind); + node != NULL; + node = mxmlIndexEnum(ind)) + { + ... do something ... + } + +The `mxmlIndexCount` function returns the number of nodes in the index: + + int + mxmlIndexGetCount(mxml_index_t *ind); + +Finally, the `mxmlIndexDelete` function frees all memory associated with the +index: + + void + mxmlIndexDelete(mxml_index_t *ind); + + +# Custom Data Types + +Mini-XML supports custom data types via per-thread load and save callbacks. +Only a single set of callbacks can be active at any time for the current thread, +however your callbacks can store additional information in order to support +multiple custom data types as needed. The `MXML_CUSTOM` node type identifies +custom data nodes. + +The `mxmlGetCustom` function retrieves the custom value pointer for a node. + + const void * + mxmlGetCustom(mxml_node_t *node); + +Custom \(`MXML_CUSTOM`) nodes are created using the `mxmlNewCustom` function or +using a custom per-thread load callbacks specified using the +`mxmlSetCustomHandlers` function: + + typedef void (*mxml_custom_destroy_cb_t)(void *); + typedef int (*mxml_custom_load_cb_t)(mxml_node_t *, const char *); + typedef char *(*mxml_custom_save_cb_t)(mxml_node_t *); + + mxml_node_t * + mxmlNewCustom(mxml_node_t *parent, void *data, + mxml_custom_destroy_cb_t destroy); + + int + mxmlSetCustom(mxml_node_t *node, void *data, + mxml_custom_destroy_cb_t destroy); + + void + mxmlSetCustomHandlers(mxml_custom_load_cb_t load, + mxml_custom_save_cb_t save); + +The load callback receives a pointer to the current data node and a string of +opaque character data from the XML source with character entities converted to +the corresponding UTF-8 characters. For example, if we wanted to support a +custom date/time type whose value is encoded as "yyyy-mm-ddThh:mm:ssZ" (ISO +format), the load callback would look like the following: + + typedef struct + { + unsigned year, /* Year */ + month, /* Month */ + day, /* Day */ + hour, /* Hour */ + minute, /* Minute */ + second; /* Second */ + time_t unix; /* UNIX time */ + } iso_date_time_t; + + int + load_custom(mxml_node_t *node, const char *data) + { + iso_date_time_t *dt; + struct tm tmdata; + + /* + * Allocate data structure... + */ + + dt = calloc(1, sizeof(iso_date_time_t)); + + /* + * Try reading 6 unsigned integers from the data string... + */ + + if (sscanf(data, "%u-%u-%uT%u:%u:%uZ", &(dt->year), + &(dt->month), &(dt->day), &(dt->hour), + &(dt->minute), &(dt->second)) != 6) + { + /* + * Unable to read numbers, free the data structure and + * return an error... + */ + + free(dt); + + return (-1); + } + + /* + * Range check values... + */ + + if (dt->month < 1 || dt->month > 12 || + dt->day < 1 || dt->day > 31 || + dt->hour < 0 || dt->hour > 23 || + dt->minute < 0 || dt->minute > 59 || + dt->second < 0 || dt->second > 60) + { + /* + * Date information is out of range... + */ + + free(dt); + + return (-1); + } + + /* + * Convert ISO time to UNIX time in seconds... + */ + + tmdata.tm_year = dt->year - 1900; + tmdata.tm_mon = dt->month - 1; + tmdata.tm_day = dt->day; + tmdata.tm_hour = dt->hour; + tmdata.tm_min = dt->minute; + tmdata.tm_sec = dt->second; + + dt->unix = gmtime(&tmdata); + + /* + * Assign custom node data and destroy (free) function + * pointers... + */ + + mxmlSetCustom(node, data, free); + + /* + * Return with no errors... + */ + + return (0); + } + +The function itself can return 0 on success or -1 if it is unable to decode the +custom data or the data contains an error. Custom data nodes contain a `void` +pointer to the allocated custom data for the node and a pointer to a destructor +function which will free the custom data when the node is deleted. In this +example, we use the standard `free` function since everything is contained in a +single calloc'd block. + +The save callback receives the node pointer and returns an allocated string +containing the custom data value. The following save callback could be used for +our ISO date/time type: + + char * + save_custom(mxml_node_t *node) + { + char data[255]; + iso_date_time_t *dt; + + + dt = (iso_date_time_t *)mxmlGetCustom(node); + + snprintf(data, sizeof(data), + "%04u-%02u-%02uT%02u:%02u:%02uZ", + dt->year, dt->month, dt->day, dt->hour, + dt->minute, dt->second); + + return (strdup(data)); + } + +You register the callback functions using the `mxmlSetCustomHandlers` function: + + mxmlSetCustomHandlers(load_custom, save_custom); + + +# SAX (Stream) Loading of Documents + +Mini-XML supports an implementation of the Simple API for XML (SAX) which allows +you to load and process an XML document as a stream of nodes. Aside from +allowing you to process XML documents of any size, the Mini-XML implementation +also allows you to retain portions of the document in memory for later +processing. + +The `mxmlSAXLoadFd`, `mxmlSAXLoadFile`, and `mxmlSAXLoadString` functions +provide the SAX loading APIs: + + mxml_node_t * + mxmlSAXLoadFd(mxml_node_t *top, int fd, + mxml_type_t (*cb)(mxml_node_t *), + mxml_sax_cb_t sax, void *sax_data); + + mxml_node_t * + mxmlSAXLoadFile(mxml_node_t *top, FILE *fp, + mxml_type_t (*cb)(mxml_node_t *), + mxml_sax_cb_t sax, void *sax_data); + + mxml_node_t * + mxmlSAXLoadString(mxml_node_t *top, const char *s, + mxml_type_t (*cb)(mxml_node_t *), + mxml_sax_cb_t sax, void *sax_data); + +Each function works like the corresponding `mxmlLoad` function but uses a +callback to process each node as it is read. The callback function receives the +node, an event code, and a user data pointer you supply: + + void + sax_cb(mxml_node_t *node, mxml_sax_event_t event, + void *data) + { + ... do something ... + } + +The event will be one of the following: + +- `MXML_SAX_CDATA`: CDATA was just read. +- `MXML_SAX_COMMENT`: A comment was just read. +- `MXML_SAX_DATA`: Data (custom, integer, opaque, real, or text) was just read. +- `MXML_SAX_DIRECTIVE`: A processing directive/instruction was just read. +- `MXML_SAX_ELEMENT_CLOSE` - A close element was just read \(``) +- `MXML_SAX_ELEMENT_OPEN` - An open element was just read \(``) + +Elements are *released* after the close element is processed. All other nodes +are released after they are processed. The SAX callback can *retain* the node +using the `mxmlRetain` function. For example, the following SAX callback will +retain all nodes, effectively simulating a normal in-memory load: + + void + sax_cb(mxml_node_t *node, mxml_sax_event_t event, + void *data) + { + if (event != MXML_SAX_ELEMENT_CLOSE) + mxmlRetain(node); + } + +More typically the SAX callback will only retain a small portion of the document +that is needed for post-processing. For example, the following SAX callback +will retain the title and headings in an XHTML file. It also retains the (parent) elements like ``, ``, and ``, and processing +directives like `` and ``: + + void + sax_cb(mxml_node_t *node, mxml_sax_event_t event, + void *data) + { + if (event == MXML_SAX_ELEMENT_OPEN) + { + /* + * Retain headings and titles... + */ + + const char *element = mxmlGetElement(node); + + if (!strcmp(element, "html") || + !strcmp(element, "head") || + !strcmp(element, "title") || + !strcmp(element, "body") || + !strcmp(element, "h1") || + !strcmp(element, "h2") || + !strcmp(element, "h3") || + !strcmp(element, "h4") || + !strcmp(element, "h5") || + !strcmp(element, "h6")) + mxmlRetain(node); + } + else if (event == MXML_SAX_DIRECTIVE) + mxmlRetain(node); + else if (event == MXML_SAX_DATA) + { + if (mxmlGetRefCount(mxmlGetParent(node)) > 1) + { + /* + * If the parent was retained, then retain this data + * node as well. + */ + + mxmlRetain(node); + } + } + } + +The resulting skeleton document tree can then be searched just like one loaded +using the `mxmlLoad` functions. For example, a filter that reads an XHTML +document from stdin and then shows the title and headings in the document would +look like: + + mxml_node_t *doc, *title, *body, *heading; + + doc = mxmlSAXLoadFd(NULL, 0, MXML_TEXT_CALLBACK, sax_cb, + NULL); + + title = mxmlFindElement(doc, doc, "title", NULL, NULL, + MXML_DESCEND); + + if (title) + print_children(title); + + body = mxmlFindElement(doc, doc, "body", NULL, NULL, + MXML_DESCEND); + + if (body) + { + for (heading = mxmlGetFirstChild(body); + heading; + heading = mxmlGetNextSibling(heading)) + print_children(heading); + } + +The `print_children` function is: + + void + print_children(mxml_node_t *parent) + { + mxml_node_t *node; + const char *text; + int whitespace; + + for (node = mxmlGetFirstChild(parent); + node != NULL; + node = mxmlGetNextSibling(node)) + { + text = mxmlGettext(node, &whitespace); + + if (whitespace) + putchar(' '); + + fputs(text, stdout); + } + + putchar('\n'); + } diff --git a/lib/libmxml/doc/docset.css b/lib/libmxml/doc/docset.css new file mode 100644 index 0000000..677dcc6 --- /dev/null +++ b/lib/libmxml/doc/docset.css @@ -0,0 +1,113 @@ +body { + background: white; + color: black; + font-family: sans-serif; +} + +h1, h2, h3, h4, h5, h6, p, td, th { + font-family: sans-serif; +} + +kbd { + color: #006600; + font-family: monospace; + font-weight: bold; +} + +pre { + font-family: monospace; +} + +pre.example { + background: white; + border: dotted thin #999999; + padding: 10px; +} + +pre.example em { + color: #3f0000; + font-family: sans-serif; +} + +div.summary table { + border: solid thin #999999; + border-collapse: collapse; + border-spacing: 0; + margin: 10px; + width: 33%; +} + +div.summary table td, div.summary table th { + background: white; + border: solid thin #999999; + border-spacing: 0; + padding: 5px; + text-align: left; + vertical-align: top; +} + +div.summary table thead th { + background: #f0f0f0; +} + +div.body h1 { + margin: 0; +} +div.body h2 { + margin-top: 1.5em; +} +div.body h3, div.body h4, div.body h5 { + margin-bottom: 0.5em; + margin-top: 1.5em; +} +.class, .enumeration, .function, .struct, .typedef, .union { + border-bottom: solid thin #999999; + margin-bottom: 0; + margin-top: 2em; +} +.description { + margin-top: 0.5em; +} +code, p.code, pre, ul.code li { + font-family: monaco, courier, monospace; + font-size: 90%; +} +ul.code, ul.contents, ul.subcontents { + list-style-type: none; + margin: 0; + padding-left: 0; +} +ul.code li { + margin: 0; +} +ul.contents > li { + margin-top: 1em; +} +ul.contents li ul.code, ul.contents li ul.subcontents { + padding-left: 2em; +} +div.body dl { + margin-left: 0; + margin-top: 0; +} +div.body dt { + font-style: italic; + margin-left: 0; + margin-top: 0; +} +div.body dd { + margin-bottom: 0.5em; +} +span.info { + background: black; + border: thin solid black; + color: white; + font-size: 80%; + font-style: italic; + font-weight: bold; + white-space: nowrap; +} +h2 span.info, h3 span.info, h4 span.info { + float: right; + font-size: 100%; +} diff --git a/lib/libmxml/doc/docset.header b/lib/libmxml/doc/docset.header new file mode 100644 index 0000000..37dc00e --- /dev/null +++ b/lib/libmxml/doc/docset.header @@ -0,0 +1,18 @@ +

    Mini-XML API Reference

    + +
    + + + + + + + + + + + + + +
    Headermxml.h
    Library-lmxml
    +
    diff --git a/lib/libmxml/doc/docset.intro b/lib/libmxml/doc/docset.intro new file mode 100644 index 0000000..d1fa0eb --- /dev/null +++ b/lib/libmxml/doc/docset.intro @@ -0,0 +1,141 @@ +

    Introduction

    + +

    Mini-XML is a small XML parsing library that you can use to read XML data files or strings in your application without requiring large non-standard libraries. Mini-XML provides the following functionality:

    + +
      +
    • Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded XML files and strings.
    • +
    • Data is stored in a linked-list tree structure, preserving the XML data hierarchy.
    • +
    • SAX (streamed) reading of XML files and strings to minimize memory usage.
    • +
    • Supports arbitrary element names, attributes, and attribute values with no preset limits, just available memory.
    • +
    • Supports integer, real, opaque ("cdata"), and text data types in "leaf" nodes.
    • +
    • Functions for creating and managing trees of data.
    • +
    • "Find" and "walk" functions for easily locating and navigating trees of data.
    • +
    + +

    Mini-XML doesn't do validation or other types of processing on the data based upon schema files or other sources of definition information.

    + + +

    Using Mini-XML

    + +

    Mini-XML provides a single header file which you include:

    + +
    +#include <mxml.h>
    +
    + +

    Nodes are defined by the "mxml_node_t" structure; the "type" member defines the node type (element, integer, opaque, real, or text) which determines which value you want to look at in the "value" union. New nodes can be created using the "mxmlNewElement()", "mxmlNewInteger()", "mxmlNewOpaque()", "mxmlNewReal()", and "mxmlNewText()" functions. Only elements can have child nodes, and the top node must be an element, usually "?xml".

    + +

    You load an XML file using the "mxmlLoadFile()" function:

    + +
    +FILE *fp;
    +mxml_node_t *tree;
    +
    +fp = fopen("filename.xml", "r");
    +tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
    +fclose(fp);
    +
    + +

    Similarly, you save an XML file using the "mxmlSaveFile()" function:

    + +
    +FILE *fp;
    +mxml_node_t *tree;
    +
    +fp = fopen("filename.xml", "w");
    +mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
    +fclose(fp);
    +
    + +

    The "mxmlLoadString()", "mxmlSaveAllocString()", and "mxmlSaveString()" functions load XML node trees from and save XML node trees to strings:

    + +
    +char buffer[8192];
    +char *ptr;
    +mxml_node_t *tree;
    +
    +...
    +tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK);
    +
    +...
    +mxmlSaveString(tree, buffer, sizeof(buffer),
    +	       MXML_NO_CALLBACK);
    +
    +...
    +ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
    +
    + +

    You can find a named element/node using the "mxmlFindElement()" function:

    + +
    +mxml_node_t *node = mxmlFindElement(tree, tree, "name",
    +				    "attr", "value",
    +				    MXML_DESCEND);
    +
    + +

    The "name", "attr", and "value" arguments can be passed as NULL to act as wildcards, e.g.:

    + +
    +/* Find the first "a" element */
    +node = mxmlFindElement(tree, tree, "a", NULL, NULL,
    +		       MXML_DESCEND);
    +
    +/* Find the first "a" element with "href" attribute */
    +node = mxmlFindElement(tree, tree, "a", "href", NULL,
    +		       MXML_DESCEND);
    +
    +/* Find the first "a" element with "href" to a URL */
    +node = mxmlFindElement(tree, tree, "a", "href",
    +		       "http://www.easysw.com/~mike/mxml/",
    +		       MXML_DESCEND);
    +
    +/* Find the first element with a "src" attribute*/
    +node = mxmlFindElement(tree, tree, NULL, "src", NULL,
    +		       MXML_DESCEND);
    +
    +/* Find the first element with a "src" = "foo.jpg" */
    +node = mxmlFindElement(tree, tree, NULL, "src",
    +		       "foo.jpg", MXML_DESCEND);
    +
    + +

    You can also iterate with the same function:

    + +
    +mxml_node_t *node;
    +
    +for (node = mxmlFindElement(tree, tree, "name", NULL,
    +			    NULL, MXML_DESCEND);
    +     node != NULL;
    +     node = mxmlFindElement(node, tree, "name", NULL,
    +			    NULL, MXML_DESCEND))
    +{
    +  ... do something ...
    +}
    +
    + +

    The "mxmlFindPath()" function finds the (first) value node under a specific element using a "path":

    + +
    +mxml_node_t *value = mxmlFindPath(tree, "path/to/*/foo/bar");
    +
    + +

    The "mxmlGetInteger()", "mxmlGetOpaque()", "mxmlGetReal()", and "mxmlGetText()" functions retrieve the value from a node:

    + +
    +mxml_node_t *node;
    +
    +int intvalue = mxmlGetInteger(node);
    +
    +const char *opaquevalue = mxmlGetOpaque(node);
    +
    +double realvalue = mxmlGetReal(node);
    +
    +int whitespacevalue;
    +const char *textvalue = mxmlGetText(node, &whitespacevalue);
    +
    + +

    Finally, once you are done with the XML data, use the "mxmlDelete()" function to recursively free the memory that is used for a particular node or the entire tree:

    + +
    +mxmlDelete(tree);
    +
    diff --git a/lib/libmxml/doc/footer.man b/lib/libmxml/doc/footer.man new file mode 100644 index 0000000..1dafcdc --- /dev/null +++ b/lib/libmxml/doc/footer.man @@ -0,0 +1,4 @@ +.SH SEE ALSO +mxmldoc(1), Mini-XML Programmers Manual, https://michaelrsweet.github.io/mxml +.SH COPYRIGHT +Copyright \[co] 2003-2017 by Michael R Sweet. diff --git a/lib/libmxml/doc/hires/mxml.png b/lib/libmxml/doc/hires/mxml.png new file mode 100644 index 0000000000000000000000000000000000000000..68088fb1a626791417b85ddeaa63634ffef80812 GIT binary patch literal 32107 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 E07YnzN&o-= literal 0 HcmV?d00001 diff --git a/lib/libmxml/doc/install.html b/lib/libmxml/doc/install.html new file mode 100644 index 0000000..5f7c876 --- /dev/null +++ b/lib/libmxml/doc/install.html @@ -0,0 +1,118 @@ + + + +

    Chapter 1 - Building, +Installing, and Packaging Mini-XML

    + +

    This chapter describes how to build, install, and package +Mini-XML on your system from the source archive. You will need an +ANSI/ISO-C compatible compiler to build Mini-XML - GCC works, as +do most vendors' C compilers. If you are building Mini-XML on +Windows, we recommend using the Visual C++ environment with the +supplied solution file. For other operating systems, you'll need a +POSIX-compatible shell and make program in addition to +the C compiler.

    + +

    Compiling Mini-XML

    + +

    Mini-XML comes with both an autoconf-based configure script +and a Visual C++ solution that can be used to compile the library +and associated tools.

    + +

    Compiling with Visual C++

    + +

    Open the mxml.sln solution in the vcnet +folder. Choose the desired build configuration, "Debug" (the +default) or "Release", and then choose Build Solution +from the Build menu.

    + +

    Compiling with Command-Line Tools

    + +

    Type the following command to configure the Mini-XML source +code for your system:

    + +
    +    ./configure ENTER
    +
    + +

    The default install prefix is /usr/local, which +can be overridden using the --prefix option:

    + +
    +    ./configure --prefix=/foo ENTER
    +
    + +

    Other configure options can be found using the +--help option:

    + +
    +    ./configure --help ENTER
    +
    + +

    Once you have configured the software, use the +make(1) program to do the build and run the test +program to verify that things are working, as follows:

    + +
    +    make ENTER
    +
    + + +

    Installing Mini-XML

    + +

    If you are using Visual C++, copy the mxml.lib and +and mxml.h files to the Visual C++ lib and +include directories, respectively.

    + +

    Otherwise, use the make command with the +install target to install Mini-XML in the configured +directories:

    + +
    +    make install ENTER
    +
    + + +

    Creating Mini-XML Packages

    + +

    Mini-XML includes two files that can be used to create binary +packages. The first file is mxml.spec which is used +by the rpmbuild(8) software to create Red Hat Package +Manager ("RPM") packages which are commonly used on Linux. Since +rpmbuild wants to compile the software on its own, you +can provide it with the Mini-XML tar file to build the +package:

    + +
    +    rpmbuild -ta mxml-version.tar.gz ENTER
    +
    + +

    The second file is mxml.list which is used by the +epm(1) program to create software packages in a variety +of formats. The epm program is available from the +following URL:

    + +
    +    http://www.epmhome.org/
    +
    + +

    Use the make command with the epm target +to create portable and native packages for your system:

    + +
    +    make epm ENTER
    +
    + +

    The packages are stored in a subdirectory named +dist for your convenience. The portable packages +utilize scripts and tar files to install the software on the +target system. After extracting the package archive, use the +mxml.install script to install the software.

    + +

    The native packages will be in the local OS's native format: +RPM for Red Hat Linux, DPKG for Debian Linux, PKG for Solaris, +and so forth. Use the corresponding commands to install the +native packages.

    + + + diff --git a/lib/libmxml/doc/intro.html b/lib/libmxml/doc/intro.html new file mode 100644 index 0000000..8b5e95a --- /dev/null +++ b/lib/libmxml/doc/intro.html @@ -0,0 +1,190 @@ + + + Mini-XML Programmers Manual, Version 2.11 + + + + + + +

    Introduction

    + +

    This programmers manual describes Mini-XML version 2.11, a small +XML parsing library that you can use to read and write XML data +files in your C and C++ applications.

    + +

    Mini-XML was initially developed for the Gutenprint project to replace +the rather large and unwieldy libxml2 library with +something substantially smaller and easier-to-use. It all began one +morning in June of 2003 when Robert posted the following sentence to +the developer's list:

    + +
    It's bad enough that we require libxml2, but rolling +our own XML parser is a bit more than we can handle.
    + +

    I then replied with:

    + +
    Given the limited scope of what you use in XML, it +should be trivial to code a mini-XML API in a few hundred lines of +code.
    + +

    I took my own challenge and coded furiously for two days to +produced the initial public release of Mini-XML, total lines of +code: 696. Robert promptly integrated Mini-XML into Gutenprint +and removed libxml2.

    + +

    Thanks to lots of feedback and support from various +developers, Mini-XML has evolved since then to provide a more +complete XML implementation and now stands at a whopping 3,792 +lines of code, compared to 140,410 lines of code for libxml2 +version 2.9.1.

    + +

    Aside from Gutenprint, Mini-XML is used for the +following projects/software applications:

    + + + +

    Please file a bug on Github if you would like your project added or +removed from this list, or if you have any comments/quotes you would like me to +publish about your experiences with Mini-XML.

    + + +

    Organization of This Document

    + +

    This manual is organized into the following chapters and +appendices:

    + + + + +

    Notation Conventions

    + +

    Various font and syntax conventions are used in this guide. +Examples and their meanings and uses are explained below:

    + +
    + +
    mxmldoc
    + mxmldoc(1)
    + +
    The names of commands; the first mention of a command + or function in a chapter is followed by a manual page + section number.

    + +
    /var
    + /etc/hosts
    + +
    File and directory names.

    + +
    Request ID is Printer-123
    + +
    Screen output.

    + +
    lp -d printer filename ENTER
    + +
    Literal user input; special keys like + ENTER are in ALL CAPS.

    + +
    12.3
    + +
    Numbers in the text are written using the period (.) + to indicate the decimal point.

    + +
    + + +

    Abbreviations

    + +

    The following abbreviations are used throughout this +manual:

    + +
    + +
    Gb
    +
    Gigabytes, or 1073741824 bytes

    + +
    kb
    +
    Kilobytes, or 1024 bytes

    + +
    Mb
    +
    Megabytes, or 1048576 bytes

    + +
    UTF-8, UTF-16
    +
    Unicode Transformation Format, 8-bit or 16-bit

    + +
    W3C
    +
    World Wide Web Consortium

    + +
    XML
    +
    Extensible Markup Language

    + +
    + + +

    Other References

    + +
    + +
    The Unicode Standard, Version 4.0, Addison-Wesley, + ISBN 0-321-18578-1
    + +
    The definition of the Unicode character set which is + used for XML.

    + +
    Extensible + Markup Language (XML) 1.0 (Third Edition)
    + +
    The XML specification from the World Wide Web + Consortium (W3C)

    + +
    + + +

    Legal Stuff

    + +

    The Mini-XML library is copyright 2003-2017 by Michael R Sweet. License terms +are described in Appendix A - Mini-XML License.

    + + + diff --git a/lib/libmxml/doc/license.html b/lib/libmxml/doc/license.html new file mode 100644 index 0000000..3aa11ea --- /dev/null +++ b/lib/libmxml/doc/license.html @@ -0,0 +1,593 @@ + + + +

    Appendix A - Mini-XML +License

    + +

    The Mini-XML library and included programs are provided under +the terms of the GNU Library General Public License version 2 +(LGPL2) with the following exceptions:

    + +

    1. Static linking of applications to the Mini-XML +library does not constitute a derivative work and does +not require the author to provide source code for the +application, use the shared Mini-XML libraries, or link +their applications against a user-supplied version of +Mini-XML.

    + +

    If you link the application to a modified version +of Mini-XML, then the changes to Mini-XML must be +provided under the terms of the LGPL2 in sections 1, 2, +and 4.

    + +

    2. You do not have to provide a copy of the Mini-XML +license with programs that are linked to the Mini-XML +library, nor do you have to identify the Mini-XML license +in your program or documentation as required by section 6 +of the LGPL2.

    + +

     

    + +

    GNU LIBRARY GENERAL PUBLIC LICENSE

    +

    Version 2, June 1991 +
    Copyright (C) 1991 Free Software Foundation, Inc. +
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +
    Everyone is permitted to copy and distribute verbatim copies of +this license document, but changing it is not allowed. +
    [This is the first released version of the library GPL. It is +numbered 2 because it goes with version 2 of the ordinary GPL.]

    + +

    Preamble

    + +

    The licenses for most software are designed to take away your freedom +to share and change it. By contrast, the GNU General Public Licenses +are intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users.

    + +

    This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too.

    + +

    When we speak of free software, we are referring to freedom, +not price. Our General Public Licenses are designed to make sure +that you have the freedom to distribute copies of free software +(and charge for this service if you wish), that you receive +source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs; and that +you know you can do these things.

    + +

    To protect your rights, we need to make restrictions that +forbid anyone to deny you these rights or to ask you to +surrender the rights. These restrictions translate to certain +responsibilities for you if you distribute copies of the +library, or if you modify it.

    + +

    For example, if you distribute copies of the library, whether +gratis or for a fee, you must give the recipients all the rights +that we gave you. You must make sure that they, too, receive or +can get the source code. If you link a program with the library, +you must provide complete object files to the recipients so that +they can relink them with the library, after making changes to +the library and recompiling it. And you must show them these +terms so they know their rights.

    + +

    Our method of protecting your rights has two steps: (1) +copyright the library, and (2) offer you this license which +gives you legal permission to copy, distribute and/or modify the +library.

    + +

    Also, for each distributor's protection, we want to make +certain that everyone understands that there is no warranty for +this free library. If the library is modified by someone else +and passed on, we want its recipients to know that what they +have is not the original version, so that any problems +introduced by others will not reflect on the original authors' +reputations.

    + +

    Finally, any free program is threatened constantly by +software patents. We wish to avoid the danger that companies +distributing free software will individually obtain patent +licenses, thus in effect transforming the program into +proprietary software. To prevent this, we have made it clear +that any patent must be licensed for everyone's free use or not +licensed at all.

    + +

    Most GNU software, including some libraries, is covered by +the ordinary GNU General Public License, which was designed for +utility programs. This license, the GNU Library General Public +License, applies to certain designated libraries. This license +is quite different from the ordinary one; be sure to read it in +full, and don't assume that anything in it is the same as in the +ordinary license.

    + +

    The reason we have a separate public license for some +libraries is that they blur the distinction we usually make +between modifying or adding to a program and simply using it. +Linking a program with a library, without changing the library, +is in some sense simply using the library, and is analogous to +running a utility program or application program. However, in a +textual and legal sense, the linked executable is a combined +work, a derivative of the original library, and the ordinary +General Public License treats it as such.

    + +

    Because of this blurred distinction, using the ordinary +General Public License for libraries did not effectively promote +software sharing, because most developers did not use the +libraries. We concluded that weaker conditions might promote +sharing better.

    + +

    However, unrestricted linking of non-free programs would +deprive the users of those programs of all benefit from the free +status of the libraries themselves. This Library General Public +License is intended to permit developers of non-free programs to +use free libraries, while preserving your freedom as a user of +such programs to change the free libraries that are incorporated +in them. (We have not seen how to achieve this as regards +changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is +that this will lead to faster development of free libraries.

    + +

    The precise terms and conditions for copying, distribution +and modification follow. Pay close attention to the difference +between a "work based on the libary" and a "work +that uses the library". The former contains code derived +from the library, while the latter only works together with the +library.

    + +

    Note that it is possible for a library to be covered by the +ordinary General Public License rather than by this special +one.

    + +

    TERMS AND CONDITIONS FOR COPYING, +DISTRIBUTION AND MODIFICATION

    + +

    0. This License Agreement applies to any +software library which contains a notice placed by the copyright +holder or other authorized party saying it may be distributed +under the terms of this Library General Public License (also +called "this License"). Each licensee is addressed as +"you". + +

    A "library" means a collection of software +functions and/or data prepared so as to be conveniently linked +with application programs (which use some of those functions and +data) to form executables.

    + +

    The "Library", below, refers to any such software +library or work which has been distributed under these terms. A +"work based on the Library" means either the Library +or any derivative work under copyright law: that is to say, a +work containing the Library or a portion of it, either verbatim +or with modifications and/or translated straightforwardly into +another language. (Hereinafter, translation is included without +limitation in the term "modification".)

    + +

    "Source code" for a work means the preferred form +of the work for making modifications to it. For a library, +complete source code means all the source code for all modules +it contains, plus any associated interface definition files, +plus the scripts used to control compilation and installation of +the library.

    + +

    Activities other than copying, distribution and modification +are not covered by this License; they are outside its scope. The +act of running a program using the Library is not restricted, +and output from such a program is covered only if its contents +constitute a work based on the Library (independent of the use +of the Library in a tool for writing it). Whether that is true +depends on what the Library does and what the program that uses +the Library does.

    + +

    1. You may copy and distribute verbatim +copies of the Library's complete source code as you receive it, +in any medium, provided that you conspicuously and appropriately +publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer +to this License and to the absence of any warranty; and +distribute a copy of this License along with the Library.

    + +

    You may charge a fee for the physical act of transferring a +copy, and you may at your option offer warranty protection in +exchange for a fee.

    + +

    2. You may modify your copy or copies of the +Library or any portion of it, thus forming a work based on the +Library, and copy and distribute such modifications or work +under the terms of Section 1 above, provided that you also meet +all of these conditions:

    + +
      + +

      a) The modified work must itself be + a software library. + +

      b) You must cause the files modified + to carry prominent notices stating that you changed the + files and the date of any change.

      + +

      c) You must cause the whole of the + work to be licensed at no charge to all third parties + under the terms of this License.

      + +

      d) If a facility in the modified + Library refers to a function or a table of data to be + supplied by an application program that uses the + facility, other than as an argument passed when the + facility is invoked, then you must make a good faith + effort to ensure that, in the event an application does + not supply such function or table, the facility still + operates, and performs whatever part of its purpose + remains meaningful.

      + +

      (For example, a function in a library to compute + square roots has a purpose that is entirely well-defined + independent of the application. Therefore, Subsection 2d + requires that any application-supplied function or table + used by this function must be optional: if the + application does not supply it, the square root function + must still compute square roots.)

      + +
    + +

    These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the +Library, and can be reasonably considered independent and +separate works in themselves, then this License, and its terms, +do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as +part of a whole which is a work based on the Library, the +distribution of the whole must be on the terms of this License, +whose permissions for other licensees extend to the entire +whole, and thus to each and every part regardless of who wrote +it.

    + +

    Thus, it is not the intent of this section to claim rights or +contest your rights to work written entirely by you; rather, the +intent is to exercise the right to control the distribution of +derivative or collective works based on the Library.

    + +

    In addition, mere aggregation of another work not based on +the Library with the Library (or with a work based on the +Library) on a volume of a storage or distribution medium does +not bring the other work under the scope of this License.

    + +

    3. You may opt to apply the terms of the +ordinary GNU General Public License instead of this License to a +given copy of the Library. To do this, you must alter all the +notices that refer to this License, so that they refer to the +ordinary GNU General Public License, version 2, instead of to +this License. (If a newer version than version 2 of the ordinary +GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change +in these notices.

    + +

    Once this change is made in a given copy, it is irreversible +for that copy, so the ordinary GNU General Public License +applies to all subsequent copies and derivative works made from +that copy.

    + +

    This option is useful when you wish to copy part of the code +of the Library into a program that is not a library.

    + +

    4. You may copy and distribute the Library +(or a portion or derivative of it, under Section 2) in object +code or executable form under the terms of Sections 1 and 2 +above provided that you accompany it with the complete +corresponding machine-readable source code, which must be +distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange.

    + +

    If distribution of object code is made by offering access to +copy from a designated place, then offering equivalent access to +copy the source code from the same place satisfies the +requirement to distribute the source code, even though third +parties are not compelled to copy the source along with the +object code.

    + +

    5. A program that contains no derivative of +any portion of the Library, but is designed to work with the +Library by being compiled or linked with it, is called a +"work that uses the Library". Such a work, in +isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License.

    + +

    However, linking a "work that uses the Library" +with the Library creates an executable that is a derivative of +the Library (because it contains portions of the Library), +rather than a "work that uses the library". The +executable is therefore covered by this License. Section 6 +states terms for distribution of such executables.

    + +

    When a "work that uses the Library" uses material +from a header file that is part of the Library, the object code +for the work may be a derivative work of the Library even though +the source code is not. Whether this is true is especially +significant if the work can be linked without the Library, or if +the work is itself a library. The threshold for this to be true +is not precisely defined by law.

    + +

    If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small +inline functions (ten lines or less in length), then the use of +the object file is unrestricted, regardless of whether it is +legally a derivative work. (Executables containing this object +code plus portions of the Library will still fall under Section +6.)

    + +

    Otherwise, if the work is a derivative of the Library, you +may distribute the object code for the work under the terms of +Section 6. Any executables containing that work also fall under +Section 6, whether or not they are linked directly with the +Library itself.

    + +

    6. As an exception to the Sections above, +you may also compile or link a "work that uses the +Library" with the Library to produce a work containing +portions of the Library, and distribute that work under terms of +your choice, provided that the terms permit modification of the +work for the customer's own use and reverse engineering for +debugging such modifications.

    + +

    You must give prominent notice with each copy of the work +that the Library is used in it and that the Library and its use +are covered by this License. You must supply a copy of this +License. If the work during execution displays copyright +notices, you must include the copyright notice for the Library +among them, as well as a reference directing the user to the +copy of this License. Also, you must do one of these things:

    + +
      + + a) Accompany the work with the complete + corresponding machine-readable source code for the + Library including whatever changes were used in the work + (which must be distributed under Sections 1 and 2 + above); and, if the work is an executable linked with + the Library, with the complete machine-readable + "work that uses the Library", as object code + and/or source code, so that the user can modify the + Library and then relink to produce a modified executable + containing the modified Library. (It is understood that + the user who changes the contents of definitions files + in the Library will not necessarily be able to recompile + the application to use the modified definitions.) + +

      b) Accompany the work with a written + offer, valid for at least three years, to give the same + user the materials specified in Subsection 6a, above, + for a charge no more than the cost of performing this + distribution.

      + +

      c) If distribution of the work is + made by offering access to copy from a designated place, + offer equivalent access to copy the above specified + materials from the same place.

      + +

      d) Verify that the user has already + received a copy of these materials or that you have + already sent this user a copy.

      + +
    + +

    For an executable, the required form of the "work that +uses the Library" must include any data and utility +programs needed for reproducing the executable from it. However, +as a special exception, the source code distributed need not +include anything that is normally distributed (in either source +or binary form) with the major components (compiler, kernel, and +so on) of the operating system on which the executable runs, +unless that component itself accompanies the executable.

    + +

    It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you +cannot use both them and the Library together in an executable +that you distribute.

    + +

    7. You may place library facilities that are +a work based on the Library side-by-side in a single library +together with other library facilities not covered by this +License, and distribute such a combined library, provided that +the separate distribution of the work based on the Library and +of the other library facilities is otherwise permitted, and +provided that you do these two things:

    + +
      + + a) Accompany the combined library with + a copy of the same work based on the Library, uncombined + with any other library facilities. This must be + distributed under the terms of the Sections above. + +

      b) Give prominent notice with the + combined library of the fact that part of it is a work + based on the Library, and explaining where to find the + accompanying uncombined form of the same work.

      + +
    + +

    8. You may not copy, modify, sublicense, +link with, or distribute the Library except as expressly +provided under this License. Any attempt otherwise to copy, +modify, sublicense, link with, or distribute the Library is +void, and will automatically terminate your rights under this +License. However, parties who have received copies, or rights, +from you under this License will not have their licenses +terminated so long as such parties remain in full +compliance.

    + +

    9. You are not required to accept this +License, since you have not signed it. However, nothing else +grants you permission to modify or distribute the Library or its +derivative works. These actions are prohibited by law if you do +not accept this License. Therefore, by modifying or distributing +the Library (or any work based on the Library), you indicate +your acceptance of this License to do so, and all its terms and +conditions for copying, distributing or modifying the Library or +works based on it.

    + +

    10. Each time you redistribute the Library +(or any work based on the Library), the recipient automatically +receives a license from the original licensor to copy, +distribute, link with or modify the Library subject to these +terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted +herein. You are not responsible for enforcing compliance by +third parties to this License.

    + +

    11. If, as a consequence of a court judgment +or allegation of patent infringement or for any other reason +(not limited to patent issues), conditions are imposed on you +(whether by court order, agreement or otherwise) that contradict +the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as to +satisfy simultaneously your obligations under this License and +any other pertinent obligations, then as a consequence you may +not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the +Library by all those who receive copies directly or indirectly +through you, then the only way you could satisfy both it and +this License would be to refrain entirely from distribution of +the Library.

    + +

    If any portion of this section is held invalid or +unenforceable under any particular circumstance, the balance of +the section is intended to apply, and the section as a whole is +intended to apply in other circumstances.

    + +

    It is not the purpose of this section to induce you to +infringe any patents or other property right claims or to +contest validity of any such claims; this section has the sole +purpose of protecting the integrity of the free software +distribution system which is implemented by public license +practices. Many people have made generous contributions to the +wide range of software distributed through that system in +reliance on consistent application of that system; it is up to +the author/donor to decide if he or she is willing to distribute +software through any other system and a licensee cannot impose +that choice.

    + +

    This section is intended to make thoroughly clear what is +believed to be a consequence of the rest of this License.

    + +

    12. If the distribution and/or use of the +Library is restricted in certain countries either by patents or +by copyrighted interfaces, the original copyright holder who +places the Library under this License may add an explicit +geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not +thus excluded. In such case, this License incorporates the +limitation as if written in the body of this License.

    + +

    13. The Free Software Foundation may publish +revised and/or new versions of the Library General Public +License from time to time. Such new versions will be similar in +spirit to the present version, but may differ in detail to +address new problems or concerns.

    + +

    Each version is given a distinguishing version number. If the +Library specifies a version number of this License which applies +to it and "any later version", you have the option of +following the terms and conditions either of that version or of +any later version published by the Free Software Foundation. If +the Library does not specify a license version number, you may +choose any version ever published by the Free Software +Foundation.

    + +

    14. If you wish to incorporate parts of the +Library into other free programs whose distribution conditions +are incompatible with these, write to the author to ask for +permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be guided +by the two goals of preserving the free status of all +derivatives of our free software and of promoting the sharing +and reuse of software generally.

    + +

    NO WARRANTY

    + +

    15. BECAUSE THE LIBRARY IS LICENSED FREE OF +CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT +PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN +WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE +LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF +THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU +ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION.

    + +

    16. IN NO EVENT UNLESS REQUIRED BY +APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT +HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE +THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY +(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES +OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES.

    + +

    END OF TERMS AND CONDITIONS

    + +

    How to Apply These Terms to Your New Libraries

    + +

    If you develop a new library, and you want it to be of the +greatest possible use to the public, we recommend making it free +software that everyone can redistribute and change. You can do so +by permitting redistribution under these terms (or, alternatively, +under the terms of the ordinary General Public License). + +

    To apply these terms, attach the following notices to the +library. It is safest to attach them to the start of each source +file to most effectively convey the exclusion of warranty; and each +file should have at least the "copyright" line and a pointer to +where the full notice is found. + +

      + +

      one line to give the library's name and an idea of what it +does.
      +Copyright (C) year name of author + +

      This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public License +as published by the Free Software Foundation; either version 2.1 of +the License, or (at your option) any later version. + +

      This library 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 +Lesser General Public License for more details. + +

      You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA + +

    + +

    Also add information on how to contact you by electronic and paper mail. + +

    You should also get your employer (if you work as a programmer) +or your school, if any, to sign a "copyright disclaimer" for the +library, if necessary. Here is a sample; alter the names: + +

      + +

      Yoyodyne, Inc., hereby disclaims all copyright interest in the +library `Frob' (a library for tweaking knobs) written by James +Random Hacker. + +

      signature of Ty Coon, 1 April 1990 Ty Coon, President +of Vice + +

    + +

    That's all there is to it! + + + diff --git a/lib/libmxml/doc/makedocs.sh b/lib/libmxml/doc/makedocs.sh new file mode 100644 index 0000000..f072ea8 --- /dev/null +++ b/lib/libmxml/doc/makedocs.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Script to make documentation... +# +# Copyright 2003-2010 by Michael R Sweet. +# +# These coded instructions, statements, and computer programs are the +# property of Michael R Sweet and are protected by Federal copyright +# law. Distribution and use rights are outlined in the file "COPYING" +# which should have been included with this file. If this file is +# missing or damaged, see the license at: +# +# https://michaelrsweet.github.io/mxml +# + +htmldoc --verbose --path "hires;." --batch mxml.book -f mxml.pdf + +htmldoc --verbose --batch mxml.book --no-title -f mxml.html + +rm -rf mxml.d +mkdir mxml.d +htmldoc --verbose --batch mxml.book --no-title -t html -d mxml.d diff --git a/lib/libmxml/doc/mxml-cover.jpg b/lib/libmxml/doc/mxml-cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f89cfd807c7047ba6ea462bde89d1a361bdaff27 GIT binary patch literal 1218760 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%0DH^(3{h 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

    A+kN*E5aRr?@nm`fu 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

    CS;WLD}WCm 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%0A5$qW;2 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�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 z zSyxki;1LjDcPOi%;`W@B^ZR(@S=7*zHH2(7vfHEOUA-!Oyii}~HF)Xm=Y{pL^m0)p zTgGJTFlW*JtyD5~;h(3nkcE% zk2D~fY<*Vw% z^&T@b!xQ+gXF2NXGQ(=Gcg9{>_qY#N$KL+5H>B{%>-h8U*Fa@p06`oGxM;7~wB}72 zNWM0we4lxxtTL&&nt$DR!WqA2a=fbHCSxVi*@NA#3J?aq`r?Hiu*+5}uz@2D-uVaXKYFEsn2HOWwFX{%NS%3f0SUO;(Mvdc`eTK^Fc@WEC?z(rHHM zwm}&|D4WUvhz$1jW;U3gRaMU!hh+6EceNSON(H<>|2_~Pg4<%ZIskPHa^|XoXzDnZsEW=|y~8eE`U?`i#~@SZ{?1(6h{f}O??;P5 zR*yrMjh#=ZFt{dA7&C5=T4P85%a3AeC$%>MKX~%GMVfIAr?^yf=_Xa1Bh(G-q>!V1 zOf-IW+XU$R367MUWJdgCXnzaVyLXNjTWZMQFd&C&_+z`3S@+JB#VoQVYqk<9`bv@) zkSC7MJ90KW>UD6A&6^1%WqRvYp=d;&)^NRxcJh}|XrPFMm#zF{YK4nNTG9Sfz4K`c zQr^s73m1*qwX=BX-|^>KH+0P3U&0M4^m_@k1zvSPA>!})E5KoSR0I)I zsm9t-rin3*g9C2oDfrPI07*?lR{V3YA@VqfxRFoRc(HI5gFD_|6F!YJU^lZ+Wy6c? zSa<~UsFqaN4K6vwnK=zZE!a<7SgWp$k+Ir@RSJ`P-QNDKzK7ure*@c=IUg(qqWOu{ z*atksjGr)<_ST{U`gyB4#tL+$l~z}yP%NA;ZIC@x1#vyzLkf~60@GH>eH$#FQx4n2 zdkuP`zG|44!I2KF{M$|+0iLp1R)Ee)j`>+tQ7THx$m)BMhdO)ZDZB0=pnt#|AVp9L zo&fqS^9%`1GO#xHfVq;Z>JZ`)(+i6EicL%It;Ja4zNm2>Rbw6%Rj1YNFfCzgi*Lx2 zn_Ldo)s5CeF;l%m+445LdDEkv#0GV_{9xYF;%ba&MGnu|2mEM6e%Y{b$`-;1sIe4$ z*Qst#13QGfq@Mx-IXtUj zwTb;I$`S)N7RdP^PYSfwQ5|fr+h-)Q$b5{t_Zr;Btf$!%-D{<(Pz{4s zP3Q1{3&M9EB~y?BL8rQ(Q=HiAjf%l?Q;yX=3w3|9d#uO_p&@biQPf@k{q*>x6x}64 z1uaSbh1dJEd6_wTi)d0O{zk?PIdqX<4 z@0ZQaDy&7(9NH@z*{j>h(3U6sZ3{7V7+-1vbdmDHCTnZ3~2u@U2~-9~r7qR!== z?yF?0r}%-w^cucY2niaFEP(UeGLQNCu*-RQzo5;n8h98F_SUtlNMVxxpOU>DC(ASd zL01s6Ra3Hpt=xbefX=n4y05Z1!COp~sr8NO6$-KgOq5W!trK6GS7;w-xv3Mmhl+|; z4)>(SB^%pm(2JI}h~i0?{+kr$Vqb$mgxm2aqXfS;e z=mfiStblBS(oJ?_yV(T_7W7Jy@ z<6Tz&o_EY`Q)=vl&E~N~%g<9Ca{K|kJ7U^wGiFQY{R0vdNGv;jG?%|imY`<{k)|(! zR978DU6c-4RpbSPM|}TT{rKa)xwjE6Ac4DLH@~8mic*)HWlENqn_iO0Xb(3yuHE0e z-}3oe9%Q{2-Gl3%kfll2VYbWJIo!ksSnp}H@pF|(;rIj{!ztZLkrunBw|4iQn+D~N zh{v?tm72^fh$B~5mWo#e@_CcJa^o7*u&akhpo!>gJEvo3&G)t08&($H!Pbs}e7kq3 z;|8blyeV_!+HF)MuPt-W`}FgVO!p;z6{jm#S)QD0w^?^QJ4-FhOHLfN2q;IK_@)2U zuW`-SSGNXD5Uw}Bc^tR@r8EbS$;i(cR-XopT9-<+<8RS(VFS6`yTeIt~AR7S#; znFBRWeg2rM*TbjfUrdHtfCr%ao#(?0g^-Nl(vGqgLOo?3XiOk&P+?4DR+(vxEuhV^=iI@S06Lis5dqA#4Gm%PnPj0~c8Z zVT3q%u4_2H5Yy#AqBJvuaY0>mV*RGe)hK7kwI19rJELx=+h+c83<9wheMAb_$(F0H zW!EN>FtuFFq|-+UAu8lwh6H z`gIqKpkA={xRTj&?(ZrMr-%Z*tO1V)#-S(gTi=N?aGCtlJYczoa4d6NG1;12Ts4a& zb~Rq&94LsM@yudq6;tP(m6EO1is|kd|g>>5%S5L6DXl z8tDcZx27&>GCk-Yv3uls)9=h@!1ZS;JYS+iK@aURFM|8@sJ*)d)br=Ge! z537A8#`d71HZZBs?sW8aS2BT2i?g_ce|pOZ5V(jIIMY?cdyx;|1yXp{W`y! z5gppzU$h6ND8SQ4u6Aemf6E=T%~N$Ws3dw5vjFoP^bwY~U>CTR=_#M7SL=U~9#dL_ z;o|AoD8Tj@!$wCm+2mu7r>Ep*(H>vSLTY(eB0i~>TtM~%yZc|}{TwSUhtLyoSMG~l z61?V#q9WJ)`(Fj9;n4~H()zhclBIT=Bbgl^h-;FRK*}g|i+~=ClV|LbB&Q9<`#8#j z2^lI+em{1^<(&rV#nUG8KM8F@6SG_Gd_lquN@|WwlU83o!bNnCrz$qte*ZxQ&fty< z0;n3TkzuyDXCpw}HtJXNIJiagubX^^&3@Eye63p5iMI38Nn#)Y`C2@?GtsaKeFix~ z??@=JM^a`iRc9%f!7=!K22mALvZ=D4?WV7TW6ffYggMmTkHE*ox@29!{Hj3hw3ug^pd6Gw(|pUugy1OJTM`pXKvm63A-Nq$g!rh#!i*cGRY4$ zs`rI#limeCX9hLv0?KgGZ*nuB3uTtqMDFXCD9p1}Q%bERD8kU+9%Pk#3w78WETu<9 z6m{^eA{|@1oE-UAG17&t60^awN$~f_G#k^us>)=zsukDFvRM(?+>6S_>H540s=Ek{-Vg>3ZoB*7n)FVrrE-u`t@sGcb zAhSeHv2NVt@&Ri`;_wcTvNi!Ovo1&aEL<84d7QHu#cgr2`MMq7cst*=1R;ku;RO6C z2T5{bkTB=eKVFg)Rcb?uSL}GpYH{Q0oQ0D*%$0T7)y5t_eNDM78TZT9*s17uqv>~< zRO&DH*KX%8^P|f(c03@)!u!Ungh(s+*jcK$hGOHgQ}HlenCotDIZDDF;9u@~84%2y zv!{pYtlM2Ug#`&)6HlCp!(@%+3>&Q3Ey_22YhLd5(M|8ctsd~yvZljO_5t~Mp8l@Vcn$=TEdalw(^3xf4r?nGs&2u(s3gD zEo3R_GM}?W?%Q|8mpXhoU=|(fJ*1Tr*B*RIb7$OoJM|6Pcr9>sB<4~n&q5yIt5zcIJH3GbE9BZzfYOEd za5mO;Xk|^iX9Rtn+WMDi(}EdI@~t8y_UrA=jb$|GUyAwv8tmaSXb9$TO=OqXcV|L? zc=XJNN)b+L;Ex^Q4ONbJ27}oadb%72&-Vd@^AqHA9eh6U$m`!j#d$Z~p1=yg7E{KN z(byTJFHcTs+w`R{TD%=dF*jv(AcKZy1YcrB4hZqu8{}VK5WOSmw~RSw({GDEt7F@P zizw}~)+un>6BR-9v~qdaA1_z}QRL|)1bM{(EqUmne5jtTLIzZZf6rM@Pdzb%BZd#S zQ_w&vqxjc04eY&EGQP7VyM2!NR`-|@JXx*L;gNzUNz3SEZSZ$-hO&&OoGTjgb&6zx z*?6aEA$ByTkCl3B&v$&gl-92FsK!y$npFYwQ$o!`J}Mxtgxn;hoS5BF=ZqbnBjxbg zDON1Ix1+-=txu3Ib#y-18+^LhjDPXY>dfGCtpt6NkFjCTc4d;YMCG{xR1|xDeRq|K zV*m(Bn+dWiZ@w8rYD_)MXrCU~1XsT?Ra+m1R<5JG(kdshM$;)04CQRa%|g&~)U@e)#Fyh}^C!)yH=~a> z(+wN)we;DuMZZ{U)7h(3X^0FATGDrnx<+1?pw ziN2)18Akfp zyjgx@0A}C3p~k$YA*`g%GhGX0 z#23GUxqm-rw14v$tZLs}KKrJU;;7E4G;^$kY-}-opmV5eY09*}p^C>6z_LL4y?k$@ zbLkb^=^Btnze^ov41%sm12tJ|^pZx?tlsSjrTFs=h$oJZ><4e?80CPsj_a1PN|x)W z8btIx#hw}{InSyu0;&hjKGSspalB5$F9%IFh4RNevpxOq$X%3rvR9sAwOW*qckAOobVSMyi9ZtO*(&@0g_#*|A>b)m+NJ`-XBZocIT%eoei-j|RkXZqkzu&qi zoMn==TQgFu268wB0=&~CcciE0vzeTdn$+S4fj88R^^BTjv0~4nJlnGz=obfkKB!@l z=pwSF%S^(9M(a}Sq%7u^l>bUSF5*~tMAXY3jhOCKjy#@zb#*SEH1ZRLV+IJ~nk($f z=J_$M+Hrs=l1kI!^zUP0wfrFqdZ&nmTLg2y?IrH184nqzU*XZ&*Y zU9WT10-J-s=$%!N4W<74xwR&*&Ojk+!GU*SZ405(c}hOFH~hk>u|XReg2Wk zCpOc5b#mdxAh5NH=&8bZzA=Z$pVc0@Pa}}j{F_)cJH?dNWJLr4_;^Q;>CvRZaTJ|X zAEm55sDY>x8~_;S=%~JoRDLEZlKOjMT@3X&p))0iTd(pok38Wg6*F1jgx-#Lpym0` z0ouuQ5W!axr*|Rv-;69OC^w*WXe9vJP6%}XpRK{ML zidW~|I=WzonOoBlSh+f`Q4|5zU5h0Rngor5Z)!!U=C#Z2?aQ6Z`seT49zJABU+PBZ zaot&XAw&=LOzCu}*$9Z80h2ooJ0lAB_Res>{%$H~%x^)lRF$eJ3b2{k7nk68_%f*k zs+{ZZwRC!?G(M83f>5(2jkP$vH18sE9^FpFos!&FU)Ijv@bi5-Bo>KnYy$up zQ)qXb0~U263TP zq-y~Vdxd9K4{f|lqu7f4vaZ|@`))oSJ~b_~>mTg~KwB@a9h&j5=JGy0|9kd;jkOfl zSE+k)8wm8;Sn5Yrgw%5>9WWuj;e57z`hS>^1z&Z+_N+$!bC6^V}QWMzd&BNJU`AY-bsGF#YVZRy4uNyYGR zx(aWZAZ}ds)scL8aR#hhXl@PR%gNpYB^}mx;_+2UE-a`ZqK^`4cW_LMA$~t(c_Efv z2=nFMzi~!$b$GjX3nquL0kJw4{w~S6`9lqKp<^ck${v|PMbu^Q=$#>IG~)wyBSiqi zPk^AhMxl*R08vZgT20y>oZPmwsd&W{CQ3`HI4mb2kn1)$yZm!|@E)?T%!)&HLN}dt zZPD}$75#hQ$q~vd&vZ_NO{Jgg?ks-o8`NyhZ1@(+7@}r({(f{Um8(k& zc<|?=J9c@agW&6mJIR}3rL|W5Bd_YljW&4Ke6<#!;hmpWewec5qfC#Sj!af7>%^gqR)?2vun9{}_24!-duo`IUj9){Mn}u3HA}kn|B# zGZ$JjB`D@oNQH#}dy)3-gdK>v)(oo{Bv$K)?muVtb%o6g$7v8m=*m$(xA4mfFEleLJAs6+KL(9Sd}PzNQ>*6v^It0+aqS(?AR_yJGPI(zAU)K%NH^l^ z)gwQ)c!jjpLj@>%4cyJ)?x1?qa@)uH&aJ%elTNNjup|DGvp9};V`YGDY5&a$yas;9 zYq);v5L_VAFf716IV}Mb{k0ZE&K^_lZ*?obE|olZfLrEYuprBRV5p&um@|8r;3y?N zqR&$F1w{PZR*DNmlK4)IJ)d^I!`Sc`|1~CpU?~IyqCS4Hwl;LN{(JQ5e5h=yMtuFs zSO3b=<&u`?inbOA*ANkbvuaxxO$?%B(!#%rNC@^TT{4fFH`I)LYK~2Pbu%uT8X?hX zL}7W3UY5_!R4^@37Q*OW^XsW9pa=gg-=Va0Xz44wCm)ZdO>4Q-`S@$<>q&URFX5~j z8o%U{Cg!Fo)7=Y7=utzEZW-h20nP0IEn|Lj_1u&sjGTxl3ne6*7<3BV>9Y!gF?EsJ)1ZaR+s(fl10fb#3(qSo&j;1l$n*4tBX>-G`}fk zRDMf9oGdXjSys1`ZN@*1tf^4}z~9cd4wFK~Hb^(g1o1-)`YvXt46>)eZI3gE0!k#! z&P<5|VA^Vr6YG{*Hu5LNgPj5kV_JB&aGwgOIw{s0H6gnMK0>*0|9H1ns!#5~M~7F* zHfgf#J$IJ~Hx0_;wrtXKpUXXUuYf23wLw``^1O7?&_WS?g6N+=Znu&@x$0u8$q8Tt z9L)@xaQ(_p82JGY;KpPN2N1 zxuRj1Rh;>##C}^i(4D3Dl`h;t3ghj6#IpBP<-hIE&-bq5|6j=$@?U`FUoOpm8lb@4 z8Mse_?jbb-BpWm%JR0xI7eZe=`8`Ld0gx0hg_qGI`R*Iqfh*uW^W+x+y9VP9f(PK?T(=Yt)h$f2#aky%SAkoU!6m6eaft}h zNJ2?%$ltGWM}9W1g>p;qkG;E_+nJn3>Pm!)XPxnp0)Zfm7|f>U%>V?wr+A0_1NyTP zWZ_jwkyW>rQS;F0;2py%1E;R1SNv9H=#z}4ON&pEF$ z5HT$4A0+N?@pPWJ%-*6LrWTyl<|uUZ%gDvmH-b=c%@Pq!DWvV6Do-E87nhv9ZzGpUy^Y&L1hl+vqI5vqg{C zo$xugO5!U$e%&_1PUxttlGW;VxP5cpQu`XpE-c*KP4aZMKC z=R}PX20CD$F1zd^#X6uVKVWisjCF{_87s@;>z8+teDt*wjn#YbOP-bz!R!i*7>(CH z0H5jsHW-8#q6J*Iz>F1WHKJiYxS!6V0bP7FslVHq`ycNQYzz{#^k10NXdT3{KcYtr zRievyO?MD`O*-4vHAjH8MPVM0lgfA0!%(`NJ2gwLWsLS`qsJPXmqW%6F-f4chzy|_ zYJXaN5@r36iH?!TehI*>UtKZ?R$o}SebcI!7uayvnmgzizmnXQ_fYvv#NWwlN9Ph# z^Li@&oUZnav$&y=R=!MbR8frWoX_mES)o9t>b ze-c~GyC19d@~QjIeQ1rJ%ic|UNmg6n_*x!s1{Y4dC$>v;W*@QhPlct(3b=`b;jf$c z6AMlCJh5Wtx(|-QezpmOZ|-L*KojuobF`5A?|^dnMfKNFmN^e}kep5eh`bxa3HJp8 zpQXoa4ErY*&MWMZa=)0lEZLbu3SA>ZxuZyC>9qp(#?F@5of$i zaeDEx&MS$~x9=It>r!-BjclNMgM4!dZ~YgfMrbrrwG_%T!0J zcdrJ3w7Qiv0oQ`hS^h3Z?YWzf<4yiu8eA25qd{@(%^6nNcVX5@c)o}`08RJ@L{`K; z6-;j>GHa8c`gvJXiJ5oY;gjz(h5+RI64Gc{PKSXW7>^ykgHkdbP2s>Fz$Y@pvsw-kCoPCmWon@jb{C_yy5zefJAO7(Y zz5&u_X*EODRoEo9Zs&xA#QgGxjR}Hz42w|W)Cxhgux^cmNm|r&{3mL-c+7>`^qpdG zliDk>?(qFgE7wPo!)$g3w&uOOy zn=ru#-&TycrXPP}whVu{+nx1Ii&P%+d?}5~pGRhiO3LWbftqK7zu#*fpnS_p9)^FLJiPWVn3F38vMa>A1?R7Ui5c}_%SevMNz z3@Vn|C9zz?J`8x*)z=k2kbt;B9thab$(K#_fW_TdT70G5ai3Kf$|>!Y+{{4{ozAp+ z&Q(Swd#cQ@wN$q~b-d-7+8hgX*}ihGRTqt`3Jt2zn&b@~T>lE96D83#>^4$+DlEp3 z*tIErmUug1WO(BXyEZ+5qq7pD<+DX4fyG1-RGPo}; z6c*qYRCI3DXi{>*LMqlyt3mCfrIWB@_siobt1@^Y@wV@U>J^#qH8;7m zU*kU@=Ua;)H1JSeRprb**8FckkNzUGoOrVrE>Tc{!RS zqSSF2D+1VP8;0_4w4N_n+5x_Gv zdg<_G46#*Um~;lVvHQIsQIeV5B(SPi)_aT`SbozMs?^#~HdR(_J<}X=SXd$7x;N_# z-E$QS({@gj_wVAMxlNbVLqx`?fAb@+%-r3>+r9+XC;MmY{{u=D?E)d|KE(@>e*)F} zL5PeV%GWTF)H1}MiTXnhcXJEBwsy+0T^j_S%t7I2`>i-!U$;*SnAL?Q>2m!Y#;@Sg zU*IF4F;KE|mLIQH1y%MOZoxR@f^%-^=pT?V(*bVYX!JR31aV7Oe`|%=?}ct1@;n4b z3RuH2q(J|rOZ}gKcuWuvNE+>5i05<~dI+$b{T)>U#oOOz9kF%c%R7Eyx+I?!0STTc zN^bp1$WQWUq7B(6AKj*ZM%%nW#PYp;Bv<<$Jh;Jz4}CKd#ay8AQm2AL5g#gTtW$=| zIGu-x_!3oQFlfn0QYQVS%-K{cb%5?O>wrsDs38;|AGYn6V7aLEfS(=`&CWo$-Q!#Oih-x72y|Knf45 zY>fdJ75A2KmYoI@MNAKg^oO^cg_=?4{1vP^)QfZsl$+<))_$}RH6N^4jnXQ;kiLsv zGkMF9Eb5&1_iy0;r)d4V)ZUjcz$os%BuD4KxnFVugEZ$nl5YDCW$TJNX3~6DWB@nj z*9}bC&?$kv%$rY;DyXk)OaVQ>ZWm1TWAGF9fA;K|bt&wp$V@(B_c5#2g4GG2TWc1J zFEbvWIEI(ptKZIUXM#SLE><*U$xc4~6gob;_{rxkuoH>O?Mq0u29kA5n#HMGPiZ0F zbs8%#EQ!WGRkeDnTN9-tyTgu?B%)TCl}VDrXTx{{X|(LH7mPtQ>xy(y9x#3id3cSN%9B6% zjjMFvH9%wsj{nLr?n_!=WAgWENBfU0{O<$q>pjrF9>2eppDadeiqS2>O{>fCousY> ztE5a_K|urX3Ne9K7_`I=q+h-8?(itt&BjvSXL+__Q+H&OFHXF>e`5ojl3ww!FBQ6O z42|r+<&#}@w`*vIQZE}jz!Y$MY82E#Ar81WYJad+yh?`p(R(HA31!(%QOlX3S0-US z2xY=GRVWu;(Qj`Fdfh8;H`dS?*g@fj*sw?%Gd8SRJ4gE*-V@@~9r;E4GnQ22i)4zy z@CRm?+#$g8#|COEJKf%|PtaK^KZCmeCZkDb+S%_t(+BS>ddX}qxo)iU5Ws9H*|BvU-(f@3P`4~n`tkWpIn!im#* z3HaDjj)6kUPP>vQwqq#rv-;;;8RBLrTeRI;;YU(jT+Ah_k1#r+w9!WpY55;>`YG*V zY>@uVUOduX3v_J!4w|KxgZMx^`r-Y0V6OCtXZ?8Qrd4*ca95wfZoI91+I}Bt-)C;W|o0}%t)z!%h zzr|C1M-gWx0rIZFZdt7f93@FjvDuVNZ}?i?!A;KbSb(@*T-?G76wAr(yodRfWww#Y z-ODlU+twnE!E;twUlXzvpXATba$AtKns-7xp|wHNB;|IjbB;LwuXbk?&y_+8tZr;s z@NA84N|LEKNK>T2r`18fH&_67e37i0A{SM1Da}cyeCDt@%6BLCuqeR+S(f>yWwk$J z^-)eOWM^{xR4fg}q1Kd~$~&c1vMoW=CE+IEVw=K$05Pf)#NFGJ=0ut9c^vO{c0!C! za3n*;-Nn?$eRnF;ZgPcP9mX%j39EfQH{x~bKJ;BMKqfuKYF=J0vrqZjRIB(~!c4d| z^bKBi)L@={ZHgahio1*C|8;g71Fl@LVwM4dXqhY`E+3`R`N8gHOAg$+G9yeOHx_LJ zC6z$o!(_p{*UB3`)*D_Q_?A%0GOskxlOrMv3nyfcae*^|0i#b2-HeYB;TedJV!~v$ zZH?rEy(NnI!k6Hos0yX9P7z~5`0(a2s#-Q$q0{Zzo3x()Jl(X4=BOfKe%`S47L%|sp)0? zh2M16o0DP}i!&CwDyT=g7|oI<4&iwj&*S;WH-c$rpDC0xor~z_DD8A=tAYti%Q� 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

    `Rm|B!^MBCE3pOW8Q+uhw~{9!!hO-sMp zzU!yr%Na60$LDvCSX*u~ihUwB;0&#TzU~aeC%Bz^7yGitY?|VeIc-8g`49%dH#)h%aq}^cCie++ z#W2|k{6$7RRKgE631w(^-4)q^?NimiaCNey%vTzduBo(2{}nZ{8X7mV*SNrBwUar?a}U~LHai$#SW>NX61atZsYwT1hLR!0^{y z-yhn{Ksc6jJSWFeq}I@KE)rD(lVqt{#YRn?%>jV+-)8fIswDplSG25dS*Z5golW*L!pt)mg$L<+roZ&{F$X?^~||odzLm+ULj^YnZ;+dKA~*JMx)5| zbZWjH5&S&iu3jRXzMF_Q+JBhA8@b=YY3k=yP=;TqK^{jm)j?(b5tiw0@=QiWwgjU{ z*D>maIGpfDl2A<-_D`ADrW|T3h4t=0jY1MA`a-00*vgv$6Cj!?>mmYA$AaR8iRaPYm{TFn;^FQ(L!&CK1SvKf06cUo3 z5SL_A+kTtI&@_J8!lej=LO?vfSReDmLJGS@jFDPc8r2YJ^09e6HWuCP`~&S7OLWl3 z5mR<&#CJODlF5OXDc%XhFndDSCC>Z3a=k_SWtD~ZB_YkRT+8|RRkAoF<+7k>Oz814 z0)3_}3W|hay-Lhhi1V6<^v?K5uzFf8F>F ziYFsT?6N~1^vqCFL3}xuA$g|jga4G-vryoQe}HRZql5mNVf{ZEWzZwpb5y4q74IP1 zt!^+1$>=Det$__Y5cHbb+$B15uKB8bjXoaQ%saU|ggN$GlOR#|xpO}Mn!ydCAL&oB zu$p*tE(I-~*ooHJ9FG!MTkQMBNvnZx*}Ive9v}@@G-%z`jj#@QR~Upo%+KGjuEka$ zJ|CLJZ$!@eSm{r~A@tqi>fWL|lXBV)0L)3b{d_nNaFFm7hB1BXLVv`9NPc-+I0A33NQc#_LZO*JP43-TW)cgupKNOH=QGwWAJ2Ry~vFq z)nPbtt;}e$@iAg3<{aOA>zsu-49Ry~)L2jRQHGZn)&7Vneun$i)%1-Nv>GBCmZUXL z9R3<=FfDb=KgSd{wEun>JVi~d`hB{Ob6|Ime935w`*mtm;=T+&lOp3Q6_6Q|8i&Of zeONgLTPgUxhmce?F5|{rp{brb`yhFi*~C2UC#wlY9c5LHFtJ%>Ms^(tnInsz%ceIa zhDEJwkTNUZuAGOoAqkBvyEaysJ=Wbooj@M5T!_fFlC3z746dWI0R>4(eQgr?fYyLi z*s(1m&$R0g+Dse*K02u+t-g(fN+_e2zs-%}Q+i&4AW)1tbFt1I`4O%xLArJ6+pq!R z`0_^|Fl?Cn`ee1f&g6N)-pPnTb)gt-Nv2Cv?~`P=k{B!G^%bl5<{3ATkm{;86h*d^ z)5-AiE=vnMhvg4ZatBAQGCNW+|dg4k9hAYAn#q6Nx` zkkd;irQOjwhzwYLGeDt9q;NX3Dsnrsttm{HbpBcTImX<}7B)MdxTEvCMiJ8ff(*cM zrA!+C27-o4(JUZT{0C&nO0oe!lA1mDC~q>;Y&;=`1^P1N^15z^E4I7^;963uY$+e} z(Nn!7K6xf!py0XxqQH9PO@7E8S%A)tcL#6tW9~WD8_se^iAbkt86xQL*0@b#jDja( z4KBkcL$E*A2`j8SP(RZoIOdzrzMa!8pSDA|*sb&2^9c%`lA2aUbudyY6yH#%0AgI# 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 z zZlUyK=sdQmR+GgA%}nbAgRYJ>dhX(XWQb^89w_~{7$F;5fze*b#rcxFD$)4(&`FruncOJIxTzXRl{STJ97refi&8aTUq3ml^EY#+)NYKGS*$KRRm{_4 zvuLC@M3teuC<|JP{d*JL7?pD4>zeCg&6P?mv6!g`9>D}PJdlj^3^@~>qW!zi12yb-My*S7q)dc(orSlPwR#jE? zOm^$nFzoEiynEg?MNoRjLxXl-eDdu|H!fN!oMwD}G-s8co@akPc}rP-lQv)eZWfi= zt<}$gw2}?|v>BvRxri)7tlMOA{?M1d*>#1@-h6cYoG{kfag%rU!PAVjf|`XxZu6Q{ z`d14PsvFSDH9OFk7y^(Q<*cZ3b`6%wVx^x(U%zlvI~j#99}el1k#;CPoQ;3(LNfkh zOQ*znz>vb?l&3Szif7n^J~7v3vB$}>PW(o!nTse%$!xumZws;_h?Gzl6u^>n+}pW-&!HEDQPWe7K zh`I%RnR3zi@my$%Y(-!aow(6MQ(h)p3t>OlrMeAP?p*CG_0vebZ4reBkoy59ZxnGIo*{ogez7jwq)VXmd%ND2A zwpP}P8~f8|sL);Ss{RjEZygpz|Gs}O2uP}QBhs;SH%hm3cPS|yQYwPvN-aothk$f< zES=J^iKEr+ApYQQ|<`39iIQC$N_sm>#UFZ2aWiX3VNwHMjRLC6lWi4^j6GMPv z7*?h|b1%Qt`I( ztvTYGy*yjK#c0bwPOiq7Ws82&FpjX?U^oN#OXNk~a#*nUd{q7W0CYu~N z!CX1tg+f39wAtU-jicHx<-S$Av>2f5s`x2j$avPDIYjZv79M==G{zHlH!Lz15YscZ z$baUXt&$k4BAi%1ah1+dUZ7hvCTt3sY}}Rr5`>0ygs;M{pW}+*IirC;SjFlKnn=MG zWDW`8cAe9{=llmkNz=yaF8bj0>lIf;{4X%?K}JnAWIvA`j{%`RdXn~U&pv%h#*VRy zQF&$iRDqB#jx?TzPLoDk9)y%EDP2YfWF#V?a&aO9YNw=dWNJgk@zu<>Q0&nS_jN~)JKKI? zJQ2B{gs$oR5-~6Y*V5Hf&W*bxhhvz|@bTGsfW(+mqG$hsv3_e~|H|Hsq?wQ?bsMC| z)9!|BJMFssF2L~gwL|>}d*yt)Q%YwzQtV)wGxj!AH0^W)4?b6=R1I!0xVssA_C-W@ z2h@)=vZ3U@vhO-vF>=p7rW8ssDi$M@VsOXU≀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

    mNX< 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 z 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 qyKc4NJm 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�dYw7_gNA3`?L4q1Mw7~cmrec9>I7O2<*(KaQ3G7 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%0DQ;0K2TA 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 z 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

    9<000*ZTbyb#EfspV$tZ$R8wx=zbqk)^D-VDZ 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ೆTa#FpoI4<|_7)dzze3CrnW#9dfBS2qbnuBNUa^ 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

    (J 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%0Ac!D&q;%roRv%wj|Djo9MRMjG&E$x6 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%0AK(}CN(uv!%Hi*LkO&JWlYpPV7mx+`0C&INpa;MT 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%0D~c=^OyJhsTpsJRasG055PN&u~zN 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%0A9BibK%EJ-t36cPhwz?ij0E$OU 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

  2. Cl-vWEf{yi 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